Gluecron
REMOTE · GLUECRON.COM
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Available components
Last scanned (17 hours ago)
Scores higher than 98% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Version Control
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability78
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 20012 tokens (~166/item across 120 items; 119 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 73% of tool parameters carry a description.Partial
Tool Safety99
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 16 of 17 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "gluecron_list_ready_to_merge" implies "merge" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 120 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- New tool “gluecron_revoke_all_credentials”, which the server declares destructive security
- Tool “gluecron_create_repo_token” rewrote its description, which is the text the model reads security
- Tool “gluecron_get_pr” rewrote its description, which is the text the model reads security
- Tool “gluecron_get_workflow_logs” rewrote its description, which is the text the model reads security
- Tool “gluecron_list_runners” rewrote its description, which is the text the model reads security
- Tool “gluecron_list_workflow_runs” rewrote its description, which is the text the model reads security
- Tool “gluecron_pr_status_summary” rewrote its description, which is the text the model reads security
- Tool “gluecron_resolve_pr_conflict” rewrote its description, which is the text the model reads security
- Tool “gluecron_set_branch_protection” rewrote its description, which is the text the model reads security
- Tool “gluecron_update_repo” rewrote its description, which is the text the model reads security
- New tool “gluecron_propose_pr_conflict_resolution” functional
- “gluecron_update_repo” added an optional parameter “conflict_resolution_mode” cosmetic
- “gluecron_create_repo_token” reworded the description of “permissions” cosmetic
- “gluecron_resolve_pr_conflict” reworded the description of “choices” cosmetic
- 1 Nov 26 0
- Tool “gluecron_create_deploy_token” rewrote its description, which is the text the model reads security
- “gluecron_create_deploy_token” added an optional parameter “deliver” cosmetic
- “gluecron_create_deploy_token” added an optional parameter “token_id” cosmetic
- 29 Oct 26 −1
- Tool “gluecron_ci_health” rewrote its description, which is the text the model reads security
- Tool “gluecron_get_branch_protection” rewrote its description, which is the text the model reads security
- Tool “gluecron_get_pr_checks” rewrote its description, which is the text the model reads security
- Tool “gluecron_list_runners” rewrote its description, which is the text the model reads security
- Destructive annotations: 15 of 16 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "gluecron_list_ready_to_merge" implies "merge" and declares readOnlyHint instead, contradicting what its own name says it does. functional
- New tool “gluecron_list_ready_to_merge” functional
- “gluecron_create_repo_token” reworded the description of “permissions” cosmetic
- 28 Oct 26 0
- Tool “gluecron_create_runner_registration_token” rewrote its description, which is the text the model reads security
- Tool “gluecron_get_pr” rewrote its description, which is the text the model reads security
- Tool “gluecron_get_pr_checks” rewrote its description, which is the text the model reads security
- Tool “gluecron_list_pr_comments” rewrote its description, which is the text the model reads security
- Tool “gluecron_pr_status_summary” rewrote its description, which is the text the model reads security
- Schema quality: 16294 → 18044 ▼ functional
- New tool “gluecron_list_pr_conflicts” functional
- New tool “gluecron_ci_health” functional
- New tool “gluecron_commit_pr_conflict_resolution” functional
- New tool “gluecron_resolve_pr_conflict” functional
- New tool “gluecron_security_ioc_hits” functional
- “gluecron_create_runner_registration_token” added an optional parameter “exclusive” cosmetic
- “gluecron_create_runner_registration_token” added an optional parameter “repositories” cosmetic
- 27 Oct 26 0
- Tool “gluecron_get_workflow_logs” rewrote its description, which is the text the model reads security
- Tool “gluecron_handover” rewrote its description, which is the text the model reads security
- Tool “gluecron_pr_status_summary” rewrote its description, which is the text the model reads security
- 25 Oct 26 0
- New tool “gluecron_delete_branch”, which the server declares destructive security
- New tool “gluecron_delete_comment”, which the server declares destructive security
- New tool “gluecron_edit_comment”, which the server declares destructive security
- 23 Oct 26 0
- Tool “gluecron_set_auto_merge” rewrote its description, which is the text the model reads security
- 22 Oct 26 0
- Tool “gluecron_ci_queue_status” rewrote its description, which is the text the model reads security
- Tool “gluecron_get_workflow_run” rewrote its description, which is the text the model reads security
- Tool “gluecron_prioritize_workflow_run” rewrote its description, which is the text the model reads security
- “gluecron_prioritize_workflow_run” added an optional parameter “level” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://gluecron.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=gluecron.com | CN=YR1,O=Let's Encrypt,C=US | 31 Oct 2026 | 29 Jan 2027 | RSA 4096 | SHA256-RSA | 61f97f9651a5996c26d5bdfc43da4535558 |
| SANs: gluecron.com, www.gluecron.com | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of gluecron.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| gluecron.com. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://gluecron.com/.well-known/oauth-protected-resource"
Bearer resource_metadata="https://gluecron.com/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https:; media-src 'self' data: blob: https:; connect-src 'self' wss://gluecron.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'self'; frame-ancestors 'self'; base-uri 'self'; object-src 'none' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), geolocation=(), payment=(), usb=(), microphone=(self) |
Protected resource metadata
| Document | https://gluecron.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://gluecron.com/mcp |
| Authorisation server | https://gluecron.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://gluecron.com/mcp | Verified | 200 | |
| http (plaintext) | http://gluecron.com/mcp | HTTPS enforced | 301 | https://gluecron.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
gluecron_acquire_lease ~211
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_session_id | string | yes | – |
| duration_ms | number | – | Lease duration, clamped to 1 second – 1 hour (default 5 minutes) |
| owner | string | – | Repository owner (optional, with repo) |
| repo | string | – | Repository name (optional, with owner) |
| target_id | string | yes | PR/issue number, branch name or file path (with owner+repo, or a session scoped to a repo); '<repository id>:<key>'; or a PR/issue id |
| target_type | string | yes | 'issue' | 'pr' | 'branch' | 'file_path' |
No output schema declared.
No examples provided.
gluecron_ai_cost_summary ~88
Return AI spend rollups. Scope by one of: user_id (self), repo {owner,repo}, or agent_session_id. Defaults to caller's user spend.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_session_id | string | – | – |
| owner | string | – | – |
| repo | string | – | – |
| scope | string | – | 'user' (default) | 'repo' | 'agent' |
No output schema declared.
No examples provided.
gluecron_apply_patch ~411
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).
| Name | Type | Req | Description |
|---|---|---|---|
| base_branch | string | – | Branch to fork from when `branch` does not exist yet (default: the repo's default branch). |
| branch | string | yes | Target branch (short name). Created if it does not exist. |
| expected_head_sha | string | – | Optional compare-and-swap: the 40-hex sha you expect `branch` to point at. Refused if it moved. All zeros = the branch must not exist. |
| message | string | – | Commit message. Required for a unified diff; ignored for mbox input (each patch carries its own). |
| owner | string | yes | – |
| patch | string | yes | Unified diff (`git diff`, a/ b/ prefixes) or `git format-patch` mbox text. Max 2 MiB. |
| repo | string | yes | – |
No output schema declared.
No examples provided.
gluecron_approve_pr ~157
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Optional review comment (Markdown) |
| number | number | yes | PR number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_assign_issue ~212
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee | string | – | Username to assign |
| assignees | array | – | Usernames to assign, strings (alternative to `assignee`) |
| number | number | yes | – |
| owner | string | yes | – |
| remove | boolean | – | Unassign the given users instead (default false) |
| repo | string | yes | – |
| type | string | – | issue (default) | pull_request |
No output schema declared.
No examples provided.
gluecron_atomic_multi_file_commit ~170
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.
| Name | Type | Req | Description |
|---|---|---|---|
| base_branch | string | – | Branch to fork from when `branch` doesn't yet exist (default: repo default). |
| branch | string | yes | – |
| changes | array | yes | Array of {path, content?|content_base64?, deleted?} entries. |
| message | string | yes | – |
| owner | string | yes | – |
| repo | string | yes | – |
No output schema declared.
No examples provided.
gluecron_backup_status ~169
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?}.
| Name | Type | Req | Description |
|---|---|---|---|
| start | string | – | Optional: 'backup' or 'drill' — queue one now |
No output schema declared.
No examples provided.
gluecron_cancel_workflow_run ~65
Cancel a queued/running workflow run. Requires 'repo' scope.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | yes | – |
| repo | string | yes | – |
| run_id | string | yes | The run's id, or a unique leading part of it (8+ hex characters) |
No output schema declared.
No examples provided.
gluecron_chat_continue ~72
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chat_id | string | yes | – |
| message | string | yes | – |
No output schema declared.
No examples provided.
gluecron_chat_with_repo ~115
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.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | Initial user message |
| owner | string | yes | – |
| repo | string | yes | – |
| title | string | – | Chat title (optional) |
No output schema declared.
No examples provided.
gluecron_ci_executor ~192
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.
| Name | Type | Req | Description |
|---|---|---|---|
| declare | string | – | Site admins: set the estate-wide declaration to external, in-process or auto. Omit to read only. |
No output schema declared.
No examples provided.
gluecron_ci_health ~317
CI health, the same as GET /api/v2/ci/health and /admin/ci: status, the paging rules (queue p95, runner silent, timeout rate, heavy on the app box, runner_slow: a runner over 2x slower than its pool's fastest on the same heavy jobs), queue wait p50/p95 by work class, outcome rates, capacity, runnerSpeed24h (each runner's slowdown against its pool), and `measures`: capacity:compute_trigger (Tallrig ESTATE_PLAN §5's compute row: p95 push-to-start over 5 min for 7 days, or busy slots over 70% for 7 days) with firing, value, window, source and each day. Site admins (admin scope) also get `dashboard` (CAP-0.4) for 24 h and 7 d: startTimes (queue → start p50/p95 by class and pool), duplicateMinutes (lease time on a tree, workflow and job that already had a green job), poolCost (minutes per pool; a cost only where CI_POOL_COST_PER_MINUTE sets one, else 'cost not configured'), notMerged (merge-train dequeue and auto-merge reasons, counted), nonBillable (platform repositories on our machines vs customers'), testSelection (CAP-1.4: minutes saved by test selection and reuse, against full-run medians). Every number carries `source`: the table or setting it was read from. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gluecron_ci_queue_status ~237
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.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | – | Optional, with repo: report this repository's part of the queue |
| repo | string | – | Optional, with owner |
No output schema declared.
No examples provided.
gluecron_clone_url ~73
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.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | yes | Repo owner username |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_close_issue ~73
Close an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns {state}.
| Name | Type | Req | Description |
|---|---|---|---|
| number | number | yes | Issue number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_close_pr ~65
Close an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns {state}.
| Name | Type | Req | Description |
|---|---|---|---|
| number | number | yes | PR number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_comment_issue ~73
Add a comment to an existing issue. Requires authenticated caller with write access. Returns {commentId}.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Comment body (Markdown) |
| number | number | yes | Issue number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_comment_pr ~73
Add a comment to a pull request. Requires authenticated caller with write access. Returns {commentId}.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Comment body (Markdown) |
| number | number | yes | PR number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_commit_pr_conflict_resolution ~283
Commit the saved resolutions for a PR's conflicts ON THE PR HEAD as a two-parent merge commit (old head, base tip) — never on the base branch — moved through the push gates so CI runs on it before anything merges. Every unresolved file needs a draft (gluecron_resolve_pr_conflict) or an entry in `resolutions`; files the merge rules settle are settled automatically. Both shas are compare-and-swapped: a branch that moved since is refused with nothing changed. The commit carries `Conflict-Resolution:` trailers; a gluecron[bot] comment records it. Requires write access and 'repo' scope.
| Name | Type | Req | Description |
|---|---|---|---|
| base_sha | string | yes | baseSha from gluecron_list_pr_conflicts |
| head_sha | string | yes | headSha from gluecron_list_pr_conflicts |
| message | string | – | Optional subject line (default: Merge branch '<base>' into <head>) |
| number | number | yes | PR number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
| resolutions | array | – | Optional explicit list instead of the saved drafts: [{path, how: manual | choice | ai | ai-edited | keep-mine | keep-main, content?}] — content is required unless how is keep-mine / keep-main |
No output schema declared.
No examples provided.
gluecron_create_agent_session ~107
Mint a new agent-multiplayer session. Returns the plaintext `token` exactly once (store it). Requires 'admin' scope.
| Name | Type | Req | Description |
|---|---|---|---|
| branch_namespace | string | – | Optional branch namespace override |
| budget_cents_per_day | number | – | Daily budget cap in cents (default 500) |
| name | string | yes | Human-readable session name (unique per owner) |
| repository_id | string | – | Optional id of a repository you can write, to scope the session to |
No output schema declared.
No examples provided.
gluecron_create_branch ~115
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string | yes | New branch name (short form) |
| owner | string | yes | – |
| repo | string | yes | – |
| sha | string | yes | Target commit sha (40-hex) |
No output schema declared.
No examples provided.
gluecron_create_deploy_token ~421
Mint a short-lived, repository-scoped HTTPS clone credential (a deploy token) for a sandbox or CI box that has no PAT. By default it returns NO token: {id, exchangeUrl, exchangeExpiresAt, gitConfig, url}. Run the gitConfig lines right before the first clone/fetch (the URL is single-use and dies in 60 s) and git fetches the token itself, so it never enters your transcript. 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. Pass `token_id` (an id this tool returned) for a fresh exchange URL for the same grant; each exchange rotates the secret. `deliver: "token"` returns a read-only secret in the result instead (refused for push access: a push-capable secret in an agent's transcript outlives the run). Revoke the grant with gluecron_revoke_token {type: "deploy", id}.
| Name | Type | Req | Description |
|---|---|---|---|
| deliver | string | – | "exchange" (default): a single-use 60 s URL git's credential helper spends — the secret never appears here. "token": a read-only secret in this result (refused with read_only: false). |
| expires_in_hours | number | – | Lifetime in hours (default 2, max 24, min 5 minutes) |
| owner | string | yes | Repo owner — username or organisation slug |
| read_only | boolean | – | Default true. false = clone AND push (requires write access). |
| repo | string | yes | Repo name |
| title | string | – | Where the token will be used (default 'agent clone (MCP)') |
| token_id | string | – | A fresh exchange URL for this existing grant (one you created) instead of a new grant. |
No output schema declared.
No examples provided.
gluecron_create_issue ~82
Create a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns {number, url}.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Issue body (Markdown). Optional. |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
| title | string | yes | Issue title |
No output schema declared.
No examples provided.
gluecron_create_pr ~120
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| base_branch | string | – | Target branch (default: repo default branch) |
| body | string | – | PR body (Markdown). Optional. |
| head_branch | string | yes | Branch with the changes |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
| title | string | yes | PR title |
No output schema declared.
No examples provided.
gluecron_create_repo_token ~481
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, and none/read for runners (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}.
| Name | Type | Req | Description |
|---|---|---|---|
| expires_in | string | – | Optional lifetime: "30m" / "12h" / "7d" / "1y", or a number of seconds (5 minutes to 1 year). Omit, or "never", for no expiration. |
| name | string | yes | Where the token will be used, e.g. 'gatetest deploy box' |
| owner | string | yes | Repo owner — username or organisation slug |
| permissions | object | yes | Object of level per permission — keys contents, issues, pull_requests, statuses, actions, runners; values none | read | write (runners: none | read only — it lists the owner's CI runners via GET /api… |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_create_runner_registration_token ~288
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. Pass exclusive: true for a label-only runner (a Mac for Xcode, a GPU box): it takes only jobs whose runs-on names its labels (e.g. [self-hosted, macos, xcode]), never runs-on: self / ubuntu-*, and the account keeps its shared lane; repositories narrows it to some of the owner's repositories. Both are fixed for the runner's life. Returns {owner, token, expiresAt, exclusive, repositoryIds, gluecronUrl}.
| Name | Type | Req | Description |
|---|---|---|---|
| exclusive | boolean | – | Label-only runner (default false): offered only jobs whose runs-on labels it all has, never the account's default lane. Fixed at registration; a heartbeat cannot change it. |
| labels | string | – | Comma-separated labels the runner gets in addition to its own (e.g. gpu,arm64) |
| owner | string | yes | Username, org slug, or 'platform' |
| repositories | string | – | Exclusive runners only: comma-separated repository names of this owner it serves (default: all of them) |
No output schema declared.
No examples provided.
gluecron_delete_branch ~172
Delete a branch the way `git push --delete` would: write access, then branch protection (allow_deletion), rulesets and the push inspection apply; webhooks and CI fire. The default branch is never deleted. Pass expected_sha to delete only if the branch still points there. A missing branch is a not-found error. Mirrors DELETE /api/v3/repos/:o/:r/git/refs/heads/:branch. Audit-logged. Returns {branch, sha, deleted: true}.
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string | yes | Branch name, without refs/heads/ |
| expected_sha | string | – | Delete only if the branch still points here (compare-and-swap); otherwise a conflict |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_delete_comment ~153
Delete a comment on an issue or pull request (by comment id), with its edit history. Its author or a repository writer only. A missing comment is a not-found error, never reported as deleted. Mirrors DELETE /api/v3/repos/:o/:r/issues/comments/:id. Audit-logged (who wrote it, never what it said). Returns {id, kind, number, deleted: true}.
| Name | Type | Req | Description |
|---|---|---|---|
| comment_id | string | yes | The comment's id (as listed by gluecron_list_pr_comments, or the #comment-<id> anchor) |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
| thread | object | – | – |
No output schema declared.
No examples provided.
gluecron_delete_file ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string | yes | – |
| message | string | yes | – |
| owner | string | yes | – |
| path | string | yes | – |
| repo | string | yes | – |
| sha | string | yes | Current blob sha (40-hex) |
No output schema declared.
No examples provided.
gluecron_delete_repo ~197
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_delete_repo_secret ~129
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Secret name |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_delete_variable ~171
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| environment | string | – | Environment name (or id) |
| id | string | – | Variable id, instead of name |
| name | string | – | Variable name: letters, digits and _, not starting with a digit or GITHUB_ (stored upper-case) |
| org | string | – | Organisation slug |
| owner | string | – | Repo owner — username or organisation slug (omit when passing org) |
| repo | string | – | Repo name |
No output schema declared.
No examples provided.
gluecron_dismiss_review ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| number | number | yes | – |
| owner | string | yes | – |
| reason | string | yes | Why the request is dismissed (3-500 characters) |
| repo | string | yes | – |
| reviewer | string | – | Only this reviewer's request (username). Optional. |
No output schema declared.
No examples provided.
gluecron_edit_comment ~181
Replace the text of a comment on an issue or pull request (by comment id). Its author or a repository writer only; the previous text is kept in the edit history; the same text again is `unchanged`; a concurrent edit is a conflict, never overwritten. Mentions the edit adds are notified. Mirrors PATCH /api/v3/repos/:o/:r/issues/comments/:id. Returns {id, kind, number, effect}.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The new text (Markdown); the previous text is kept in the edit history |
| comment_id | string | yes | The comment's id (as listed by gluecron_list_pr_comments, or the #comment-<id> anchor) |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
| thread | object | – | – |
No output schema declared.
No examples provided.
gluecron_explain_failure ~254
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_diff | boolean | – | Include the prior fix's diff, limited to the relevant files (default true) |
| owner | string | – | Optional: repository owner — needed only for a run-id prefix |
| repo | string | – | Optional: repository name — needed only for a run-id prefix |
| run_id | string | yes | The failed run's id (full uuid; an 8+ hex prefix when owner + repo are given) |
No output schema declared.
No examples provided.
gluecron_explain_repo ~57
Return the cached AI 'explain this codebase' Markdown for a repo. Pure read — never triggers a new generation (use the web UI for that).
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | yes | – |
| repo | string | yes | – |
No output schema declared.
No examples provided.
gluecron_find_symbol ~54
Find definitions of a symbol by name within a repo. Wraps src/lib/symbols.findDefinitions.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Symbol name |
| owner | string | yes | – |
| repo | string | yes | – |
No output schema declared.
No examples provided.
gluecron_fork_repo ~65
Fork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns {owner, repo, url}. Requires 'repo' scope.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | yes | Source repo owner |
| repo | string | yes | Source repo name |
No output schema declared.
No examples provided.
gluecron_generate_commit_message ~60
Generate a commit message for a diff. Same engine as gluecron_generate_pr_description but explicit for the commit-message use case.
| Name | Type | Req | Description |
|---|---|---|---|
| diff | string | yes | – |
| style | string | – | 'conventional' (default) or 'plain' |
No output schema declared.
No examples provided.
gluecron_generate_pr_description ~85
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| diff | string | yes | Unified-diff body |
| style | string | – | 'conventional' (default) or 'plain' |
No output schema declared.
No examples provided.
gluecron_generate_release_notes ~75
Generate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data.
| Name | Type | Req | Description |
|---|---|---|---|
| from_tag | string | – | Previous tag (optional) |
| owner | string | yes | – |
| repo | string | yes | – |
| to_tag | string | yes | New tag |
No output schema declared.
No examples provided.
gluecron_generate_tests ~99
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | 'follow-up-pr' or 'append-commit' |
| number | number | yes | PR number |
| owner | string | yes | – |
| repo | string | yes | – |
No output schema declared.
No examples provided.
gluecron_get_agent_budget ~32
Return spent / cap / remaining cents for an agent session.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_session_id | string | yes | – |
No output schema declared.
No examples provided.
gluecron_get_branch_protection ~175
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; plus `merge_train` {on, batch_max, effective_batch_max, host_ceiling} — whether the merge train runs for the repository and how many armed PRs it tests together. Read-only. Returns {protected: false, merge_train} when no rule applies, else {protected: true, pattern, matched_by, required_checks, …, merge_train}.
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string | – | Branch name (default: the repo's default branch) |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_get_commit ~117
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_files | boolean | – | Include the files-changed summary and stats (default true). Set false to skip the diff read on very large commits. |
| owner | string | yes | – |
| repo | string | yes | – |
| sha | string | yes | Commit SHA |
No output schema declared.
No examples provided.
gluecron_get_diff ~203
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.
| Name | Type | Req | Description |
|---|---|---|---|
| base | string | – | Base ref (with `head`) |
| head | string | – | Head ref (with `base`) |
| include_patch | boolean | – | Include patch bodies (default true) |
| max_patch_bytes | number | – | Total budget for patch text across all files (default 400000, max 2000000) |
| owner | string | yes | – |
| repo | string | yes | – |
| sha | string | – | Commit SHA — diffs it against its first parent |
No output schema declared.
No examples provided.
gluecron_get_pr ~181
Fetch the full detail record of a pull request (title, body, state, branches, draft, author, timestamps), plus `mergeable` (true / false / null unknown) and `mergeState` from the same conflict probe the merge gate uses: status up-to-date | clean | conflicts | unknown, the unresolved files with their kinds, the files the merge rules settle, and conflictsUrl; and `conflictRisk` (early warning): level none | overlap | conflicts, the files the base changed since the PR branched that the PR changed too, and updateIsClean when updating now would merge cleanly. Authenticated callers only (the read tool surface still works anonymously).
| Name | Type | Req | Description |
|---|---|---|---|
| number | number | yes | PR number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_get_pr_checks ~223
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. A failed workflow run carries `failure`: the failed job and step, up to 8 file:line rows linked to the head sha, the tool's own guidance block ("What now?"), `budget` when a time budget rather than a test stopped the step (run conclusion `timed_out`: still blocks the merge), and the full step log URL — or `{withheld, required, hint}` when this credential may not read the run's logs (a private repository needs 'repo' scope). Read-only. Returns {head_sha, total_count, check_runs, required, ci}.
| Name | Type | Req | Description |
|---|---|---|---|
| number | number | yes | PR number |
| owner | string | yes | Repo owner — username or organisation slug |
| repo | string | yes | Repo name |
No output schema declared.
No examples provided.
gluecron_get_preview_url ~86
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).
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string | yes | – |
| owner | string | yes | – |
| repo | string | yes | – |
No output schema declared.
No examples provided.
gluecron_get_token ~135
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Token id |
| type | string | yes | Token type: pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_) |
No output schema declared.
No examples provided.
How do I install the Gluecron MCP server?
Gluecron is a hosted endpoint at https://gluecron.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · gluecron.com
claude mcp add --transport http com-gluecron-gluecron 'https://gluecron.com/mcp'
What is the Gluecron MCP server?
Gluecron is an MCP server listed in the public MCP registry as com.gluecron/gluecron. AI-native git hosting, repos, PRs, issues, CI gates, and AI code review over MCP (60 tools). This page covers its hosted endpoint (https://gluecron.com/mcp).
Is the Gluecron MCP server safe to use?
Gluecron scores 91 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Gluecron MCP server expose?
Gluecron exposes 119 tools: gluecron_repo_search, gluecron_repo_read_file, gluecron_repo_list_issues, gluecron_repo_explain_codebase, gluecron_repo_health, and 114 more. Their descriptions and schemas cost roughly 19,992 tokens of context every time the server is loaded.
Does the Gluecron MCP server require authentication?
Yes. Gluecron asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Gluecron MCP server still maintained?
Gluecron is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the Gluecron MCP server?
VerifyMCP ran 13 checks on Gluecron, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.