Skip to content

Gluecron

by gluecron.com · remote · no sign-in to list tools · v1.0.0 · published by com.gluecron

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

Deletes · 16Final · 1Changes · 50

108 tools: 16 can delete or cancel things, 1 do something that can't be undone, 50 change things and 41 only read.

Scanned Oct 21, 2026

9 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http gluecron https://gluecron.com/mcp

Findings

Matches of fixed checks, with the text they matched.

6 warn3 info
  • The server marks "gluecron_backup_status" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false}; The name "gluecron_backup_status" says "status": a word for reading.

    What this check looks for
  • The server marks "gluecron_generate_pr_description" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "gluecron_generate_pr_description" says "generate": a word for a change.

    What this check looks for
  • The server marks "gluecron_ship_spec" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false}; The description's first verb is "drop": a word for removing or ending something.

    What this check looks for
  • The server marks "gluecron_generate_commit_message" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "gluecron_generate_commit_message" says "generate": a word for a change.

    What this check looks for
  • The server marks "gluecron_generate_release_notes" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "gluecron_generate_release_notes" says "generate": a word for a change.

    What this check looks for
  • The server marks "gluecron_handover" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false}; The description's first verb is "start": a word for a change.

    What this check looks for
Show 3 more findings

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

108 tools

Deletes or cancels 16Claude Code: deny
  • gluecron_cancel_workflow_runCancel a queued/running workflow run.No findings

    Why it is in this group

    • The name "gluecron_cancel_workflow_run" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a queued/running workflow run. Requires 'repo' scope.

    Annotations the server declares

    • title: Cancel workflow run
    • readOnlyHint: false
    • destructiveHint: true
  • gluecron_close_issueClose an open issue.No findings

    Why it is in this group

    • The name "gluecron_close_issue" says "close": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Close an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns {state}.

    Annotations the server declares

    • title: Close issue
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • gluecron_close_prClose an open pull request without merging.No findings

    Why it is in this group

    • The name "gluecron_close_pr" says "close": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Close an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns {state}.

    Annotations the server declares

    • title: Close pull request
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • gluecron_delete_fileDelete a file from a branch via git plumbing.No findings

    Why it is in this group

    • The name "gluecron_delete_file" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete 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.

    Annotations the server declares

    • title: Delete file
    • readOnlyHint: false
    • destructiveHint: true
  • 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 wi…No findings

    Why it is in this group

    • The name "gluecron_delete_repo" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete 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 repository) or a site admin may — admin collaborators and org admins are refused, as in the web UI. Requires 'admin' token scope. Audited as repo.delete; the owner is notified. To remove it for good before then, use gluecron_purge_repo. Returns {deleted: true, soft: true, id, restorable_until}.

    Annotations the server declares

    • title: Delete repository (restorable)
    • readOnlyHint: false
    • destructiveHint: true
  • gluecron_delete_repo_secretDelete one workflow secret from a repository by name (cron_secret is read as CRON_SECRET).No findings

    Why it is in this group

    • The name "gluecron_delete_repo_secret" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete 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}.

    Annotations the server declares

    • title: Delete repository secret
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • gluecron_delete_variableDelete an Actions variable by name.No findings

    Why it is in this group

    • The name "gluecron_delete_variable" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete 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}.

    Annotations the server declares

    • title: Delete an Actions variable
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • gluecron_merge_prMerge an open PR.No findings

    Why it is in this group

    • The name "gluecron_merge_pr" says "merge": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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?}.

    Annotations the server declares

    • title: Merge pull request
    • readOnlyHint: false
    • destructiveHint: true
  • gluecron_purge_repoPERMANENTLY delete an already-deleted repository now, instead of waiting for its restore window to end.No findings

    Why it is in this group

    • The name "gluecron_purge_repo" says "purge": a word for removing or ending something.
    • The description says "PERMANENTLY delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    PERMANENTLY 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 its full name (owner/name). Owner (personal owner, or an org owner) or a site admin; needs 'admin' scope. Audited as repo.purge. Returns {purged: true, id, full_name}.

    Annotations the server declares

    • title: Purge deleted repository (irreversible)
    • readOnlyHint: false
    • destructiveHint: true
  • gluecron_revoke_repo_tokenRevoke one of your fine-grained repository tokens by id (from gluecron_list_repo_tokens).No findings

    Why it is in this group

    • The name "gluecron_revoke_repo_token" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revoke 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.

    Annotations the server declares

    • title: Revoke repository token
    • readOnlyHint: false
    • destructiveHint: true
  • 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.No findings

    Why it is in this group

    • The name "gluecron_revoke_runner" says "revoke": a word for removing or ending something.
    • The description says "Cannot be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revoke 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}.

    Annotations the server declares

    • title: Revoke CI runner
    • readOnlyHint: false
    • destructiveHint: true
  • gluecron_revoke_tokenRevoke one of your tokens by type and id.No findings

    Why it is in this group

    • The name "gluecron_revoke_token" says "revoke": a word for removing or ending something.
    • The description says "cannot be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revoke 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.

    Annotations the server declares

    • title: Revoke token
    • readOnlyHint: false
    • destructiveHint: true
  • gluecron_rotate_tokenRotate one of your tokens: mint a new secret with the same name, scopes / permissions, repository and expiry, returned ONCE as `token`.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Rotate 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 rotations never both win. `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.

    Annotations the server declares

    • title: Rotate token
    • readOnlyHint: false
    • destructiveHint: true
  • gluecron_set_variableCreate or replace an Actions variable (plain text, not for secrets — use gluecron_set_repo_secret).No findings

    Why it is in this group

    • The name "gluecron_set_variable" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create 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|unchanged, updatedAt}.

    Annotations the server declares

    • title: Set an Actions variable
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • gluecron_ship_specDrop a spec file in .gluecron/specs/ with status: ready so the autopilot picks it up.1 finding

    Why it is in this group

    • The description's first verb is "drop": a word for removing or ending something.
    • The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "gluecron_ship_spec" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false}; The description's first verb is "drop": a word for removing or ending something.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Ship spec
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_update_repoUpdate repository description / visibility / default_branch.No findings

    Why it is in this group

    • The name "gluecron_update_repo" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Update repository description / visibility / default_branch. Requires 'admin' access on the repo (owner, org owners/admins, admin collaborators) and 'repo' scope. Returns {ok: true}.

    Annotations the server declares

    • title: Update repository settings
    • readOnlyHint: false
    • destructiveHint: true
Can't be undone 1Claude Code: ask
  • gluecron_chat_continueSend another message to an existing repo chat.No findings

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Continue repository chat
    • readOnlyHint: false
    • destructiveHint: false
Changes things 50Claude Code: ask
  • 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Grab 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.

    Annotations the server declares

    • title: Acquire lease
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_apply_patchCommit a patch to a branch without sending whole files — the way to change a few lines of a large file.No findings

    Why it is in this group

    • The name "gluecron_apply_patch" says "apply": a word for a change.
    Description, as the server wrote it
    Commit 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 head (created from `base_branch` if missing); blank context lines a transport stripped to empty lines, or trimmed off the end of the patch, are restored first (git still checks them against the file). `expected_head_sha` makes it compare-and-swap (all zeros = branch must not exist yet). Meets the same branch protection, rulesets and secret scan as a git push, and fires CI/webhooks like one. Patch limit 2 MiB. Requires 'repo' scope. Returns {branch, commit_sha, parent_sha, files_changed, files, commits, created} (+ blank_context_lines_restored / trimmed_blank_context_lines_restored when a repair was needed).

    Annotations the server declares

    • title: Apply patch
    • readOnlyHint: false
    • destructiveHint: false
  • 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 towa…No findings

    Why it is in this group

    • The name "gluecron_approve_pr" says "approve": a word for a change.
    Description, as the server wrote it
    Approve 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 gluecron_request_changes. Returns {reviewId, number, state, url}.

    Annotations the server declares

    • title: Approve pull request
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_assign_issueAssign (or, with remove: true, unassign) users on an issue or pull request.No findings

    Why it is in this group

    • The name "gluecron_assign_issue" says "assign": a word for a change.
    Description, as the server wrote it
    Assign (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:[{username, reason}], removed, assignees}.

    Annotations the server declares

    • title: Assign issue
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • 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).No findings

    Why it is in this group

    • The name "gluecron_atomic_multi_file_commit" says "commit": a word for a change.
    Description, as the server wrote it
    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?}`. Meets the same branch protection, rulesets and secret scan as a git push, and fires CI/webhooks like one. Requires 'repo' scope.

    Annotations the server declares

    • title: Atomic multi-file commit
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_backup_statusSite admins only (needs an 'admin'-scoped token).1 finding

    Why it is in this group

    • The name "gluecron_backup_status" says "status": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "gluecron_backup_status" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false}; The name "gluecron_backup_status" says "status": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Site 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 backup reads RED. Pass start: 'backup' or 'drill' to queue one for the worker (picked up within 15 minutes; audit-logged). Returns {health, reasons, targets, problems, schedule, runs, started?}.

    Annotations the server declares

    • title: Backup status (admin)
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_chat_with_repoStart a new chat with a repo: creates a chat row, sends the first user message, streams + persists the assistant reply.No findings

    Why it is in this group

    • The description's first verb is "start": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Chat with repository
    • readOnlyHint: false
    • destructiveHint: false
  • 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 c…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Where 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 runners are configured. Site admins (admin scope) also get per-runner rows and may pass `declare` (external | in-process | auto) to set the estate-wide setting, audited (the answer then carries `saved`). Same as GET/PUT /api/v2/ci/executor and /admin/runners.

    Annotations the server declares

    • title: CI executor status
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_comment_issueAdd a comment to an existing issue.No findings

    Why it is in this group

    • The name "gluecron_comment_issue" says "comment": a word for a change.
    Description, as the server wrote it
    Add a comment to an existing issue. Requires authenticated caller with write access. Returns {commentId}.

    Annotations the server declares

    • title: Comment on issue
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_comment_prAdd a comment to a pull request.No findings

    Why it is in this group

    • The name "gluecron_comment_pr" says "comment": a word for a change.
    Description, as the server wrote it
    Add a comment to a pull request. Requires authenticated caller with write access. Returns {commentId}.

    Annotations the server declares

    • title: Comment on pull request
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_create_agent_sessionMint a new agent-multiplayer session.No findings

    Why it is in this group

    • The name "gluecron_create_agent_session" says "create": a word for a change.
    Description, as the server wrote it
    Mint a new agent-multiplayer session. Returns the plaintext `token` exactly once (store it). Requires 'admin' scope.

    Annotations the server declares

    • title: Create agent session
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_create_branchCreate a new branch ref pointing at an existing sha.No findings

    Why it is in this group

    • The name "gluecron_create_branch" says "create": a word for a change.
    Description, as the server wrote it
    Create 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}.

    Annotations the server declares

    • title: Create branch
    • readOnlyHint: false
    • destructiveHint: false
  • 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.1 finding

    Why it is in this group

    • The name "gluecron_create_deploy_token" says "create": a word for a change.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...rt-lived, repository-scoped HTTPS clone credential (a deploy token) and return it once wit..."

      What this check looks for
    Description, as the server wrote it
    Mint 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 is not enough) and 'repo' scope. Audit-logged. Returns {id, title, readOnly, expiresAt, token, cloneUrl, url}.

    Annotations the server declares

    • title: Create deploy token
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_create_issueCreate a new issue on a Gluecron repository.No findings

    Why it is in this group

    • The name "gluecron_create_issue" says "create": a word for a change.
    Description, as the server wrote it
    Create a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns {number, url}.

    Annotations the server declares

    • title: Create issue
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_create_prOpen a new pull request.No findings

    Why it is in this group

    • The name "gluecron_create_pr" says "create": a word for a change.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Create pull request
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_create_repo_tokenMint a fine-grained repository token (`gcft_…`) for ONE repository and return it once.No findings

    Why it is in this group

    • The name "gluecron_create_repo_token" says "create": a word for a change.
    Description, as the server wrote it
    Mint 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 grantable); `expires_in` is optional: omit it (or "never") for no expiration, or give seconds or "30m", "12h", "7d", "1y" (min 5 minutes, max 1 year). Effective access is always held to YOUR current access to the repo, re-checked on every use, and branch protection applies as it does to you. Needs 'repo' scope. Audit-logged. Returns {id, name, repository, permissions, expiresAt, tokenPrefix, token}.

    Annotations the server declares

    • title: Create repository token
    • readOnlyHint: false
    • destructiveHint: false
  • 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).1 finding

    Why it is in this group

    • The name "gluecron_create_runner_registration_token" says "create": a word for a change.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...isters once and gets its own long-lived credential; that owner's CI then runs on it. Expir..."

      What this check looks for
    Description, as the server wrote it
    Create 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}.

    Annotations the server declares

    • title: Create runner registration token
    • readOnlyHint: false
    • destructiveHint: false
  • 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.No findings

    Why it is in this group

    • The name "gluecron_dismiss_review" says "dismiss": a word for a change.
    Description, as the server wrote it
    Dismiss 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.

    Annotations the server declares

    • title: Dismiss a request for changes
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_fork_repoFork a repository to the authenticated caller's namespace.No findings

    Why it is in this group

    • The name "gluecron_fork_repo" says "fork": a word for a change.
    Description, as the server wrote it
    Fork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns {owner, repo, url}. Requires 'repo' scope.

    Annotations the server declares

    • title: Fork repository
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_generate_commit_messageGenerate a commit message for a diff.1 finding

    Why it is in this group

    • The name "gluecron_generate_commit_message" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "gluecron_generate_commit_message" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "gluecron_generate_commit_message" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a commit message for a diff. Same engine as gluecron_generate_pr_description but explicit for the commit-message use case.

    Annotations the server declares

    • title: Generate commit message
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_generate_pr_descriptionGenerate an AI commit-message-style description for a diff.1 finding

    Why it is in this group

    • The name "gluecron_generate_pr_description" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "gluecron_generate_pr_description" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "gluecron_generate_pr_description" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Generate PR description
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_generate_release_notesGenerate release notes between two tags.1 finding

    Why it is in this group

    • The name "gluecron_generate_release_notes" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "gluecron_generate_release_notes" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false}; The name "gluecron_generate_release_notes" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data.

    Annotations the server declares

    • title: Generate release notes
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_generate_testsGenerate tests for a PR via Claude.No findings

    Why it is in this group

    • The name "gluecron_generate_tests" says "generate": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Generate tests for PR
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_handoverStart here when picking up work: the live state of a repository, read from git and CI rather than from a handoff doc.1 finding

    Why it is in this group

    • The description's first verb is "start": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "gluecron_handover" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false}; The description's first verb is "start": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Start 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 / pending / failing / draft as the merge gate judges it, PRs merged in the last `merged_since_hours` (default 48), and the CI queue. Read-only.

    Annotations the server declares

    • title: Handover
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_import_actionSite admins only (needs an 'admin'-scoped token).No findings

    Why it is in this group

    • The name "gluecron_import_action" says "import": a word for a change.
    Description, as the server wrote it
    Site 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. Audit-logged. Returns {action, ref, sha, previousSha, mirror, upstreamUrl, hasActionYml}.

    Annotations the server declares

    • title: Import action (admin)
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_label_issueAttach one or more labels to an issue.No findings

    Why it is in this group

    • The name "gluecron_label_issue" says "label": a word for a change.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Label issue
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_open_draft_prOpen a draft pull request.No findings

    Why it is in this group

    • The name "gluecron_open_draft_pr" says "open": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Open draft pull request
    • readOnlyHint: false
    • destructiveHint: false
  • 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).No findings

    Why it is in this group

    • The name "gluecron_prioritize_workflow_run" says "run": a word for a change.
    Description, as the server wrote it
    Move 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 changed. Requires 'repo' scope and write access; `high` and `critical` also require a site admin.

    Annotations the server declares

    • title: Prioritize workflow run
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • 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.No findings

    Why it is in this group

    • The name "gluecron_propose_doc_update" says "update": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Propose doc update PR
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_propose_migrationPropose a dependency-upgrade PR.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Propose a dependency-upgrade PR. Wraps src/lib/migration-assistant.proposeMajorMigration. Requires 'repo' scope.

    Annotations the server declares

    • title: Propose migration PR
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_provision_pr_sandboxProvision (or re-provision) a sandbox for a PR.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Provision PR sandbox
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_refactor_across_reposPlan + execute a refactor that spans multiple repos owned by the caller.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Refactor across repos
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_release_leaseRelease a lease by id.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Release a lease by id. Idempotent. Returns {released}.

    Annotations the server declares

    • title: Release lease
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • gluecron_reopen_issueReopen a previously closed issue.No findings

    Why it is in this group

    • The name "gluecron_reopen_issue" says "reopen": a word for a change.
    Description, as the server wrote it
    Reopen a previously closed issue. Requires authenticated caller with write access. Idempotent. Returns {state}.

    Annotations the server declares

    • title: Reopen issue
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • 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), …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Repository health report
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_request_changesRequest changes on a PR.No findings

    Why it is in this group

    • The name "gluecron_request_changes" says "request": a word for a change.
    Description, as the server wrote it
    Request 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.

    Annotations the server declares

    • title: Request PR changes
    • readOnlyHint: false
    • destructiveHint: false
  • 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Re-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}.

    Annotations the server declares

    • title: Re-run failed workflow run
    • readOnlyHint: false
    • destructiveHint: false
  • 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 exa…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Restore 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 site admin; needs 'admin' scope. Audited as repo.restore. Returns {restored: true, id, full_name}.

    Annotations the server declares

    • title: Restore deleted repository
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_review_deploymentApprove or reject a workflow run's jobs waiting on a protected environment (`environment:` with required reviewers).No findings

    Why it is in this group

    • The description's first verb is "approve": a word for a change.
    Description, as the server wrote it
    Approve 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/pending_deployments. Requires 'repo' scope.

    Annotations the server declares

    • title: Review deployment
    • readOnlyHint: false
    • destructiveHint: false
  • 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), Gluecr…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Repository security scan (honest coverage)
    • readOnlyHint: true
    • destructiveHint: false
  • 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, ris…No findings

    Why it is in this group

    • The name "gluecron_set_auto_merge" says "set": a word for a change.
    Description, as the server wrote it
    Arm (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. Requires write access and 'repo' scope. merge_method: 'merge' only. Returns {number, auto_merge}.

    Annotations the server declares

    • title: Set PR auto-merge
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • gluecron_set_branch_protectionSet branch protection for one branch (partial update: fields you omit keep their value).No findings

    Why it is in this group

    • The name "gluecron_set_branch_protection" says "set": a word for a change.
    Description, as the server wrote it
    Set 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_request run. Requires ADMIN access to the repo and 'repo' scope. Audit-logged. Returns the resulting rule plus {created, warnings}.

    Annotations the server declares

    • title: Set branch protection
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • gluecron_set_pr_draftMark a pull request ready for review (draft=false) or convert it back to a draft (draft=true).No findings

    Why it is in this group

    • The name "gluecron_set_pr_draft" says "set": a word for a change.
    Description, as the server wrote it
    Mark 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}.

    Annotations the server declares

    • title: Set PR draft state
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • gluecron_set_repo_secretCreate or replace one workflow secret on a repository, used in workflows as ${{ secrets.NAME }}.No findings

    Why it is in this group

    • The name "gluecron_set_repo_secret" says "set": a word for a change.
    Description, as the server wrote it
    Create 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 only if nobody changed it since: a newer value is never overwritten (error 'conflict'), a deleted secret is not re-created (error 'missing'). Setting the value it already has writes nothing (result 'unchanged'), so a retry is safe. Needs admin access to the repository and 'repo' scope. Audit-logged (name only). Returns {repository, name, created, result: 'created'|'updated'|'unchanged', updated_at}.

    Annotations the server declares

    • title: Set repository secret
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_trigger_workflowDispatch a workflow_dispatch run.No findings

    Why it is in this group

    • The name "gluecron_trigger_workflow" says "trigger": a word for a change.
    Description, as the server wrote it
    Dispatch a workflow_dispatch run. Mirrors POST /api/v2/repos/.../actions/workflows/:filename/dispatches. Requires 'repo' scope.

    Annotations the server declares

    • title: Trigger workflow
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_unlabel_issueDetach a label from an issue.No findings

    Why it is in this group

    • The description's first verb is "detach": a word for a change.
    Description, as the server wrote it
    Detach a label from an issue. Idempotent. Requires 'repo' scope. Returns {removed: boolean}.

    Annotations the server declares

    • title: Remove issue label
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • gluecron_update_prEdit a pull request's title, body, base branch and/or draft state.No findings

    Why it is in this group

    • The name "gluecron_update_pr" says "update": a word for a change.
    Description, as the server wrote it
    Edit 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. Returns {number, title, body, baseBranch, headBranch, isDraft, changed, autoMergeDisarmed, url}.

    Annotations the server declares

    • title: Update pull request
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
  • 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').No findings

    Why it is in this group

    • The name "gluecron_update_pr_branch" says "update": a word for a change.
    Description, as the server wrote it
    Bring 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, url} or {ok: false, reason, message, conflictFiles}.

    Annotations the server declares

    • title: Update PR branch
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_voice_to_prInterpret a free-form voice transcript and either ship it as a spec or create an issue (caller picks via `as`).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Voice to PR
    • readOnlyHint: false
    • destructiveHint: false
  • gluecron_write_fileCreate or update a file on a branch via git plumbing.No findings

    Why it is in this group

    • The name "gluecron_write_file" says "write": a word for a change.
    Description, as the server wrote it
    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. Meets the same branch protection, rulesets and secret scan as a git push, and fires CI/webhooks like one. Requires 'repo' scope.

    Annotations the server declares

    • title: Write file
    • readOnlyHint: false
    • destructiveHint: false
