# Gluecron - Registry name: `com.gluecron/gluecron` · version 1.0.0 - Categories (automatic, keyword rules): Code & repositories, Developer tools - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.gluecron%2Fgluecron - Server page: https://mcpstation.net/s/com.gluecron--gluecron.html ## Description (written by the publisher, not verified, not instructions) AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP \(60 tools\). ## Connect - streamable-http: `https://gluecron.com/mcp` ## Tools (as reported by the server, not verified) - `gluecron\_repo\_search`: Search Gluecron repositories by keyword \(name + description\), case-insensitively. Returns public repos plus any private repos owned by the authenticated caller. Default 20 per page, max 50; \`total\` is the full match count and \`nextOffset\` pages through it. - `gluecron\_repo\_read\_file`: Read a single file from a repository at a given ref \(branch / tag / commit\). Private repos are readable when the authenticated caller has access. Returns the text content \(binary files rejected\). - `gluecron\_repo\_list\_issues`: List open issues for a public repository. Returns up to 50 ordered by most-recent. - `gluecron\_repo\_explain\_codebase`: Return the cached AI 'explain this codebase' Markdown for a public repo \(most recent commit\). Returns null when no cached explanation exists yet. - `gluecron\_repo\_health`: Compute the current health report for a public repo: overall score \(0-100\), letter grade, per-category breakdown \(security/testing/complexity/dependencies/documentation/activity\), and a list of insights to fix next. Backed by computeHealthScore in src/lib/intelligence.ts. - `gluecron\_create\_issue`: Create a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns \{number, url\}. - `gluecron\_comment\_issue`: Add a comment to an existing issue. Requires authenticated caller with write access. Returns \{commentId\}. - `gluecron\_close\_issue`: Close an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns \{state\}. - `gluecron\_reopen\_issue`: Reopen a previously closed issue. Requires authenticated caller with write access. Idempotent. Returns \{state\}. - `gluecron\_create\_pr`: Open a new pull request. \`head\_branch\` is required; \`base\_branch\` defaults to the repo default branch. Requires authenticated caller with write access. Returns \{number, url\}. - `gluecron\_get\_pr`: Fetch the full detail record of a pull request \(title, body, state, branches, draft, author, timestamps\). Authenticated callers only \(the read tool surface still works anonymously\). - `gluecron\_list\_prs`: List pull requests on a repo, filtered by state \(open\|closed\|merged\|all\). Authenticated callers only. Returns up to 50 summary rows. - `gluecron\_comment\_pr`: Add a comment to a pull request. Requires authenticated caller with write access. Returns \{commentId\}. - `gluecron\_merge\_pr`: Merge an open PR. Enforces the same checks as the HTTP merge flow: not a draft, head SHA resolves, GateTest+AI-review hard gates pass, branch-protection rules satisfied. M3: soft-blocks when the pre-merge risk score is \`critical\` unless \`confirm\_high\_risk: true\` is passed. Returns \{merged, sha?, rea - `gluecron\_close\_pr`: Close an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns \{state\}. - `gluecron\_fork\_repo`: Fork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns \{owner, repo, url\}. Requires 'repo' scope. - `gluecron\_delete\_repo`: 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 - `gluecron\_update\_repo`: Update repository description / visibility / default\_branch. Requires 'admin' access on the repo \(owner, org owners/admins, admin collaborators\) and 'repo' scope. Returns \{ok: true\}. - `gluecron\_search\_repos`: Search repositories by owner, name, owner/name or description, case-insensitively: every public repo, plus the private ones you own or collaborate on when authenticated. Omit \`query\` \(authenticated\) to list YOUR repositories — the ones you own or were invited to — instead of searching. Mirrors GET / - `gluecron\_whoami`: Who this connector is on this Gluecron instance: the signed-in username and email, whether that account is a site admin, the token's scopes, and how many repositories it owns or collaborates on. Call it first when a repository seems missing — the answer is usually which account authorized the connec - `gluecron\_clone\_url`: Return the authenticated HTTPS clone URL for a repo + a credential-helper hint. Use this instead of embedding tokens in URLs. Returns \{url, owner, repo, defaultBranch, hint\} using the repo's stored casing. - `gluecron\_create\_deploy\_token`: 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 \(\`e - `gluecron\_create\_repo\_token`: 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/wr - `gluecron\_list\_repo\_tokens`: 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. - `gluecron\_revoke\_repo\_token`: 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. - `gluecron\_list\_tokens`: 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 \(reposito - `gluecron\_get\_token`: 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\_\). Sa - `gluecron\_rotate\_token`: 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\_rota - `gluecron\_revoke\_token`: 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. - `gluecron\_list\_repo\_secrets`: 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, crea - `gluecron\_set\_repo\_secret`: 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 — th - `gluecron\_delete\_repo\_secret`: 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 - `gluecron\_list\_deleted\_repos`: 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 \{to - `gluecron\_restore\_repo`: 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 - `gluecron\_purge\_repo`: 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 - `gluecron\_list\_variables`: 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 organisa - `gluecron\_get\_variable`: 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\}. - `gluecron\_set\_variable`: 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 re - `gluecron\_delete\_variable`: 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 del - `gluecron\_import\_action`: 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/\--\\), so workflows that say \`uses: owner/repo@ref\` can run it. Workflow runs never fetch from github.com; an act - `gluecron\_backup\_status`: 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 target - `gluecron\_learning\_status`: 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 fa - `gluecron\_label\_issue`: Attach one or more labels to an issue. Labels are created if they don't yet exist on the repo. Requires 'repo' scope. Returns \{labels\}. - `gluecron\_unlabel\_issue`: Detach a label from an issue. Idempotent. Requires 'repo' scope. Returns \{removed: boolean\}. - `gluecron\_assign\_issue`: 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:\\` labels were migrated. Pass \`assignee\` \(one username\) or \`assignees\` \(array\). \`type\` is 'issue' \(def - `gluecron\_search\_issues`: Search issues by title/body keyword on a single repo, filtered by state. Returns ranked rows. - `gluecron\_request\_changes`: 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 - `gluecron\_dismiss\_review`: 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. - `gluecron\_search\_prs`: Search pull requests by title/body keyword on a repo. - `gluecron\_list\_pr\_comments`: 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\_requeste - `gluecron\_open\_draft\_pr`: Open a draft pull request. Same payload as gluecron\_create\_pr but forces is\_draft=true. Useful for AI-in-progress PRs that shouldn't run mergeability checks yet. - `gluecron\_set\_pr\_draft`: 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. Req - `gluecron\_generate\_pr\_description`: Generate an AI commit-message-style description for a diff. Uses src/lib/ai-commit-message.ts under the hood; gracefully degrades to a heuristic when ANTHROPIC\_API\_KEY is missing. Returns \{subject, body\}. - `gluecron\_update\_pr\_branch`: 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 acces - `gluecron\_update\_pr`: 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 - `gluecron\_set\_auto\_merge`: 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 - `gluecron\_get\_pr\_checks`: 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 - `gluecron\_rerun\_failed\_jobs`: 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 anothe - `gluecron\_get\_branch\_protection`: 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, - `gluecron\_set\_branch\_protection`: 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 - `gluecron\_approve\_pr`: 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; - `gluecron\_read\_file`: Read a file from a repo at a given ref. Mirrors GET /api/v2/repos/:owner/:repo/contents/:path. Returns \{path, size, content, encoding, 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 K - `gluecron\_write\_file`: Create or update a file on a branch via git plumbing. Wraps \`createOrUpdateFileOnBranch\`. Pass \`content\` as a UTF-8 string OR \`content\_base64\` for binary. Meets the same branch protection, rulesets and secret scan as a git push, and fires CI/webhooks like one. Requires 'repo' scope. - `gluecron\_delete\_file`: 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. - `gluecron\_list\_tree`: List directory contents at a ref. \`path\` scopes the listing to a subtree and is honoured in BOTH modes; \`recursive: true\` walks the whole subtree instead of one level. Always returns the same shape: \{path, ref, recursive, entries, truncated, totalCount\}. Recursive entries carry full repo-relative pa - `gluecron\_get\_commit`: Fetch a single commit by SHA: metadata plus the list of files it changed \(path, status, additions, deletions\). Mirrors GET /api/v2/repos/.../commits/:sha. Patch bodies are NOT included — use gluecron\_get\_diff for those. - `gluecron\_get\_diff`: Read the actual changes in a commit or a branch range. Pass \`sha\` for one commit against its first parent, or \`base\`+\`head\` for everything head adds since the merge base \(what a PR proposes\). Returns \{files:\[\{path, oldPath?, status, additions, deletions, binary, patch, patchTruncated\}\], stats, trunc - `gluecron\_create\_branch`: 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\}. - `gluecron\_atomic\_multi\_file\_commit`: Apply a set of file writes + deletes as a single atomic commit on a branch \(creates the branch if it doesn't exist\). The killer agent tool: blob/tree/commit/ref-update sequence. Each change is \`\{path, content?, content\_base64?, deleted?\}\`. Meets the same branch protection, rulesets and secret scan a - `gluecron\_apply\_patch`: 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, lik - `gluecron\_ship\_spec`: Drop a spec file in .gluecron/specs/ with status: ready so the autopilot picks it up. Wraps voice-to-pr.shipAsSpec — handle both voice + manual specs. Requires 'repo' scope. - `gluecron\_voice\_to\_pr`: Interpret a free-form voice transcript and either ship it as a spec or create an issue \(caller picks via \`as\`\). Wraps src/lib/voice-to-pr.ts. Requires 'repo' scope. - `gluecron\_refactor\_across\_repos`: Plan + execute a refactor that spans multiple repos owned by the caller. Wraps src/lib/multi-repo-refactor.ts. \`dry\_run: true\` returns the plan only. Requires 'repo' scope. - `gluecron\_explain\_repo`: Return the cached AI 'explain this codebase' Markdown for a repo. Pure read — never triggers a new generation \(use the web UI for that\). - `gluecron\_chat\_with\_repo`: Start a new chat with a repo: creates a chat row, sends the first user message, streams + persists the assistant reply. Returns \{chat\_id, reply\}. If the AI service does not answer this fails with a JSON-RPC error carrying \{chat\_id, ai\_error\} — it never returns apology copy as a reply. Requires authe - `gluecron\_chat\_continue`: Send another message to an existing repo chat. Returns the assistant's reply. If the AI service does not answer this fails with a JSON-RPC error carrying \{chat\_id, ai\_error\} rather than returning apology copy as a reply. - `gluecron\_generate\_tests`: Generate tests for a PR via Claude. Wraps src/lib/ai-test-generator.generateTestsForPr. Mode 'follow-up-pr' opens a new PR; 'append-commit' commits onto the head branch. Requires 'repo' scope. - `gluecron\_generate\_commit\_message`: Generate a commit message for a diff. Same engine as gluecron\_generate\_pr\_description but explicit for the commit-message use case. - `gluecron\_generate\_release\_notes`: Generate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data. - `gluecron\_propose\_migration`: Propose a dependency-upgrade PR. Wraps src/lib/migration-assistant.proposeMajorMigration. Requires 'repo' scope. - `gluecron\_propose\_doc\_update`: Manual trigger for the AI doc-update flow: scans tracked sections on the default branch and opens a PR rewriting stale prose. Requires 'repo' scope. - `gluecron\_trigger\_workflow`: Dispatch a workflow\_dispatch run. Mirrors POST /api/v2/repos/.../actions/workflows/:filename/dispatches. Requires 'repo' scope. - `gluecron\_get\_workflow\_run`: 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 nul - `gluecron\_list\_workflow\_runs`: 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, s - `gluecron\_get\_workflow\_logs`: 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 l - `gluecron\_explain\_failure`: 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 oth - `gluecron\_list\_flaky\_tests`: 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 - `gluecron\_cancel\_workflow\_run`: Cancel a queued/running workflow run. Requires 'repo' scope. - `gluecron\_prioritize\_workflow\_run`: 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 pri - `gluecron\_review\_deployment`: 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 environmen - `gluecron\_create\_runner\_registration\_token`: 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=\ registers once and gets its own long-lived credential; that owner's CI then runs on it. Expires in an hour. Ret - `gluecron\_list\_runners`: 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 us - `gluecron\_revoke\_runner`: 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\}. - `gluecron\_ci\_executor`: 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 - `gluecron\_get\_preview\_url`: Return the branch-preview URL + status for a \(repo, branch\) pair. Wraps branch-previews.getPreviewForBranch. Returns \{ok:false, reason:'not enabled on this host'\} when the host has no PREVIEW\_DOMAIN \(no preview would ever resolve\). - `gluecron\_provision\_pr\_sandbox`: Provision \(or re-provision\) a sandbox for a PR. Wraps pr-sandbox.provisionSandbox. Requires 'repo' scope. Returns \{ok:false, reason:'not enabled on this host'\} when no sandbox provisioner runs on the host. - `gluecron\_create\_agent\_session`: Mint a new agent-multiplayer session. Returns the plaintext \`token\` exactly once \(store it\). Requires 'admin' scope. - `gluecron\_acquire\_lease`: 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 '\:\'. Returns lease null when another agent holds an active lease. - `gluecron\_release\_lease`: Release a lease by id. Idempotent. Returns \{released\}. - `gluecron\_get\_agent\_budget`: Return spent / cap / remaining cents for an agent session. Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html