com.gluecron/gluecron

Gluecron

AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).

Endpointhttps://gluecron.com/mcp (streamable-http)
Registry version1.0.0
Now111 tools · grade C (65) · pin ts_e232ce03c6241771adb2de142f351e63 · protocol 2025-06-18
First / last listed2026-10-25 02:14 UTC / 2026-10-25 02:14 UTC
Grade over time2026-10-25: C (65), 111 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-10-25 02:14 UTC
111 tools, grade C (65)

Tools: gluecron_repo_search gluecron_repo_read_file gluecron_repo_list_issues gluecron_repo_explain_codebase gluecron_repo_health gluecron_create_issue gluecron_comment_issue gluecron_close_issue gluecron_reopen_issue gluecron_create_pr gluecron_get_pr gluecron_list_prs gluecron_comment_pr gluecron_merge_pr gluecron_close_pr gluecron_fork_repo gluecron_delete_repo gluecron_update_repo gluecron_search_repos gluecron_whoami gluecron_clone_url gluecron_create_deploy_token gluecron_create_repo_token gluecron_list_repo_tokens gluecron_revoke_repo_token gluecron_list_tokens gluecron_get_token gluecron_rotate_token gluecron_revoke_token gluecron_list_repo_secrets gluecron_set_repo_secret gluecron_delete_repo_secret gluecron_list_deleted_repos gluecron_restore_repo gluecron_purge_repo gluecron_list_variables gluecron_get_variable gluecron_set_variable gluecron_delete_variable gluecron_delete_branch gluecron_edit_comment gluecron_delete_comment gluecron_import_action gluecron_backup_status gluecron_learning_status gluecron_label_issue gluecron_unlabel_issue gluecron_assign_issue gluecron_search_issues gluecron_request_changes gluecron_dismiss_review gluecron_search_prs gluecron_list_pr_comments gluecron_open_draft_pr gluecron_set_pr_draft gluecron_generate_pr_description gluecron_update_pr_branch gluecron_update_pr gluecron_set_auto_merge gluecron_get_pr_checks gluecron_rerun_failed_jobs gluecron_get_branch_protection gluecron_set_branch_protection gluecron_approve_pr gluecron_read_file gluecron_write_file gluecron_delete_file gluecron_list_tree gluecron_get_commit gluecron_get_diff gluecron_create_branch gluecron_atomic_multi_file_commit gluecron_apply_patch gluecron_ship_spec gluecron_voice_to_pr gluecron_refactor_across_repos gluecron_explain_repo gluecron_chat_with_repo gluecron_chat_continue gluecron_generate_tests gluecron_generate_commit_message gluecron_generate_release_notes gluecron_propose_migration gluecron_propose_doc_update gluecron_trigger_workflow gluecron_get_workflow_run gluecron_list_workflow_runs gluecron_get_workflow_logs gluecron_explain_failure gluecron_list_flaky_tests gluecron_cancel_workflow_run gluecron_prioritize_workflow_run gluecron_review_deployment gluecron_create_runner_registration_token gluecron_list_runners gluecron_revoke_runner gluecron_ci_executor gluecron_get_preview_url gluecron_provision_pr_sandbox gluecron_create_agent_session gluecron_acquire_lease gluecron_release_lease gluecron_get_agent_budget gluecron_semantic_search gluecron_search_code gluecron_find_symbol gluecron_pr_status_summary gluecron_ci_queue_status gluecron_handover gluecron_ai_cost_summary gluecron_security_scan

Current tools (111)