Only reads 41Claude Code: allow
  • gluecron_ai_cost_summaryReturn AI spend rollups.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return AI spend rollups. Scope by one of: user_id (self), repo {owner,repo}, or agent_session_id. Defaults to caller's user spend.

    Annotations the server declares

    • title: AI cost summary
    • readOnlyHint: true
    • destructiveHint: false
  • 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 — wit…No findings

    Why it is in this group

    • The name "gluecron_ci_queue_status" says "status": a word for reading.
    Description, as the server wrote it
    How 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 `explanation`: each work class's queued/running runs (interactive, review, push, schedule) and, for each of the repository's queued runs, its class and why it waits (code + sentence, from the claim plan itself). The same `ciQueue` block the write tools return. Ask before a burst of pushes. Also `executor`: where CI runs (external runners or in-process), runners configured / reachable / busy, and `holdReason` when no runner can take a run. Read-only.

    Annotations the server declares

    • title: CI queue status
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_clone_urlReturn the authenticated HTTPS clone URL for a repo + a credential-helper hint.1 finding

    Why it is in this group

    • The description's first verb is "return": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...nticated HTTPS clone URL for a repo + a credential-helper hint. Use this instead of embedd..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get clone URL
    • readOnlyHint: true
    • destructiveHint: false
  • 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 …No findings

    Why it is in this group

    • The name "gluecron_explain_failure" says "explain": a word for reading.
    Description, as the server wrote it
    Explain 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 suggested fix — the commit / PR that fixed it last time plus its diff limited to the relevant files, or the class's standard remedy. Infra and flaky failures never suggest a code change. `run_id` is the run's full id; with `owner` + `repo` an 8+ hex prefix also works.

    Annotations the server declares

    • title: Explain CI failure
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_explain_repoReturn the cached AI 'explain this codebase' Markdown for a repo.No findings

    Why it is in this group

    • The name "gluecron_explain_repo" says "explain": a word for reading.
    Description, as the server wrote it
    Return the cached AI 'explain this codebase' Markdown for a repo. Pure read — never triggers a new generation (use the web UI for that).

    Annotations the server declares

    • title: Explain repository (cached)
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_find_symbolFind definitions of a symbol by name within a repo.No findings

    Why it is in this group

    • The name "gluecron_find_symbol" says "find": a word for reading.
    Description, as the server wrote it
    Find definitions of a symbol by name within a repo. Wraps src/lib/symbols.findDefinitions.

    Annotations the server declares

    • title: Find symbol
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_get_agent_budgetReturn spent / cap / remaining cents for an agent session.No findings

    Why it is in this group

    • The name "gluecron_get_agent_budget" says "get": a word for reading.
    Description, as the server wrote it
    Return spent / cap / remaining cents for an agent session.

    Annotations the server declares

    • title: Get agent budget
    • readOnlyHint: true
    • destructiveHint: false
  • 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 gate…No findings

    Why it is in this group

    • The name "gluecron_get_branch_protection" says "get": a word for reading.
    Description, as the server wrote it
    Read 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, …}.

    Annotations the server declares

    • title: Get branch protection
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_get_commitFetch a single commit by SHA: metadata plus the list of files it changed (path, status, additions, deletions).No findings

    Why it is in this group

    • The name "gluecron_get_commit" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get commit
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_get_diffRead the actual changes in a commit or a branch range.No findings

    Why it is in this group

    • The name "gluecron_get_diff" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get diff
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_get_prFetch the full detail record of a pull request (title, body, state, branches, draft, author, timestamps).No findings

    Why it is in this group

    • The name "gluecron_get_pr" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Get pull request
    • readOnlyHint: true
    • destructiveHint: false
  • 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 eac…No findings

    Why it is in this group

    • The name "gluecron_get_pr_checks" says "get": a word for reading.
    Description, as the server wrote it
    List 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}.

    Annotations the server declares

    • title: Get PR checks
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_get_preview_urlReturn the branch-preview URL + status for a (repo, branch) pair.No findings

    Why it is in this group

    • The name "gluecron_get_preview_url" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Get preview URL
    • readOnlyHint: true
    • destructiveHint: false
  • 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).No findings

    Why it is in this group

    • The name "gluecron_get_token" says "get": a word for reading.
    Description, as the server wrote it
    One 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.

    Annotations the server declares

    • title: Get token
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_get_variableRead one Actions variable by name.No findings

    Why it is in this group

    • The name "gluecron_get_variable" says "get": a word for reading.
    Description, as the server wrote it
    Read 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}.

    Annotations the server declares

    • title: Get an Actions variable
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • gluecron_get_workflow_logsReturn a workflow run's logs plus a failure summary.No findings

    Why it is in this group

    • The name "gluecron_get_workflow_logs" says "get": a word for reading.
    Description, as the server wrote it
    Return 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` marks each failure `flaky` (an active forensic label with a repro, from another run — with its label and flip rate), `known` (also failing on the default branch's latest run), `infra` (timed out under load) or `new`, with its file, message, the targeted retry's verdict and this run's determinism-forensics finding (`forensic`: class, label, variable, repro) when they ran. A step whose log was cut carries `fullLog` (artifact download of the uncut output). `step` (a step name or 1-based position within its job) returns only that step's stdout/stderr; `tail_lines` keeps the last N lines. The full per-job logs are included only when neither is given. JSON-friendly companion to the ZIP-download endpoint.

    Annotations the server declares

    • title: Get workflow logs
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_get_workflow_runFetch a workflow run's metadata + status.No findings

    Why it is in this group

    • The name "gluecron_get_workflow_run" says "get": a word for reading.
    Description, as the server wrote it
    Fetch 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 configured, 0 reachable, last seen 4m ago"). `workClass` (interactive / review / push / schedule — how the CI claim shares slots); a queued run carries `queue` ({code, text}: its place in the claim order, from the claim plan itself); a schedule run carries `coalescedFires` / `lastCoalescedAt`, and `coalescedNote` when later scheduled fires folded into it while it was queued.

    Annotations the server declares

    • title: Get workflow run
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_learning_statusSite admins only (needs an 'admin'-scoped token).No findings

    Why it is in this group

    • The name "gluecron_learning_status" says "status": a word for reading.
    Description, as the server wrote it
    Site 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 only: no log text or repository. Returns {health, patterns, register}.

    Annotations the server declares

    • title: Learning status (admin)
    • readOnlyHint: true
    • destructiveHint: false
  • 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).No findings

    Why it is in this group

    • The name "gluecron_list_deleted_repos" says "list": a word for reading.
    Description, as the server wrote it
    List 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}]}.

    Annotations the server declares

    • title: List deleted repositories
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_list_flaky_testsList a repository's flaky tests.No findings

    Why it is in this group

    • The name "gluecron_list_flaky_tests" says "list": a word for reading.
    Description, as the server wrote it
    List 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 = flipped with no repro, NOT flaky), label (clock-dependent, order-dependent, concurrency-dependent), the variable, the exact repro command, owner, expiry, issue number, flip rate and evidence runs. Information only — flaky tests are never skipped or quarantined; one targeted retry, and the merge gate excuses a failure only when that retry passed in the same run and the label is active.

    Annotations the server declares

    • title: List flaky tests
    • readOnlyHint: true
    • destructiveHint: false
  • 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,…No findings

    Why it is in this group

    • The name "gluecron_list_pr_comments" says "list": a word for reading.
    Description, as the server wrote it
    List 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, createdAt, updatedAt. A review thread is the inline comments on one file+line; the earliest is its root and holds the resolved state. Gluecron does not store a review comment's commit or diff side, so `commitId` and `side` are always null. Only approved (moderated) comments; unsubmitted draft reviews are private to their author and not listed. `kind`: all (default) | issue | review (review comments + review summaries). `since`: ISO-8601 — only entries updated at or after it. Paged: `total` is the full filtered count, `nextOffset` pages through it. Works anonymously on public repos; private repos need read access.

    Annotations the server declares

    • title: List PR comments
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_list_prsList pull requests on a repo, filtered by state (open|closed|merged|all).No findings

    Why it is in this group

    • The name "gluecron_list_prs" says "list": a word for reading.
    Description, as the server wrote it
    List pull requests on a repo, filtered by state (open|closed|merged|all). Authenticated callers only. Returns up to 50 summary rows.

    Annotations the server declares

    • title: List pull requests
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_list_repo_secretsList a repository's workflow secrets — NAMES ONLY, with created/updated times; values are never returned.No findings

    Why it is in this group

    • The name "gluecron_list_repo_secrets" says "list": a word for reading.
    Description, as the server wrote it
    List 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}]}.

    Annotations the server declares

    • title: List repository secrets
    • readOnlyHint: true
    • destructiveHint: false
  • 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.No findings

    Why it is in this group

    • The name "gluecron_list_repo_tokens" says "list": a word for reading.
    Description, as the server wrote it
    List the fine-grained repository tokens you have minted (never the secret): repository, permissions, state (active / expired / revoked), expiry and last use. Needs 'repo' scope.

    Annotations the server declares

    • title: List repository tokens
    • readOnlyHint: true
    • destructiveHint: false
  • 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 sha…No findings

    Why it is in this group

    • The name "gluecron_list_runners" says "list": a word for reading.
    Description, as the server wrote it
    List 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.

    Annotations the server declares

    • title: List CI runners
    • readOnlyHint: true
    • destructiveHint: false
  • 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…No findings

    Why it is in this group

    • The name "gluecron_list_tokens" says "list": a word for reading.
    Description, as the server wrote it
    List 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 scopes cannot read are listed under `omitted`). PATs need 'user' scope to read; repository and deploy tokens need 'repo'.

    Annotations the server declares

    • title: List tokens
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_list_treeList directory contents at a ref.No findings

    Why it is in this group

    • The name "gluecron_list_tree" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List tree
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_list_variablesList Actions configuration variables (${{ vars.NAME }}) with their values.No findings

    Why it is in this group

    • The name "gluecron_list_variables" says "list": a word for reading.
    Description, as the server wrote it
    List 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, total, limit, offset, nextOffset, variables:[{name, value, createdAt, updatedAt}]}.

    Annotations the server declares

    • title: List Actions variables
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • gluecron_list_workflow_runsList a repository's workflow runs, newest first, with optional branch/status/event filters.No findings

    Why it is in this group

    • The name "gluecron_list_workflow_runs" says "list": a word for reading.
    Description, as the server wrote it
    List 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).

    Annotations the server declares

    • title: List workflow runs
    • readOnlyHint: true
    • destructiveHint: false
  • 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 verdict…No findings

    Why it is in this group

    • The name "gluecron_pr_status_summary" says "status": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: PR status summary
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_read_fileRead a file from a repo at a given ref.No findings

    Why it is in this group

    • The name "gluecron_read_file" says "read": a word for reading.
    Description, as the server wrote it
    Read 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 to read on.

    Annotations the server declares

    • title: Read file
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_repo_explain_codebaseReturn the cached AI 'explain this codebase' Markdown for a public repo (most recent commit).No findings

    Why it is in this group

    • The name "gluecron_repo_explain_codebase" says "explain": a word for reading.
    Description, as the server wrote it
    Return the cached AI 'explain this codebase' Markdown for a public repo (most recent commit). Returns null when no cached explanation exists yet.

    Annotations the server declares

    • title: Explain codebase (cached)
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_repo_list_issuesList open issues for a public repository.No findings

    Why it is in this group

    • The name "gluecron_repo_list_issues" says "list": a word for reading.
    Description, as the server wrote it
    List open issues for a public repository. Returns up to 50 ordered by most-recent.

    Annotations the server declares

    • title: List open issues
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_repo_read_fileRead a single file from a repository at a given ref (branch / tag / commit).No findings

    Why it is in this group

    • The name "gluecron_repo_read_file" says "read": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Read repository file
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_search_codeLiteral / regex code search (git grep, basic regex) across a repo at a ref.No findings

    Why it is in this group

    • The name "gluecron_search_code" says "search": a word for reading.
    Description, as the server wrote it
    Literal / 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). Returns {owner, repo, ref, total, truncated, matches: [{file, line, text}]}, or with files_only {owner, repo, ref, total, totalMatches, truncated, files: [{file, count}]}. Omit `ref` for the default branch.

    Annotations the server declares

    • title: Search code (grep)
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_search_issuesSearch issues by title/body keyword on a single repo, filtered by state.No findings

    Why it is in this group

    • The name "gluecron_search_issues" says "search": a word for reading.
    Description, as the server wrote it
    Search issues by title/body keyword on a single repo, filtered by state. Returns ranked rows.

    Annotations the server declares

    • title: Search issues
    • readOnlyHint: true
    • destructiveHint: false
  • gluecron_search_prsSearch pull requests by title/body keyword on a repo.No findings

    Why it is in this group

    • The name "gluecron_search_prs" says "search": a word for reading.
    Description, as the server wrote it
    Search pull requests by title/body keyword on a repo.

    Annotations the server declares

    • title: Search pull requests
    • readOnlyHint: true
    • destructiveHint: false
  • 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.No findings

    Why it is in this group

    • The name "gluecron_search_repos" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search repositories (ranked)
    • readOnlyHint: true
    • destructiveHint: false
  • 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 co…No findings

    Why it is in this group

    • The name "gluecron_whoami" says "whoami": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Who am I
    • readOnlyHint: true
    • destructiveHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http gluecron https://gluecron.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__gluecron__gluecron_repo_search",
      "mcp__gluecron__gluecron_repo_read_file",
      "mcp__gluecron__gluecron_repo_list_issues",
      "mcp__gluecron__gluecron_repo_explain_codebase",
      "mcp__gluecron__gluecron_get_pr",
      "mcp__gluecron__gluecron_list_prs",
      "mcp__gluecron__gluecron_search_repos",
      "mcp__gluecron__gluecron_whoami",
      "mcp__gluecron__gluecron_clone_url",
      "mcp__gluecron__gluecron_list_repo_tokens",
      "mcp__gluecron__gluecron_list_tokens",
      "mcp__gluecron__gluecron_get_token",
      "mcp__gluecron__gluecron_list_repo_secrets",
      "mcp__gluecron__gluecron_list_deleted_repos",
      "mcp__gluecron__gluecron_list_variables",
      "mcp__gluecron__gluecron_get_variable",
      "mcp__gluecron__gluecron_learning_status",
      "mcp__gluecron__gluecron_search_issues",
      "mcp__gluecron__gluecron_search_prs",
      "mcp__gluecron__gluecron_list_pr_comments",
      "mcp__gluecron__gluecron_get_pr_checks",
      "mcp__gluecron__gluecron_get_branch_protection",
      "mcp__gluecron__gluecron_read_file",
      "mcp__gluecron__gluecron_list_tree",
      "mcp__gluecron__gluecron_get_commit",
      "mcp__gluecron__gluecron_get_diff",
      "mcp__gluecron__gluecron_explain_repo",
      "mcp__gluecron__gluecron_get_workflow_run",
      "mcp__gluecron__gluecron_list_workflow_runs",
      "mcp__gluecron__gluecron_get_workflow_logs",
      "mcp__gluecron__gluecron_explain_failure",
      "mcp__gluecron__gluecron_list_flaky_tests",
      "mcp__gluecron__gluecron_list_runners",
      "mcp__gluecron__gluecron_get_preview_url",
      "mcp__gluecron__gluecron_get_agent_budget",
      "mcp__gluecron__gluecron_semantic_search",
      "mcp__gluecron__gluecron_search_code",
      "mcp__gluecron__gluecron_find_symbol",
      "mcp__gluecron__gluecron_pr_status_summary",
      "mcp__gluecron__gluecron_ci_queue_status",
      "mcp__gluecron__gluecron_ai_cost_summary"
    ],
    "ask": [
      "mcp__gluecron__gluecron_repo_health",
      "mcp__gluecron__gluecron_create_issue",
      "mcp__gluecron__gluecron_comment_issue",
      "mcp__gluecron__gluecron_reopen_issue",
      "mcp__gluecron__gluecron_create_pr",
      "mcp__gluecron__gluecron_comment_pr",
      "mcp__gluecron__gluecron_fork_repo",
      "mcp__gluecron__gluecron_create_deploy_token",
      "mcp__gluecron__gluecron_create_repo_token",
      "mcp__gluecron__gluecron_set_repo_secret",
      "mcp__gluecron__gluecron_restore_repo",
      "mcp__gluecron__gluecron_import_action",
      "mcp__gluecron__gluecron_backup_status",
      "mcp__gluecron__gluecron_label_issue",
      "mcp__gluecron__gluecron_unlabel_issue",
      "mcp__gluecron__gluecron_assign_issue",
      "mcp__gluecron__gluecron_request_changes",
      "mcp__gluecron__gluecron_dismiss_review",
      "mcp__gluecron__gluecron_open_draft_pr",
      "mcp__gluecron__gluecron_set_pr_draft",
      "mcp__gluecron__gluecron_generate_pr_description",
      "mcp__gluecron__gluecron_update_pr_branch",
      "mcp__gluecron__gluecron_update_pr",
      "mcp__gluecron__gluecron_set_auto_merge",
      "mcp__gluecron__gluecron_rerun_failed_jobs",
      "mcp__gluecron__gluecron_set_branch_protection",
      "mcp__gluecron__gluecron_approve_pr",
      "mcp__gluecron__gluecron_write_file",
      "mcp__gluecron__gluecron_create_branch",
      "mcp__gluecron__gluecron_atomic_multi_file_commit",
      "mcp__gluecron__gluecron_apply_patch",
      "mcp__gluecron__gluecron_voice_to_pr",
      "mcp__gluecron__gluecron_refactor_across_repos",
      "mcp__gluecron__gluecron_chat_with_repo",
      "mcp__gluecron__gluecron_chat_continue",
      "mcp__gluecron__gluecron_generate_tests",
      "mcp__gluecron__gluecron_generate_commit_message",
      "mcp__gluecron__gluecron_generate_release_notes",
      "mcp__gluecron__gluecron_propose_migration",
      "mcp__gluecron__gluecron_propose_doc_update",
      "mcp__gluecron__gluecron_trigger_workflow",
      "mcp__gluecron__gluecron_prioritize_workflow_run",
      "mcp__gluecron__gluecron_review_deployment",
      "mcp__gluecron__gluecron_create_runner_registration_token",
      "mcp__gluecron__gluecron_ci_executor",
      "mcp__gluecron__gluecron_provision_pr_sandbox",
      "mcp__gluecron__gluecron_create_agent_session",
      "mcp__gluecron__gluecron_acquire_lease",
      "mcp__gluecron__gluecron_release_lease",
      "mcp__gluecron__gluecron_handover",
      "mcp__gluecron__gluecron_security_scan"
    ],
    "deny": [
      "mcp__gluecron__gluecron_close_issue",
      "mcp__gluecron__gluecron_merge_pr",
      "mcp__gluecron__gluecron_close_pr",
      "mcp__gluecron__gluecron_delete_repo",
      "mcp__gluecron__gluecron_update_repo",
      "mcp__gluecron__gluecron_revoke_repo_token",
      "mcp__gluecron__gluecron_rotate_token",
      "mcp__gluecron__gluecron_revoke_token",
      "mcp__gluecron__gluecron_delete_repo_secret",
      "mcp__gluecron__gluecron_purge_repo",
      "mcp__gluecron__gluecron_set_variable",
      "mcp__gluecron__gluecron_delete_variable",
      "mcp__gluecron__gluecron_delete_file",
      "mcp__gluecron__gluecron_ship_spec",
      "mcp__gluecron__gluecron_cancel_workflow_run",
      "mcp__gluecron__gluecron_revoke_runner"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as gluecron. Review it before you use it.