MCP Server

Gluecron

com.gluecron/gluecron
Developer Tools Public & reachable MCP 2026-07-28

What this MCP does

Provides Git repository hosting and management with branches, commits, issues, pull requests, workflows, code search and AI-assisted review and generation.

gluecron_acquire_lease
Grab an exclusive lease on a target (e.g. a PR or branch) for an agent session. Returns null when another agent holds an active lease.
Input schema
{'type': 'object', 'required': ['agent_session_id', 'target_type', 'target_id'], 'properties': {'target_id': {'type': 'string'}, 'duration_ms': {'type': 'number', 'description': 'Lease duration (default 5 minutes)'}, 'target_type': {'type': 'string', 'description': "e.g. 'pull_request', 'branch'"}, 'agent_session_id': {'type': 'string'}}}
gluecron_ai_cost_summary
Return AI spend rollups. Scope by one of: user_id (self), repo {owner,repo}, or agent_session_id. Defaults to caller's user spend.
Read only
Input schema
{'type': 'object', 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'scope': {'type': 'string', 'description': "'user' (default) | 'repo' | 'agent'"}, 'agent_session_id': {'type': 'string'}}}
gluecron_assign_issue
Assign an issue to a user. Gluecron does not yet have a dedicated assignee table; assignment is modelled as an `assignee:<username>` label so it integrates with existing label tooling. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number', 'assignee'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'number': {'type': 'number'}, 'assignee': {'type': 'string', 'description': 'Username to assign'}}}
gluecron_atomic_multi_file_commit
Apply a set of file writes + deletes as a single atomic commit on a branch (creates the branch if it doesn't exist). The killer agent tool: blob/tree/commit/ref-update sequence. Each change is `{path, content?, content_base64?, deleted?}`. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'branch', 'message', 'changes'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'branch': {'type': 'string'}, 'changes': {'type': 'array', 'description': 'Array of {path, content?|content_base64?, deleted?} entries.'}, 'message': {'type': 'string'}, 'base_branch': {'type': 'string', 'description': "Branch to fork from when `branch` doesn't yet exist (default: repo default)."}}}
gluecron_cancel_workflow_run
Cancel a queued/running workflow run. Requires 'repo' scope.
Destructive
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'run_id'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'run_id': {'type': 'string'}}}
gluecron_chat_continue
Send another message to an existing repo chat. Returns the assistant's reply. If the AI service does not answer this fails with a JSON-RPC error carrying {chat_id, ai_error} rather than returning apology copy as a reply.
Input schema
{'type': 'object', 'required': ['chat_id', 'message'], 'properties': {'chat_id': {'type': 'string'}, 'message': {'type': 'string'}}}
gluecron_chat_with_repo
Start a new chat with a repo: creates a chat row, sends the first user message, streams + persists the assistant reply. Returns {chat_id, reply}. If the AI service does not answer this fails with a JSON-RPC error carrying {chat_id, ai_error} — it never returns apology copy as a reply. Requires authentication.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'message'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'title': {'type': 'string', 'description': 'Chat title (optional)'}, 'message': {'type': 'string', 'description': 'Initial user message'}}}
gluecron_clone_url
Return the authenticated HTTPS clone URL for a repo + a credential-helper hint. Use this instead of embedding tokens in URLs. Returns {url, owner, repo, defaultBranch, hint} using the repo's stored casing.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner username'}}}
gluecron_close_issue
Close an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns {state}.
Destructive Idempotent
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'number': {'type': 'number', 'description': 'Issue number'}}}
gluecron_close_pr
Close an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns {state}.
Destructive Idempotent
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'number': {'type': 'number', 'description': 'PR number'}}}
gluecron_comment_issue
Add a comment to an existing issue. Requires authenticated caller with write access. Returns {commentId}.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Comment body (Markdown)'}, 'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'number': {'type': 'number', 'description': 'Issue number'}}}
gluecron_comment_pr
Add a comment to a pull request. Requires authenticated caller with write access. Returns {commentId}.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Comment body (Markdown)'}, 'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'number': {'type': 'number', 'description': 'PR number'}}}
gluecron_create_agent_session
Mint a new agent-multiplayer session. Returns the plaintext `token` exactly once (store it). Requires 'admin' scope.
Input schema
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Human-readable session name (unique per owner)'}, 'repository_id': {'type': 'string', 'description': 'Optional repo to scope to'}, 'branch_namespace': {'type': 'string', 'description': 'Optional branch namespace override'}, 'budget_cents_per_day': {'type': 'number', 'description': 'Daily budget cap in cents (default 500)'}}}
gluecron_create_branch
Create a new branch ref pointing at an existing sha. Mirrors POST /api/v2/repos/.../git/refs. Requires 'repo' scope. Returns {ref, sha}.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'branch', 'sha'], 'properties': {'sha': {'type': 'string', 'description': 'Target commit sha (40-hex)'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'branch': {'type': 'string', 'description': 'New branch name (short form)'}}}
gluecron_create_issue
Create a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns {number, url}.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'title'], 'properties': {'body': {'type': 'string', 'description': 'Issue body (Markdown). Optional.'}, 'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'title': {'type': 'string', 'description': 'Issue title'}}}
gluecron_create_pr
Open a new pull request. `head_branch` is required; `base_branch` defaults to the repo default branch. Requires authenticated caller with write access. Returns {number, url}.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'title', 'head_branch'], 'properties': {'body': {'type': 'string', 'description': 'PR body (Markdown). Optional.'}, 'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'title': {'type': 'string', 'description': 'PR title'}, 'base_branch': {'type': 'string', 'description': 'Target branch (default: repo default branch)'}, 'head_branch': {'type': 'string', 'description': 'Branch with the changes'}}}
gluecron_delete_file
Delete a file from a branch via git plumbing. Requires the existing blob sha (optimistic concurrency) and 'repo' scope. Mirrors DELETE /api/v2/contents.
Destructive
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'path', 'branch', 'message', 'sha'], 'properties': {'sha': {'type': 'string', 'description': 'Current blob sha (40-hex)'}, 'path': {'type': 'string'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'branch': {'type': 'string'}, 'message': {'type': 'string'}}}
gluecron_delete_repo
Permanently delete a repository row (git data on disk is left untouched). Requires 'admin' access on the repo (owner, org owners/admins, admin collaborators) AND 'admin' token scope. Returns {deleted: true}.
Destructive
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner username'}}}
gluecron_explain_repo
Return the cached AI 'explain this codebase' Markdown for a repo. Pure read — never triggers a new generation (use the web UI for that).
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}}}
gluecron_find_symbol
Find definitions of a symbol by name within a repo. Wraps src/lib/symbols.findDefinitions.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Symbol name'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}}}
gluecron_fork_repo
Fork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns {owner, repo, url}. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Source repo name'}, 'owner': {'type': 'string', 'description': 'Source repo owner'}}}
gluecron_generate_commit_message
Generate a commit message for a diff. Same engine as gluecron_generate_pr_description but explicit for the commit-message use case.
Read only
Input schema
{'type': 'object', 'required': ['diff'], 'properties': {'diff': {'type': 'string'}, 'style': {'type': 'string', 'description': "'conventional' (default) or 'plain'"}}}
gluecron_generate_pr_description
Generate an AI commit-message-style description for a diff. Uses src/lib/ai-commit-message.ts under the hood; gracefully degrades to a heuristic when ANTHROPIC_API_KEY is missing. Returns {subject, body}.
Read only
Input schema
{'type': 'object', 'required': ['diff'], 'properties': {'diff': {'type': 'string', 'description': 'Unified-diff body'}, 'style': {'type': 'string', 'description': "'conventional' (default) or 'plain'"}}}
gluecron_generate_release_notes
Generate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'to_tag'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'to_tag': {'type': 'string', 'description': 'New tag'}, 'from_tag': {'type': 'string', 'description': 'Previous tag (optional)'}}}
gluecron_generate_tests
Generate tests for a PR via Claude. Wraps src/lib/ai-test-generator.generateTestsForPr. Mode 'follow-up-pr' opens a new PR; 'append-commit' commits onto the head branch. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'mode': {'type': 'string', 'description': "'follow-up-pr' or 'append-commit'"}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'number': {'type': 'number', 'description': 'PR number'}}}
gluecron_get_agent_budget
Return spent / cap / remaining cents for an agent session.
Read only
Input schema
{'type': 'object', 'required': ['agent_session_id'], 'properties': {'agent_session_id': {'type': 'string'}}}
gluecron_get_commit
Fetch a single commit by SHA: metadata plus the list of files it changed (path, status, additions, deletions). Mirrors GET /api/v2/repos/.../commits/:sha. Patch bodies are NOT included — use gluecron_get_diff for those.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'sha'], 'properties': {'sha': {'type': 'string', 'description': 'Commit SHA'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'include_files': {'type': 'boolean', 'description': 'Include the files-changed summary and stats (default true). Set false to skip the diff read on very large commits.'}}}
gluecron_get_diff
Read the actual changes in a commit or a branch range. Pass `sha` for one commit against its first parent, or `base`+`head` for everything head adds since the merge base (what a PR proposes). Returns {files:[{path, oldPath?, status, additions, deletions, binary, patch, patchTruncated}], stats, truncated}. Patch text is byte-capped; set include_patch=false for a files-changed summary only.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'sha': {'type': 'string', 'description': 'Commit SHA — diffs it against its first parent'}, 'base': {'type': 'string', 'description': 'Base ref (with `head`)'}, 'head': {'type': 'string', 'description': 'Head ref (with `base`)'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'include_patch': {'type': 'boolean', 'description': 'Include patch bodies (default true)'}, 'max_patch_bytes': {'type': 'number', 'description': 'Total budget for patch text across all files (default 400000, max 2000000)'}}}
gluecron_get_pr
Fetch the full detail record of a pull request (title, body, state, branches, draft, author, timestamps). Authenticated callers only (the read tool surface still works anonymously).
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'number': {'type': 'number', 'description': 'PR number'}}}
gluecron_get_preview_url
Return the branch-preview URL + status for a (repo, branch) pair. Wraps branch-previews.getPreviewForBranch. Returns {ok:false, reason:'not enabled on this host'} when the host has no PREVIEW_DOMAIN (no preview would ever resolve).
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'branch'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'branch': {'type': 'string'}}}
gluecron_get_workflow_logs
Return concatenated per-job logs for a workflow run, plus per-job metadata. JSON-friendly companion to the ZIP-download endpoint.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'run_id'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'run_id': {'type': 'string'}}}
gluecron_get_workflow_run
Fetch a workflow run's metadata + status. Mirrors GET /api/v2/repos/.../actions/runs/:id.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'run_id'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'run_id': {'type': 'string'}}}
gluecron_label_issue
Attach one or more labels to an issue. Labels are created if they don't yet exist on the repo. Requires 'repo' scope. Returns {labels}.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number', 'labels'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'labels': {'type': 'array', 'description': 'Label names (strings)'}, 'number': {'type': 'number'}}}
gluecron_list_prs
List pull requests on a repo, filtered by state (open|closed|merged|all). Authenticated callers only. Returns up to 50 summary rows.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'limit': {'type': 'number', 'description': 'Max rows per page (default 50, max 100)'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'state': {'type': 'string', 'description': 'open | closed | merged | all (default: open)'}, 'offset': {'type': 'number', 'description': 'Rows to skip, for paging. Use `nextOffset` from the previous response.'}}}
gluecron_list_tree
List directory contents at a ref. `path` scopes the listing to a subtree and is honoured in BOTH modes; `recursive: true` walks the whole subtree instead of one level. Always returns the same shape: {path, ref, recursive, entries, truncated, totalCount}. Recursive entries carry full repo-relative paths; non-recursive entries carry names. A ref that does not exist is an error, never an empty listing.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'ref': {'type': 'string', 'description': 'Branch / tag / sha. Omit (or pass HEAD) for the default branch.'}, 'path': {'type': 'string', 'description': 'Sub-path within the repo'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'recursive': {'type': 'boolean'}}}
gluecron_merge_pr
Merge an open PR. Enforces the same checks as the HTTP merge flow: not a draft, head SHA resolves, GateTest+AI-review hard gates pass, branch-protection rules satisfied. M3: soft-blocks when the pre-merge risk score is `critical` unless `confirm_high_risk: true` is passed. Returns {merged, sha?, reason?, riskScore?}.
Destructive
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'number': {'type': 'number', 'description': 'PR number'}, 'confirm_high_risk': {'type': 'boolean', 'description': 'When true, bypass the M3 risk-score soft-block on critical-band PRs.'}}}
gluecron_open_draft_pr
Open a draft pull request. Same payload as gluecron_create_pr but forces is_draft=true. Useful for AI-in-progress PRs that shouldn't run mergeability checks yet.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'title', 'head_branch'], 'properties': {'body': {'type': 'string'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'title': {'type': 'string'}, 'base_branch': {'type': 'string'}, 'head_branch': {'type': 'string'}}}
gluecron_propose_doc_update
Manual trigger for the AI doc-update flow: scans tracked sections on the default branch and opens a PR rewriting stale prose. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}}}
gluecron_propose_migration
Propose a dependency-upgrade PR. Wraps src/lib/migration-assistant.proposeMajorMigration. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'dependency', 'from_version', 'to_version', 'base_sha'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'base_sha': {'type': 'string', 'description': 'Commit sha to fork from'}, 'changelog': {'type': 'string', 'description': 'Optional changelog text'}, 'dependency': {'type': 'string'}, 'to_version': {'type': 'string'}, 'from_version': {'type': 'string'}}}
gluecron_provision_pr_sandbox
Provision (or re-provision) a sandbox for a PR. Wraps pr-sandbox.provisionSandbox. Requires 'repo' scope. Returns {ok:false, reason:'not enabled on this host'} when no sandbox provisioner runs on the host.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'number': {'type': 'number'}}}
gluecron_pr_status_summary
Compute a one-shot status summary for a PR: state, risk score (and whether it describes the current head), CI state for the head commit as the merge gate sees it, AI-review verdicts (trio), gate signals. Read-only.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'number': {'type': 'number'}}}
gluecron_read_file
Read a file from a repo at a given ref. Mirrors GET /api/v2/repos/:owner/:repo/contents/:path. Returns {path, size, content, encoding}.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'path'], 'properties': {'ref': {'type': 'string', 'description': 'Branch / tag / sha (default HEAD)'}, 'path': {'type': 'string'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'encoding': {'type': 'string', 'description': "'utf8' (default) or 'base64'"}}}
gluecron_refactor_across_repos
Plan + execute a refactor that spans multiple repos owned by the caller. Wraps src/lib/multi-repo-refactor.ts. `dry_run: true` returns the plan only. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['description'], 'properties': {'dry_run': {'type': 'boolean', 'description': 'When true, returns the plan and does NOT execute.'}, 'description': {'type': 'string', 'description': 'Natural-language description'}, 'repository_ids': {'type': 'array', 'description': 'Optional explicit repo IDs to scope the refactor to.'}}}
gluecron_release_lease
Release a lease by id. Idempotent. Returns {released}.
Idempotent
Input schema
{'type': 'object', 'required': ['lease_id'], 'properties': {'lease_id': {'type': 'string'}}}
gluecron_reopen_issue
Reopen a previously closed issue. Requires authenticated caller with write access. Idempotent. Returns {state}.
Idempotent
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'number': {'type': 'number', 'description': 'Issue number'}}}
gluecron_repo_explain_codebase
Return the cached AI 'explain this codebase' Markdown for a public repo (most recent commit). Returns null when no cached explanation exists yet.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}}}
gluecron_repo_health
Compute the current health report for a public repo: overall score (0-100), letter grade, per-category breakdown (security/testing/complexity/dependencies/documentation/activity), and a list of insights to fix next. Backed by computeHealthScore in src/lib/intelligence.ts.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}}}
gluecron_repo_list_issues
List open issues for a public repository. Returns up to 50 ordered by most-recent.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'limit': {'type': 'number', 'description': 'Max rows per page (default 25, max 50)'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}, 'offset': {'type': 'number', 'description': 'Rows to skip, for paging. Use `nextOffset` from the previous response.'}}}
gluecron_repo_read_file
Read a single file from a repository at a given ref (branch / tag / commit). Private repos are readable when the authenticated caller has access. Returns the text content (binary files rejected).
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'path'], 'properties': {'ref': {'type': 'string', 'description': "Branch / tag / commit. Defaults to the repository's actual default branch (which may not be 'main' — e.g. 'Main')."}, 'path': {'type': 'string', 'description': 'File path within the repo'}, 'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner — username or organisation slug'}}}
gluecron_repo_search
Search Gluecron repositories by keyword (name + description), case-insensitively. Returns public repos plus any private repos owned by the authenticated caller. Default 20 per page, max 50; `total` is the full match count and `nextOffset` pages through it.
Read only
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number', 'description': 'Max rows per page (default 20, max 50)'}, 'query': {'type': 'string', 'description': 'Search keyword (1-100 chars)'}, 'offset': {'type': 'number', 'description': 'Rows to skip. Use `nextOffset` from the previous response.'}}}
gluecron_request_changes
Post a 'changes requested' AI-review comment on a PR. The comment is tagged with isAiReview=true so the gate-checker recognises it. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Review body (Markdown)'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'number': {'type': 'number'}}}
gluecron_search_issues
Search issues by title/body keyword on a single repo, filtered by state. Returns ranked rows.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'query'], 'properties': {'repo': {'type': 'string'}, 'limit': {'type': 'number'}, 'owner': {'type': 'string'}, 'query': {'type': 'string', 'description': 'Search keyword'}, 'state': {'type': 'string', 'description': 'open | closed | all (default open)'}}}
gluecron_search_prs
Search pull requests by title/body keyword on a repo.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'query'], 'properties': {'repo': {'type': 'string'}, 'limit': {'type': 'number'}, 'owner': {'type': 'string'}, 'query': {'type': 'string'}, 'state': {'type': 'string', 'description': 'open|closed|merged|all (default open)'}}}
gluecron_search_repos
Search repositories by owner, name, owner/name or description, case-insensitively: every public repo, plus the private ones you own or collaborate on when authenticated. Omit `query` (authenticated) to list YOUR repositories — the ones you own or were invited to — instead of searching. Mirrors GET /api/v2/search/repos. `total` is the full match count (not the page size) and `nextOffset` pages through it.
Read only
Input schema
{'type': 'object', 'properties': {'sort': {'type': 'string', 'description': 'stars | updated | name (default: stars)'}, 'limit': {'type': 'number', 'description': 'Max rows per page (default 30, max 100)'}, 'query': {'type': 'string', 'description': 'Search keyword — matches owner login, repo name, owner/name and description. Omit to list your own repositories.'}, 'offset': {'type': 'number', 'description': 'Rows to skip. Use `nextOffset` from the previous response.'}}}
gluecron_security_scan
Everything Gluecron actually knows about a repository's security, in one honest call: OSV.dev CVE/GHSA advisories against the indexed dependency graph (with FIXED VERSIONS), Gluecron's supplemental advisory list, a full-tree committed-secret scan, and optionally a Claude semantic code review. Unlike gluecron_repo_health, an empty result is NEVER reported as a pass: every category returns status 'assessed' | 'partial' | 'not_assessed' | 'error' with a machine-readable reason code, so you can tell 'we checked and it is clean' from 'we never looked'. In particular, a repo whose dependency graph was never indexed returns dependency_advisories.status='not_assessed' (reason 'dependency_graph_not_indexed'), not an empty advisory list. Read-only.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'ref': {'type': 'string', 'description': "Branch, tag or commit SHA to scan the tree of. Default: the repo's default branch. Note advisories describe the INDEXED dependency graph, whose commit is reported separately — if it differs from this ref the advisory answer is downgraded to 'partial'."}, 'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner username'}, 'include_ai_review': {'type': 'boolean', 'description': "Opt in to the Claude Sonnet semantic review (SQLi/XSS/SSRF/authz/crypto). Costs an Anthropic call and adds seconds. Default false. When it cannot run — no key, provider error, unparseable output — the category reports 'not_assessed', never a pass."}, 'max_candidate_lines': {'type': 'number', 'description': "Cap on lines the secret detector inspects (1-200000, default 20000). The whole tree is always prefiltered; only lines that already matched a secret marker are inspected, so this rarely binds. When it does, committed_secrets reports 'partial' with the exact fraction."}}}
gluecron_semantic_search
Query the per-repo vector index (Voyage embeddings when configured, hash fallback otherwise). Reads the live per-push index (code_embeddings) first, falling back to the manually-reindexed chunk index (code_chunks). Returns {hits, source, indexed, indexedFiles} — `indexed: false` means the repo has never been indexed (empty hits are NOT 'no match'); `indexedFiles` is the live-index row count.
Read only
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'query'], 'properties': {'repo': {'type': 'string'}, 'limit': {'type': 'number'}, 'owner': {'type': 'string'}, 'query': {'type': 'string'}}}
gluecron_ship_spec
Drop a spec file in .gluecron/specs/ with status: ready so the autopilot picks it up. Wraps voice-to-pr.shipAsSpec — handle both voice + manual specs. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'title', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Spec body (Markdown)'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'title': {'type': 'string'}}}
gluecron_trigger_workflow
Dispatch a workflow_dispatch run. Mirrors POST /api/v2/repos/.../actions/workflows/:filename/dispatches. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'filename'], 'properties': {'ref': {'type': 'string', 'description': 'Branch / tag / sha (default: repo default branch)'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'inputs': {'type': 'object', 'description': 'Workflow inputs (object)'}, 'filename': {'type': 'string', 'description': 'Workflow filename (e.g. ci.yml)'}}}
gluecron_unlabel_issue
Detach a label from an issue. Idempotent. Requires 'repo' scope. Returns {removed: boolean}.
Idempotent
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'number', 'label'], 'properties': {'repo': {'type': 'string'}, 'label': {'type': 'string'}, 'owner': {'type': 'string'}, 'number': {'type': 'number'}}}
gluecron_update_repo
Update repository description / visibility / default_branch. Requires 'admin' access on the repo (owner, org owners/admins, admin collaborators) and 'repo' scope. Returns {ok: true}.
Destructive
Input schema
{'type': 'object', 'required': ['owner', 'repo'], 'properties': {'repo': {'type': 'string', 'description': 'Repo name'}, 'owner': {'type': 'string', 'description': 'Repo owner username'}, 'automation': {'type': 'object', 'description': 'Per-repo automation dials, same keys as Settings → Automation: ai_review_mode, pr_triage_mode, issue_triage_mode, auto_merge_mode, ci_autofix_mode, auto_repair_mode, auto_issues_mode, doc_drift_mode. Values: off | suggest | auto. Only the keys given change.'}, 'is_private': {'type': 'boolean', 'description': 'Set visibility (optional)'}, 'description': {'type': 'string', 'description': 'New description (optional)'}, 'default_branch': {'type': 'string', 'description': 'Set default branch (optional)'}}}
gluecron_voice_to_pr
Interpret a free-form voice transcript and either ship it as a spec or create an issue (caller picks via `as`). Wraps src/lib/voice-to-pr.ts. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'transcript'], 'properties': {'as': {'type': 'string', 'description': "'spec' or 'issue' (default: auto via interpretVoiceTranscript)"}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'transcript': {'type': 'string'}}}
gluecron_whoami
Who this connector is on this Gluecron instance: the signed-in username and email, whether that account is a site admin, the token's scopes, and how many repositories it owns or collaborates on. Call it first when a repository seems missing — the answer is usually which account authorized the connector. Anonymous callers get authenticated:false and a hint.
Read only
Input schema
{'type': 'object', 'properties': {}}
gluecron_write_file
Create or update a file on a branch via git plumbing. Wraps `createOrUpdateFileOnBranch`. Pass `content` as a UTF-8 string OR `content_base64` for binary. Requires 'repo' scope.
Input schema
{'type': 'object', 'required': ['owner', 'repo', 'path', 'branch', 'message'], 'properties': {'path': {'type': 'string'}, 'repo': {'type': 'string'}, 'owner': {'type': 'string'}, 'branch': {'type': 'string'}, 'content': {'type': 'string', 'description': 'UTF-8 file body (optional)'}, 'message': {'type': 'string', 'description': 'Commit message'}, 'content_base64': {'type': 'string', 'description': 'Base64 file body (optional)'}, 'expect_blob_sha': {'type': 'string', 'description': 'Optimistic-concurrency check: existing blob sha must match.'}}}
Added
gluecron_whoami
Sept. 25, 2026, 3:02 a.m.
Changed
gluecron_search_repos
Sept. 25, 2026, 3:02 a.m.
Changed
gluecron_pr_status_summary
Sept. 23, 2026, 2:53 a.m.
Changed
gluecron_list_tree
Sept. 23, 2026, 2:53 a.m.
Changed
gluecron_clone_url
Sept. 23, 2026, 2:53 a.m.
Changed
gluecron_search_repos
Sept. 23, 2026, 2:53 a.m.
Added
gluecron_security_scan
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_ai_cost_summary
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_pr_status_summary
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_find_symbol
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_semantic_search
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_get_agent_budget
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_release_lease
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_acquire_lease
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_create_agent_session
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_provision_pr_sandbox
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_get_preview_url
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_cancel_workflow_run
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_get_workflow_logs
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_get_workflow_run
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_trigger_workflow
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_propose_doc_update
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_propose_migration
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_generate_release_notes
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_generate_commit_message
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_generate_tests
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_chat_continue
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_chat_with_repo
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_explain_repo
Sept. 17, 2026, 12:35 p.m.
Added
gluecron_refactor_across_repos
Sept. 17, 2026, 12:35 p.m.