gluecron_repo_searchSearch 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.
params: query*, limit, offset
gluecron_repo_read_fileRead 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).
params: owner*, repo*, ref, path*
gluecron_repo_list_issuesList open issues for a public repository. Returns up to 50 ordered by most-recent.
params: owner*, repo*, limit, offset
gluecron_repo_explain_codebaseReturn the cached AI 'explain this codebase' Markdown for a public repo (most recent commit). Returns null when no cached explanation exists yet.
params: owner*, repo*
gluecron_repo_healthCompute 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.
params: owner*, repo*
gluecron_create_issueCreate a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns {number, url}.
params: owner*, repo*, title*, body
gluecron_comment_issueAdd a comment to an existing issue. Requires authenticated caller with write access. Returns {commentId}.
params: owner*, repo*, number*, body*
gluecron_close_issueClose an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns {state}.
params: owner*, repo*, number*
gluecron_reopen_issueReopen a previously closed issue. Requires authenticated caller with write access. Idempotent. Returns {state}.
params: owner*, repo*, number*
gluecron_create_prOpen 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}.
params: owner*, repo*, title*, body, head_branch*, base_branch
gluecron_get_prFetch 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).
params: owner*, repo*, number*
gluecron_list_prsList pull requests on a repo, filtered by state (open|closed|merged|all). Authenticated callers only. Returns up to 50 summary rows.
params: owner*, repo*, state, limit, offset
gluecron_comment_prAdd a comment to a pull request. Requires authenticated caller with write access. Returns {commentId}.
params: owner*, repo*, number*, body*
gluecron_merge_prMerge 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?}.
params: owner*, repo*, number*, confirm_high_risk
gluecron_close_prClose an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns {state}.
params: owner*, repo*, number*
gluecron_fork_repoFork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns {owner, repo, url}. Requires 'repo' scope.
params: owner*, repo*
gluecron_delete_repoDelete a repository — a SOFT delete (2026-10-19): it disappears at once from git, web, REST, MCP, CI, webhooks, search and pages, its name stays reserved, and it can be restored with gluecron_restore_repo until restorable_until (90 days by default). Queued/running CI is cancelled and pending webhook deliveries are stopped. Only the repository OWNER (the personal owner, or an org owner for an org r
params: owner*, repo*
gluecron_update_repoUpdate repository description / visibility / default_branch. Requires 'admin' access on the repo (owner, org owners/admins, admin collaborators) and 'repo' scope. Returns {ok: true}.
params: owner*, repo*, description, is_private, default_branch, automation
gluecron_search_reposSearch 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 thro
params: query, sort, limit, offset
gluecron_whoamiWho 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.
params: none
gluecron_clone_urlReturn 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.
params: owner*, repo*
gluecron_create_deploy_tokenMint a short-lived, repository-scoped HTTPS clone credential (a deploy token) and return it once with a ready clone URL — for a sandbox or CI box that has no PAT. Read-only by default; `read_only: false` asks for push access and is granted only if you have write access. Expires in 2 h by default (`expires_in_hours`, max 24). Needs owner / collaborator / team / org access to the repo (public read i
params: owner*, repo*, title, read_only, expires_in_hours
gluecron_create_repo_tokenMint a fine-grained repository token (`gcft_…`) for ONE repository and return it once. It authenticates the REST API (/api/v2 and the GitHub-compatible /api/v3), git over HTTPS and the container registry (images under owner/repo, by contents) for that repository only. `permissions` sets none/read/write for contents, issues, pull_requests, statuses and actions (admin and settings are never grantabl
params: owner*, repo*, name*, permissions*, expires_in
gluecron_list_repo_tokensList the fine-grained repository tokens you have minted (never the secret): repository, permissions, state (active / expired / revoked), expiry and last use. Needs 'repo' scope.
params: none
gluecron_revoke_repo_tokenRevoke one of your fine-grained repository tokens by id (from gluecron_list_repo_tokens). It stops working on its next use. Needs 'repo' scope. Audit-logged.
params: id*
gluecron_list_tokensList your own tokens (never a secret): type, name, status (active / expiring / expired / revoked / never_used / stale), last 4 characters, scopes or permissions, repository, expiry, last use (time, IP, client), use count and rotation state. `type` is pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_), or omit it for all three (types your token's scope
params: type
gluecron_get_tokenOne of your tokens by type and id (from gluecron_list_tokens): everything list shows plus the audit trail (create, edits with a before/after diff, rotations, revocation). Never the secret. `type` is pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_). Same scopes as gluecron_list_tokens.
params: type*, id*
gluecron_rotate_tokenRotate one of your tokens: mint a new secret with the same name, scopes / permissions, repository and expiry, returned ONCE as `token`. `grace_seconds` (default 0, max 604800 = 7 days) keeps the old secret working that long; 0 kills it now. Rotating again ends an earlier grace period. `expected_rotation_count` (from gluecron_get_token's rotationCount) makes it compare-and-swap; two concurrent rota
params: type*, id*, grace_seconds, expected_rotation_count
gluecron_revoke_tokenRevoke one of your tokens by type and id. It stops working on its next use; this cannot be undone. `type` is pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_). PATs need 'admin' scope; repository and deploy tokens need 'repo'. Audit-logged.
params: type*, id*
gluecron_list_repo_secretsList a repository's workflow secrets — NAMES ONLY, with created/updated times; values are never returned. Use it to check that a secret such as CRON_SECRET exists before a workflow needs it. Needs admin access to the repository and 'repo' scope. Returns {repository, total_count, secrets:[{name, created_at, updated_at}]}.
params: owner*, repo*
gluecron_set_repo_secretCreate or replace one workflow secret on a repository, used in workflows as ${{ secrets.NAME }}. The name is saved upper-cased (cron_secret → CRON_SECRET); trailing spaces/newlines are removed from the value. The value is WRITE-ONLY: it is encrypted at rest and never returned, logged or audited — the result names the secret only. Pass expected_updated_at (the updated_at you last read) to update on
params: owner*, repo*, name*, value*, expected_updated_at
gluecron_delete_repo_secretDelete one workflow secret from a repository by name (cron_secret is read as CRON_SECRET). Idempotent: deleting a secret that is already gone succeeds with deleted:false, already_deleted:true, so a retry is safe. Workflows that reference it stop receiving it. Needs admin access to the repository and 'repo' scope. Audit-logged (name only). Returns {repository, name, deleted, already_deleted, at}.
params: owner*, repo*, name*
gluecron_list_deleted_reposList deleted repositories you can restore or purge: your personal ones and those of organizations you own (a site admin may pass all: true for the whole instance). Each has its id, full_name and restorable_until — after that date it is purged automatically. Read-only. Needs 'repo' scope. Returns {total_count, repositories:[{id, full_name, private, deleted_at, deleted_by, restorable_until}]}.
params: all
gluecron_restore_repoRestore a deleted repository by id (from gluecron_list_deleted_repos) before its restorable_until date: git data, LFS objects, issues, PRs, collaborators and webhooks come back exactly as they were. Cancelled CI runs stay cancelled and stopped webhook deliveries are not re-sent. Refused when another repository now has the same name in that namespace. Owner (personal owner, or an org owner) or a si
params: id*
gluecron_purge_repoPERMANENTLY delete an already-deleted repository now, instead of waiting for its restore window to end. IRREVERSIBLE: the git data, LFS objects, issues, PRs, releases, packages, CI history and settings are removed and cannot be restored (data already in the instance's backups ages out on the backup schedule). Only works on a repository already deleted with gluecron_delete_repo; `confirm` must be i
params: id*, confirm*
gluecron_list_variablesList Actions configuration variables (${{ vars.NAME }}) with their values. Pass owner + repo for a repository variable, owner + repo + environment for an environment variable, or org for an organisation variable (organisation variables need an admin-scoped token). Admin of the repository or organisation only. Paged: limit (≤100, default 30) / offset. Mirrors GET …/actions/variables. Returns {scope
params: owner, repo, org, environment, limit, offset
gluecron_get_variableRead one Actions variable by name. Pass owner + repo for a repository variable, owner + repo + environment for an environment variable, or org for an organisation variable (organisation variables need an admin-scoped token). Not found is an error. Returns {name, value, createdAt, updatedAt}.
params: owner, repo, org, environment, name*
gluecron_set_variableCreate or replace an Actions variable (plain text, not for secrets — use gluecron_set_repo_secret). Pass owner + repo for a repository variable, owner + repo + environment for an environment variable, or org for an organisation variable (organisation variables need an admin-scoped token). Safe to retry: the same value again changes nothing. Audit-logged. Returns {name, effect: created|updated|unch
params: owner, repo, org, environment, name*, value*
gluecron_delete_variableDelete an Actions variable by name. Pass owner + repo for a repository variable, owner + repo + environment for an environment variable, or org for an organisation variable (organisation variables need an admin-scoped token). A variable that does not exist is a not-found error, never reported as deleted. Audit-logged. Returns {name, deleted: true}.
params: owner, repo, org, environment, name, id
gluecron_delete_branchDelete a branch the way `git push --delete` would: write access, then branch protection (allow_deletion), rulesets and the push inspection apply; webhooks and CI fire. The default branch is never deleted. Pass expected_sha to delete only if the branch still points there. A missing branch is a not-found error. Mirrors DELETE /api/v3/repos/:o/:r/git/refs/heads/:branch. Audit-logged. Returns {branch,
params: owner*, repo*, branch*, expected_sha
gluecron_edit_commentReplace the text of a comment on an issue or pull request (by comment id). Its author or a repository writer only; the previous text is kept in the edit history; the same text again is `unchanged`; a concurrent edit is a conflict, never overwritten. Mentions the edit adds are notified. Mirrors PATCH /api/v3/repos/:o/:r/issues/comments/:id. Returns {id, kind, number, effect}.
params: owner*, repo*, comment_id*, body*, thread
gluecron_delete_commentDelete a comment on an issue or pull request (by comment id), with its edit history. Its author or a repository writer only. A missing comment is a not-found error, never reported as deleted. Mirrors DELETE /api/v3/repos/:o/:r/issues/comments/:id. Audit-logged (who wrote it, never what it said). Returns {id, kind, number, deleted: true}.
params: owner*, repo*, comment_id*, thread
gluecron_import_actionSite admins only (needs an 'admin'-scoped token). Import a third-party GitHub Action at ONE tag, branch or full commit SHA into the Gluecron mirror namespace (gluecron-actions/<owner>--<repo>), so workflows that say `uses: owner/repo@ref` can run it. Workflow runs never fetch from github.com; an action that is not imported is skipped. Re-importing the same ref updates it to what upstream has now.
params: action*, ref*, upstream_url
gluecron_backup_statusSite admins only (needs an 'admin'-scoped token). Backup and restore-drill health: whether the newest backup set is verified on an offsite target and how old it is, whether offsite copies are immutable (Object Lock), when a restore drill last passed, whether the backup worker is running, plus targets (host/bucket, never keys), schedule and recent runs. A stale, failed, local-only or never-drilled
params: start
gluecron_learning_statusSite admins only (needs an 'admin'-scoped token). Whether CI failures are being turned into lessons: classified failures, lesson.pattern events (matched to a docs/ops/CI_GATE_LESSONS.md row, or candidates), recurring candidates, and failures left without a lesson for over an hour, over 7 days. 'N failures, 0 lessons' reads RED. Also each pattern's count and register row, and the register. Counts o
params: none
gluecron_label_issueAttach one or more labels to an issue. Labels are created if they don't yet exist on the repo. Requires 'repo' scope. Returns {labels}.
params: owner*, repo*, number*, labels*
gluecron_unlabel_issueDetach a label from an issue. Idempotent. Requires 'repo' scope. Returns {removed: boolean}.
params: owner*, repo*, number*, label*
gluecron_assign_issueAssign (or, with remove: true, unassign) users on an issue or pull request. Real assignees since 2026-10-12 — up to 10 per thread, only users who can read the repository; the old `assignee:<username>` labels were migrated. Pass `assignee` (one username) or `assignees` (array). `type` is 'issue' (default) or 'pull_request'. Requires 'repo' scope and write access. Returns {assigned, skipped:[{userna
params: owner*, repo*, number*, assignee, assignees, remove, type
gluecron_search_issuesSearch issues by title/body keyword on a single repo, filtered by state. Returns ranked rows.
params: owner*, repo*, query*, state, limit
gluecron_request_changesRequest changes on a PR. Records a 'changes requested' review by the caller, which holds the PR on every merge path (web button, API, MCP merge, merge queue, merge train, autopilot) until the caller approves or someone with write access dismisses it (gluecron_dismiss_review), and posts the body as a comment. Requires 'repo' scope and write access.
params: owner*, repo*, number*, body*
gluecron_dismiss_reviewDismiss the standing 'changes requested' reviews on a PR (all of them, or one reviewer's), so they no longer hold the merge. Requires 'repo' scope and write access; the reason is required and audited.
params: owner*, repo*, number*, reason*, reviewer
gluecron_search_prsSearch pull requests by title/body keyword on a repo.
params: owner*, repo*, query*, state, limit
gluecron_list_pr_commentsList every comment on a pull request in chronological order: general comments (kind `issue_comment`), inline review comments (`review_comment`: path, line, thread {id, inReplyToId, position, replies, resolved, resolvedAt, resolvedBy}) and review summaries (`review`: state approved | changes_requested | commented). Each entry has author {login, type user|bot}, isAi (written by an AI reviewer), body
params: owner*, repo*, number*, kind, since, limit, offset
gluecron_open_draft_prOpen 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.
params: owner*, repo*, title*, body, head_branch*, base_branch
gluecron_set_pr_draftMark a pull request ready for review (draft=false) or convert it back to a draft (draft=true). Same rule as the web 'Ready for review' button: the caller needs write access and must be the PR author or the repository owner; only an open PR changes; marking ready starts the AI review. Idempotent. Requires 'repo' scope. Returns {number, isDraft, changed}.
params: owner*, repo*, number*, draft*
gluecron_generate_pr_descriptionGenerate 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}.
params: diff*, style
gluecron_update_pr_branchBring a PR branch up to date with its base: merge the base into the head server-side (the PR page's 'Update branch'). Never a force-push — the new head is a merge commit moved through the push gates, so it gets CI. On conflict nothing changes and `conflictFiles` lists the paths. Requires write access and 'repo' scope. Returns {ok, status: 'updated'|'up-to-date', headSha, previousHeadSha, baseSha,
params: owner*, repo*, number*
gluecron_update_prEdit a pull request's title, body, base branch and/or draft state. Title / body / base: the PR's author or anyone with write access; draft: the same rule as gluecron_set_pr_draft (write access and the PR author or repo owner; marking ready starts the AI review). Needs 'repo' scope. Changing the base (open PRs only) re-runs the PR's pull_request CI against the new base and disarms auto-merge. Retur
params: owner*, repo*, number*, title, body, base, draft
gluecron_set_auto_mergeArm (enabled: true) or disarm (enabled: false) auto-merge on one PR: it merges by itself through the full gated merge chain (CI, required checks, branch protection, CODEOWNERS, risk) once CI and every required check are green and no reviewer with write access has changes requested. Stays armed while anything is pending; `last_attempt.reason` says what it waits for. Arming is also the merge train's
params: owner*, repo*, number*, enabled*, merge_method
gluecron_get_pr_checksList every check at a PR's current head — workflow runs, gates and commit statuses — with status, conclusion, whether branch protection requires it, and the run's log URL; plus each required check's state (passing / pending / failing / missing) and the merge gate's own CI verdict. Read-only. Returns {head_sha, total_count, check_runs, required, ci}.
params: owner*, repo*, number*
gluecron_rerun_failed_jobsRe-run a failed or cancelled workflow run at the SAME commit (same inputs, same PR merge preview) — the run page's Re-run. Gluecron re-runs every job of the run (per-job re-run does not exist yet); a successful or still-running run is refused. Joins an identical queued run instead of stacking another. Requires write access and 'repo' scope. Returns {runId, previousRunId, joinedExistingRun, url}.
params: owner*, repo*, run_id*
gluecron_get_branch_protectionRead the branch-protection rule that applies to a branch (exact name or the glob that covers it): required checks, require_pr_run, required approvals, AI / human review, green gates, force-push / deletion, auto-merge. Read-only. Returns {protected: false} when no rule applies, else {protected: true, pattern, matched_by, required_checks, …}.
params: owner*, repo*, branch
gluecron_set_branch_protectionSet branch protection for one branch (partial update: fields you omit keep their value). Edits the rule named exactly after the branch; when only a glob rule covers it, a new exact rule is created seeded from the glob's settings and checks. required_checks replaces the required-check list ([] clears it). require_pr_run: a required check that names a workflow is met only by that workflow's pull_req
params: owner*, repo*, branch*, required_checks, require_pr_run, required_approvals, require_human_review, require_ai_approval, require_green_gates, require_pull_request, dismiss_stale_reviews, allow_force_push, allow_deletion, enable_auto_merge
gluecron_approve_prApprove a pull request: records an 'approved' review by the caller — the same review the web form and POST /api/v2/repos/:owner/:repo/pulls/:number/reviews write, so it counts toward branch protection's required approvals and clears the caller's own earlier request for changes. The PR must be open; its author cannot approve it. Requires write access and 'repo' scope. To request changes use gluecro
params: owner*, repo*, number*, body
gluecron_read_fileRead a file from a repo at a given ref. Mirrors GET /api/v2/repos/:owner/:repo/contents/:path. Returns {path, size, content, encoding, totalLines}. Pass `start_line` / `end_line` (1-based, inclusive) to read only part of a text file. A text file over ~60 KB read with no range returns its first ~60 KB of whole lines with `truncated: true`, `startLine`/`endLine` and a hint — ask for the next range t
params: owner*, repo*, ref, path*, encoding, start_line, end_line
gluecron_write_fileCreate or update a file on a branch via git plumbing. Wraps `createOrUpdateFileOnBranch`. Pass `content` as a UTF-8 string OR `content_base64` for binary. Meets the same branch protection, rulesets and secret scan as a git push, and fires CI/webhooks like one. Requires 'repo' scope.
params: owner*, repo*, path*, branch*, message*, content, content_base64, expect_blob_sha
gluecron_delete_fileDelete a file from a branch via git plumbing. Requires the existing blob sha (optimistic concurrency) and 'repo' scope. Meets the same branch protection, rulesets and secret scan as a git push, and fires CI/webhooks like one. Mirrors DELETE /api/v2/contents.
params: owner*, repo*, path*, branch*, message*, sha*
gluecron_list_treeList 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 listin
params: owner*, repo*, ref, path, recursive
gluecron_get_commitFetch 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.
params: owner*, repo*, sha*, include_files
gluecron_get_diffRead 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.
params: owner*, repo*, sha, base, head, include_patch, max_patch_bytes
gluecron_create_branchCreate a new branch ref pointing at an existing sha. Mirrors POST /api/v2/repos/.../git/refs. Gated like a push of the new branch (rulesets, secret scan of commits no other ref reaches) and fires CI/webhooks. Requires 'repo' scope. Returns {ref, sha}.
params: owner*, repo*, branch*, sha*
gluecron_atomic_multi_file_commitApply 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?}`. Meets the same branch protection, rulesets and secret scan as a git push, and fires CI/webhooks like one. Requires 'repo' scope.
params: owner*, repo*, branch*, base_branch, message*, changes*
gluecron_apply_patchCommit a patch to a branch without sending whole files — the way to change a few lines of a large file. `patch` is a unified diff as `git diff` prints it (one commit, `message` required) OR `git format-patch` mbox output (each patch becomes its own commit with the patch's own message and author, like `git am`; `message` is ignored). Applied server-side with `git apply --cached` against the branch
params: owner*, repo*, branch*, base_branch, expected_head_sha, patch*, message
gluecron_ship_specDrop 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.
params: owner*, repo*, title*, body*
gluecron_voice_to_prInterpret 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.
params: owner*, repo*, transcript*, as
gluecron_refactor_across_reposPlan + 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.
params: description*, repository_ids, dry_run
gluecron_explain_repoReturn the cached AI 'explain this codebase' Markdown for a repo. Pure read — never triggers a new generation (use the web UI for that).
params: owner*, repo*
gluecron_chat_with_repoStart 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.
params: owner*, repo*, message*, title
gluecron_chat_continueSend 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.
params: chat_id*, message*
gluecron_generate_testsGenerate 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.
params: owner*, repo*, number*, mode
gluecron_generate_commit_messageGenerate a commit message for a diff. Same engine as gluecron_generate_pr_description but explicit for the commit-message use case.
params: diff*, style
gluecron_generate_release_notesGenerate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data.
params: owner*, repo*, from_tag, to_tag*
gluecron_propose_migrationPropose a dependency-upgrade PR. Wraps src/lib/migration-assistant.proposeMajorMigration. Requires 'repo' scope.
params: owner*, repo*, dependency*, from_version*, to_version*, base_sha*, changelog
gluecron_propose_doc_updateManual trigger for the AI doc-update flow: scans tracked sections on the default branch and opens a PR rewriting stale prose. Requires 'repo' scope.
params: owner*, repo*
gluecron_trigger_workflowDispatch a workflow_dispatch run. Mirrors POST /api/v2/repos/.../actions/workflows/:filename/dispatches. Requires 'repo' scope.
params: owner*, repo*, filename*, ref, inputs
gluecron_get_workflow_runFetch a workflow run's metadata + status. Mirrors GET /api/v2/repos/.../actions/runs/:id. Also says how it relates to automatic retries: `retryOf` / `retryOfRunNumber` (the run this one retries after a deploy or a lost runner) and `retriedAs` ({id, runNumber} of the run that retried this one, or null). A queued run that no runner can take carries `queueReason` (e.g. "waiting for a runner: 2 config
params: owner*, repo*, run_id*
gluecron_list_workflow_runsList a repository's workflow runs, newest first, with optional branch/status/event filters. Mirrors GET /api/v2/repos/.../actions/runs. The companion to gluecron_get_workflow_run / gluecron_cancel_workflow_run — this is how an agent finds the run ids to inspect or cancel (issue #10493: without it, stale queued runs could not be discovered from the tool surface at all).
params: owner*, repo*, branch, status, event, limit, offset
gluecron_get_workflow_logsReturn a workflow run's logs plus a failure summary. Always includes run metadata (number, workflow, event, ref, sha), per-job and per-step status / exit code / duration, `failedSteps` (`job / step`) and `testFailures` (failing test names, read from each step's structured results parsed before its log was cut, or the reason they cannot all be named; null when no job failed). `testFailures.details`
params: owner*, repo*, run_id*, step, tail_lines
gluecron_explain_failureExplain a failed CI run: for each failed step, its class (compile / test / flaky / dependency / env / infra / lint / security / unknown) and the rule that chose it, the normalised error signature, failing tests, the files the commit touched, prior occurrences of the same failure (this repo, your other repos with the same owner or org, and platform-wide counts only) with the fix rate, and a suggest
params: run_id*, owner, repo, include_diff
gluecron_list_flaky_testsList a repository's flaky tests. A test is flaky only with a forensic repro: when it failed, CI re-ran just that test in the same order, alone, with the clock shifted +137 ms and +1 s, in TZ=Pacific/Chatham and in a fixed random order, and a variable flipped its verdict N times in a row on the same git tree. Each entry has the test, file, state (active / expired / resolved, or unexplained = flippe
params: owner*, repo*, limit, window_days
gluecron_cancel_workflow_runCancel a queued/running workflow run. Requires 'repo' scope.
params: owner*, repo*, run_id*
gluecron_prioritize_workflow_runMove a QUEUED workflow run into the priority lane: the runner claims it ahead of the class order, highest `level` first (normal < high < critical), then oldest (issue #10898). The lane holds at most a third of the runner slots, so prioritizing many runs cannot starve the rest. Calling again on a prioritized queued run changes its level. Only queued runs; a running or finished run is reported, not
params: owner*, repo*, run_id*, level
gluecron_review_deploymentApprove or reject a workflow run's jobs waiting on a protected environment (`environment:` with required reviewers). The caller must be a reviewer of every environment selected (the environment's reviewers, or the repository owner when none are listed). An approval runs the job (after the environment's wait timer, if any); a rejection fails it. Mirrors POST /api/v2/repos/.../actions/runs/:id/pendi
params: owner*, repo*, run_id*, state*, environments, comment
gluecron_create_runner_registration_tokenCreate a one-time CI runner registration token for an owner (your username, an org you own or admin, or 'platform' as a site admin). A runner started with RUNNER_REGISTRATION_TOKEN=<token> registers once and gets its own long-lived credential; that owner's CI then runs on it. Expires in an hour. Returns {owner, token, expiresAt, gluecronUrl}.
params: owner*, labels
gluecron_list_runnersList the CI runners registered to an owner (username, org slug, or 'platform'): id, name, url, labels, slots, online, last seen, revoked; allowSharedOverflow (the setting); and sharedLane, whether the owner's jobs actually run on shared runners: 'used (no own runners)', 'overflow allowed' or 'not used (own runners only)', explained in sharedLaneDetail.
params: owner*
gluecron_revoke_runnerRevoke a CI runner by id: nothing is dispatched to it from now on, its next heartbeat is refused and it stops accepting jobs. Cannot be undone — register a new runner instead. Returns {id, revoked}.
params: id*
gluecron_ci_executorWhere CI runs and why: mode (external | in-process), declaration (external | in-process | auto) and its source (CI_EXECUTOR on the box, the estate-wide setting, or auto), runners configured / reachable / busy / slots, lastSeenAt, state (ok | degraded | unconfigured | in-process) and holdReason — the sentence every queued run shows when no runner can take it. In-process never runs while external ru
params: declare
gluecron_get_preview_urlReturn 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).
params: owner*, repo*, branch*
gluecron_provision_pr_sandboxProvision (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.
params: owner*, repo*, number*
gluecron_create_agent_sessionMint a new agent-multiplayer session. Returns the plaintext `token` exactly once (store it). Requires 'admin' scope.
params: name*, repository_id, branch_namespace, budget_cents_per_day
gluecron_acquire_leaseGrab an exclusive lease on a PR, issue, branch or file path in a repository you can write, for one of your agent sessions. Pass owner+repo with a bare key (PR/issue number, branch name, path), or target_id '<repository id>:<key>'. Returns lease null when another agent holds an active lease.
params: agent_session_id*, target_type*, target_id*, owner, repo, duration_ms
gluecron_release_leaseRelease a lease by id. Idempotent. Returns {released}.
params: lease_id*
gluecron_get_agent_budgetReturn spent / cap / remaining cents for an agent session.
params: agent_session_id*
gluecron_semantic_searchQuery 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.
params: owner*, repo*, query*, limit
gluecron_search_codeLiteral / regex code search (git grep, basic regex) across a repo at a ref. The dependable way to find code on this host — works on every repo, indexed or not. Optional scoping: `path` (a directory or file prefix, literal), `glob` (git pathspec glob such as `src/**/*.ts`, relative to `path` when both are given), `ignore_case`, and `files_only` (unique files with match counts instead of lines). Ret
params: owner*, repo*, query*, ref, limit, path, glob, files_only, ignore_case
gluecron_find_symbolFind definitions of a symbol by name within a repo. Wraps src/lib/symbols.findDefinitions.
params: owner*, repo*, name*
gluecron_pr_status_summaryCompute 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.
params: owner*, repo*, number*
gluecron_ci_queue_statusHow full the shared CI queue is, and what to do about it: level (ok / busy / saturated), runs queued and running, runner slots, estimated minutes before a new run starts, and — with owner+repo — that repository's queued/running runs, its share of CI work, the slots it may hold while others wait (per work class, and across classes), a recommendation (e.g. batch changes into fewer pushes), and `expl
params: owner, repo
gluecron_handoverStart here when picking up work: the live state of a repository, read from git and CI rather than from a handoff doc. Returns `summary` (one paragraph), `blockers` (most urgent first), the default branch's CI per workflow (red streak, since when, last green run), the build this Gluecron instance serves and how many commits it is behind (when it is this repository), every open PR grouped green / pe
params: owner*, repo*, merged_since_hours
gluecron_ai_cost_summaryReturn AI spend rollups. Scope by one of: user_id (self), repo {owner,repo}, or agent_session_id. Defaults to caller's user spend.
params: scope, owner, repo, agent_session_id
gluecron_security_scanEverything 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 'a
params: owner*, repo*, ref, include_ai_review, max_candidate_lines

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.