Gluecron
Server Details
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
- Status
- Healthy
- Uptime
- 99.6% over 79 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 131 tools
Several tool pairs appear to do the same thing: merjax_read_file and merjax_repo_read_file both read a file at a ref; merjax_search_repos and merjax_repo_search both search repos by keyword; merjax_explain_repo and merjax_repo_explain_codebase both return cached AI codebase explanations; merjax_repo_health and merjax_repo_rating both surface the health score. Descriptions are detailed, but an agent must read closely to pick the right one of each overlapping pair.
Almost everything is merjax_ + snake_case with a verb_noun shape (create_issue, merge_pr, delete_branch), and reads often use noun-only names (ci_health, repo_rating). A few outliers like merjax_handover and merjax_whoami break the pattern, but the set is broadly predictable.
131 tools is far beyond what an agent can reliably navigate in one surface, even for a broad platform covering repos, CI, tokens, security and AI. The scope is genuinely wide, but the count creates selection overload and redundancy rather than earned granularity.
Coverage is extensive: repo lifecycle (create/fork/delete/restore/purge), file and branch ops, PRs, issues, comments, reviews, merge/conflict flows, CI runs/logs/runners, secrets, variables, tokens and admin security. Minor gaps remain — e.g. no single-issue get or issue-body update, no branch listing, no tag/release creation — but core workflows are covered.
Available Tools
131 toolsmerjax_acquire_leaseAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name (optional, with owner) | |
| owner | No | Repository owner (optional, with repo) | |
| target_id | 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 | |
| duration_ms | No | Lease duration, clamped to 1 second – 1 hour (default 5 minutes) | |
| target_type | Yes | 'issue' | 'pr' | 'branch' | 'file_path' | |
| agent_session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses the key contention behavior: it returns lease null when another agent holds an active lease, which is exactly the outcome an agent must handle. It also states the write-permission requirement. It does not cover lease expiry/renewal semantics or what a successful lease payload looks like, but the annotations plus the null-contention note carry most of the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it does and under what permission, how to target the resource, and what happens on contention. No filler, and the return-on-contention fact is stated up front where an agent will see it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter coordination tool with no output schema, the description covers purpose, permission prerequisite, both addressing forms, and the failure mode. An agent can call it correctly and interpret a null result without further documentation; lease lifetime details are already documented in the duration_ms schema field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 83% schema coverage the baseline is 3, and the description adds genuine meaning by spelling out the two targeting modes: owner+repo with a bare key, versus target_id in '<repository id>:<key>' form. That clarifies how the optional repo/owner combine with target_id, a relationship the schema only hints at. The duration_ms clamping and target_type values are already in the schema, so no credit there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Grab an exclusive lease') and enumerates exactly what can be leased (PR, issue, branch, file path) plus the write-access precondition. It clearly distinguishes this as an acquisition operation rather than a read or edit, though it never names the counterpart 'merjax_release_lease', so the acquire/release pairing is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a precondition ('a repository you can write') and a subject ('one of your agent sessions'), which implies the coordination use case, but there is no explicit when-to-use/when-not guidance, no mention of when to call release_lease, and no statement about whether acquisition blocks, retries, or fails fast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_ai_cost_summaryARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | No | ||
| owner | No | ||
| scope | No | 'user' (default) | 'repo' | 'agent' | |
| agent_session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the useful default behavior (falls back to caller's user spend), but says nothing about aggregation granularity, time window, or whether scopes can be combined — notable gaps for a reporting tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the purpose and then the scoping modes; no filler. It is arguably over-compressed, since the ambiguity around scope vs. user_id could have been resolved with one extra clause, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does not need to describe return values in depth, but it also omits any hint of the shape of a 'rollup' or the time range covered. Combined with the missing user_id parameter referenced in the text, the definition is close to sufficient for a zero-required-param read tool but not fully self-consistent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema coverage, the description must carry the burden, and it does partially: it clarifies that repo scoping requires the owner+repo pair, which the flat schema does not convey. But it directs scoping via "user_id (self)", a parameter that does not exist in the schema (the schema uses scope='user'), and it never explains how the 'scope' param interacts with the other fields, leaving a genuine ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Return AI spend rollups," which tells an agent this is a read of aggregated cost data. It is reasonably distinguishable from cost-adjacent siblings like merjax_list_token_spend and merjax_get_agent_budget, though it never names those siblings to draw the line explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the three scoping modes and the default (caller's user spend), which implies when each scoping choice applies. However, it gives no explicit when-to-use/when-not-to guidance and no pointer to the alternative cost tools (list_token_spend, get_agent_budget) that an agent could easily confuse with this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_apply_patchAInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| patch | Yes | Unified diff (`git diff`, a/ b/ prefixes) or `git format-patch` mbox text. Max 2 MiB. | |
| branch | Yes | Target branch (short name). Created if it does not exist. | |
| message | No | Commit message. Required for a unified diff; ignored for mbox input (each patch carries its own). | |
| base_branch | No | Branch to fork from when `branch` does not exist yet (default: the repo's default branch). | |
| expected_head_sha | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing application mechanics (git apply --cached against branch head), branch auto-creation from base_branch, blank-context-line repair, compare-and-swap semantics for expected_head_sha, branch protection/ruleset/secret-scan enforcement, CI/webhook firing, a 2 MiB limit, and required 'repo' scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and then packed with high-value detail; nearly every clause earns its place. It is a single dense paragraph with layered parentheticals that reward careful reading but make it slightly harder to scan than a structured list would.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description enumerates the return fields ({branch, commit_sha, parent_sha, files_changed, files, commits, created} plus repair counters), and covers auth scope, size limits, enforcement, and format edge cases — everything an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 71% schema coverage the schema already documents most params, but the description adds real meaning: the mbox-vs-unified-diff distinction and that message is ignored for mbox, and that all-zeros expected_head_sha means the branch must not exist. It does not restate owner/repo, but those need no elaboration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (commit a patch) plus resource (branch) and immediately distinguishes itself from whole-file writes: 'without sending whole files — the way to change a few lines of a large file.' An agent can tell this apart from write_file or atomic_multi_file_commit without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when this is appropriate ('change a few lines of a large file') and explains the two accepted input formats and when message is required vs ignored. It does not explicitly name the alternative sibling tools (write_file, atomic_multi_file_commit) that an agent should consider instead when replacing entire files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_approve_prAInspect
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 merjax_request_changes. Returns {reviewId, number, state, url}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Optional review comment (Markdown) | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false, the bare minimum for a mutation. The description goes well beyond that by disclosing that the review counts toward branch protection's required approvals and, notably, that it clears the caller's own earlier request for changes — a non-obvious side effect on prior state — plus the author-mismatch and closed-PR failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, but it is front-loaded with the action and effect, then preconditions, then the sibling escape hatch, then the return shape. Every clause carries distinct information — nothing is restated from the annotations or the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation with no output schema, the description supplies the side effects, permission requirements, failure conditions, and even the return shape ({reviewId, number, state, url}). Nothing an agent needs in order to call it correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so owner, repo, number, and body are already documented at the field level, and the description adds no syntax or format detail on top. This is the expected baseline when the schema carries the parameter burden, not a deficiency in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Approve a pull request") and immediately qualifies what that means: it records an 'approved' review by the caller. It distinguishes itself from the nearest sibling by naming merjax_request_changes as the opposite action, so an agent can route correctly without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit preconditions are given (PR must be open, caller cannot be the author) plus the alternative action and when to pick it ("To request changes use merjax_request_changes"). It also states required permissions and scope, which is the kind of guidance an agent needs before attempting the call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_assign_issueAIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| type | No | issue (default) | pull_request | |
| owner | Yes | ||
| number | Yes | ||
| remove | No | Unassign the given users instead (default false) | |
| assignee | No | Username to assign | |
| assignees | No | Usernames to assign, strings (alternative to `assignee`) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive write, and the description adds genuinely new behavioral context: a hard cap of 10 assignees per thread, the constraint that only users who can read the repository are eligible, the required 'repo' scope and write access, and a partial-failure model via the `skipped` array with reasons. This goes well beyond what the annotations carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative verb and the remove-mode qualifier are front-loaded, followed by eligibility rules, parameter guidance, auth requirements, and return shape in a logical order. It is a dense single block rather than cleanly separated lines, and the migration note is slightly tangential, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema, the description covers the operation, both modes, eligibility limits, auth requirements, and even the response shape ({assigned, skipped, removed, assignees}). An agent has everything needed to call this correctly and interpret partial success.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 57%, and the description compensates meaningfully: it explains that `assignee` is one username while `assignees` is the array alternative, that `type` defaults to 'issue', and that `remove` inverts the operation. It does not spell out `owner`/`number`, but those are conventional and required, so the added meaning is proportionate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource combination (assign/unassign users on an issue or pull request) and covers both modes in the first clause. The note that the old `assignee:<username>` labels were migrated distinguishes this from the label-based sibling tools (merjax_label_issue / merjax_unlabel_issue) without needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the condition that selects each mode (assign by default, unassign with remove: true) and gives the prerequisites ('repo' scope and write access). What it lacks is an explicit pointer to a named alternative sibling, but the migration note about labels effectively tells the agent not to use label tooling for assignees.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_atomic_multi_file_commitAInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| branch | Yes | ||
| changes | Yes | Array of {path, content?|content_base64?, deleted?} entries. | |
| message | Yes | ||
| base_branch | No | Branch to fork from when `branch` doesn't yet exist (default: repo default). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the underlying blob/tree/commit/ref-update mechanics, that branch protection, rulesets, and secret scanning are enforced as with a real push, that CI and webhooks fire, and that a 'repo' scope is required. With readOnlyHint=false already covering the write nature, that is rich added context; the only notable gap is no statement of what the tool returns (e.g., commit SHA) despite there being no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core operation and its branch-creation caveat are front-loaded in the first sentence, and the change-entry format plus side effects follow logically. Minor waste in the self-promotional 'The killer agent tool' and the terse 'blob/tree/commit/ref-update sequence' which is jargon without much agent-facing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, 5-required mutation tool with no output schema, the description covers the important unknowns: atomicity, branch creation fallback, enforcement rules, CI/webhook side effects, and required scope. It falls short only on commit-message semantics and return value, which matter when the caller needs the resulting commit reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description mostly restates the `changes` entry shape already present in the schema. It adds meaning for branch auto-creation (tied to base_branch) but says nothing about owner, repo, branch, or that the required `message` is the commit message, leaving two of the six parameters undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: apply a set of writes and deletes as a single atomic commit on a branch, with branch auto-creation called out. The atomic batch framing implicitly separates it from merjax_write_file and merjax_delete_file, but it never names those siblings or merjax_apply_patch, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated: 'single atomic commit' and 'The killer agent tool' suggest this is preferred over looping write_file/delete_file calls. There is no explicit when-not guidance, no mention of when to prefer merjax_apply_patch for patch-style edits, and no note that the branch must be resolved via base_branch when absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_backup_statusAInspect
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 | Required | Description | Default |
|---|---|---|---|
| start | No | Optional: 'backup' or 'drill' — queue one now |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the auth scope required, the RED escalation criteria (stale, failed, local-only or never-drilled backup), that the request is asynchronous with a 15-minute pickup window, that queuing is audit-logged, and that target credentials are never returned ('host/bucket, never keys'). The mutation available via start is consistent with readOnlyHint=false and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded: the access precondition and the core question come first, the RED rule next, the write path after, and the return shape last. It is dense and the opening sentence is a long comma-and-colon chain, but nearly every clause carries information an agent needs; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned keys ({health, reasons, targets, problems, schedule, runs, started?}), and it explains the health semantics, the async caveat, and the credential-hygiene guarantee. An agent can call this correctly and interpret the result without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point because it gives the two valid values ('backup' or 'drill') and, more importantly, their effect and latency: the job is queued for a worker, picked up within 15 minutes, and audit-logged. That is behavioral meaning the schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and resource ('Backup and restore-drill health') and then enumerates the exact facts it reports: newest backup verified on an offsite target and its age, Object Lock immutability, last passing restore drill, worker liveness, targets, schedule and recent runs. That is far more specific than the tool name and lets an agent distinguish it from health-adjacent siblings such as merjax_ci_health or merjax_repo_health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the access precondition clearly ('Site admins only (needs an admin-scoped token)') and explains both modes: read-only inspection by default, and passing start: 'backup' or 'drill' to queue work. It does not name an alternative tool or a when-not-to-use condition, but the resource is narrow enough that no close sibling competes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_cancel_workflow_runBDestructiveInspect
Cancel a queued/running workflow run. Requires 'repo' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| run_id | Yes | The run's id, or a unique leading part of it (8+ hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation risk is known. The description adds a genuine requirement beyond annotations, the 'repo' scope, plus the state precondition, but says nothing about irreversibility, what happens to in-flight jobs, or whether logs are retained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and target front-loaded ahead of the scope prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive three-parameter mutation with no output schema, the definition covers the action and auth scope but leaves the agent guessing about side effects on running jobs and the result of the call. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: run_id is well documented (including the '8+ hex characters' prefix-matching rule), but owner and repo have no schema descriptions. The description does not compensate at all, adding no meaning for any of the three required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Cancel') and resource ('workflow run') and narrows the target to runs that are queued or running. It is clearly distinct from read-oriented siblings such as merjax_get_workflow_run and merjax_list_workflow_runs, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'queued/running' implies the applicable precondition, but there is no explicit when-not guidance (e.g. already-completed runs cannot be cancelled) and no routing to likely alternatives like merjax_prioritize_workflow_run or merjax_rerun_failed_jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_chat_continueAInspect
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 | Required | Description | Default |
|---|---|---|---|
| chat_id | Yes | ||
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds genuinely new behavior: it returns the assistant's reply and, on AI service failure, raises a JSON-RPC error carrying {chat_id, ai_error} instead of a fake apology reply. That failure-mode disclosure is exactly the kind of context annotations cannot provide. It stops short of mentioning side effects like token spend or chat state mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the return value, then the error contract. No filler, and the clarification about error-vs-apology directly prevents a misread of failure output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers both the success return and the failure shape. However, for a stateful tool taking an opaque chat_id, it leaves the prerequisite (where chat_id originates) and parameter meaning undocumented, so an agent still lacks enough to call it confidently from a cold start.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load for both required parameters. It only obliquely hints that chat_id identifies an existing chat and message is the follow-up text; it gives no format, length, or content guidance and no indication of whether chat_id comes from a prior chat call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Send another message to an existing repo chat', plus what it returns. The word 'another' distinguishes it from starting a fresh chat (the merjax_chat_with_repo sibling), though that sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'existing repo chat' and 'another message' suggest it is the follow-up to an initial chat call, but the description never names merjax_chat_with_repo as the alternative or states when-not to use this tool. An agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_chat_with_repoAInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| title | No | Chat title (optional) | |
| message | Yes | Initial user message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the write path (chat row created, reply persisted), the exact success payload {chat_id, reply}, the failure mode (JSON-RPC error carrying {chat_id, ai_error} rather than apology text), and the authentication requirement. That is materially more than destructiveHint=false tells the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the action and followed by the return and error contracts; nothing is filler. The dash-heavy construction packs a lot into one sentence but remains parseable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return shape and the error shape, which is the important missing piece. The remaining shortfall is caller-side: owner/repo semantics are unaddressed, which matters for a tool that scopes to one repository.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the two undocumented parameters are exactly the ones needing guidance: owner and repo are never explained (format, whether they are separate org/name fields). The description only restates 'repo' and 'message' at a high level, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (start a new chat with a repo) and enumerates the concrete side effects: creating a chat row, sending the first user message, streaming and persisting the assistant reply. The word 'new' implicitly separates it from merjax_chat_continue, so an agent can pick between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing 'Start a new chat' clearly signals the opening turn of a conversation rather than a follow-up, which is the main usage decision here. It does not explicitly name merjax_chat_continue or say when to switch to it, so the alternative routing is left to inference rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_ci_executorAInspect
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 | Required | Description | Default |
|---|---|---|---|
| declare | No | Site admins: set the estate-wide declaration to external, in-process or auto. Omit to read only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, and the description supplies the missing context: the default path is a read, the write path requires admin scope, is estate-wide and audited, and the response then carries `saved`. It also discloses a domain rule ('In-process never runs while external runners are configured') and the meaning of holdReason. It does not say whether a declaration change is reversible or affects in-flight runs, keeping it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the purpose and every clause carries information — the runner-count list, the state enum, the holdReason gloss and the admin/write path. The dense em-dash chaining makes it harder to scan than it needs to be, but there is no filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return burden by naming the fields an agent will get back (mode, declaration, source, runner counts, lastSeenAt, state, holdReason, saved). The read/write split and admin gating are both stated. Error or remediation paths for a degraded/unconfigured state are not described, which keeps it at 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter's description already covers the admin scope, the three allowed values and 'omit to read only'. The description adds only the audit/`saved` consequence, which is a genuine but small increment over the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause 'Where CI runs and why' plus the enumerated facets (mode, declaration and its source, runner counts, lastSeenAt, state, holdReason) makes the resource and scope concrete. It stops short of naming how it differs from siblings like merjax_ci_health, merjax_ci_queue_status or merjax_list_runners, even though it references the /admin/runners endpoint those tools likely wrap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does give one clear conditional: omit `declare` to read only, and site admins may pass it to write. That is real when-to-use guidance for the two modes. However, there is no guidance on when to pick this over merjax_ci_health, merjax_ci_queue_status or merjax_list_runners, so sibling selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_ci_healthARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only safety, and the description adds genuinely useful context beyond them: the `dashboard` block is gated on admin scope, poolCost only appears when CI_POOL_COST_PER_MINUTE is set (otherwise 'cost not configured'), and every number carries a `source` attribution. That scope-gating and conditional-field behavior cannot be derived from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single run-on paragraph dense with backticked field names, nested parentheticals, and internal spec references (CAP-0.4, CAP-1.4, ESTATE_PLAN §5) that mean nothing to an external agent. The reader gets no grouping or emphasis, so the most important facts (read-only, admin-gated dashboard) are buried mid-sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly enough to decide whether to call it. It is missing only practicalities like response size or performance cost, which matter for a tool that aggregates 24h/7d rollups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly spends no space on parameter syntax and instead documents the returned shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the concrete resource ('CI health') and the endpoints it mirrors, then enumerates exactly what it returns (queue wait percentiles, outcome rates, capacity, firing measures). It is unambiguous what the tool is, though it never names the sibling it is not (e.g. merjax_ci_queue_status), so an agent must infer differentiation from the content list alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the breadth of the payload signals 'use this for an aggregate CI health overview.' There is no explicit when-to-use, no exclusions, and no mention of alternatives like merjax_ci_queue_status or merjax_ci_executor, which overlap on queue and runner speed data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_ci_queue_statusARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | No | Optional, with owner | |
| owner | No | Optional, with repo: report this repository's part of the queue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the 'Read-only' sentence is redundant, but the description adds real behavioral context: the output shape changes depending on whether owner+repo are supplied, and it notes the result is the same `ciQueue` block the write tools return, which helps an agent correlate responses. It omits cost/latency or rate-limit traits, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Almost every clause carries information, largely because there is no output schema and the return fields must be described somewhere. But it is delivered as one sprawling em-dash-laden sentence that mixes purpose, output fields, and guidance, so it is neither front-loaded nor scannable; the 'Ask before a burst of pushes' cue is easy to miss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, describing the returned blocks (ciQueue, explanation, executor, holdReason) is necessary and is done thoroughly; parameters are covered and the read-only nature is stated. The remaining gap is relational: it does not clarify how this differs from merjax_ci_health or why an agent would call this instead of merjax_ci_executor for the executor portion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameter descriptions are adequate, so the baseline is 3. The description earns an extra point by spelling out the semantic effect of supplying owner+repo (repository-scoped runs, share of CI work, per-class slot holds, and per-run wait explanations) rather than just restating the fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause ('How full the shared CI queue is, and what to do about it') plus the enumeration of level, queued/running runs, slots and wait estimate makes the resource and the payload unambiguous. However, it never distinguishes itself from siblings like merjax_ci_health or merjax_ci_executor, and by folding an `executor` block into its own output it actively blurs the line with merjax_ci_executor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is one concrete usage trigger, 'Ask before a burst of pushes', which is genuinely actionable. But it is buried mid-paragraph, there are no exclusions, and no alternative sibling is named for the overlapping health/executor questions an agent might have instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_clone_urlARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value beyond that by stating the URL is authenticated, noting the credential-helper hint, and enumerating the returned object fields {url, owner, repo, defaultBranch, hint} in the absence of an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the core action stated first, then the safety rationale, then the return shape. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read with no output schema, the description supplies the return shape and the casing behavior, which covers what an agent needs to call and consume it. Missing only failure-mode context such as what happens when the repo does not exist or the caller lacks access.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns an extra point because 'using the repo's stored casing' tells the agent that lookups tolerate casing differences and that the response normalizes to the stored casing, which is meaning the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return the authenticated HTTPS clone URL for a repo', and immediately adds the credential-helper hint. This distinguishes it from the sibling token tools (merjax_get_token, merjax_list_repo_tokens) which return raw credentials rather than a clone URL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage guidance: 'Use this instead of embedding tokens in URLs', which tells the agent the condition that selects this tool over credential-based alternatives. It stops short of naming specific sibling tools or excluding cases, so it is clear context without full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_close_issueADestructiveIdempotentInspect
Close an open issue. Requires authenticated caller with write access. Idempotent — closing an already-closed issue is a no-op. Returns {state}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | Issue number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the idempotency sentence repeats structured data rather than adding to it. The description does add value beyond annotations by stating the auth/write-access requirement and the return shape {state}, but it says nothing about what side effects closing produces or how it relates to the existing reopen tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the action front-loaded and each sentence carrying distinct information: what it does, what it requires, and what it returns. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter mutation with no output schema, the description covers the action, the auth prerequisite, idempotency, and the return value, which is close to what an agent needs to call it correctly. The only notable gap is that it does not point to merjax_reopen_issue as the inverse operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with owner, repo, and number each documented in the schema, so the baseline of 3 applies. The description adds no additional meaning about parameter formats or constraints beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Close an open issue"), which is enough to separate it from merjax_close_pr, merjax_reopen_issue, and merjax_comment_issue. It does not explicitly name a sibling, so it stops short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite "Requires authenticated caller with write access" gives a real usage condition, and "closing an already-closed issue is a no-op" tells the agent it can call it without pre-checking state. There is no explicit guidance on when to prefer this over siblings such as merjax_reopen_issue or merjax_label_issue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_close_prADestructiveIdempotentInspect
Close an open pull request without merging. Requires authenticated caller with write access. Idempotent. Returns {state}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the repeated 'Idempotent' earns no credit, but the description does add value beyond annotations by naming the write-access/auth requirement and the return payload shape ({state}). It stops short of saying what the close does to the branch or whether it is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four terse sentences, front-loaded with the action and its scope, followed by permission, idempotency, and return value. Only 'Idempotent.' is redundant with the annotations, and it costs almost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter mutation with full annotation coverage of the safety profile and no output schema, the description covers action, auth requirement, idempotency, and return shape. The only remaining gap is downstream effect (does closing delete the branch or leave commit history intact), which is a minor omission here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — owner, repo, and number are all documented in the schema — and the description adds nothing about their meaning or format. Baseline 3 applies since the schema carries the parameter burden entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Close an open pull request') and immediately narrows scope with 'without merging', which is exactly the distinction an agent needs against siblings like merjax_merge_pr, merjax_approve_pr, and merjax_update_pr.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Without merging' implicitly routes the agent away from merge_pr and gives a clear precondition (an open PR, authenticated caller with write access), but it never explicitly names an alternative or states a when-not condition beyond the merge exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_comment_issueAInspect
Add a comment to an existing issue. Requires authenticated caller with write access. Returns {commentId}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment body (Markdown) | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | Issue number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's added value is the authentication/permission requirement (write access) and the return shape {commentId}. That is meaningful context beyond the structured fields, though it says nothing about failure modes such as locked or closed issues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the action front-loaded, then the permission requirement, then the return value. No redundant restatement of the title or name, and nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation with full schema coverage and no output schema, the description covers purpose, access requirement and return value, which is close to sufficient. It stops short of noting whether the comment triggers notifications or whether a closed issue rejects the write.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so owner, repo, number and body are already documented including the Markdown hint on body. The description adds no format or constraint detail beyond the schema, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a comment to an existing issue'), which cleanly separates it from the sibling merjax_comment_pr by resource type. It does not explicitly name the sibling or note that the issue must already exist beyond the word 'existing', but the operation is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource scoping, but there is no explicit guidance on when to prefer this over merjax_comment_pr, merjax_edit_comment, or merjax_reply-style flows, and no when-not conditions. The write-access prerequisite is the only real selection constraint offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_comment_prBInspect
Add a comment to a pull request. Requires authenticated caller with write access. Returns {commentId}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment body (Markdown) | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, non-destructive write. The description adds genuine context beyond that: an authenticated caller with write access is required, and the response shape {commentId} is disclosed despite no output schema. It omits side effects such as reviewer notifications or whether duplicate comments are permitted, so it is solid but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the prerequisite, then the return value. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter write tool this covers the essentials: action, auth requirement, and return value in lieu of an output schema. It leaves gaps around failure modes (missing PR, insufficient permissions) and notification behavior that would matter to an agent deciding whether to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters documented including the Markdown format for body. The description adds nothing about parameter meaning or valid values, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Add a comment to a pull request'), which is unambiguous on its own. It does not differentiate itself from close siblings like merjax_comment_issue, merjax_edit_comment, or merjax_list_pr_comments, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the implicit one in the tool name and first sentence. There is no guidance on when to use this versus merjax_comment_issue (issue comments) or merjax_edit_comment, and no note that existing comments should be listed first or that edits go through a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_commit_pr_conflict_resolutionAInspect
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 (merjax_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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number | |
| message | No | Optional subject line (default: Merge branch '<base>' into <head>) | |
| base_sha | Yes | baseSha from merjax_list_pr_conflicts | |
| head_sha | Yes | headSha from merjax_list_pr_conflicts | |
| resolutions | No | 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the commit lands on the PR HEAD, never the base branch, and moves through push gates so CI runs before merging. It discloses compare-and-swap semantics for both shas and states that a moved branch is refused with nothing changed. It also notes trailers, a bot comment, and required scopes — all valuable for a write operation whose annotations only mark it non-read-only and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loads the core action and target before preconditions, failure behavior, and side effects. Every sentence carries operational information, though the long em-dash-heavy sentence is harder to scan than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation with seven parameters and no output schema, the description covers the essential behavior: where the commit goes, what must be resolved first, how shas guard against races, what side effects occur, and what access is required. It leaves no major operational question unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines each parameter. The description still adds meaning: `base_sha` and `head_sha` are compare-and-swapped and refusals leave nothing changed; `resolutions` can replace saved drafts; merge-rule-settled files need no entry. That goes beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: committing saved conflict resolutions as a two-parent merge commit on the PR HEAD. It explicitly distinguishes the target from the base branch and references the draft-producing sibling merjax_resolve_pr_conflict, so an agent can tell what this tool does versus adjacent tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear preconditions: every unresolved file needs a draft or an explicit `resolutions` entry, and write access plus 'repo' scope are required. It also names the sibling that creates drafts. It stops short of explicitly comparing this tool against merjax_propose_pr_conflict_resolution or merjax_merge_pr, but the usage context is otherwise unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_create_agent_sessionAInspect
Mint a new agent-multiplayer session. Returns the plaintext token exactly once (store it). Requires 'admin' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable session name (unique per owner) | |
| repository_id | No | Optional id of a repository you can write, to scope the session to | |
| branch_namespace | No | Optional branch namespace override | |
| budget_cents_per_day | No | Daily budget cap in cents (default 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds two genuinely useful behaviors beyond that: the plaintext token is returned exactly once and must be stored, and an admin scope is required. It does not mention session expiry or what happens on budget exhaustion, which would have pushed this higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the critical one-time-token warning and the scope requirement are both front-loaded rather than buried. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the key return value (the plaintext token, delivered once) and the authorization requirement. For a four-parameter creation tool that is nearly sufficient; only lifecycle details such as expiry or revocation path are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters including the budget default and uniqueness constraint on name are already documented in the schema. The description adds nothing about parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Mint a new agent-multiplayer session.' That is clearly distinct from credential siblings like create_repo_token or create_deploy_token, though the description never explicitly contrasts with them. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite ('Requires admin scope'), which helps gate usage, but offers no when-to-use guidance against the many token/credential siblings (get_token, create_repo_token, rotate_token). The context of use is implied by the name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_create_branchAInspect
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 | Required | Description | Default |
|---|---|---|---|
| sha | Yes | Target commit sha (40-hex) | |
| repo | Yes | ||
| owner | Yes | ||
| branch | Yes | New branch name (short form) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only say readOnlyHint=false, destructiveHint=false): it discloses that creation is gated like a push, subject to rulesets, and triggers a secret scan of commits no other ref reaches, that CI/webhooks fire, and that the 'repo' scope is required. This is exactly the kind of side-effect and prerequisite disclosure a mutating tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six dense clauses with no filler, front-loaded with the operation and followed by side effects, auth scope, and return shape in descending order of importance. Every sentence carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description supplies the return shape ({ref, sha}), the auth scope, and the gating/CI side effects. For a 4-required-param mutation tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: sha and branch are documented in-schema, owner and repo are not. The description reinforces that sha must be an existing commit and branch is a new short name, but adds nothing about owner/repo. Baseline 3 is appropriate given the partial schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+constraint: 'Create a new branch ref pointing at an existing sha', plus the equivalent REST endpoint. An agent can distinguish it from merjax_delete_branch or merjax_update_pr_branch without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb (create a branch), but there is no explicit when-to-use/when-not guidance and no routing against adjacent siblings such as merjax_create_pr or merjax_open_draft_pr, which may also produce branches. The agent must infer when a bare branch ref is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_create_deploy_tokenAInspect
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 merjax_revoke_token {type: "deploy", id}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| title | No | Where the token will be used (default 'agent clone (MCP)') | |
| deliver | No | "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). | |
| token_id | No | A fresh exchange URL for this existing grant (one you created) instead of a new grant. | |
| read_only | No | Default true. false = clone AND push (requires write access). | |
| expires_in_hours | No | Lifetime in hours (default 2, max 24, min 5 minutes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false; the description supplies the behavior that actually matters — by default no secret is returned at all, the exchange URL is single-use and dies in 60 s, default lifetime 2 h with a 24 h cap, owner/collaborator/team/org access plus 'repo' scope required, and the operation is audit-logged. It also explains that each exchange rotates the secret and that push-capable secrets are refused in the transcript path. 'Read-only by default' refers to the token's grant scope and is consistent with the write-creating annotation, not a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical facts — what it mints, that no token is returned by default, and the 60 s single-use URL — are front-loaded, and each subsequent clause carries a distinct operational fact. It is dense but not padded; a few clauses (lifetime defaults) duplicate the schema and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still spells out the return shape ({id, exchangeUrl, exchangeExpiresAt, gitConfig, url}), the default behavior, the alternative delivery mode, prerequisites, lifetime bounds, and the revocation path. An agent has everything it needs to call this correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics beyond the schema: why `token_id` exists (rotate the secret while keeping the same grant) and the security rationale for refusing `deliver: "token"` with `read_only: false`. It largely restates the defaults for `read_only` and `expires_in_hours` that the schema already documents, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource — 'Mint a short-lived, repository-scoped HTTPS clone credential (a deploy token)' — plus the exact target scenario (sandbox or CI box with no PAT). That scope distinguishes it from generic token siblings like merjax_create_repo_token or merjax_clone_url without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the situation that selects this tool (no PAT available on a sandbox/CI box), when to use the gitConfig exchange flow vs. the `deliver: "token"` fallback, and when to pass `token_id` to re-mint an exchange URL for an existing grant. It also routes revocation to merjax_revoke_token. It stops short of explicitly contrasting this with other token-minting siblings, so it is a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_create_issueAInspect
Create a new issue on a Gluecron repository. Requires authenticated caller with write access on the target repo. Returns {number, url}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Issue body (Markdown). Optional. | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| title | Yes | Issue title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's added value is the authorization requirement (write access on the target repo) and the response shape {number, url}, both of which the agent would otherwise have to guess. It doesn't cover failure modes (duplicate titles, archived repos, rate limits), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the action stated first and the permission and return-value facts following. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter create tool with no output schema, the description covers purpose, authorization, and the return shape, which is enough to call it correctly. Minor gaps remain around error/duplicate behavior, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the four parameters is documented in the schema (owner as username or org slug, repo name, title, optional Markdown body). The description adds no meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ("Create a new issue") plus the hosting platform, which is unambiguous and separable from siblings like merjax_close_issue, merjax_comment_issue, or merjax_search_issues. It stops short of naming a sibling or stating scope boundaries (e.g., single repo, no bulk creation), so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a prerequisite ("Requires authenticated caller with write access on the target repo") but no when-to-use/when-not-to-use guidance and no routing to alternatives such as merjax_comment_issue for adding to an existing issue. Usage is implied by the verb, not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_create_prAInspect
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 | Required | Description | Default |
|---|---|---|---|
| body | No | PR body (Markdown). Optional. | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| title | Yes | PR title | |
| base_branch | No | Target branch (default: repo default branch) | |
| head_branch | Yes | Branch with the changes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false, so the description carries real weight here and delivers: it states the authenticated-caller plus write-access requirement and the return shape {number, url}. It does not cover edge-case behavior such as what happens when the head branch does not exist or a PR already exists for that pair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the parameter defaults, then the auth and return contract. Nothing is wasted, though the first two sentences partly duplicate the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no output schema, the description supplies the essentials: the auth/write prerequisite and the return payload. The main missing piece is the draft-PR distinction, which matters given the sibling tool set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the description's notes about head_branch being required and base_branch defaulting are restatements of the schema rather than new semantics. Baseline 3 applies; no additional constraint such as branch-name format or cross-repo head syntax is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Open a new pull request.' An agent can distinguish it from read-oriented siblings like merjax_get_pr or merjax_list_prs. It stops short of differentiating itself from the close sibling merjax_open_draft_pr, which is the one case where an agent could pick the wrong tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no stated alternative. The presence of merjax_open_draft_pr in the sibling list makes the omitted distinction costly, since 'open a new pull request' could plausibly cover both. The write-access prerequisite is stated, but that is a precondition, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_create_repo_tokenAInspect
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 | Required | Description | Default |
|---|---|---|---|
| name | Yes | Where the token will be used, e.g. 'gatetest deploy box' | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| expires_in | No | Optional lifetime: "30m" / "12h" / "7d" / "1y", or a number of seconds (5 minutes to 1 year). Omit, or "never", for no expiration. | |
| permissions | 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/v2/repos/:owner/:repo/actions/runners and reads nothing of the repository; actions: read lists workflows, runs and jobs and reads run and job logs, masked and audited); omitted keys are none; at least one must be read or write. Example: {"actions": "read"}, {"runners": "read"} for a runner audit, or {"runners": "read", "actions": "read"} for a read-only CI audit token (the ci-audit preset: runners, workflows, runs, jobs and logs; no code, no secrets, no writes). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds substantial context beyond that: the token is returned once, effective access is capped by the caller's current repo access and re-checked on every use, branch protection applies, 'repo' scope is required, and the action is audit-logged. This is exactly the behavioral disclosure a mutation tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then permissions and expiry details. It is dense and long but nearly every clause carries operational meaning; a minor cost is the run-on sentence packing many constraints together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param mutation tool with no output schema, the description covers authentication scope, permission model, expiry rules, access capping, and even the return shape ({id, name, repository, permissions, expiresAt, tokenPrefix, token}). Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: admin and settings are never grantable, runners is read-only, omitted keys default to none, at least one must be read/write, and expires_in bounds (5 min to 1 year) with accepted formats. It reinforces rather than merely repeats the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (mint) and resource (fine-grained repository token) with explicit scope: ONE repository, returned once. The scope and single-repo constraint distinguish it from siblings like create_deploy_token, create_runner_registration_token, and get_token without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains what the token authenticates (REST v2/v3, git over HTTPS, container registry) and the 'repo' scope prerequisite, which implies when to use it. However, it never explicitly contrasts with sibling token tools such as create_deploy_token or get_token, leaving the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_create_runner_registration_tokenAInspect
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. 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 | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Username, org slug, or 'platform' | |
| labels | No | Comma-separated labels the runner gets in addition to its own (e.g. gpu,arm64) | |
| exclusive | No | 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. | |
| repositories | No | Exclusive runners only: comma-separated repository names of this owner it serves (default: all of them) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes well beyond them, disclosing token lifetime (expires in an hour), one-time use with a resulting long-lived credential, immutability of exclusive/repositories after registration, and the exact return shape {owner, token, expiresAt, exclusive, repositoryIds, gluecronUrl}.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and constraints are front-loaded and every clause carries information, but the prose is dense and runs long with parenthetical asides ('a Mac for Xcode, a GPU box'), which slightly taxes scanning for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description enumerates the returned fields, covers all four parameters with behavioral consequences, and states authorization scope ('platform' as a site admin). Nearly complete for a credential-minting mutation, with only sibling-alternative routing left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds real meaning beyond the schema by giving a concrete label example ([self-hosted, macos, xcode]), stating exclusive runners never take runs-on: self / ubuntu-*, that the account keeps its shared lane, and that both flags are fixed for the runner's life.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a one-time CI runner registration token') plus the valid owner scopes, which cleanly separates it from siblings like merjax_create_deploy_token, merjax_create_repo_token, merjax_list_runners, and merjax_revoke_runner.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the concrete usage context — a runner started with RUNNER_REGISTRATION_TOKEN registers once and gets a long-lived credential — and describes when to set exclusive: true (Mac/Xcode, GPU box). It lacks explicit routing to alternatives such as revoke_runner or list_runners, so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_delete_branchADestructiveIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| branch | Yes | Branch name, without refs/heads/ | |
| expected_sha | No | Delete only if the branch still points here (compare-and-swap); otherwise a conflict |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond destructiveHint/idempotentHint, it discloses that write access is required, that branch protection (allow_deletion), rulesets and push inspection gate the call, that webhooks and CI fire as side effects, that the default branch is protected, that the operation is audit-logged, and the exact error semantics for a stale SHA or a missing branch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the mechanism, then preconditions, then return shape. Very dense and nearly every clause carries new information; the git-analogy clause is the only mildly redundant framing since the endpoint mirror is given later.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema mutation, it covers the permission gate, protection/ruleset checks, side effects, protected-target exclusion, failure modes and the literal return value, so an agent can call it and anticipate the outcome without further sources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description's note on expected_sha (delete only if the branch still points there) largely restates what the schema already says, including the conflict behaviour, and it adds no format or constraint detail for owner/repo/branch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a branch") and immediately scopes it with the `git push --delete` analogy plus the endpoint it mirrors. That distinguishes it from adjacent siblings such as merjax_create_branch, merjax_delete_repo and merjax_purge_repo without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage conditions: it is the git-push-delete path with write access, protection and rulesets applying; the default branch is never deleted; pass expected_sha for compare-and-swap; a missing branch is not-found. It stops short of naming competing tools (e.g. why not delete_repo/purge_repo) but the preconditions make selection unambiguous in practice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_delete_commentADestructiveIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| thread | No | ||
| comment_id | Yes | The comment's id (as listed by merjax_list_pr_comments, or the #comment-<id> anchor) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, so the bar is lower, yet the description adds real context: edit history is destroyed along with the comment, authorization is limited to the author or a repo writer, missing comments error rather than silently succeeding (a meaningful nuance against idempotentHint), and the action is audit-logged with actor identity but not content. It also names the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five compact sentences, front-loaded with the action and scope, then permissions, error semantics, audit behavior, and return shape. No filler and nothing repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers preconditions, side effects, error behavior, audit trail, and return payload, which is nearly everything an agent needs. The residual gap is the unexplained optional `thread` parameter, which is the only element an agent could mis-handle when constructing the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the baseline is 3. The description adds only the 'by comment id' qualifier; it does not explain the optional nested `thread` object (kind/number) or why a thread reference is supplied alongside a globally unique comment id — the one genuinely under-documented input. It reinforces rather than extends the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Delete a comment on an issue or pull request (by comment id)') and scopes it to the comment plus its edit history. It also identifies the id source via merjax_list_pr_comments. It does not explicitly contrast with merjax_edit_comment, but the operation is unambiguous against the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the authorization precondition ('Its author or a repository writer only') and the failure semantics ('A missing comment is a not-found error, never reported as deleted'), which tells an agent what to expect and how to react. It stops short of explicitly saying 'to remove content without deleting, use merjax_edit_comment', so the alternative is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_delete_fileADestructiveInspect
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 | Required | Description | Default |
|---|---|---|---|
| sha | Yes | Current blob sha (40-hex) | |
| path | Yes | ||
| repo | Yes | ||
| owner | Yes | ||
| branch | Yes | ||
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation: it discloses optimistic concurrency semantics via the blob sha, the required auth scope, that branch protection, rulesets and secret scanning all apply, and that CI and webhooks fire exactly as on a push. Those downstream side effects are precisely what an agent needs before performing an irreversible write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, action and resource front-loaded, then prerequisites, then side effects, then the REST analogue. No filler and nothing repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers side effects, concurrency requirements and auth scope well. The remaining gap is that it never says what comes back (e.g. the new commit sha), which matters for chaining follow-up calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 17%, so the description must carry the load. It explains 'sha' (current blob sha, used for optimistic concurrency) and clarifies 'repo' as a scope, but 'message' (presumably the commit message), 'branch' and 'path' semantics are left entirely to inference from their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a file from a branch') plus an implementation detail ('via git plumbing') and a REST equivalent, which is precise enough to act on. It does not explicitly name a sibling to contrast with (e.g. merjax_delete_branch for whole branches, merjax_write_file for overwrite), so differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Prerequisites are clear: the caller must already hold the current blob sha and the 'repo' scope, which implicitly tells the agent to read the file first and that it cannot delete blind. What's missing is a when-not-to-use clause, e.g. using merjax_apply_patch or merjax_atomic_multi_file_commit for multi-file changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_delete_loop_secretADestructiveIdempotentInspect
Delete a hosted-loop (or organisation-level) secret by name. Pass loop (the hosted Claude loop's id, from /connect/claude/deploy) for the loop's own secret — its owner only — or org (organisation slug, admin-scoped token) for an organisation-level secret every loop of the organisation inherits; a loop-level name overrides the organisation's. ANTHROPIC_API_KEY is the loop's model key (CAP-S.8: the platform never lends its own); at organisation level it is the BYOK override. A secret that does not exist is a not-found error, never reported as deleted. Audit-logged. Returns {name, deleted: true}.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Organisation slug | |
| loop | No | Hosted Claude loop id (uuid) | |
| name | Yes | Secret name, an environment variable name: letters, digits and _, starting with a letter (stored upper-case). PATH, HOME, INPUT and GLUECRON_* are the runtime's own and refused. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive=true and idempotent=true, but the description adds real value beyond them: a missing secret is a not-found error and never reported as deleted (clarifying why idempotency does not mean silent success), the call is audit-logged, ownership/authorization requirements differ per scope, and the exact return value {name, deleted: true} is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and resource, then layered scope, auth and return details. It is one dense semicolon-chained sentence whose clauses all carry information, though a reader must parse carefully to separate the loop path from the org path.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 3-parameter mutation with no output schema, everything an agent needs is present: scope selection and required privilege, name constraints (enforced in schema), the not-found failure mode, audit logging, and the return shape. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the 3 baseline is met by the schema alone; the description nonetheless adds meaning the schema does not carry — what 'loop' is (a hosted Claude loop id from /connect/claude/deploy), what 'org' implies about token scope and inheritance, and the special status of ANTHROPIC_API_KEY (CAP-S.8, platform never lends its own key; BYOK override at org level).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Delete a hosted-loop (or organisation-level) secret by name') and immediately distinguishes the two scopes plus the name-override relationship, which separates it from sibling deletion tools like merjax_delete_repo_secret or merjax_delete_variable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete selection criteria: pass 'loop' for the loop's own secret (owner only) or 'org' for an organisation-wide secret requiring an admin-scoped token, and notes a loop-level name overrides the org's. It even points to where the loop id comes from (/connect/claude/deploy). It stops short of naming sibling tools such as merjax_list_loop_secrets for discovery, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_delete_repoADestructiveInspect
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 merjax_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 merjax_purge_repo. Returns {deleted: true, soft: true, id, restorable_until}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, and the description goes well beyond that by disclosing the soft-delete semantics, the 90-day restorable_until window, scope of disappearance across git/web/REST/MCP/CI/webhooks/search/pages, name reservation, CI cancellation, and stopped webhook deliveries. It also covers token scope ('admin'), audit event (repo.delete), and owner notification, which are exactly the kinds of side effects annotations cannot express. It stops short of timestamp/format detail for restorable_until, so it is not flawless, but it is substantively richer than the annotation bar requires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical fact (soft delete, restorable) is front-loaded in the first clause, and the remaining sentences each carry distinct operational information: effects, permissions, scope, audit, alternative tool, and return shape. It is a dense single block rather than scannable lines, and the embedded date '(2026-10-19)' is noise, which keeps it just below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing the return shape ('{deleted: true, soft: true, id, restorable_until}'). Combined with the permission model, scope requirement, cascade behavior, and the named recovery and purge alternatives, an agent has everything needed to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both required parameters (repo, owner), so the schema already carries the semantics and the baseline is 3. The description does add one piece of interpretive value for 'owner' by spelling out that it must be the personal owner or an org owner, but that is a permission rule rather than added parameter syntax or format guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Delete a repository') and immediately qualifies it as a SOFT delete, which is the single most important disambiguation an agent needs. It is clearly distinguished from the sibling tools that do something similar but different: merjax_purge_repo (permanent) and merjax_restore_repo (undo).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the alternative: 'To remove it for good before then, use merjax_purge_repo', and names the restore path with its time bound. It also states who is allowed to call it and who is refused (admin collaborators, org admins), which functions as a precondition/exclusion list rather than generic advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_delete_repo_secretADestructiveIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| name | Yes | Secret name | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint and idempotentHint, yet the description adds substantial context beyond them: the exact idempotent result shape (deleted:false, already_deleted:true), the consequence that referencing workflows stop receiving the secret, required permissions and scope, and audit logging with name only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and target, then idempotency, side effects, auth, and return shape in compact sentences. No filler, and the inline return-shape summary substitutes usefully for the absent output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, unannotated-output tool this covers everything an agent needs: scope, casing rule, idempotent semantics, side effects on workflows, permission requirements, audit behavior, and return fields despite there being no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks — the name normalization rule that cron_secret is read as CRON_SECRET, which affects what an agent must pass.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete), resource (one workflow secret), and scope (repository, by name), which is enough to separate it from sibling operations like merjax_set_repo_secret, merjax_list_repo_secrets, and merjax_delete_loop_secret without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: idempotent retry is safe, admin access plus 'repo' scope are required. It stops short of explicitly routing the agent to alternatives (e.g. set_repo_secret to update, delete_loop_secret for loop-scoped secrets), so no exclusion guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_delete_variableADestructiveIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| id | No | Variable id, instead of name | |
| org | No | Organisation slug | |
| name | No | Variable name: letters, digits and _, not starting with a digit or GITHUB_ (stored upper-case) | |
| repo | No | Repo name | |
| owner | No | Repo owner — username or organisation slug (omit when passing org) | |
| environment | No | Environment name (or id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description goes beyond them with what an agent actually needs: a non-existent variable is a not-found error rather than a silent success, the org path requires an admin-scoped token, and the call is audit-logged. It also states the return shape, which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Sentences are short, front-loaded with the action, then the required scoping shape, then failure and return semantics. Every clause carries information; the only slight redundancy is restating the return value after already saying a missing variable is an error.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, six-parameter tool with zero required parameters and no output schema, the description covers scoping, auth requirements, failure semantics, audit logging, and return value. The remaining hole is the undocumented `id` parameter as an alternative to `name`.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning by explaining the conditional combinations of otherwise all-optional parameters — something the schema cannot express. It loses a point for describing deletion 'by name' while never mentioning the schema's `id` alternative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Delete an Actions variable'), and the resource is narrow enough (variables, not secrets) to separate it from neighbours like merjax_delete_repo_secret and merjax_delete_loop_secret. It then enumerates the three scoping modes, so an agent knows exactly what class of object this acts on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete routing rules for invocation: owner+repo for repository variables, owner+repo+environment for environment variables, org for organisation variables. The one gap is that it never explicitly contrasts with merjax_set_variable or merjax_get_variable, but the operation is unambiguous enough that the missing sibling callout is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_dismiss_reviewAInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| number | Yes | ||
| reason | Yes | Why the request is dismissed (3-500 characters) | |
| reviewer | No | Only this reviewer's request (username). Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false; the description adds real value by disclosing the required 'repo' scope, the write-access prerequisite, and that a reason is mandatory and audited. It does not contradict the annotations, since dismissing a review is a state change rather than a destructive deletion. It stops short of saying what happens to blocked merge state afterwards or what errors arise without write access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action and its scope front-loaded, followed by prerequisites and audit note. No filler, no restating of the title, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers the essentials: scope of the operation, auth requirements, and the audited reason. The remaining gap is that it says nothing about outcomes or failure modes, but that is a minor omission given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so the description has to compensate: it clarifies the meaning of 'reviewer' (only this one's request) and confirms 'reason' is required and audited. It adds nothing about owner, repo, or number, which remain undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('dismiss'), a specific resource ('standing changes-requested reviews on a PR'), and the effect ('so they no longer hold the merge'). It also scopes the operation (all reviews or one reviewer's), which distinguishes it from the inverse sibling merjax_request_changes without needing to be named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the stated effect: an agent can infer this is used when requested-changes reviews are blocking a merge. However, it never states when NOT to use it, nor names alternatives such as merjax_request_changes or merjax_approve_pr, so routing depends on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_edit_commentADestructiveIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| body | Yes | The new text (Markdown); the previous text is kept in the edit history | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| thread | No | ||
| comment_id | Yes | The comment's id (as listed by merjax_list_pr_comments, or the #comment-<id> anchor) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it explains that the previous text is preserved in edit history, that repeat submissions are idempotent no-ops, that concurrent edits surface as conflicts instead of silent overwrites, and that newly added mentions trigger notifications. This directly qualifies the destructiveHint=true flag by showing the operation is recoverable and never clobbers stale state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the primary action and its permission gate lead, and each semicolon clause carries distinct information (history, idempotency, conflict, notifications, endpoint, return shape). The PATCH-path sentence is arguably only useful to API-familiar agents, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description supplies the authorization model, mutation semantics, failure/idempotency behavior, and even the return shape ({id, kind, number, effect}), which is more than an agent needs to call it correctly. The only unaddressed element, the nested thread parameter, is fully specified in the schema itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 80%, so most parameters are self-documenting (body, owner, repo, comment_id with a pointer to merjax_list_pr_comments). The description adds only the 'by comment id' framing and leaves the nested `thread` object (kind/number) and its required-ness unmentioned, so it does not meaningfully extend the schema's coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Replace the text of a comment on an issue or pull request') plus the addressing key (comment id). This cleanly separates it from the creation siblings (merjax_comment_issue, merjax_comment_pr) and from merjax_delete_comment without needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real preconditions: 'Its author or a repository writer only', and describes the no-op case ('the same text again is unchanged') and the conflict case ('never overwritten'), which tells an agent when the call will not do what it expects. It does not explicitly name alternatives such as merjax_delete_comment or merjax_list_pr_comments (the latter only appears in the schema), so routing guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_explain_failureARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | No | Optional: repository name — needed only for a run-id prefix | |
| owner | No | Optional: repository owner — needed only for a run-id prefix | |
| run_id | Yes | The failed run's id (full uuid; an 8+ hex prefix when owner + repo are given) | |
| include_diff | No | Include the prior fix's diff, limited to the relevant files (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnly/destructive annotations supplied, the description carries real behavioral weight: it discloses the signal normalisation ('normalised error signature'), the privacy scoping of cross-repo lookups ('this repo, your other repos with the same owner or org, and platform-wide counts only'), the fallback behaviour ('the class's standard remedy'), and the guardrail that infra and flaky failures never suggest a code change. None of that is derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the task statement and is a single dense sentence, but the long em-dash-delimited list of outputs makes it a run-on that is harder to scan than a short bulleted enumeration would be. The content mostly earns its place, but the packaging costs readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe the return payload itself — and it does, down to per-step class, chosen rule, signature, prior occurrences with fix rate, and the shape of the suggested fix. Combined with the prefix rule and the no-code-change guardrail, an agent has what it needs to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the run-id prefix rule already present in the schema and only indirectly implies include_diff ('its diff limited to the relevant files'), adding no new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb+resource ('Explain a failed CI run') and then enumerates exactly what is produced: per-step failure class, chosen rule, normalised signature, failing tests, touched files, prior occurrences with fix rate, and a suggested fix. That is far more specific than a sibling like merjax_get_workflow_logs, but no sibling is named, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the opening scope ('a failed CI run') and the run-id prefix rule ('with owner + repo an 8+ hex prefix also works'), but there is no explicit when-to-use/when-not guidance and no named alternative such as get_workflow_logs for raw output or list_flaky_tests for flake detection. The agent must infer which tool to pick from the output list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_explain_repoARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description adds genuinely new behavioral context: the result is cached and no generation is triggered. However, it is silent on the most important behavioral question for a cache-only read — what happens on a cache miss (empty result, error, or stale content) — and gives no hints about size or structure of the returned Markdown beyond the format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core behavior (cached read) front-loaded and the caveat immediately after. Nothing is repeated from other fields or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description carries the return-value burden, and it does state the return type (Markdown). But it omits cache-miss behavior and any parameter format guidance, which are the two things an agent still needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with two required parameters, owner and repo, neither of which has a description. The description only alludes to 'a repo' and does not clarify the owner/repo split, accepted formats, or whether org-scoped names work. With low coverage the description has to compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'Return the cached AI "explain this codebase" Markdown for a repo.' The agent knows exactly what comes back. It does not name the obvious sibling, merjax_repo_explain_codebase, which likely generates the artifact, so differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear exclusion — 'Pure read — never triggers a new generation' — and redirects to an alternative ('use the web UI for that'). The redirection is to the UI rather than to the sibling tool merjax_repo_explain_codebase, which is the alternative an agent could actually call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_find_symbolCRead-onlyInspect
Find definitions of a symbol by name within a repo. Wraps src/lib/symbols.findDefinitions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Symbol name | |
| repo | Yes | ||
| owner | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. Beyond that, the description only mentions the internal implementation function it wraps ('src/lib/symbols.findDefinitions'), which says nothing about behavior an agent needs — whether multiple definitions per repo are returned, whether results include file paths and line spans, or how large repos are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and no padding. The second sentence is an implementation detail of marginal value to an agent but costs little space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return shape, yet says nothing about what a 'definition' result contains (path, line, snippet, count) or any result limits. Combined with two undocumented required parameters, the definition is too thin for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: 'name' is described as 'Symbol name', but 'owner' and 'repo' have no descriptions in either the schema or the description. The description does not compensate by clarifying required repo/owner scoping (e.g., 'OWNER/REPO' format) or whether name is case-sensitive or fully qualified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and object: 'Find definitions of a symbol by name within a repo.' An agent can tell this is a symbol-definition lookup scoped to a repo. It does not explicitly differentiate itself from adjacent siblings such as merjax_search_code or merjax_semantic_search, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this over merjax_search_code, merjax_semantic_search, or merjax_read_file, and no preconditions or exclusions are stated. The agent must infer that this is for jumping to definitions rather than free-text search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_fork_repoAInspect
Fork a repository to the authenticated caller's namespace. Mirrors POST /:owner/:repo/fork. Returns {owner, repo, url}. Requires 'repo' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Source repo name | |
| owner | Yes | Source repo owner |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation/safety profile is covered. The description adds genuinely non-structured context: the required 'repo' scope and the exact return payload {owner, repo, url}, which tells the agent what it gets back without an output schema. It doesn't cover rate limits, idempotency, or what happens on an existing fork.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, zero filler, and the core action is front-loaded. Each remaining sentence carries a distinct fact: endpoint mapping, return shape, and auth requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema, the description supplies the destination semantics, the auth scope, and the return shape — enough to call it correctly. Only edge-case behavior (duplicate fork, naming collisions, permission failures) is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented as the source owner and source repo. The description adds only the framing that the fork target is implicitly the caller's namespace, confirming there is no destination parameter. That is a small clarification over the schema, consistent with the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Fork a repository") plus the destination (the authenticated caller's namespace), which is the detail an agent needs to distinguish it from a plain create/update repo operation. It stops short of naming a sibling alternative, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose statement — the agent can infer this is the right call when it wants a copy of someone else's repo under its own account. There is no explicit when-to-use/when-not guidance, no note on prerequisites beyond the scope, and no mention of behavior when a fork already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_generate_commit_messageBRead-onlyInspect
Generate a commit message for a diff. Same engine as merjax_generate_pr_description but explicit for the commit-message use case.
| Name | Required | Description | Default |
|---|---|---|---|
| diff | Yes | ||
| style | No | 'conventional' (default) or 'plain' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds only that it shares an engine with the PR-description tool; it says nothing about accepted diff format, output shape, determinism, or whether the result is a raw string.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and no filler. The second sentence is slightly redundant with the name but does carry cross-tool context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should indicate what is returned (a plain commit message string, subject line only or subject plus body). It omits that, and also omits input format guidance for the required diff parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the 'style' parameter documents 'conventional'/'plain' and its default, but 'diff' has no schema description and the tool description does not compensate by specifying format (unified diff? git diff output?) or size expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a commit message for a diff') and explicitly names the sibling it parallels (merjax_generate_pr_description), so an agent can tell the two apart by output artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the use case via 'explicit for the commit-message use case', but never states when to prefer this over merjax_generate_pr_description or what prerequisites (e.g., a diff source) are needed. Guidance is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_generate_pr_descriptionARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| diff | Yes | Unified-diff body | |
| style | No | 'conventional' (default) or 'plain' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true / destructiveHint=false annotations, which correctly signal a non-mutating operation, the description discloses the LLM-backed implementation and, importantly, the graceful degradation to a heuristic when ANTHROPIC_API_KEY is missing — a real behavioral caveat an agent should know. With no output schema present, the stated return shape '{subject, body}' also adds genuine value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose followed by behavior and return shape, with no filler. The reference to src/lib/ai-commit-message.ts is an implementation detail that earns only partial keep as the context for the fallback behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter generation tool this covers purpose, dependency, degraded-mode behavior, and return shape — enough to invoke it correctly without an output schema. The remaining gap is sibling disambiguation against the closely named commit-message and release-notes generators.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with 'diff' documented as a unified-diff body and 'style' as 'conventional' (default) or 'plain'. The description adds nothing about either parameter, so the schema carries the full burden and the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Generate an AI commit-message-style description for a diff.' That is concrete enough to act on, but it never separates itself from the very similar sibling merjax_generate_commit_message, which the wording ('commit-message-style') arguably overlaps with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the required diff argument and the phrase 'for a diff' make it clear you call this when you have a diff and want PR text. There is no explicit statement of when to prefer this over merjax_generate_commit_message or merjax_generate_release_notes, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_generate_release_notesBRead-onlyInspect
Generate release notes between two tags. Wraps src/lib/ai-release-notes.generateReleaseNotes. Returns the rendered Markdown + section data.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| to_tag | Yes | New tag | |
| from_tag | No | Previous tag (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful return-shape context ('rendered Markdown + section data'), which matters because no output schema exists. It does not disclose cost/latency of the underlying AI call or what happens when from_tag is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, and the return-format note earns its place given no output schema. The middle sentence exposing the internal module path (src/lib/ai-release-notes.generateReleaseNotes) is implementation detail that adds little for an agent selecting or invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read-only tool with no output schema, the description covers purpose and return shape adequately. It leaves two gaps an agent would care about: the optionality/fallback behavior of from_tag and the expected format of owner/repo identifiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: to_tag and from_tag are described there, owner and repo are bare strings. The phrase 'between two tags' reinforces the from_tag/to_tag pairing but never states that from_tag is optional or what the tool does when it is absent (e.g., auto-detect last release). Baseline 3 at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate release notes between two tags'), which is clearly distinct from the mutation siblings in the list. It does not differentiate itself from the closest related generators (merjax_generate_commit_message, merjax_generate_pr_description), so an agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no reference to the sibling generators that also produce commit/PR/release narrative text. The only contextual cue is the tag-range phrasing, which an agent must interpret as 'I have two release tags'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_generate_testsAInspect
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 | Required | Description | Default |
|---|---|---|---|
| mode | No | 'follow-up-pr' or 'append-commit' | |
| repo | Yes | ||
| owner | Yes | ||
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false, so the description usefully goes further: 'follow-up-pr' opens a new PR while 'append-commit' commits onto the head branch, which tells the agent exactly what side effects each mode produces. It also discloses the required 'repo' scope. It stops short of saying whether generated tests are committed atomically, what happens on failure, or cost implications of an AI call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope requirement. The internal source path reference is the one sentence fragment that does not earn its place for an agent invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains what each mode produces (a new PR vs. a commit on the head branch), which is the key return-behavior information. Combined with the scope prerequisite and annotations covering the safety profile, an agent has enough to call this mutation tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'mode' and 'number' are described, while 'owner' and 'repo' are bare. The description adds genuine meaning to the mode values by explaining their outcomes, compensating for the schema's terse enum-like listing, but it adds nothing for the two undocumented parameters. Baseline 3 is appropriate given partial coverage and partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate tests for a PR') and clearly differentiates from siblings like merjax_generate_commit_message and merjax_generate_pr_description. The mention of the internal module ('Wraps src/lib/ai-test-generator.generateTestsForPr') adds no distinguishing value for an agent choosing a tool, but it doesn't obscure the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the two modes and their divergent behavior, plus a 'requires repo scope' prerequisite, but it never states when to choose this tool over alternatives (e.g., a plain PR review) or when the modes are inappropriate. An agent must infer selection rules from the mode names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_agent_budgetBRead-onlyInspect
Return spent / cap / remaining cents for an agent session.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish a non-destructive read, and the description adds useful output behavior by naming the three measures and their cents unit. It does not clarify snapshot timing, handling of unknown or expired sessions, or representation of sessions without a cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence conveys the operation, scope, returned fields, and units without filler. The slash-separated phrasing is compact but remains understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read, the definition is sufficient to infer the basic call and expected budget information. With no output schema, however, it remains thin about response shape and edge cases, and it lacks session-ID acquisition and alternative-tool guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter has no schema description, and the description only indirectly supports it through the phrase 'for an agent session.' It does not document the expected identifier format, validity requirements, or where to obtain agent_session_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb, resource, and scope, and specifies the returned values: spent, cap, and remaining cents for an agent session. It does not explicitly distinguish this session-level view from siblings such as merjax_ai_cost_summary or merjax_list_token_spend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The agent-session scope implies using the tool to check one session's budget, but there is no explicit when-to-use or when-not guidance. It also does not direct agents to aggregate cost or token-spend alternatives when those are more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_branch_protectionARead-onlyInspect
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; plus gate_test {enabled, server_configured, state: on | disabled_in_settings | not_configured_on_server, details} — whether GateTest scans the repository (set it with merjax_update_repo gate_test_enabled). Read-only. Returns {protected: false, merge_train, gate_test} when no rule applies, else {protected: true, pattern, matched_by, required_checks, …, merge_train, gate_test}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| branch | No | Branch name (default: the repo's default branch) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces that with 'Read-only'. Beyond the annotations it discloses the fallback behavior ('Returns {protected: false, ...} when no rule applies') and the full return shape for both branches, which is meaningful for a tool with no output schema; it does not cover auth or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the opening clause, and the subsequent field enumeration is dense but informative. The long semicolon-chained middle sentence is heavy, yet nearly every clause (merge_train, gate_test states, fallback shape) carries distinct information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description compensates well by documenting the return structure and the protected:false case. It also decodes the gate_test state enum and names the setter for that field; the only gap is not naming merjax_set_branch_protection as the counterpart for the other fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline would be 3, but the description adds real meaning: the branch argument accepts an exact name or a glob that covers the branch, which is not in the schema. Owner/repo add nothing beyond their existing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the branch-protection rule that applies to a branch') and immediately enumerates what that rule contains, so it is unmistakable versus merjax_set_branch_protection or merjax_get_pr_checks. It even clarifies the branch selector semantics (exact name or the glob that covers it).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: 'Read-only' and points to merjax_update_repo gate_test_enabled for changing the gate_test value, which tells the agent where the write path lives. It does not explicitly direct mutation of other fields to merjax_set_branch_protection, and offers no when-not-to-use guidance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_commitARead-onlyInspect
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 merjax_get_diff for those.
| Name | Required | Description | Default |
|---|---|---|---|
| sha | Yes | Commit SHA | |
| repo | Yes | ||
| owner | Yes | ||
| include_files | No | Include the files-changed summary and stats (default true). Set false to skip the diff read on very large commits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe read (readOnlyHint=true, destructiveHint=false), so the description only needed to add scope, and it does: it enumerates the returned fields and explicitly warns that patch bodies are absent, preventing an agent from assuming diffs come back. It does not cover auth, rate limits, or behavior for unknown SHAs, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses with zero filler: what it returns, how it maps to the underlying endpoint, and the one thing it deliberately omits. The critical exclusion is front-loaded right after the scope statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-resource fetch with no output schema, the description supplies the closest thing available: an explicit field list of what comes back and a clear statement of what does not. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema coverage, the description carries real weight: it explains that lookup is keyed by SHA and that the default payload includes the files-changed list, which is the meaning behind the include_files flag. The REST path it cites also grounds owner/repo, though those two parameters are still not described anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb and resource ('Fetch a single commit by SHA') with the exact payload contents (metadata, changed files with path/status/additions/deletions) and maps itself to GET /api/v2/repos/.../commits/:sha. That is enough for an agent to distinguish it from siblings like merjax_get_diff or merjax_list_tree without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit exclusion plus the alternative: 'Patch bodies are NOT included — use merjax_get_diff for those,' which is the main routing decision an agent faces here. What is missing is guidance on when to prefer this over other commit-level lookups (e.g. workflow runs or PR views), but the primary fork is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_diffARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| sha | No | Commit SHA — diffs it against its first parent | |
| base | No | Base ref (with `head`) | |
| head | No | Head ref (with `base`) | |
| repo | Yes | ||
| owner | Yes | ||
| include_patch | No | Include patch bodies (default true) | |
| max_patch_bytes | No | Total budget for patch text across all files (default 400000, max 2000000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description usefully adds behavior beyond that: patch text is byte-capped and output can be truncated, and it shows the return shape. However it does not explain what truncation means for the caller (e.g., how to retrieve the remainder) or hint at size/permission limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the operation, then the two calling modes, then the return shape and the size control. There is no filler, and each sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in by sketching the returned object ({files, stats, truncated}) and the fields per file. For a 7-parameter read tool with two mutually exclusive calling modes, that is close to complete; only the exact truncation/retrieval semantics and max_patch_bytes guidance are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, and the description adds real meaning beyond it: it specifies that `sha` diffs against the first parent and that base/head uses the merge base, plus the practical effect of include_patch=false. The `max_patch_bytes` parameter is only indirectly covered by 'byte-capped', leaving its tuning semantics to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('actual changes in a commit or a branch range'), and 'actual changes' implicitly distinguishes it from metadata readers like merjax_get_commit or merjax_get_pr. It stops short of naming any sibling explicitly, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit mode-selection guidance: pass `sha` for a single commit vs its first parent, or `base`+`head` for everything head adds since the merge base, framed as 'what a PR proposes'. It also offers a lightweight alternative ('set include_patch=false for a files-changed summary only'). No sibling-tool routing is offered, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_prBRead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the auth gate, the meaning of null for mergeable, the mergeState status vocabulary, and that the probe is the same one the merge gate uses. However, it discloses no failure modes (missing PR, permissions beyond auth) or response envelope behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and every clause maps to a real return field, so little is wasted. But it is delivered as one semicolon-chained run-on spanning three payload groups (record, mergeState, conflictRisk), which is hard to parse; a short structured breakdown would convey the same facts more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description legitimately must describe return shape, and it does so thoroughly for the mergeability and conflict-risk fields, including enum vocabularies. The auth preconditions are stated. Minor gaps remain around error behavior and how this differs from the status-summary sibling, but an agent can call it correctly from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all three required parameters (owner, repo, number), so the schema carries parameter meaning fully. The description adds nothing about parameter formats or constraints, which is acceptable at full coverage but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Fetch the full detail record of a pull request') and enumerates what the record contains (title, body, state, branches, draft, author, timestamps) plus the conflict-probe enrichments. It implicitly distinguishes itself from list/status siblings by emphasizing full detail plus mergeable/mergeState/conflictRisk, though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only explicit usage condition is the authentication requirement ('Authenticated callers only, the read tool surface still works anonymously'), which is genuinely useful preconditioning. There is no guidance on when to prefer this over merjax_pr_status_summary, merjax_list_pr_conflicts, or merjax_get_diff, so the agent must infer the selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_pr_checksARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so 'Read-only' adds nothing. What does add value is the disclosure of behavior beyond the schema: the shape of the failure payload (failed job and step, up to 8 file:line rows linked to head sha, a 'What now?' guidance block), the `budget`/`timed_out` case that still blocks the merge, and the `{withheld, required, hint}` state plus the 'repo' scope requirement for private repos. This is meaningful operational context, though it stops short of rate limits or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability is front-loaded in the opening clause and the return shape is stated compactly at the end. It is dense, with long run-on clauses and a redundant 'Read-only' sentence that repeats the annotations, but for a tool with no output schema nearly every sentence carries real payload information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns, and it does so explicitly ({head_sha, total_count, check_runs, required, ci}) while also covering the failure sub-payload, the withheld-logs case with its auth requirement, and the timed_out semantics. For a read-only tool of this complexity, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so owner, repo and number are already documented, which sets the baseline at 3. The description adds only an indirect detail — that results are anchored to the PR's head sha — and gives no extra syntax or format guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource with tight scope: 'List every check at a PR's current head — workflow runs, gates and commit statuses', and enumerates the returned fields. That scope implicitly separates it from single-run siblings like get_workflow_run or get_workflow_logs, but no sibling is named explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention of required-check state and the merge gate's CI verdict suggests it is the tool for judging merge readiness, and the withheld-log hint points at diagnosis. There is no explicit 'use this when…' / 'use X instead' routing, and no prerequisites section, leaving the agent to infer selection among the many CI-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_preview_urlARead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| branch | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the wrapper it delegates to (branch-previews.getPreviewForBranch) and the exact failure envelope {ok:false, reason:'not enabled on this host'}, which tells the agent how to interpret a non-result. It stops short of describing the success payload shape beyond 'URL + status'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: purpose first, implementation second, failure mode third. Every sentence contributes distinct information and nothing is repeated from the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with no output schema, the description covers purpose, delegation target, and the no-preview-host failure case, which is what an agent needs to call and interpret it. The remaining gaps are the undocumented owner parameter and the success return shape, both minor relative to the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the full burden for three required parameters. It names only repo and branch as a key pair and says nothing about owner (required but unmentioned), nor about formats such as repo slug vs. name or branch naming conventions. The gap leaves one parameter entirely unexplained and adds little meaning beyond the schema's property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Return the branch-preview URL + status for a (repo, branch) pair.' No sibling tool covers preview URLs, and the description names the underlying capability explicitly, so an agent can identify the tool's job immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by defining the lookup (get preview URL for a repo/branch) and explains one negative condition, the host lacking PREVIEW_DOMAIN. It gives no explicit 'use this when' framing, no prerequisites, and no comparison to any alternative path for obtaining a preview link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_tokenARead-onlyInspect
One of your tokens by type and id (from merjax_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 merjax_list_tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Token id | |
| type | Yes | Token type: pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description still adds real value by promising the audit trail with before/after diffs and by stating 'Never the secret', which is a key expectation about sensitive output. It stops short of describing audit-trail size, ordering, or behavior for unknown ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Everything the agent needs is in three short clauses, with scope and return contents front-loaded and the type enumeration kept to a trailing sentence. No filler or restatement of the tool name beyond what carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no output schema, the description covers what is returned, what is deliberately withheld (the secret), and the authorization profile. Missing only edge behavior such as not-found handling and audit-trail pagination/size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description's type enumeration (pat/glc_, repo/gcft_, deploy/gcdt_) is essentially a verbatim repeat of the `type` property description, so it adds little beyond the schema. The only genuine addition is the note that ids come from merjax_list_tokens, which justifies the baseline 3 rather than lower.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It identifies a single token resource retrieved by type and id, and specifies the payload as 'everything list shows plus the audit trail (create, edits with a before/after diff, rotations, revocation)'. The retrieval verb is only implied by the phrasing rather than stated, and the sentence opens with a fragment, but the resource and return contents are unambiguous against siblings like merjax_list_tokens or merjax_rotate_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(from merjax_list_tokens)' explicitly routes the agent to enumerate ids via the sibling tool first, and 'Same scopes as merjax_list_tokens' tells the agent the permission profile matches that sibling. It does not state exclusions, e.g. that mutation operations (rotate/revoke) belong to other tools, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_variableARead-onlyIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Organisation slug | |
| name | Yes | Variable name: letters, digits and _, not starting with a digit or GITHUB_ (stored upper-case) | |
| repo | No | Repo name | |
| owner | No | Repo owner — username or organisation slug (omit when passing org) | |
| environment | No | Environment name (or id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the description's added value is the auth constraint (admin-scoped token for org variables) and the failure mode (not-found raises an error rather than returning empty), plus the explicit return shape. That is real context beyond the annotations, though encryption/masking of the value is not discussed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: action first, scope rules second, failure and return shape last. No filler, and the most decision-relevant information (scoping) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter read tool with no output schema, it covers action, scope resolution, auth requirement, error behaviour and the returned fields – everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3; the description exceeds it by stating how parameters combine – which fields form each scope and that org replaces owner. The schema itself only says "omit when passing org" on the owner field, so the combination rules are genuine added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read one Actions variable by name" gives a specific verb (read) and a single, bounded resource, and the phrase "one ... by name" implicitly separates it from merjax_list_variables and merjax_set_variable. No sibling is named explicitly, so it stops short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out the exact scope combinations that select each variant: owner+repo for repository scope, owner+repo+environment for environment scope, org alone for organisation scope. It also flags the admin-scoped token prerequisite for the org path and that a missing variable is an error, though it never says when to prefer merjax_list_variables instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_workflow_logsARead-onlyInspect
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. A private repository's logs require 'repo' scope (OAuth: write:repo); every token read is audited. For a read-only CI audit credential, a repository token with {"runners": "read", "actions": "read"} (the ci-audit preset, merjax_create_repo_token) reads the same masked logs over REST — GET /api/v2/repos/:owner/:repo/actions/runs/:id/logs, or one job's at actions/jobs/:job_id/logs — under the same rule and audit; repository tokens are not accepted on /mcp.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| step | No | Only this step's logs: its name (exact, else substring, case-insensitive) or its 1-based position within its job | |
| owner | Yes | ||
| run_id | Yes | The run's id, or a unique leading part of it (8+ hex characters) | |
| tail_lines | No | Keep only the last N lines of each returned log (max 5000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint, yet the description adds substantial behavior beyond them: 'repo' scope / write:repo OAuth requirement, per-token audit logging, masked logs, truncation with a `fullLog` artifact fallback, and the rule that repository tokens are not accepted on /mcp. That is exactly the auth, audit and data-truncation context an agent cannot get from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, but the body is one dense paragraph with deeply nested parentheticals covering the flaky/known/infra/new taxonomy and forensic metadata. That content is needed given there is no output schema, yet it is packed into a wall of text rather than separated into readable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so thoroughly — run metadata, per-job/per-step status, failedSteps, testFailures and fullLog are all defined. Gaps remain around failure modes (unknown run_id, non-unique prefix) and any size/pagination limits on returned logs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% (owner and repo are undocumented), so the description must compensate. It does so by explaining the interaction the schema omits: full per-job logs only when neither `step` nor `tail_lines` is given, plus `step` accepting a name or 1-based position and `tail_lines` capping at 5000 lines. The owner/repo parameters still carry no added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ('Return a workflow run's logs plus a failure summary') and the 'JSON-friendly companion to the ZIP-download endpoint' line scopes it against a non-MCP alternative. It never names a sibling such as merjax_get_workflow_run or merjax_explain_failure, so an agent still has to infer the boundary against those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear conditional usage internally: passing `step` returns only that step's output, `tail_lines` keeps the last N lines, and full per-job logs are returned only when neither is supplied. It also spells out the credential path for read-only CI audit (ci-audit preset or REST endpoints). It stops short of excluding any sibling tool explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_get_workflow_runBRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| run_id | Yes | The run's id, or a unique leading part of it (8+ hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, so the description is free to spend its words on behavior: it explains which fields appear conditionally (queueReason, queue, coalescedFires/coalescedNote, retryOf/retriedAs) and why. That gives the agent real insight into how run state maps to returned data, though it omits any mention of auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, but the bulk is a dense enumeration of conditional output fields that reads closer to an output schema than to guidance. It is not padded with filler, yet the balance is skewed toward field listing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, documenting return fields is genuinely necessary and the description does so thoroughly. However, it leaves owner/repo semantics and any sibling routing unaddressed, so it is complete on returns but incomplete elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: run_id is documented ('id, or a unique leading part of it, 8+ hex characters') but owner and repo have no schema description, and the description says nothing about any parameter. With low coverage the description should compensate for owner/repo semantics and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource: 'Fetch a workflow run's metadata + status,' and adds that it mirrors GET /api/v2/repos/.../actions/runs/:id, which pins down exactly what is retrieved. It does not explicitly contrast with siblings like merjax_list_workflow_runs or merjax_get_workflow_logs, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The description never tells the agent to prefer this over merjax_list_workflow_runs when scanning or over merjax_get_workflow_logs when logs are needed; usage is only inferred from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_handoverARead-onlyInspect
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), the CI queue, and — when the default branch carries docs/plans/capacity-plan.json — plan: the next items, items in flight, decisions waiting on the owner and drift between the ledger and the PRs; and plans, the same for every docs/plans/*-plan.json ledger (each read with the idPrefix it declares, default CAP; at most 10). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| merged_since_hours | No | Window for recently merged PRs (default 48, max 720) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's closing 'Read-only' merely echoes them. Beyond that, it discloses genuinely useful behavior: data comes from live git and CI rather than documentation, results are conditional (the capacity plan block only appears when docs/plans/capacity-plan.json exists), build drift is reported only when the repo is the one this Gluecron instance serves, and plans are capped at 10.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening clause is well front-loaded, but the body is one sprawling sentence chained with semicolons and nested parentheses, which makes it hard to scan for a specific return field. The content is largely justified by the lack of an output schema, but the packaging could be restructured into a bulleted list of returned sections without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a broad aggregate surface, the description correctly takes on the job of enumerating every returned section, including the conditional plan/plans blocks. It is nearly complete for an orientation tool; the only softness is that the plans/idPrefix behavior and the ordering semantics of blockers ('most urgent first') are stated so densely that an agent may need a second read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so owner, repo and merged_since_hours are already documented in the input schema. The description restates the 48-hour default for merged_since_hours and adds that plans are read with each ledger's declared idPrefix (default CAP, at most 10), which is contextual rather than parameter-level detail. Under the 100%-coverage baseline, 3 is the correct ceiling here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear framing: 'the live state of a repository, read from git and CI rather than from a handoff doc', which states the resource and its authoritative-source angle. It then enumerates the exact sections returned (summary, blockers, CI per workflow, build drift, open PRs, merged PRs, queue, plan/plans), so an agent knows precisely what it gets. It stops short of naming which specific sibling tools (e.g. merjax_ci_health, merjax_pr_status_summary) it supersedes when a narrower query is wanted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here when picking up work' gives an explicit entry-point cue for the fresh-session/orientation case, which is the key when-to-use signal. What's missing is the inverse: no statement of when a narrower sibling (ci_health, pr_status_summary, list_prs) is the better call, so an agent must infer that this tool is the heavyweight aggregate option.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_import_actionAInspect
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 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}.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Tag, branch or full commit SHA, e.g. v7 | |
| action | Yes | Upstream action as workflows write it, e.g. actions/github-script | |
| upstream_url | No | Optional; default https://github.com/<owner>/<repo>.git |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds substantially beyond that: single-ref scope per call, the mirror namespace it writes into, idempotent upsert behavior on re-import, audit logging, and the returned fields including previousSha. For a write tool with no output schema, this is close to the full behavioral picture an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the access precondition and the core action, then layers rationale, idempotency, and return shape in short declarative clauses. No filler; every sentence carries either a constraint or a consequence the agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description enumerates the return object keys, and it covers auth, ref scope, mirror destination, and re-import behavior for a 3-parameter mutation tool. Nothing material is missing for a correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds meaning by constraining ref to one tag/branch/full SHA and by showing how `action` (as written in workflows) maps to the mirror path. The upstream_url override is left to the schema, which already documents its default, so this stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (import), a specific resource (a third-party GitHub Action at exactly one ref), and the exact destination (gluecron-actions/<owner>--<repo>). It also explains the downstream effect in workflow terms (`uses: owner/repo@ref`), so the agent can distinguish this from any other mutation sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the prerequisite (site admins only, 'admin'-scoped token), the condition that motivates use (workflow runs never fetch from github.com, so an unimported action is skipped), and the re-import semantics for refreshing an existing ref. That is explicit when-to-use plus the operational consequence of not using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_label_issueAInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| labels | Yes | Label names (strings) | |
| number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare this as a non-read-only, non-destructive mutation. The description adds real value beyond that: it discloses the side effect that labels are auto-created on the repo if missing, states the required 'repo' scope, and gives the return shape {labels}. It does not address idempotency (re-adding an existing label) or error behavior for a nonexistent issue number.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: the action, the auto-create side effect, and the auth/return contract. The core action is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation with annotations and no output schema, the description covers the essential contract – what it does, the side effect, the scope requirement, and the return value. The remaining gaps are parameter-level detail for owner/repo and label-replacement semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% – just the 'labels' array is documented. The description partly compensates by implying 'number' is the issue number and that 'repo' scopes the operation, but 'owner' and the exact owner/repo relationship remain unexplained in both places. That partial compensation supports a middling score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Attach one or more labels to an issue"), which is unambiguous and clearly distinct from merjax_unlabel_issue by the verb alone. It stops short of explicitly naming the sibling tool for removal, so it lands just below the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the operation itself: use this when an issue needs labels. There is no explicit guidance on when not to use it, whether labels are additive or replacing, or how it relates to merjax_create_issue with labels or merjax_unlabel_issue. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_learning_statusARead-onlyInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds real value on top: the admin-scope auth requirement, the 7-day observation window, the RED interpretation rule ('N failures, 0 lessons'), and an explicit data-boundary statement that output is counts only with no log text or repository. Missing only rate/volume or pagination behavior, which matters little for a fixed-window aggregate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The admin prerequisite is front-loaded and the body is dense with concrete facts rather than filler. Minor weakness: 'Also each pattern's count and register row, and the register' is awkward and partly redundant with the trailing 'Returns {health, patterns, register}'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters and no output schema, the description carries the whole burden and does so: it names the three return keys, defines the health signal's RED condition, and states what the counts exclude. An agent can decide to call it and interpret the result without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly does not invent parameter guidance, instead spending its words on semantics of the returned data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific subject: whether CI failures are being converted into lessons, enumerating the tracked signals (classified failures, lesson.pattern events, recurring candidates, >1h unresolved failures) over a 7-day window. It is clearly not a generic health check like merjax_ci_health or merjax_ci_queue_status, though it never explicitly names those siblings to draw the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a hard prerequisite ('Site admins only, needs an admin-scoped token') and implies the auditing use case via the 7-day window and RED threshold. However, it never says when to call this instead of merjax_ci_health, merjax_explain_failure, or merjax_list_flaky_tests, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_ai_workspacesARead-onlyIdempotentInspect
The three provider workspaces every model call is billed to by its purpose (ws-control-plane, ws-hosted-loops, ws-ci-gates): each with its daily spend limit, rate limit, today's spend and calls (UTC day), and the platform ceiling above all three. Site admins with an admin-scoped token only. Mirrors GET /api/v2/admin/ai-workspaces. Returns {day, platformDailyCents, workspaces:[{workspace, purpose, dailyCents, rpm, spentToday, callsToday, callsLastMinute, updatedAt, updatedBy}]}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety bar is low. The description still adds real context beyond them: an admin-scoped token is required, the scope is a fixed set of exactly three workspaces, and spend/call figures are bucketed to the UTC day. It does not say whether the numbers are cached or how fresh 'updatedAt' is, which is the only material gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the scope and the workspace names before the auth constraint and return shape, and the parenthetical field list is dense but readable. It is a single long compound sentence plus a return signature, so it is efficient though slightly overstuffed for such a simple list call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by spelling out the exact return object shape including day, platformDailyCents, and per-workspace fields. Combined with the auth requirement and the fixed three-workspace scope, an agent has everything needed to call it and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case. The description correctly avoids inventing parameter guidance and instead spends its words on scope and return shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ('the three provider workspaces every model call is billed to by its purpose') and enumerates the actual workspaces plus the fields returned, so an agent knows exactly what comes back. It also names the underlying endpoint. It does not differentiate itself from likely-adjacent siblings such as merjax_ai_cost_summary or merjax_set_ai_workspace_quota, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a hard prerequisite ('Site admins with an admin-scoped token only'), which is genuine when-to-use context. However, it never states when to prefer this over merjax_ai_cost_summary for spend questions, nor what to do if the caller is not an admin. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_deleted_reposARead-onlyInspect
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}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Site admins only: every deleted repository on the instance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive profile, and the description adds genuinely new context: the required 'repo' scope and the automatic purge that occurs once restorable_until passes, which is decision-relevant for an agent. The 'Read-only' sentence merely restates readOnlyHint=true, so it is not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, resource, and scope in the first clause, and the trailing return-shape block is worth its space given no output schema exists. Minor redundancy: 'Each has its id, full_name and restorable_until' is repeated almost verbatim by the later Returns object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return shape (total_count plus per-repo fields) and the expiry semantics an agent needs to act on results. Scope, permissions, and the single optional parameter are all covered, leaving nothing material missing for a one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the default behavior when `all` is omitted (personal plus owned-org repos), which the schema's one-line property description does not state. The site-admin restriction itself is duplicated from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List deleted repositories') plus the exact scope: personal repos and those of organizations you own, with a site-admin escalation path. An agent can distinguish this from merjax_search_repos, merjax_repo_health, or merjax_restore_repo without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the use case as finding repos that are candidates to restore or purge, and qualifies when the `all` escalation applies (site admins only). It stops short of explicitly naming merjax_restore_repo and merjax_purge_repo as the follow-up actions, leaving that routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_flaky_testsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| limit | No | Max tests (default 25, max 100) | |
| owner | Yes | ||
| window_days | No | Flip evidence from this many days back (default and max 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and destructiveHint=false, yet the description adds real behavioral context: the forensic repro criteria that define flaky, the exact per-entry fields returned, and the important caveat that flaky tests are never skipped or quarantined (information only). It does not cover auth needs, rate limits, ordering, or pagination, keeping it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the dense definitional material about the repro and entry fields is mostly load-bearing because 'flaky' would otherwise be ambiguous. The closing sentence about retry and merge-gate excusal is somewhat tangential to a listing tool and stretches the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the enumeration of returned fields (test, file, state, label, variable, repro command, owner, expiry, issue, flip rate, evidence runs) is exactly what an agent needs, and the state semantics including 'unexplained = NOT flaky' prevent misreading. Gaps remain around pagination, ordering, and the owner/repo parameter expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% — limit and window_days are described in the schema, but owner and repo are bare strings with no format guidance. The description compensates by naming none of the four parameters: it never links window_days to the flip-evidence window or explains limit/pagination, so the undocumented half stays unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ('List a repository's flaky tests') and the rest of the description sharply scopes what counts as flaky, which separates it from generic failure tools like explain_failure or get_workflow_logs. It never names an alternative sibling explicitly, so it stops short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the descriptions of 'unexplained = NOT flaky', the single targeted retry, and the merge-gate excuse suggest this is the tool to consult when judging whether a CI failure is trustworthy. There is no explicit 'use this when / not when' or named alternative (e.g. explain_failure for root-cause analysis).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_loop_secretsARead-onlyIdempotentInspect
List the secrets a hosted Claude loop (or an organisation) holds — names and dates, never values. Pass loop (the hosted Claude loop's id, from /connect/claude/deploy) for the loop's own secret — its owner only — or org (organisation slug, admin-scoped token) for an organisation-level secret every loop of the organisation inherits; a loop-level name overrides the organisation's. ANTHROPIC_API_KEY is the loop's model key (CAP-S.8: the platform never lends its own); at organisation level it is the BYOK override. Returns {scope, secrets:[{name, scope, createdAt, updatedAt, lastUsedAt}], inherited:[…]} where inherited are the organisation-level names a loop gets unless it overrides them.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Organisation slug | |
| loop | No | Hosted Claude loop id (uuid) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real behavioral context on top: values are never returned, ownership and token scopes are required, loop-level names override organisation-level ones, and the CAP-S.8 note explains what ANTHROPIC_API_KEY means in each scope. Strong, though it never mentions caching, pagination, or behavior when neither parameter is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every sentence carries content, but the definition is a single semicolon-chained block that packs the CAP-S.8 aside and the return-shape listing into the same breath, making it dense to parse. It is efficient but not well structured for scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return contract and does so explicitly (scope, secrets array with fields, inherited list), and it also covers permissions, scope selection, and inheritance semantics. An agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: where the loop id comes from (/connect/claude/deploy), that it must be one's own loop, that org requires an admin-scoped token, and the precedence relationship between the two. This goes beyond the terse schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb and resource ('List the secrets a hosted Claude loop (or an organisation) holds') and immediately narrows scope ('names and dates, never values'), which separates it from value-returning or repo-scoped secret tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says which parameter to pass for which scope and names the prerequisites for each ('its owner only' for loop, 'admin-scoped token' for org), plus the override rule. It stops short of naming sibling alternatives such as set_loop_secret or list_repo_secrets, so the routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_pr_commentsARead-onlyInspect
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 a model: false for gluecron[bot]'s own notes, e.g. a person's conflict resolution or a merge-train notice), onBehalfOf (on such a note, the person it was posted for), 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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | all (default) | issue (general comments) | review (review comments + review summaries) | |
| repo | Yes | Repo name | |
| limit | No | Max entries (default 50, max 100) | |
| owner | Yes | Repo owner — username or organisation slug | |
| since | No | ISO-8601 timestamp; only entries updated at or after it | |
| number | Yes | PR number | |
| offset | No | Entries to skip. Use `nextOffset` from the previous response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, and the description adds substantial context on top: moderation filtering (only approved comments), the Gluecron-specific quirk that `commitId` and `side` are always null, how `isAi` is defined for gluecron[bot] notes, and auth requirements per repo visibility. These are non-obvious behaviors an agent could not infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scoping, and nearly every clause carries real information (thread semantics, null fields, moderation, paging). It is dense to the point of being a wall of text with deeply nested parentheticals, which slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read tool with no output schema, the description supplies the return shape (fields, thread structure, root/resolved semantics) and the paging contract, which is exactly the gap an absent output schema would otherwise leave. Nothing an agent needs to call it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining what each `kind` value actually contains, that `since` operates on updated time, and that `offset` should be driven by `nextOffset`/`total` from the prior response. It omits any mention of `limit` bounds, which the schema does carry, so it is not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("List every comment on a pull request in chronological order") and then enumerates the three comment kinds returned. This clearly separates it from the write-side siblings such as merjax_comment_pr and merjax_edit_comment without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions: use `kind` to narrow to general comments versus review comments plus summaries, `since` to filter by update time, and paging via `nextOffset`. It also states an exclusion (unsubmitted draft reviews are private and not listed) and the access model (anonymous on public, read access on private). It stops short of naming an alternative tool for, say, PR metadata or diffs, which would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_pr_conflictsARead-onlyInspect
What stands between a PR and a clean merge, as the merge gate, the PR page and the Conflicts tab see it (one shared probe): status up-to-date | clean | conflicts | unknown, mergeable, the base/head shas the answer is for, files settled with no one in the loop (ruleSettled: each with by = structured (structured, code-aware merge) or rules (the deterministic merge rules)), and each unresolved file with its kind in plain words (both edited / binary / deleted on one side / added on both / rename / submodule / too large), whether the browser can edit it or only keep one side, and any saved draft. With hunks: true, each editable file's diff3 text labelled by branch name and its hunks (id, mine, base, main) for merjax_resolve_pr_conflict. Also the exact git commands for the command line. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| fresh | No | Bypass the ten-minute probe cache (default false) | |
| hunks | No | Include each editable file's marked-up content and hunks (default false) | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the trailing 'Read-only.' adds nothing, but the description contributes substantial behavior beyond that: a shared probe across three surfaces, cache behavior, deterministic rule settlements with a `by` provenance field, per-file kinds, browser editability limits, and exact git commands. It does not cover auth requirements or rate limiting, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every clause carries information, but the body is a single ~130-word run-on sentence with stacked parentheticals and backticked fragments, which makes it slower to parse than it needs to be. Bullet-style separation of the status values, file kinds and hunks block would preserve the content at lower reading cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing returns, and it does so thoroughly: status vocabulary, mergeable flag, shas, settled-vs-unresolved file structure, provenance of settlements, file kinds, editability and drafts. For a five-parameter read tool of this complexity, nothing an agent needs before calling it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description meaningfully enriches the `hunks` parameter by specifying the return shape it triggers (diff3 text labelled by branch name plus hunks with id/mine/base/main) and names the tool that consumes it. `fresh` is left to the schema, which does define it, so no penalty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete framing ('What stands between a PR and a clean merge, as the merge gate, the PR page and the Conflicts tab see it') and then enumerates the exact payload: status, `mergeable`, base/head shas, ruleSettled files, unresolved files with kind, editability and drafts. It is clearly distinguished from `merjax_get_pr`, `merjax_pr_status_summary` and the resolve/propose/commit conflict siblings by naming the consumers and the conflict-specific fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clearly implied and partly explicit: the tool is the diagnostic probe for merge blocking, and 'With hunks: true ... for merjax_resolve_pr_conflict' routes the agent to the sibling that consumes this output. It does not state when NOT to use it (e.g. versus `merjax_get_pr` or `merjax_pr_status_summary`), which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_prsBRead-onlyInspect
List pull requests on a repo, filtered by state (open|closed|merged|all). Authenticated callers only. Returns up to 50 summary rows.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| limit | No | Max rows per page (default 50, max 100) | |
| owner | Yes | Repo owner — username or organisation slug | |
| state | No | open | closed | merged | all (default: open) | |
| offset | No | Rows to skip, for paging. Use `nextOffset` from the previous response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that — an authentication requirement and a result-size disclosure ("up to 50 summary rows") — but the 50-row claim sits awkwardly against the schema's documented max of 100, and nothing is said about paging behavior or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the resource and filter front-loaded; there is no filler. The final sentence is slightly at odds with the schema's limit semantics, which keeps it from being a clean 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter read tool with no output schema, the definition covers purpose, auth, and an approximate result size, which is the minimum an agent needs. It omits what a "summary row" actually contains and how pagination terminates, both of which the agent would want before iterating.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including state, limit, and offset is already documented in the schema. The description restates the state filter and the default row count but adds no new meaning, format details, or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List pull requests on a repo") plus the state filter, so an agent immediately knows what the tool returns. It does not distinguish itself from the close sibling merjax_search_prs, leaving the agent to infer which one to pick for filtered browsing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the state enumeration and "Authenticated callers only" signal a read/browse scenario and a prerequisite, but there is no explicit when-to-use vs. merjax_search_prs, merjax_get_pr, or merjax_list_ready_to_merge. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_ready_to_mergeARead-onlyInspect
Pull requests that are green and clean and that nobody has merged: open, not a draft, CI green at the head, no gate failing or running, no standing request for changes, branch protection satisfied, no conflicts (the merge gate's own conflict probe), and auto-merge NOT armed. Each comes with a plain sentence ("Green and clean for 3 days — nobody has merged it"), whether you can merge it (canMerge) or arm it (canArm), and the merge / arm endpoints. Also waiting_on_you: open PRs where you are a requested reviewer or code owner and have not reviewed. Scope: owner + repo for one repository; org for an organisation; neither for every repository you can merge in. not_ready lists the other open PRs in scope with the first reason. To act: merjax_set_auto_merge (arm) or merjax_merge_pr. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Organisation slug: every repository of the org you can read | |
| repo | No | Repo name (with owner) | |
| owner | No | Repo owner — username or organisation slug (with repo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent ('Read-only'). Beyond that it discloses what each result contains — a plain-language sentence, canMerge and canArm flags, the merge/arm endpoints, plus the separate `waiting_on_you` and `not_ready` groupings — which is real behavioral payload an agent cannot get from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The eligibility test is front-loaded and the matching is precise, so most clauses earn their place in a dense single paragraph. It is long and clause-heavy, and the parenthetical about the merge gate's own conflict probe plus the trailing 'Read-only' repeat what annotations already convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers the return shape (readiness sentence, canMerge/canArm, endpoints, waiting_on_you, not_ready), the scope semantics of all three optional params, and the read-only safety profile. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning by explaining how the optional parameters combine into three distinct scopes rather than just listing them. It stops short of stating edge cases (e.g. owner supplied without repo), so it is above baseline but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (open pull requests) plus an enumerated, unambiguous predicate: not a draft, CI green at head, no gate failing or running, no standing change request, branch protection satisfied, no conflicts, auto-merge not armed. It also implicitly separates itself from merjax_list_prs by noting that `not_ready` carries the remaining open PRs with their first blocking reason.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Scope selection is spelled out explicitly (owner+repo = one repository, org = whole organisation, neither = everything you can merge in), and the follow-up actions are named: merjax_set_auto_merge to arm, merjax_merge_pr to merge. It never explicitly says when to prefer merjax_list_prs or merjax_pr_status_summary instead, so the exclusion side of the guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_repo_secretsARead-onlyInspect
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}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and destructiveHint, but the description adds materially important behavior: values are never returned (so an agent must not attempt secret retrieval here) and the call requires admin access plus 'repo' scope. These are exactly the auth and data-exposure facts the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose and the names-only constraint first, the use case second, prerequisites and return shape last. Nothing is repeated and no sentence could be removed without losing a fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by spelling out the return shape ({repository, total_count, secrets:[{name, created_at, updated_at}]}), plus permissions and the no-values rule. For a simple two-parameter read tool, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both required parameters (owner, repo) are documented in-schema, so the baseline is 3. The description adds nothing about owner/repo formats or edge cases such as organisation slugs beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a repository's workflow secrets') and pins the output scope with 'NAMES ONLY ... values are never returned'. It implicitly distinguishes itself from the loop-secret and set/delete-secret siblings by saying 'repository's', but it never names an alternative explicitly, so differentiation is left slightly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use scenario ('check that a secret such as CRON_SECRET exists before a workflow needs it'), which is far more than most list tools offer. It stops short of stating exclusions, e.g. that it is not the way to retrieve values (use it only for existence checks) or how it differs from listing loop secrets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_repo_tokensARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it names the fields returned, states that the secret is never exposed, and notes the required 'repo' scope. It does not describe pagination or result ordering, but the extra security and scope details are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the action and resource, then lists returned fields and the scope requirement. Every clause earns its place with no redundant or filler wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and read-only annotations, the description gives enough detail to call the tool correctly: it identifies the resource, returned fields, secret omission, and required scope. The only minor gap is that pagination or result limits are not mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly avoids inventing parameter semantics and instead notes a scope prerequisite, which is not a call parameter but is useful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list fine-grained repository tokens that the caller has minted. It distinguishes the scope as repository tokens rather than all tokens, but it does not explicitly name or contrast with sibling tools such as merjax_list_tokens or merjax_get_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource being listed, and the description adds a prerequisite that 'repo' scope is required. However, it gives no explicit guidance on when to choose this tool over sibling alternatives like merjax_list_tokens, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_runnersARead-onlyInspect
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. Needs a PAT with 'repo' scope (or a session) and the right to manage the owner's runners. For a read-only credential — a security audit watching for rogue runners — mint a repository token with {"runners": "read"} (merjax_create_repo_token) and call GET /api/v2/repos/:owner/:repo/actions/runners: it lists the same runners and lane and can do nothing else (repository tokens are not accepted on /mcp). Add {"actions": "read"} (the ci-audit preset) and the same token also lists workflows, runs and jobs and reads their masked logs, still with no write anywhere.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Username, org slug, or 'platform' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly annotations it discloses the auth requirement, the permission needed, and a real failure mode ('repository tokens are not accepted on /mcp'). It also explains the semantics of the computed sharedLane field and its three values plus sharedLaneDetail, which an agent cannot infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and dense but each clause carries real information (fields, sharedLane semantics, auth). The trailing half drifts into explaining an alternate REST path with endpoint paths and preset payloads, which is useful but disproportionate for a one-parameter list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers auth, permission, returned fields, and derived-field semantics for a simple one-param read tool with a readOnly annotation and no output schema. It does not address result size or pagination behavior, though with a single owner filter and no paging parameters that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema already documenting 'Username, org slug, or 'platform''. The description restates that same enumeration but adds no syntax, format, or edge-case detail (e.g. case sensitivity, how 'platform' scopes results) beyond the schema, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the CI runners registered to an owner') and enumerates exactly what comes back: id, name, url, labels, slots, online, last seen, revoked. It also defines the derived sharedLane value, which no sibling (revoke_runner, create_runner_registration_token, ci_health) provides, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing guidance for the read-only case: mint a repository token with {"runners": "read"} and use the REST endpoint instead, expanded with the ci-audit {"actions": "read"} preset. It also states the credential prerequisite (PAT with 'repo' scope plus rights to manage the owner's runners). What's missing is guidance on when to prefer this tool over adjacent siblings such as merjax_ci_health or merjax_ci_queue_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_tokensARead-onlyInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Token type: pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_). Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered and the description clears a lower bar. It adds real value beyond that: it discloses that secrets are never returned (only the last 4 characters), that unreadable token types appear under `omitted`, and that reading requires 'user' or 'repo' scope. The enumeration of status values (active / expiring / expired / revoked / never_used / stale) also signals the range of outcomes an agent can expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The returned-field inventory is front-loaded in the first sentence and the filter/permission details follow, so the agent reads the most important information first. The single dense sentence enumerating fields is long but every item listed is a genuine output field the caller would want to know about. Slightly over-packed, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing the response, and it does so thoroughly by naming type, name, status, last 4 characters, scopes, repository, expiry, last use, use count and rotation state. With one optional parameter and full schema coverage, that leaves little unexplained. The only gap is the absence of explicit sibling routing for token-listing variants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `type` parameter is fully documented in the schema, so the baseline of 3 applies. The description restates the same pat/repo/deploy mapping with prefixes (glc_, gcft_, gcdt_) and adds the useful 'omit for all three' behavior, but that is largely mirrored in the schema's own description. Marginal added meaning over structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource, 'List your own tokens', and constrains the scope with 'your own' and '(never a secret)', which distinguishes it from listing repository-owned tokens. It never names a sibling such as merjax_list_repo_tokens or merjax_get_token explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'List your own tokens' plus the note that omitting `type` returns all three categories, so the agent can infer when to pass the filter. However, there is no explicit statement of when to prefer this over merjax_list_repo_tokens or merjax_get_token, and no exclusions are given. The permission notes ('PATs need user scope') hint at failure conditions but are not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_token_spendARead-onlyIdempotentInspect
Today's model spend (UTC day), the daily bucket in force and the state (active | suspended) of every personal access token of yours, as /settings/tokens/spend shows it. Canary tokens are not listed: they never authenticate. Needs user scope. Returns {platformDefaultCents, tokens:[{tokenId, name, tokenPrefix, spentTodayCents, bucketCents (0 = no bucket), bucketSource: own|default, state, suspendedAt, suspendedReason, suspendedSpentCents}]}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety needs no restating. Beyond that, the description adds real context: the UTC-day window, the required `user` scope, and the reason for excluding canary tokens (they never authenticate), which prevents an agent from expecting them in results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the primary purpose front-loaded, followed by the exclusion rule and the return shape. It is dense but nothing is filler; the inline return-shape spec is long yet earns its place because no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description supplies everything needed: the time window, the auth scope prerequisite, the documented exclusion, and a field-by-field account of the return object including edge semantics like bucketCents 0 = no bucket and suspended accounting fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. The description does not waste space restating parameters that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Today's model spend (UTC day)... and the state of every personal access token of yours') and anchors it to the UI surface (/settings/tokens/spend). It clearly differs from merjax_list_tokens and merjax_ai_cost_summary in substance, though it never names those siblings to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope statements ('Today', 'UTC day', 'of yours') and by the explicit exclusion of canary tokens with a reason. However, there is no explicit when-to-use guidance and no routing to alternatives such as merjax_list_tokens for token inventory or merjax_ai_cost_summary for broader cost views.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_treeARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch / tag / sha. Omit (or pass HEAD) for the default branch. | |
| path | No | Sub-path within the repo | |
| repo | Yes | ||
| owner | Yes | ||
| recursive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile, and the description adds substantial context on top: a fixed return shape with `truncated`/`totalCount`, the differing entry path formats between modes, and the explicit rule that a nonexistent ref raises an error rather than returning an empty listing. That error-vs-empty distinction is exactly the kind of behavioral detail an agent needs and cannot get from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, each carrying new information, with the core behavior front-loaded ahead of return-shape and edge-case details. Minor friction from compressed phrasing such as "at a ref" and the capitalized "BOTH modes", which reads tersely but still parses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the return-value burden and discharges it well by naming every field. It stops short of explaining how to resume from a truncated result (e.g., paging with `path`), which is the one operational gap for a tool whose complexity is otherwise fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% – only `ref` and `path` are documented there, while `repo`, `owner`, and `recursive` are bare. The description compensates by explaining that `path` scopes to a subtree in both modes and that `recursive: true` walks the whole subtree, which is the key interaction an agent must get right; `owner`/`repo` are self-evident and their absence is forgivable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("List directory contents at a ref") scoped to a repo tree, which is clearly distinct from siblings like merjax_read_file or merjax_search_code by implication. It never names a sibling or explicitly contrasts with them, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the recursive vs non-recursive distinction and the fact that `path` works in both modes tell the agent how to shape a call. There is no explicit guidance on when to choose this tool over file-reading or code-search siblings, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_variablesARead-onlyIdempotentInspect
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}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Organisation slug | |
| repo | No | Repo name | |
| limit | No | Page size, 1–100 (default 30) | |
| owner | No | Repo owner — username or organisation slug (omit when passing org) | |
| offset | No | Rows to skip (default 0) | |
| environment | No | Environment name (or id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and non-destructive; the description adds materially more: an admin permission requirement, the need for an admin-scoped token on org scope, pagination bounds with a default page size, and the upstream endpoint it mirrors. These are exactly the operational constraints an agent cannot infer from hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the scope routing, then pagination, then the return shape. It is dense and slightly telegraphic ("Mirrors GET …/actions/variables") but every clause carries information; nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return envelope itself ({scope, total, limit, offset, nextOffset, variables:[…]}), plus pagination and permission prerequisites. For a six-parameter, all-optional listing tool, an agent has everything needed to call it correctly and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not carry: how owner/repo/environment/org combine to select a scope, and that org must be passed instead of owner. That scope-resolution logic is the main source of misuse risk for this tool and is spelled out clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List Actions configuration variables with their values") and immediately enumerates the three scopes it covers (repository, environment, organisation), which distinguishes it from merjax_get_variable, merjax_set_variable and merjax_delete_variable without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit invocation routing: owner+repo for repo variables, owner+repo+environment for environment variables, org alone for organisation variables. It stops short of naming alternatives (e.g. use merjax_get_variable for a single variable by name, or merjax_list_repo_secrets for secrets), so the when-not guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_list_workflow_runsARead-onlyInspect
List a repository's workflow runs, newest first, with optional branch/status/event filters. Mirrors GET /api/v2/repos/.../actions/runs. The companion to merjax_get_workflow_run / merjax_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). Needs read access to the repository. For a read-only CI audit credential (no code, no secrets, no writes), mint a repository token with {"runners": "read", "actions": "read"} (the ci-audit preset, merjax_create_repo_token) and call GET /api/v2/repos/:owner/:repo/actions/runs (and actions/workflows, actions/runs/:id/jobs): repository tokens are not accepted on /mcp.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| event | No | push | pull_request | manual | schedule | ... | |
| limit | No | Max rows (default 30, max 100) | |
| owner | Yes | ||
| branch | No | Only runs for this branch (short name or refs/heads/...) | |
| offset | No | Rows to skip, for paging | |
| status | No | queued | running | success | failure | cancelled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint true, destructiveHint false), so the description's added value is the auth model: repository read access is required, the ci-audit token preset with runners/actions read scopes works, and repository tokens are not accepted on /mcp. That last point is a genuine operational gotcha an agent could not infer. It stops short of describing result shape or how much history is reachable, which keeps it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is a clean, front-loaded statement of purpose, but the remainder strings together an issue number, a REST endpoint mirror, and a lengthy token-preset recipe that reads like internal ticket commentary. The credential guidance is useful but could be one clause rather than several sentences of curl-level detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with seven parameters and no output schema, the description covers purpose, ordering, filtering, sibling relationships, and the exact credential needed, which is what an agent needs to invoke it correctly. What it does not cover — response fields, whether pagination is cursor or offset beyond the offset param — is minor given the schema's limit/offset parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so most parameters are already documented (limit default 30/max 100, offset paging, branch ref forms, status enum, event values). The description only adds that filtering is optional and that results are newest-first, which is ordering behavior rather than parameter syntax. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource (list a repository's workflow runs), states ordering (newest first), and names the filter dimensions. It also explicitly situates itself against merjax_get_workflow_run and merjax_cancel_workflow_run, so an agent can distinguish it from CI siblings like merjax_ci_queue_status without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states precisely when to use this tool: to find run ids that will then be passed to get_workflow_run or cancel_workflow_run, and cites the concrete failure mode (#10493, stale queued runs undiscoverable) that motivates it. It also gives the alternative path (direct GET on the runs endpoint) and the credential required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_merge_prADestructiveInspect
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?}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number | |
| confirm_high_risk | No | When true, bypass the M3 risk-score soft-block on critical-band PRs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint=true annotation: it discloses the gate chain that will reject the call, the soft-block on critical pre-merge risk scores, and the bypass mechanism. The return shape {merged, sha?, reason?, riskScore?} tells the agent how failure is surfaced rather than thrown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the action, then the gate list, then the risk exception and return shape. Minor cost from unexplained jargon ('M3', 'GateTest') that a first-time caller must infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-risk mutation with no output schema, the description supplies preconditions, the soft-block exception, and the return shape, which is enough to call it correctly. It stops short of stating whether hard gate failures throw versus returning merged:false with a reason.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's confirm_high_risk description nearly duplicates the description text ('bypass the M3 risk-score soft-block on critical-band PRs'). The description adds only the contextual link between the critical risk band and the bypass, which is marginal beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Merge an open PR') and immediately scopes it against the surrounding workflow by naming the gates enforced. An agent can distinguish this from merjax_set_auto_merge, merjax_approve_pr, or merjax_close_pr without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions for a successful call (not a draft, head SHA resolves, GateTest+AI-review gates pass, branch protection satisfied) and the exact condition under which confirm_high_risk is required. It does not explicitly route the agent away from set_auto_merge for pre-approval flows, so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_open_draft_prAInspect
Open a draft pull request. Same payload as merjax_create_pr but forces is_draft=true. Useful for AI-in-progress PRs that shouldn't run mergeability checks yet.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| repo | Yes | ||
| owner | Yes | ||
| title | Yes | ||
| base_branch | No | ||
| head_branch | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the non-read-only, non-destructive profile, and the description adds real behavior beyond them: the draft flag is forced rather than passed, and draft PRs skip mergeability checks. It omits required permissions and whether the created PR object or number is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and then the differentiator against the sibling. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotation detail on side effects and no output schema, the description leaves the agent guessing about base_branch defaults and the return value. It is adequate to select the tool but not fully sufficient to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description compensates only by pointing at merjax_create_pr's payload. It never explains owner/repo/title/head_branch, the optional base_branch default, or that is_draft is absent from the schema precisely because it is forced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Open a draft pull request") and explicitly frames it against the sibling merjax_create_pr, noting the one behavioral difference (is_draft forced true). An agent can distinguish it from both merjax_create_pr and merjax_set_pr_draft without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage context ("AI-in-progress PRs that shouldn't run mergeability checks yet") and implies create_pr as the alternative for non-draft work. It does not, however, contrast with merjax_set_pr_draft, which also produces a draft state, leaving some sibling selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_press_kill_switchADestructiveInspect
Press the platform kill switch: pause every model call and suspend every personal access token minted or used in the last N hours (KILL_SWITCH_WINDOW_HOURS, default 24), platform-wide. Git, CI, merges and deploys are unaffected. One forensic audit row (security.kill_switch) names every suspended token and its previous expiry; every site admin is alerted. Site admins with an admin-scoped token only. Not idempotent: a second press suspends whatever the window holds then. Mirrors POST /api/v2/admin/security/kill-switch. Returns {at, windowHours, suspended, aiWasPaused, auditId, effect}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive=true and idempotent=false, yet the description still adds real substance: exactly what is suspended, what is deliberately untouched, that one forensic audit row (security.kill_switch) records each token and its previous expiry, and that all site admins are alerted. The mention of 'previous expiry' signals the suspension is recoverable rather than a permanent revoke, which is precisely the kind of context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the effect, then scope exclusions, then side effects, then auth, then idempotency, then the mirrored endpoint and return shape. Seven compact clauses with no filler; the semicolon-dense style is heavy but every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating the return keys ({at, windowHours, suspended, aiWasPaused, auditId, effect}) plus the underlying API route. For a zero-parameter but maximally destructive platform-wide action, an agent has everything needed to decide and to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the schema baseline is 4. The description still explains the only implicit input — the KILL_SWITCH_WINDOW_HOURS window defaulting to 24 — which tells the agent the blast radius is configurable but not via this call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'press the platform kill switch: pause every model call and suspend every personal access token' — with explicit scope ('platform-wide', last N hours). The effect is unmistakable and cannot be confused with token-level siblings like merjax_revoke_token or merjax_suspend-adjacent tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a hard prerequisite ('Site admins with an admin-scoped token only'), a scope exclusion ('Git, CI, merges and deploys are unaffected'), and a repeat-call warning ('Not idempotent: a second press suspends whatever the window holds then'). It does not explicitly point to the obvious counterpart merjax_undo_kill_switch or contrast with narrower revocation tools, so an agent must infer the escalation path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_prioritize_workflow_runAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| level | No | normal (default) | high | critical — high and critical need a site admin | |
| owner | Yes | ||
| run_id | Yes | The run's id, or a unique leading part of it (8+ hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnly=false, idempotent=true, destructive=false) by disclosing the claim ordering rule, the capacity cap ('at most a third of the runner slots, so prioritizing many runs cannot starve the rest'), repeat-call semantics, no-op behavior for non-queued runs, and the scope/admin requirements per level. This is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and mechanism, then constraints, then permissions — a sensible ordering with no filler sentences. It is dense (multiple clauses per sentence) but every clause conveys a distinct rule the caller needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers return-relevant behavior at a high level ('a running or finished run is reported, not changed') without detailing the response shape or what a successful prioritize returns (level echo, lane position). For a mutation tool with auth gates this is close to sufficient, with only the return payload underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% — `level` and `run_id` are documented in the schema, while `owner` and `repo` are bare. The description does enrich `level` by explaining the ordering (normal < high < critical) and that high/critical require site admin, but adds nothing about `owner`/`repo` or the leading-hex-prefix id form beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Move a QUEUED workflow run into the priority lane') and explains the mechanism that distinguishes it from siblings: claims ahead of class order, highest level first, then oldest. An agent can tell immediately this is not cancel_workflow_run, get_workflow_run, or list_workflow_runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly bounds the when: 'Only queued runs; a running or finished run is reported, not changed,' and notes that calling again on an already-prioritized queued run changes its level rather than erroring. Missing an explicit pointer to a sibling for the non-queued case, but the preconditions are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_propose_doc_updateAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false; the description goes further by disclosing the side effect (a PR is opened, not a direct commit to the default branch) and the required 'repo' scope for authorization. It stays consistent with the annotations since opening a PR is a non-destructive write. It does not say whether repeated invocations create duplicate PRs or what happens when nothing is stale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the trigger, target, and effect; the authorization requirement is appended last without interrupting the main idea. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema and only generic annotations, the description covers trigger, target branch, effect, and auth scope. It still leaves an agent guessing about the response (PR URL/number?), about what 'tracked sections' means or how they are configured, and about cost or idempotency of the AI rewrite pass.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry owner/repo meaning, but it only mentions a 'repo' scope requirement and never explains what owner and repo designate. It implicitly establishes that the operation targets the given repository's default branch, but adds no format, defaulting, or constraint information beyond the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (manual trigger of the AI doc-update flow), the exact mechanism (scans tracked sections on the default branch) and the concrete output (opens a PR rewriting stale prose). This is clearly separable from siblings like merjax_create_pr or merjax_apply_patch, which neither scan tracked doc sections nor generate prose rewrites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Manual trigger" implies it is the on-demand counterpart to some automatic flow, which gives implicit usage context. However, it never states preconditions (e.g., that sections must be tracked/enabled), when not to use it, or which sibling to prefer for related doc work such as merjax_write_file or merjax_apply_patch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_propose_migrationCInspect
Propose a dependency-upgrade PR. Wraps src/lib/migration-assistant.proposeMajorMigration. Requires 'repo' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| base_sha | Yes | Commit sha to fork from | |
| changelog | No | Optional changelog text | |
| dependency | Yes | ||
| to_version | Yes | ||
| from_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnlyHint=false and destructiveHint=false, so the write-but-non-destructive profile is covered. The description adds real value by stating the required 'repo' scope and naming the underlying implementation, but it is silent on whether the PR is draft, what happens to the base branch, and what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and value; the internal module path is marginal but helps debugging. No filler paragraphs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with six required parameters, low schema coverage, and no output schema, yet the description never explains the required inputs, the resulting PR state, or failure behavior. Given that complexity, the definition leaves too much for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 29%, so the description carries most of the burden, and it adds nothing: owner, repo, dependency, from_version, to_version are all undocumented in both schema and description. Only base_sha and changelog have schema descriptions, and the description does not mention any parameters at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Propose a dependency-upgrade PR.' That is clearly distinct from create_pr or propose_doc_update in subject matter, but it never explicitly says how it differs from those siblings (e.g., whether it opens a draft, auto-fills the changelog, or only handles major bumps).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'dependency-upgrade' implies the scenario but there is no explicit when-to-use or when-not-to-use guidance, no mention of prerequisites like an existing branch, and no routing to alternatives such as merjax_create_pr, merjax_open_draft_pr, or merjax_propose_doc_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_propose_pr_conflict_resolutionAIdempotentInspect
Ask AI (Opus 5.5) to PROPOSE a resolution for each conflict block of a PR's text files — the Conflicts tab's 'Propose resolutions' button. Nothing is committed: each proposal (the block's lines, an explanation, a confidence 0..1) is stored for the (base, head) pair and shown on the Conflicts tab and in merjax_list_pr_conflicts (unresolved[].proposal); accept a block with merjax_resolve_pr_conflict choices: {<hunk id>: 'ai'}, edit it with a custom choice, or pick another option, then merjax_commit_pr_conflict_resolution. Refused when the repository's merge-conflict mode is Manual only, when the PR author opted out of AI for conflicts, or when AI is unavailable (paused, not configured, over budget) — the error says which. A file over 60 KiB is reported too-large; repository text is sent as fenced data with secrets redacted. A file already proposed at this pair is not sent again unless again: true. Requires write access and 'repo' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| again | No | Ask again for files that already have a proposal at this pair (default false) | |
| owner | Yes | Repo owner — username or organisation slug | |
| paths | No | Optional: only these conflicted files (default: every text file without a saved resolution) | |
| number | Yes | PR number | |
| base_sha | No | Optional: baseSha from merjax_list_pr_conflicts; a moved base is refused | |
| head_sha | No | Optional: headSha from merjax_list_pr_conflicts; a moved head is refused |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far beyond the annotations, which only say non-read-only, idempotent, non-destructive. It states nothing is committed, that proposals are stored per (base, head) pair and surfaced in list_pr_conflicts, the 60 KiB file cap, secret redaction of repository text, refusal reasons, and the required write access plus 'repo' scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and dense with no filler, but the single run-on paragraph blends output shape, workflow routing, refusal modes, and auth requirements, which makes it heavier to scan than necessary. Trimming or splitting the refusal and auth clauses would improve it without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description specifies the proposal payload (block lines, explanation, confidence 0..1) and where it is surfaced, so an agent knows what it gets back. For a 7-parameter mutation with a multi-step follow-on workflow, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents again, paths, base_sha, and head_sha semantics including the moved-base refusal. The description restates the pair semantics and re-proposal behavior rather than adding new meaning, so this lands at the baseline for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ask AI ... to PROPOSE a resolution for each conflict block of a PR's text files') and anchors it to the UI action it backs. Siblings merjax_resolve_pr_conflict and merjax_commit_pr_conflict_resolution are clearly distinguishable because the description says this only proposes and something else accepts/commits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternatives and the conditions that select them: accept via merjax_resolve_pr_conflict with choices {<hunk id>: 'ai'}, edit with a custom choice, or commit with merjax_commit_pr_conflict_resolution. It also enumerates when-not conditions (Manual-only merge mode, author opt-out, AI paused/unconfigured/over budget).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_provision_pr_sandboxBInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-read-only, non-destructive operation. The description adds real behavioral context beyond that: the required 'repo' scope and the specific degraded-mode return '{ok:false, reason:"not enabled on this host"}', which tells the agent this can fail benignly rather than erroring. It does not describe the success payload or side effects such as resource consumption.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the core action comes first and the failure mode last. The 'Wraps pr-sandbox.provisionSandbox' clause is arguably internal trivia, but it is compact and occasionally useful for debugging.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a provisioning mutation with no output schema, the description covers auth scope and one failure sentinel, which is helpful. It still leaves gaps: what a sandbox is and its lifetime, whether repeated calls destroy existing state, and what a successful response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage across three required parameters, the description must carry the burden. It only obliquely gestures at 'repo' (via the scope requirement) and 'a PR'; the owner, repo, and number parameters and their expected formats (PR number as number, owner/repo as slugs) are never explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb-plus-resource: provision or re-provision a sandbox for a PR, and notes the underlying pr-sandbox.provisionSandbox call. It is unambiguous about what the tool does, though it never names a sibling (e.g. get_preview_url or acquire_lease) that an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(or re-provision)' implies the tool is idempotent and safe to call again on an existing PR, which is useful usage guidance. However, there is no explicit statement of when to use it versus alternatives, nor any preconditions such as the PR needing to exist or the repo being enabled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_pr_status_summaryARead-onlyInspect
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 (with ci.failures: for each failed run, the failed step, up to 8 file:line rows linked to the head sha, the tool's own guidance block and the full step log URL, or {withheld, required, hint} when this credential may not read the run's logs), AI-review verdicts (trio), gate signals, merge — the conflict probe the merge gate uses (status up-to-date | clean | conflicts | unknown, unresolved files with kinds, files settled by structured merge or the merge rules, conflictsUrl), conflictRisk — the early warning (files the base changed since the PR branched that the PR changed too; updateIsClean when updating now would merge cleanly), auto-merge (armed? last_attempt.reason says what it waits for or what happens next), and mergeTrain.lastDequeue — the merge train's newest receipt for a green merge preview it did not merge (which commit, which runs, why). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true), and "Read-only" merely repeats them, but the description adds genuinely useful behavior: conditional disclosure when a credential may not read logs (`{withheld, required, hint}`), truncation to "up to 8 file:line rows", and a defined "unknown" state for the conflict probe. What it does not cover is cost/latency of a fan-out aggregation or error conditions for a nonexistent PR or repo.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, and most content earns its place given there is no output schema. However, the entire body is one 130+ word sentence with nested parentheticals and inline backticked field names, which reads as a wall of text; a short lead plus a field list would be far easier to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a read-only aggregate purpose, the description takes on the return-shape documentation and does so thoroughly, including the semantic meaning of each section and the special withheld/unknown cases. It is nearly complete for an agent to call it correctly, missing only error behavior and any hint on the scope or expense of the aggregation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description would ideally clarify the three parameters, but it says nothing about owner, repo, or number. The names are largely self-explanatory, yet the description never confirms that `number` is the pull request number (not an issue number) or the expected owner/repo format, leaving the burden entirely on the caller.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Compute a one-shot status summary for a PR" gives a specific verb and resource, and the enumerated contents (CI state, merge probe, conflictRisk, auto-merge, merge train) implicitly differentiate it from narrow siblings like get_pr_checks or list_pr_conflicts. It stops short of naming those siblings or stating explicitly that this is the consolidated alternative to calling them separately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "one-shot" hints that this is the single call to prefer over several narrower reads, which is a real but weak usage signal. There is no explicit when-to-use, when-not-to-use, or named alternative among the many PR-related siblings, so the agent must infer the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_purge_repoADestructiveInspect
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 merjax_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}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The deleted repository's id | |
| confirm | Yes | The repository's full name, owner/name, to confirm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description details the catastrophic consequences (irrevocable removal of Git data, LFS, issues, PRs, and settings) and provides crucial operational context regarding backups and required administrative scopes. This disclosure of the 'what' and 'how' of the data loss is highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite its dense content, the description is maximally efficient. Every sentence provides a unique piece of critical operational information (permanence, irreversibility, prerequisite, data scope), and the most severe consequences are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is an irreversible, high-impact administrative action, the definition is exceptionally complete. It specifies prerequisites, required permissions, the scope of deletion (all repository artifacts), and the expected return structure, leaving no critical functional detail for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema is 100% covered, the description adds necessary safety context. Specifically, it clarifies that the 'confirm' parameter must be the repository's 'full name (owner/name)', adding a validation layer beyond the basic string type definition in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the function: to 'PERMANENTLY delete an already-deleted repository now'. It clearly defines the operational difference between this action and simply using a deletion tool, specifying that it bypasses the 'restore window'. This direct comparison with the prerequisite action of `merjax_delete_repo` differentiates it strongly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage constraints are precise: it explicitly states, 'Only works on a repository already deleted with merjax_delete_repo'. This provides immediate and clear boundaries for when the tool is applicable and when it is not, avoiding common usage errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_read_fileARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch / tag / sha (default HEAD) | |
| path | Yes | ||
| repo | Yes | ||
| owner | Yes | ||
| encoding | No | 'utf8' (default) or 'base64' | |
| end_line | No | Last line to return (1-based, inclusive; clamped to the file's length). Text files only. | |
| start_line | No | First line to return (1-based, inclusive). Text files only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read, and the description goes further by disclosing the return shape, the ~60 KB truncation threshold with truncated/startLine/endLine/hint fields, and the follow-up pattern of requesting the next range. It stops short of covering binary/base64 handling or error behavior (missing path, bad ref), which matters given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation, then the return shape, then the range and truncation rules — a sensible order with no filler. The final sentence is long and packs truncation semantics densely, but every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read tool with no output schema, the description does the heavy lifting on return values and large-file behavior, which is exactly where an agent would otherwise guess. The remaining gaps — ref defaults, base64 encoding semantics, and failure modes — are real but secondary for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, and the description mostly restates what the schema already says about start_line/end_line (1-based, inclusive, text files only). It adds the useful interaction detail that the range applies to text files and that out-of-range requests are clamped/truncated, but owner, repo, ref, and encoding receive no added meaning in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read a file from a repo at a given ref") and even maps it to the underlying REST endpoint, so the operation is unambiguous. However, it never distinguishes itself from the near-identical sibling merjax_repo_read_file, nor from merjax_list_tree or merjax_search_code, leaving an agent unable to choose between them from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Guidance is present but narrow: it explains when to pass start_line/end_line and what to do after a truncated response. There is no statement of when this tool is preferred over the closely-named sibling readers or over search/tree tools, and no mention of prerequisites such as auth scope or repo access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_refactor_across_reposBInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | When true, returns the plan and does NOT execute. | |
| description | Yes | Natural-language description | |
| repository_ids | No | Optional explicit repo IDs to scope the refactor to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds a real prerequisite ('Requires repo scope'). However, the dry_run sentence largely restates the schema's own parameter description, and nothing explains what 'execute' actually produces across repos (branches, commits, PRs) or how partial failure is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and four short, scannable sentences. The line 'Wraps src/lib/multi-repo-refactor.ts' is an implementation detail that earns no place for an agent deciding how to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say what execution yields and whether the multi-repo refactor is atomic or best-effort; that is missing. Purpose, scoping, auth, and dry-run are covered, so it is adequate but leaves the risk profile of a cross-repo mutation under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented; baseline is 3. The description only re-explains dry_run and adds no semantics for `description` (how detailed must it be?) or `repository_ids` (what happens when omitted versus supplied).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair ('Plan + execute') and resource ('a refactor that spans multiple repos'), plus the scoping qualifier 'owned by the caller'. That separates it from single-repo mutation siblings such as merjax_apply_patch or merjax_atomic_multi_file_commit, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use signal (multi-repo scope) and a safe-preview path via `dry_run: true`, but never states when NOT to use it or which sibling to pick for a single-repo or single-file change. The agent must infer routing from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_release_leaseBIdempotentInspect
Release a lease by id. Idempotent. Returns {released}.
| Name | Required | Description | Default |
|---|---|---|---|
| lease_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation set already declares readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the description's "Idempotent" line merely repeats structured data. It does add the return shape {released}, but says nothing about auth requirements or behavior on unknown/expired lease ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded clauses with no wasted wording. The brevity borders on under-specification rather than verbosity, which is the preferable failure mode here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter mutation with no output schema, the description covers purpose, idempotency, and the return field, which is close to adequate. It leaves out error/edge-case behavior and the relationship to the acquire step, which an agent would need to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 0% schema description coverage, the description only implies that lease_id names a lease to be released, without stating its format or origin. Minimal but non-zero compensation for the undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Release a lease by id") so the agent knows exactly the operation and target. It does not name the counterpart sibling merjax_acquire_lease, but the action is unambiguous on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or prerequisite guidance (e.g., that the lease must have been obtained via merjax_acquire_lease, or what happens if it was already released). Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_reopen_issueAIdempotentInspect
Reopen a previously closed issue. Requires authenticated caller with write access. Idempotent. Returns {state}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | Issue number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so "Idempotent" largely repeats structured data. The description does add value beyond annotations by disclosing the write-access/auth requirement and the return shape ({state}), which is needed since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and followed by prerequisites and return value. Nothing is redundant beyond the minor restatement of idempotency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter mutation with full annotation coverage, the description covers action, authorization, idempotency and return value. It stops short of describing failure behavior (e.g. reopening an issue that is already open) or side effects such as event emission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (owner, repo, number all documented), so the schema carries parameter meaning. The description adds no syntax, format, or constraint details beyond what the schema already provides, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Reopen a previously closed issue") and scopes it to already-closed issues, which distinguishes it from merjax_create_issue and merjax_close_issue in the sibling list. It does not name those siblings explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition "previously closed issue" plus "requires authenticated caller with write access" implies when the tool is applicable, but there is no explicit when-to-use guidance or named alternative for the case where the issue is still open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_repo_explain_codebaseARead-onlyInspect
Return the cached AI 'explain this codebase' Markdown for a public repo (most recent commit). Returns null when no cached explanation exists yet.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnlyHint true, destructiveHint false), and the description adds real behavior beyond them: the result is a cache, it reflects only the most recent commit, and it returns null on a cache miss. That null-on-miss contract is exactly the kind of edge case an agent needs, though it does not say how stale a cache entry may be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste, and the most important qualifier (cached) is front-loaded in the opening clause. The null behavior is placed second, in the position where a caller would look for it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by naming the format (Markdown) and the cache-miss sentinel (null). For a two-parameter read tool that is nearly sufficient; the only real omission is any guidance on what to do after a null result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, and the description mostly restates them. It does add one semantic constraint not present in the schema — that the repo must be public — but that constraint is unelaborated and does not explain what happens for a private repo.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it returns the cached AI 'explain this codebase' Markdown for a repo at its most recent commit. That is clear enough to act on, but it never distinguishes itself from the sibling 'merjax_explain_repo', which an agent would reasonably assume is the generating counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'cached' framing plus the note that it returns null when no explanation exists implies this is a cheap read and that some other action produces the explanation, but no sibling is named and there is no explicit when-to-use versus when-to-generate guidance. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_repo_healthBRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the result is a freshly computed report with a defined structure and names the backing function, which gives a sense of determinism, but says nothing about latency, caching, cost, or whether the repository must be public and reachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the action and the return shape, with zero filler. The trailing 'Backed by computeHealthScore in src/lib/intelligence.ts' is an internal implementation detail that earns little for an agent deciding whether to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description carries the burden of describing returns and does so well: score range, letter grade, six named categories, and actionable insights. What is missing is behavior around failures, freshness of the 'current' computation, and any cost or permission requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with only two required params (owner, repo), so the baseline is 3. The description's only added semantic is that the repo must be public, a constraint not present in the schema, but it offers no format examples or edge-case notes (private repos, renamed owners).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('compute') and resource ('health report for a public repo') and enumerates the report's contents (score 0-100, letter grade, per-category breakdown, insights). It is clear what the tool does, but it never distinguishes itself from closely related siblings such as merjax_repo_rating, merjax_ci_health, or merjax_explain_repo, which an agent could plausibly choose instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. The phrase 'public repo' implicitly constrains scope, but the description gives no condition that selects this tool over merjax_repo_rating or merjax_ci_health, and no prerequisites (auth, rate limits, analysis time) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_repo_list_issuesBRead-onlyInspect
List open issues for a public repository. Returns up to 50 ordered by most-recent.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| limit | No | Max rows per page (default 25, max 50) | |
| owner | Yes | Repo owner — username or organisation slug | |
| offset | No | Rows to skip, for paging. Use `nextOffset` from the previous response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description adds genuinely new behavioral facts: the 50-row cap and most-recent ordering. It omits what happens on private/nonexistent repos and whether pagination is supported beyond offset/limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded and the return-shape detail second. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated list tool with full schema coverage and read-only annotations, the essentials are present. With no output schema, however, the description never says what an issue record contains (number, title, labels, assignee), leaving the agent to guess at the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so owner, repo, limit, and offset are all documented in the schema itself, which sets the baseline at 3. The description's only added meaning is result ordering (most-recent), which is not in the schema but also is not a parameter semantic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: "List open issues for a public repository." An agent can tell this is a read/list operation scoped to a single repo. It does not, however, distinguish itself from the sibling merjax_search_issues, which could plausibly be chosen for the same goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage constraint given is "for a public repository," which implicitly excludes private repos, and that is useful. There is no statement of when to prefer this over merjax_search_issues or merjax_list_prs, and no prerequisites (auth, rate limits) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_repo_ratingARead-onlyInspect
The repository's letter rating A+/A/B/C/D/F — the health report's grade (the same number merjax_repo_health and the /health page show; A is 85+) — with the score, the six categories (score, weight, points still available), to_a: the ordered list of concrete items that move the repository to A (each with the action, the points available, whether a loop can do it mechanically, and the evidence: file:line for a security finding, counts otherwise), then the delivery blockers beside it (red default branch, conflicting PRs, PRs red for a week, open ai:repair issues, issues older than 30 days — shown under delivery, never merged into the letter), and the last 30 recorded days. Owner mandate 2026-11-04: every repository should be A. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint, and the description agrees ("Read-only"), so no contradiction. Beyond that it adds real behavioral detail the annotations cannot: that delivery blockers are "shown under `delivery`, never merged into the letter," that `to_a` items carry file:line evidence for security findings and counts otherwise, and which conditions (red default branch, week-old red PRs, stale issues) constitute blockers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, but the whole description is one long run-on sentence stitched together with em-dashes and parentheticals, forcing the reader to parse nested asides to extract the return shape. All the content is relevant to a no-output-schema tool, but it is dense and would read far better as a short list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two simple parameters, the description carries the burden of explaining the return payload and does so thoroughly — letter, score, category breakdown, ordered `to_a` actions with evidence, separated `delivery` blockers, and the 30-day window. An agent knows what it will get and how the pieces relate; only pagination/size behavior is unmentioned, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (owner, repo) are documented in the schema itself. The description adds no syntax, format, or defaulting information for either parameter, so the schema does all the work and the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and output ("the repository's letter rating A+/A/B/C/D/F") plus everything bundled with it: score, six categories, `to_a` remediation list, `delivery` blockers, and 30 days of history. It also explicitly distinguishes itself by noting the grade is "the same number merjax_repo_health and the /health page show," so an agent can tell what this adds (grade + remediation plan) over the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear and motivated: the "Owner mandate 2026-11-04: every repository should be A" plus the `to_a` payload tells an agent to call this when it needs to know how far a repo is from A and what concrete actions close the gap. What is missing is an explicit alternative statement — it never says when to prefer merjax_repo_health (the raw health report) instead of this graded view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_repo_read_fileARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch / tag / commit. Defaults to the repository's actual default branch (which may not be 'main' — e.g. 'Main'). | |
| path | Yes | File path within the repo | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavior: private repos are accessible when the caller is authenticated with permission, and binary files are rejected rather than returned. It stops short of describing truncation, size limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core action front-loaded and no filler. The parenthetical '(binary files rejected)' is compact and informative; nothing is redundant enough to cut, though it is not maximally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read tool with no output schema, the description covers access preconditions, ref semantics via the schema, and the return nature (text content, binary rejected). It would be stronger with a note on large-file truncation or failure modes, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the helpful note that ref defaults to the repo's actual default branch which may not be 'main'. The description's '(branch / tag / commit)' gloss merely restates the ref schema text, adding no new meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Read a single file from a repository') plus the addressing scope (owner/repo/path at a given ref), which is more precise than the bare name. It does not, however, differentiate itself from near-siblings such as merjax_read_file, merjax_list_tree, or merjax_search_code, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'Read a single file' hints at the single-file case versus tree listing or code search, but no explicit when-to-use or when-not-to-use guidance is given. The private-repo access note is a useful precondition but not a routing rule between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_repo_searchARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows per page (default 20, max 50) | |
| query | Yes | Search keyword (1-100 chars) | |
| offset | No | Rows to skip. Use `nextOffset` from the previous response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. Beyond that, the description adds real behavioral context: the visibility filter applied to results, the page-size default and hard cap, and the fact that `total` is the full match count rather than the page size. Ordering/ranking behavior is the main omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: purpose first, then visibility scope, then pagination contract. Every clause carries information an agent needs and none of it repeats the schema verbatim in a wasteful way.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the return fields `total` and `nextOffset` and explaining their paging relationship. Annotations cover the read-only safety story. The gap is that the near-duplicate sibling tool is never addressed, leaving the agent without a routing rule.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, including the 1-100 char bound on query and the instruction to feed `nextOffset` back into offset. The description restates the 20/50 limit values and clarifies how total and nextOffset relate to paging, which is mild reinforcement rather than new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search ... repositories by keyword'), narrows the searched fields to name + description, and specifies case-insensitive matching. What it does not do is distinguish itself from the near-identical sibling merjax_search_repos, which an agent would have no basis to choose between from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the result scope (public repos plus private repos owned by the caller), which is useful context but not when-to-use guidance. It never says when to prefer this over merjax_search_repos, merjax_search_code, or merjax_semantic_search, so selection among the search family is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_request_changesAInspect
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 (merjax_dismiss_review), and posts the body as a comment. Requires 'repo' scope and write access.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Review body (Markdown) | |
| repo | Yes | ||
| owner | Yes | ||
| number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing the enforcement surface — web button, API, MCP merge, merge queue, merge train, autopilot — plus the required 'repo' scope and write access. It also discloses the side effect that the body is posted as a comment and that only the caller or someone with write access can clear the block.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then the consequence chain, then the permission requirement — a sensible ordering with no filler sentences. The single sentence is long with nested parentheticals (the six merge paths, the dismissal tool reference), costing some readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with thin annotations and no output schema, the description covers effects, persistence, authentication scope, and side effects thoroughly. The only gap is what a successful call returns (review ID, state, or comment reference), which an agent may need for follow-up calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%: 'body' is documented as Markdown, and the description adds that it is also posted as a comment, which is genuine added meaning. The remaining three required parameters (owner, repo, number) are not explained at all in either place, though they follow the conventional repository-PR convention used across this sibling family. Adequate but not compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Request changes on a PR') and immediately clarifies the underlying mechanic ('Records a changes requested review by the caller'), which distinguishes it from merjax_comment_pr and pairs it against merjax_approve_pr/merjax_dismiss_review. An agent can identify the correct tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the operative condition well: the review holds the PR on every merge path until approval or dismissal via merjax_dismiss_review, which tells the agent exactly when the effect persists and how it is undone. It stops short of explicitly stating the inverse case ('use merjax_approve_pr to approve, merjax_comment_pr for a non-blocking comment'), leaving that routing to inference from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_rerun_failed_jobsAInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| run_id | Yes | The run's id (uuid) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses that ALL jobs are re-run (no per-job re-run exists), that the same commit/inputs/merge preview are reused, that dedup joins an existing queued run, and that write access plus 'repo' scope are required. It even names the return fields, so the agent knows what an invocation produces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then preconditions, auth, and return shape — every sentence carries information. Slightly dense, with parenthetical asides stacked in the first sentence, but there is no filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description inlines the return shape ({runId, previousRunId, joinedExistingRun, url}), covers auth, refusal cases, and dedup behavior for a 3-parameter mutation. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so owner, repo, and run_id are already documented in the schema. The description adds no meaning to any individual parameter beyond implying the run must be failed or cancelled; per the baseline rule for fully covered schemas, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (re-run a failed or cancelled workflow run) and pins the scope with 'at the SAME commit (same inputs, same PR merge preview)'. This clearly separates it from merjax_trigger_workflow (fresh run) and merjax_cancel_workflow_run without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions and exclusions: successful or still-running runs are refused, and an identical queued run is joined rather than stacked. What's missing is an explicit pointer to the alternative (e.g. use trigger_workflow for a fresh run at a new commit), but the when/when-not guidance is otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_resolve_pr_conflictAIdempotentInspect
Save a resolution for ONE conflicted file of a PR, as a draft for the exact (base_sha, head_sha) pair merjax_list_pr_conflicts returned (a moved branch is refused: reload). Pass exactly one of: content (the whole resolved file — no conflict markers, at most 512 KiB), choices (hunk id → 'mine' | 'main' | 'both-mine-first' | 'both-main-first' | 'base' | 'ai' (the block's AI proposal from merjax_propose_pr_conflict_resolution) | {kind:'custom', lines:[…]}; applied server-side, a stale hunk id is refused), or keep ('mine' = the PR branch's version, 'main' = the base branch's; the only options for binary files and files one side deleted). Nothing is committed until merjax_commit_pr_conflict_resolution. Requires write access and 'repo' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| keep | No | 'mine' | 'main' — take one side whole | |
| path | Yes | The conflicted file's repo-relative path | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number | |
| choices | No | Hunk id → mine | main | both-mine-first | both-main-first | base | ai | {kind:'custom', lines} | |
| content | No | The whole resolved file | |
| base_sha | Yes | baseSha from merjax_list_pr_conflicts | |
| head_sha | Yes | headSha from merjax_list_pr_conflicts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds substantial behavior: nothing is committed until the commit tool runs, choices are applied server-side, stale hunk ids are refused, a 512 KiB cap and no-conflict-markers rule apply, and write access plus 'repo' scope are required. The only gap is the response shape, but no output schema exists and the draft semantics largely cover what an agent needs to proceed safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then the three input modes, then the commit/auth caveats — no sentence is filler. It is dense and heavily parenthesized, which makes it harder to parse on a single read, but the density is information rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, nested-object mutation tool with no output schema, the description covers draft state, sha-pinning, input-mode exclusivity, size limits, side-selection rules, auth scope, and the follow-up commit. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning the schema does not encode: the mutual-exclusivity rule ('pass exactly one of content, choices, or keep'), the size limit on content, the semantics of 'mine' vs 'main' for keep, and the restriction that keep is the only option for binary files and one-side-deleted files. The choices enum values and the custom-lines object form are also spelled out with their server-side application behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — saving a resolution for ONE conflicted file of a PR — and immediately scopes it as a draft, which separates it from merjax_commit_pr_conflict_resolution. The capitalized 'ONE' and file-level scope make it unmistakable versus sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly requires the exact (base_sha, head_sha) pair from merjax_list_pr_conflicts and says a moved branch is refused with 'reload', giving the recovery path. It also names the prerequisite listing tool, the AI proposal source (merjax_propose_pr_conflict_resolution), and the follow-up commit tool, so the agent knows both entry and exit of the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_restore_repoAInspect
Restore a deleted repository by id (from merjax_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}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The deleted repository's id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the thin annotations (readOnlyHint=false, destructiveHint=false) by specifying exactly what is recovered (git data, LFS objects, issues, PRs, collaborators, webhooks) and, unusually, what is NOT: cancelled CI runs stay cancelled and stopped webhook deliveries are not re-sent. It also discloses the auth/scope requirement, the audit event name, and the shape of the return payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then preconditions, exceptions, permissions, and return value in a disciplined order with no filler. It is dense — eight short clauses packed into one paragraph — but every sentence carries information an agent needs, so nothing should be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and minimal annotations, the description takes on the full burden and covers restoration scope, partial-state behavior, failure mode, authorization, audit trail, and return shape. Nothing material is missing for an agent to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% on the single required 'id', so the schema already carries the mechanical definition; the description still adds real value by stating the id's provenance (from merjax_list_deleted_repos) and tying it to the deleted repo's identity. This is provenance beyond what the schema says, so it sits above the coverage-based baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Restore a deleted repository by id') and immediately distinguishes itself by naming the sibling that produces the id (merjax_list_deleted_repos). An agent can separate this from merjax_delete_repo, merjax_purge_repo, and merjax_update_repo without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear preconditioning: the id must come from merjax_list_deleted_repos and the call must happen before restorable_until, plus the requester must be an owner/site admin with 'admin' scope. It also states the refusal condition (name collision). The only gap is that it does not explicitly contrast with purge_repo or a fresh create/import path for a repo past its restorable window.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_resume_tokenAIdempotentInspect
Resume one of your personal access tokens that suspended itself (daily bucket spent, or the tripwire): it authenticates again; today's spend still counts against its bucket, so raise the bucket first with merjax_set_token_bucket if it is spent. A suspended token cannot make this call itself: use another credential. A token that is not suspended is unchanged; another person's token is not found. Needs user scope. Audit-logged. Returns {tokenId, name, resumed, effect}.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | The personal access token's id (merjax_list_tokens, GET /api/v2/user/tokens) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is non-read-only, idempotent, and non-destructive; the description goes well beyond that by disclosing the required `user` scope, that the action is audit-logged, that today's spend still counts against the existing bucket, and what happens in the idempotent and not-found cases. It also names the return fields, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and its trigger are front-loaded, and every clause carries operational value (prerequisite, auth constraint, edge cases, return shape). It is dense with semicolons and parentheses, which makes it slightly harder to scan than it needs to be, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no output schema, the description covers what is needed: the trigger condition, the prerequisite tool call, the credential constraint, scope, audit logging, idempotent behavior, and the return shape. No obvious gap remains for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single `token_id` property already documents its UUID pattern and how to obtain it (merjax_list_tokens, GET /api/v2/user/tokens). The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Resume one of your personal access tokens') and even names the exact condition that put the token in that state (daily bucket spent, or the tripwire). An agent can immediately separate this from siblings like merjax_revoke_token, merjax_rotate_token, or merjax_set_token_bucket without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite and alternative: raise the bucket first with merjax_set_token_bucket if it is spent. It also states the hard constraint that a suspended token cannot call this itself and another credential must be used, plus the no-op case ('a token that is not suspended is unchanged') and the authorization boundary ('another person's token is not found').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_review_deploymentAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| owner | Yes | ||
| state | Yes | "approved" or "rejected" | |
| run_id | Yes | The run's id, or a unique leading part of it (8+ hex characters) | |
| comment | No | ||
| environments | No | Environment names (or ids), as strings, to decide; omitted = every waiting one |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false; the description goes well beyond that by disclosing the reviewer authorization requirement, the repo scope requirement, and the divergent effects of each state (approval runs the job after any wait timer, rejection fails it). It stops short of covering repeat reviews, idempotency, or what happens when no jobs are actually waiting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight sentences, front-loaded with the action and its precondition, followed by authorization, effects, the analogous REST endpoint, and the required scope. No sentence is redundant or restates the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers authorization, side effects, and scope, which is most of what an agent needs. Gaps remain around the comment parameter and partial-review behavior, but nothing critical to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the description must carry weight for the undocumented parameters. It adds real meaning for environments (the caller must review every one selected) and clarifies the overall mutation, but says nothing about comment or why owner/repo are needed beyond a passing mention of 'repo' scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair and resource: approve or reject a workflow run's jobs waiting on a protected environment. That scope cleanly separates it from siblings like merjax_cancel_workflow_run, merjax_rerun_failed_jobs, and merjax_prioritize_workflow_run, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition is stated precisely: the run must have jobs waiting on an environment with required reviewers, and the caller must be a reviewer of every selected environment. It does not explicitly point to alternatives (cancel, rerun, prioritize) when a run is stuck for a different reason, which keeps it just below the top mark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_revoke_all_credentialsADestructiveInspect
Site admins only (needs an 'admin'-scoped token). Revoke every browser session, personal access token (repository tokens included) and OAuth grant — for every user (scope 'platform') or for one (scope 'user' + username). Optionally force a password reset (old password stops working, reset email sent) and 2FA re-enrolment (seeds and recovery codes deleted). Confirm by sending confirm exactly: 'REVOKE ALL CREDENTIALS' for platform, 'REVOKE ' for one user; anything else changes nothing. Platform scope revokes YOUR OWN sessions and tokens too, including the token making this call. Audit-logged. Not covered: SSH keys, passkeys, deploy keys/tokens, CI runners, app installation tokens. Returns counts, actorSignedOut and notCovered.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | 'platform' (every user) or 'user' (one account) | |
| confirm | Yes | Exactly 'REVOKE ALL CREDENTIALS' (platform) or 'REVOKE <username>' (user) | |
| username | No | Required when scope is 'user' | |
| force_2fa_reenrol | No | Delete TOTP seeds and recovery codes so the user enrols again | |
| force_password_reset | No | Replace the password so the old one stops working, and send the reset email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=true; the description goes far beyond by disclosing the exact confirmation phrase required, that platform scope revokes the caller's own token mid-call, the password-reset email side effect, 2FA seed and recovery-code deletion, and that the action is audit-logged. It even enumerates what is NOT destroyed, which is critical for an agent judging blast radius.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but front-loaded block: permission gate first, then what is destroyed, then scope options, then side effects, then confirmation protocol. Every sentence carries operational weight, and even the trailing 'Returns counts, actorSignedOut and notCovered' compensates for the absent output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an irreversibly destructive admin tool with no output schema, the description covers the permission gate, destructive scope, self-revocation hazard, confirmation protocol, optional side effects, exclusions, and return fields. An agent has everything needed to decide and to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the cross-parameter coupling the schema only states pairwise: the confirm string must be 'REVOKE ALL CREDENTIALS' for platform versus 'REVOKE <username>' for user, tying confirm and username to scope in one place. The consequences of force_password_reset and force_2fa_reenrol are restated rather than newly explained, keeping it below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus its full blast radius: 'Revoke every browser session, personal access token (repository tokens included) and OAuth grant'. The explicit 'every user (scope platform) or one (scope user + username)' plus the 'Not covered' list makes it clearly distinct from narrower siblings like merjax_revoke_token or merjax_revoke_repo_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the key precondition ('Site admins only, needs an admin-scoped token') and states which scope to choose for which situation. It also lists exclusions (SSH keys, passkeys, deploy keys, CI runners, app installation tokens), which implicitly routes those cases elsewhere. It stops short of naming the specific alternative tools for single-token or repo-token revocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_revoke_repo_tokenADestructiveInspect
Revoke one of your fine-grained repository tokens by id (from merjax_list_repo_tokens). It stops working on its next use. Needs 'repo' scope. Audit-logged.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Token id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true) it adds three concrete facts: the effect is deferred to next use (so in-flight sessions may survive), the required 'repo' scope, and that the action is audit-logged. These are exactly the operational details annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: purpose and key first, effect second, prerequisites and side effects last. Nothing is repeated from the annotations or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param destructive tool with no output schema, the definition covers purpose, id provenance, timing of effect, auth scope, and audit trail. The only gap is that it does not state explicitly that revocation is irreversible / the token cannot be restored, which matters for an agent weighing a destructive action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single param is documented as 'Token id', so the baseline is 3. The description adds real value by naming the tool that produces a valid id, telling the agent where to source the value rather than guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Revoke), a precise resource class (fine-grained repository tokens), and the keying mechanism (by id). The phrase 'repository tokens' plus the pointer to merjax_list_repo_tokens separates it from the many sibling revoke/rotate token tools such as merjax_revoke_token, merjax_revoke_all_credentials, and merjax_rotate_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent where the id comes from (merjax_list_repo_tokens), which is the main practical precondition for invoking it. It does not explicitly state when to prefer this over the sibling revoke tools (e.g. personal tokens vs all credentials), so routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_revoke_runnerADestructiveInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Runner id (from merjax_list_runners) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description goes further by explaining precisely what is destroyed: dispatch stops, heartbeats are refused, job acceptance ends, and there is no reversal path. It also declares the return payload shape {id, revoked}, which no output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first names the action and effects, the second carries the irreversibility warning and return shape. No filler, and the irreversible nature is placed prominently rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive mutation with no output schema, the description covers effect, irreversibility, the substitute path, and the response shape. An agent has everything needed to decide and to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is already documented in the schema as coming from merjax_list_runners. The description's 'by id' phrasing adds no new meaning beyond that baseline, so 3 is the appropriate ceiling for a fully documented one-param schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Revoke a CI runner by id') and enumerates the concrete effect: nothing is dispatched, next heartbeat is refused, jobs are no longer accepted. This is clearly distinguishable from merjax_list_runners (read) and merjax_create_runner_registration_token (provisioning) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the key decision constraint — the action cannot be undone, so the alternative is to register a new runner instead — which steers an agent away from using this for temporary remediation. It stops short of naming explicit when-not cases (e.g. pausing vs revoking) or another sibling by exact name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_revoke_tokenADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Token id | |
| type | Yes | Token type: pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the supplied destructiveHint=true / readOnlyHint=false annotations: it discloses the timing semantics ('stops working on its next use'), that the action is irreversible, the required authorization scope per token type, and that the action is audit-logged. These are exactly the facts an agent needs before triggering a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and irreversibility warning, followed by the type enumeration and scope rules. No filler, and each clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema, the description covers everything material: what it does, when the effect lands, that it cannot be undone, the enumeration of types, per-type permissions, and auditability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already lists the three type values, so the baseline is met by structure alone. The description still adds genuine value by mapping each type to its token prefix (glc_, gcft_, gcdt_) and to its required scope, which the schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Revoke one of your tokens') plus the exact lookup keys (type and id), so an agent knows precisely what action is being taken and on what object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the semantics of `type` and the scope prerequisites, which effectively guides selection among token kinds. However, it never addresses how this differs from close siblings such as merjax_revoke_repo_token, merjax_rotate_token, or merjax_revoke_all_credentials, leaving a real ambiguity for the repo-token case (type=repo vs the dedicated revoke tool) unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_rotate_tokenADestructiveInspect
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 merjax_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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Token id | |
| type | Yes | Token type: pat (personal access token, glc_), repo (repository token, gcft_) or deploy (deploy token, gcdt_) | |
| grace_seconds | No | Seconds the old secret keeps working (0 to 604800). Default 0. | |
| expected_rotation_count | No | Optional compare-and-swap guard: the rotationCount you last saw. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=true; the description specifies exactly what is destroyed and when — the old secret is killed immediately at grace_seconds=0, survives up to 604800 seconds otherwise, and an earlier grace period is cut short by a second rotation. It further discloses the one-time secret return, CAS concurrency guarantees, authorization scopes, and audit logging.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense paragraph, front-loaded with the core action and return value, then the optional parameters in descending importance. Nearly every clause carries behavior (grace window, CAS, type/scope), though the run-on density makes it slightly harder to scan than a bulleted layout would.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, it covers everything an agent needs: what is created, what is invalidated, the one-time nature of the returned secret, timing control, concurrency safety, and permission prerequisites. Nothing material is left for the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description earns more by explaining consequences rather than restating types — grace_seconds bounds and the '0 kills it now' effect, the compare-and-swap meaning of expected_rotation_count, and the type mapping to prefixes (glc_/gcft_/gcdt_) plus their scope requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Rotate one of your tokens") and immediately defines the semantics: mint a new secret with the same name, scopes/permissions, repository and expiry, returned ONCE as `token`. That distinguishes it clearly from siblings like merjax_create_repo_token, merjax_revoke_token and merjax_get_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete context: use `expected_rotation_count` from merjax_get_token's rotationCount for compare-and-swap, and states required scopes per token type ('admin' for PATs, 'repo' for repo/deploy). It does not explicitly contrast rotating with revoking or creating a fresh token, so the alternative-selection guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_search_codeARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch / tag / sha (default: the repo's default branch) | |
| glob | No | Only search files matching this git pathspec glob (e.g. **/*.test.ts); relative to `path` when both are given | |
| path | No | Only search under this repo-relative directory or file (literal prefix, e.g. src/lib) | |
| repo | Yes | ||
| limit | No | Max matches, or max files with files_only (default 50, max 200) | |
| owner | Yes | ||
| query | Yes | Pattern (git grep basic regex) | |
| files_only | No | Return unique files with match counts instead of matching lines | |
| ignore_case | No | Case-insensitive match (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, and the description adds real behavioral detail beyond them: the two distinct return shapes, the `truncated` flag, and the mode switch that changes result granularity with `files_only`. It does not mention rate limits or the 200-result cap, which lives only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose and the reason to prefer it, then scoping options, then return shapes. The return-shape enumeration is dense but earns its place given no output schema; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter search tool with no output schema, the description covers the essentials: what it searches, how to scope it, default branch behavior, and both response shapes. Missing only explicit sibling routing and the result cap, minor gaps against otherwise strong coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78%, so the schema already documents most parameters and the description largely restates it (`path` literal prefix, `glob` pathspec, `ignore_case`, `files_only`). The one genuinely additive point is the interaction rule that `glob` is relative to `path` when both are supplied; `limit` is never touched in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Literal / regex code search (git grep, basic regex) across a repo at a ref") and adds a differentiator, "works on every repo, indexed or not." That implicitly separates it from indexed/semantic siblings like merjax_semantic_search and merjax_repo_search, but none are named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear recommendation ("The dependable way to find code on this host") and states the condition that makes it universally applicable, plus guidance to omit `ref` for the default branch. It stops short of explicitly excluding or naming alternatives, so an agent must infer the semantic-vs-literal split.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_search_issuesARead-onlyInspect
Search issues by title/body keyword on a single repo, filtered by state. Returns ranked rows.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| limit | No | ||
| owner | Yes | ||
| query | Yes | Search keyword | |
| state | No | open | closed | all (default open) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile needs no restating. The description adds value with the one behavioral fact annotations cannot carry — that results come back ranked — but says nothing about ranking criteria, pagination, or default result volume beyond the schema's undocumented limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the operation and scope front-loaded and the return shape appended. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, five-parameter search tool with no output schema and annotations covering safety, the description supplies scope, filter, match fields and result ordering. The remaining gap is limit behavior and ranking criteria, which is minor but not zero given 40% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 40%, so the description has real compensating work to do. It covers the repo scope ('single repo'), the query semantics ('title/body keyword') and the state filter, but leaves limit entirely unaddressed — no default, no cap, no interaction with 'ranked rows'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search issues') plus scope qualifiers: title/body keyword, single repo, state filter, ranked rows. This is enough to separate it from siblings such as merjax_repo_list_issues (enumeration) or merjax_search_code, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is clear — use when you have a keyword and want matching issues in one repo — and the 'filtered by state' clause narrows intent. However, there is no explicit when-not guidance and no routing between this and merjax_repo_list_issues and merjax_semantic_search, which an agent could realistically confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_search_prsARead-onlyInspect
Search pull requests by title/body keyword on a repo.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| limit | No | ||
| owner | Yes | ||
| query | Yes | ||
| state | No | open|closed|merged|all (default open) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered and the description need not restate it. What the description does add is genuinely useful: the search corpus is limited to title and body text, not comments, diffs, or code. It says nothing about result ordering, pagination, or truncation behavior tied to the undocumented 'limit' parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the verb and resource and packs the search corpus and scoping into the same clause. Nothing is redundant and nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema, the description covers the essentials: what is searched, in what field, and within what scope. The remaining omissions (result ordering, limit semantics) are minor and partly carried by the 'state' enum documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (just 'state'), so the description carries real weight here, and it does clarify that 'query' matches against title/body and that owner/repo scope the search. However, 'limit' is left completely undefined in both the schema and the description, leaving a meaningful gap for a 5-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Search pull requests') plus the matching scope ('by title/body keyword on a repo'), which separates it from mutation siblings like merjax_update_pr and merjax_merge_pr. It does not explicitly contrast with the closest read sibling, merjax_list_prs, which is an unfiltered listing, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for keyword-driven PR lookup versus browsing. There is no explicit statement of when to prefer merjax_list_prs, merjax_get_pr, or merjax_search_issues, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_search_reposARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | stars | updated | name (default: stars) | |
| limit | No | Max rows per page (default 30, max 100) | |
| query | No | Search keyword — matches owner login, repo name, owner/name and description. Omit to list your own repositories. | |
| offset | No | Rows to skip. Use `nextOffset` from the previous response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false), and the description adds real context on top: results depend on authentication (private repos only for owned/collaborated ones), the omitted-query behavior, and pagination semantics where `total` is the full match count rather than page size. These are behavioral facts an agent cannot get from the annotations or schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the search scope before the alternate listing mode and pagination caveat. The 'Mirrors GET /api/v2/search/repos' clause and stacked parentheticals add some density, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the `total` and `nextOffset` response fields, which covers the main pagination risk for a 4-parameter search tool. It stops short of describing the shape of each returned repository object, a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: `query` omission switches the tool from search to listing your repositories, and `nextOffset`/`total` semantics clarify how the offset parameter should be driven. Only the `sort` and `limit` parameters get nothing beyond their schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search repositories') plus the exact match fields (owner, name, owner/name, description) and case-insensitivity, and scopes results to 'every public repo, plus the private ones you own or collaborate on'. That scoping distinguishes it from the sibling code/issue/PR search tools without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit alternate mode: omit `query` while authenticated to list your own repositories rather than search. It does not name any sibling tool (e.g. merjax_repo_search or merjax_semantic_search) as the alternative, so routing between the several search-ish siblings still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_security_ioc_hitsARead-onlyInspect
Site admins only (needs an 'admin'-scoped token). Campaign indicator-of-compromise hits: pushes, token uses and repositories that matched a reviewed signature in src/lib/security/campaign-iocs.json (e.g. the Gheist campaign: ci-sync-XXXXXX branches, sync-check.yml, user agent 'gheist'). Filter by signature_id, repository ('owner/name'), since (ISO date); limit (default 50, max 200) / offset. Returns {signatureVersion, signatures, totals, sweep, hits[{id, signatureId, campaign, severity, detectedBy, repository, ref, sha, tokenKind, tokenId, userAgent, evidence, createdAt}]}. Read-only; nothing is revoked.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50, max 200) | |
| since | No | Only hits at or after this ISO date/time | |
| offset | No | Rows to skip | |
| repository | No | Only hits on this repository, as owner/name | |
| signature_id | No | Only hits of this signature (e.g. gheist-2026-10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so 'Read-only; nothing is revoked' is largely redundant. Beyond that, the description adds real value: the required admin token scope, the source-of-truth config file, and the pagination defaults (limit 50, max 200).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the access requirement and the resource definition before the filters and return shape, and every clause carries information. The single dense paragraph mixing filters and the full return-object listing is slightly cramped, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by spelling out the return object (signatureVersion, signatures, totals, sweep, hits with their fields). Auth requirements, filters, defaults, and safety profile are all covered, so an agent can call this correctly without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented in structured form, establishing a baseline of 3. The description does add some flavor by giving an example signature id (gheist-2026-10) and restating the limit defaults, but it introduces no format or semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource — campaign indicator-of-compromise hits (pushes, token uses, repositories matching a reviewed signature in campaign-iocs.json) — and grounds it with concrete examples like ci-sync-XXXXXX branches and the 'gheist' user agent. The verb is implicit (a listing/retrieval) and no sibling such as merjax_security_scan is named, so an agent must infer it is the IoC-hit listing rather than a general scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear access precondition ('Site admins only, needs an admin-scoped token') and enumerates the filter dimensions, which implies when the tool is applicable. It never says when not to use it or points to the sibling merjax_security_scan for broader scanning, so routing between security tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_security_scanARead-onlyInspect
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 merjax_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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag or commit SHA to scan the tree of. Default: the repo's default branch. Note advisories describe the INDEXED dependency graph, whose commit is reported separately — if it differs from this ref the advisory answer is downgraded to 'partial'. | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner username | |
| include_ai_review | No | Opt in to the Claude Sonnet semantic review (SQLi/XSS/SSRF/authz/crypto). Costs an Anthropic call and adds seconds. Default false. When it cannot run — no key, provider error, unparseable output — the category reports 'not_assessed', never a pass. | |
| max_candidate_lines | No | Cap on lines the secret detector inspects (1-200000, default 20000). The whole tree is always prefiltered; only lines that already matched a secret marker are inspected, so this rarely binds. When it does, committed_secrets reports 'partial' with the exact fraction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, yet the description adds substantial behavior beyond them: the assessed/partial/not_assessed/error status vocabulary with reason codes, the guarantee that an empty result is never a pass, the dependency_graph_not_indexed downgrade, and the partial-with-fraction behavior of committed_secrets. It also discloses that a failed AI review reports not_assessed rather than a pass, which is exactly the kind of silent-failure behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key claim is front-loaded, but the body is a dense run-on list and the 'honest call' / 'we never looked' framing is repeated more than once. The emphasis on never-reporting-empty-as-pass could be stated once instead of threaded through three separate sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so: it specifies the per-category status enum, reason codes, and the fixed-version content of advisories. For a multi-source read-only scan this is complete enough for an agent to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters, including the ref/advisory-commit mismatch downgrade and the max_candidate_lines prefilter. The description adds little parameter-level meaning beyond restating coverage categories, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource (security scan of a repository) and enumerates exactly what is covered: OSV.dev CVE/GHSA advisories against the indexed dependency graph, the supplemental advisory list, a committed-secret scan, and an optional Claude semantic review. It explicitly names the sibling it differs from (merjax_repo_health), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use and names merjax_repo_health as the contrasting tool, and it explains the cost/benefit tradeoff of opting into include_ai_review (an Anthropic call, adds seconds). It stops short of an explicit 'use this when / do not use this when' rule set, so it is a strong 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_semantic_searchARead-onlyInspect
Query the per-repo vector index (Voyage embeddings when configured, hash fallback otherwise). Reads the live per-push index (code_embeddings) first, falling back to the manually-reindexed chunk index (code_chunks). Returns {hits, source, indexed, indexedFiles} — indexed: false means the repo has never been indexed (empty hits are NOT 'no match'); indexedFiles is the live-index row count.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| limit | No | ||
| owner | Yes | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and non-destructive, and the description layers substantive behavior on top: which embedding backend is used, the live-index-then-chunk-index fallback order, and the full return shape with a critical interpretive caveat that indexed:false means never-indexed rather than no match. That caveat is exactly the kind of trap an agent would otherwise fall into.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the mechanism comes first, then the fallback order, then the return contract. Every clause carries information, though the return-value sentence is packed with semicolons and could be split for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully documents the return object and the meaning of its fields, which is the highest-value thing it could add. It is incomplete only on the input side (limit behavior) and on scoring/ranking behavior of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, so the description carries the burden, but it explains none of them. owner/repo are only obliquely implied by 'per-repo', query semantics are assumed, and limit is never mentioned at all, so an agent gets no guidance on result caps or query formulation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: querying a per-repo vector index backed by Voyage embeddings or a hash fallback. The mention of embeddings and the two-tier index (code_embeddings then code_chunks) distinguishes it from keyword-oriented siblings like merjax_search_code and merjax_repo_search, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by describing the semantic-vector mechanism, letting an agent infer this is for meaning-based retrieval rather than exact-match search, and the fallback chain is spelled out. However, there is no explicit when-to-use or when-not-to-use guidance relative to the many search/explain siblings, which is the main gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_ai_workspace_quotaAIdempotentInspect
Set a provider workspace's daily spend limit (cents, UTC day) and calls per minute; 0 = no cap at that level (the platform ceiling still applies). Site admins with an admin-scoped token only. Safe to retry: the same numbers again change nothing. Audit-logged. Mirrors PUT /api/v2/admin/ai-workspaces/:workspace/quota. Returns {workspace, dailyCents, rpm, effect: updated|unchanged}.
| Name | Required | Description | Default |
|---|---|---|---|
| rpm | Yes | Calls admitted per sliding minute. 0 = no rate limit at this level. | |
| workspace | Yes | ws-control-plane, ws-hosted-loops or ws-ci-gates | |
| daily_cents | Yes | Daily spend limit in cents (UTC day). 0 = no cap at this level; the platform ceiling still applies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, yet the description still adds real behavior: admin-scoped token requirement, audit logging, the platform-ceiling caveat, and the explicit return payload. 'Safe to retry' largely restates idempotentHint, but the auth and audit context is genuine added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and units are front-loaded, then auth, semantics, retry safety and return shape in tight clauses with no filler. Mild redundancy between 'Safe to retry' and the idempotent annotation, but nothing that buries the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the exact return fields (workspace, dailyCents, rpm, effect). Together with the auth requirement, cap semantics, idempotency and audit behavior, an agent has everything needed to call this mutation correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both numeric parameters already document units, bounds and the 0 sentinel. The description reinforces 'cents, UTC day' and 'calls per minute' but adds no syntax or constraints beyond what the schema states, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+fields: sets a provider workspace's daily spend limit in cents (UTC day) and calls per minute. The scope (one workspace's quota) is unambiguous and clearly distinct from sibling reads like merjax_list_ai_workspaces, merjax_ai_cost_summary and merjax_get_agent_budget.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the key selection prerequisite — 'Site admins with an admin-scoped token only' — plus the '0 = no cap' convention, which tells an agent how to clear a limit instead of using a separate tool. It does not explicitly name alternatives such as merjax_set_token_bucket or merjax_get_agent_budget, so the routing guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_auto_mergeAIdempotentInspect
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. Arming is also the merge train's consent: on a repository with the train on, the train merges only armed PRs, so disarming holds the PR from it (an explicit merjax_merge_pr still merges). Requires write access and 'repo' scope. merge_method: 'merge' only. Returns {number, auto_merge}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number | |
| enabled | Yes | true = arm, false = disarm | |
| merge_method | No | 'merge' (default; the only method the gated chain has) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond simple annotations, the description explains the complex operational behavior, such as the full gated merge chain it uses, its state retention while pending, and the internal mechanisms used (like `last_attempt.reason`). This is valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite its technical density, the description is highly concise, using structured prose to layer complex logic efficiently. Every sentence provides unique operational insight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is extremely complete for this complex feature. It covers not only the immediate action but also the upstream triggers, downstream persistence, and necessary context (like write access and scope) required for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is high, the description adds critical semantics, specifically clarifying that `enabled` is true for arm and false for disarm, and that `merge_method` is restricted to 'merge' only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The purpose is explicitly defined as arming or disarming auto-merge on a specific PR, clearly identifying the resource (PR) and the state being controlled (auto-merge). It distinguishes this function from standard merging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides highly nuanced usage guidelines, detailing the precise conditions under which a merge occurs (green CI, checks passed, no pending changes) and how the tool interacts with sibling tools/concepts like the 'merge train' and explicit `merjax_merge_pr` calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_branch_protectionAIdempotentInspect
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; it may add checks, but REMOVING a check that applies to the branch is refused here (it needs a step-up: the web page or the REST API with the account password). 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}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| branch | Yes | Branch name (not a pattern) | |
| allow_deletion | No | ||
| require_pr_run | No | Workflow checks count only from the PR's pull_request run | |
| required_checks | No | Array of check names that must pass (workflow names, gate names or commit-status contexts); [] clears the list | |
| allow_force_push | No | ||
| enable_auto_merge | No | Branch-wide autopilot auto-merge (K2) | |
| required_approvals | No | Human approvals required (0-10) | |
| require_ai_approval | No | ||
| require_green_gates | No | ||
| require_human_review | No | ||
| require_pull_request | No | ||
| dismiss_stale_reviews | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-read-only, idempotent, non-destructive mutation; the description goes well beyond that by naming the ADMIN access and 'repo' scope requirement, disclosing audit logging, describing the glob-to-exact-rule seeding behavior, and calling out the specific refusal condition for check removal. It also states the return payload, which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and mutation semantics, and nearly every clause carries information an agent needs. It is a dense single paragraph, though, so the caveat about check removal and the return shape would scan better as separate sentences or bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter mutation with no output schema, it covers the high-risk areas: permissions, audit trail, rule creation side effect, non-reversible check removal, and the returned rule plus {created, warnings}. What it omits is the meaning of the simpler boolean flags, which an agent must infer from their names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description adds real meaning for two parameters — required_checks (replace semantics, [] clears, removals refused) and require_pr_run (workflow-named checks only satisfied by that workflow's pull_request run). The other seven undocumented booleans such as allow_force_push, allow_deletion, require_green_gates, require_ai_approval and dismiss_stale_reviews get no explanation in either place, so it only partly compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Set branch protection for one branch') and immediately qualifies the operation as a partial update, which distinguishes it from a full-replace sibling. It further clarifies that it edits the exact-named rule and creates one when only a glob rule covers the branch, so an agent understands both the target and the side effect without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: omitted fields keep their value, required_checks replaces rather than merges, and removal of an applicable check is refused here with the alternatives named (web page or REST API with the account password). It does not explicitly point to merjax_get_branch_protection as the read counterpart, which is the only notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_loop_secretADestructiveIdempotentInspect
Create or replace a secret a hosted Claude loop runs with (reaches it as process.env.NAME at invoke time only; sealed at rest, scrubbed from its logs). Pass loop (the hosted Claude loop's id, from /connect/claude/deploy) for the loop's own secret — its owner only — or org (organisation slug, admin-scoped token) for an organisation-level secret every loop of the organisation inherits; a loop-level name overrides the organisation's. ANTHROPIC_API_KEY is the loop's model key (CAP-S.8: the platform never lends its own); at organisation level it is the BYOK override. Safe to retry: the same value again changes nothing. Audit-logged by name, never value. Returns {name, effect: created|updated|unchanged, updatedAt}.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Organisation slug | |
| loop | No | Hosted Claude loop id (uuid) | |
| name | Yes | Secret name, an environment variable name: letters, digits and _, starting with a letter (stored upper-case). PATH, HOME, INPUT and GLUECRON_* are the runtime's own and refused. | |
| value | Yes | The secret value. Write-only: never shown again, never in a log or an audit row; reaches the loop as process.env.NAME at invoke time only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag it as a non-read-only, destructive, idempotent, closed-world write. The description adds what the annotations cannot: the value is sealed at rest, scrubbed from logs, never written to audit rows (audited by name only), and delivered to the process solely at invoke time. It also states the retry contract and the ANTHROPIC_API_KEY / BYOK semantics, which is substantial behavior beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the scope decision, and every clause carries information (invoke-time reach, sealing, precedence, retry safety, audit, return shape). It is one dense multi-clause block rather than a broken-out structure, which slightly raises scanning cost, but there is no filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no output schema, the description covers the auth requirements, the two scoping modes and their interaction, secret-value handling, idempotency, and even the return shape ({name, effect, updatedAt}). An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3; the description goes further by explaining what 'loop' and 'org' actually select, the inheritance and override relationship between them, and the auth scope each requires — meaning the bare schema ('Organisation slug', 'Hosted Claude loop id (uuid)') does not carry. Name-pattern restrictions are already in the schema, so no credit there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create or replace a secret a hosted Claude loop runs with') and immediately scopes it: the value is reachable only as process.env.NAME at invoke time. It distinguishes the two target scopes (loop-level owner-only vs organisation-level admin-scoped, with loop overriding org) and is clearly separable from siblings like set_repo_secret or set_variable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing guidance: pass 'loop' for the loop's own secret (owner only) or 'org' for an organisation-wide secret requiring an admin-scoped token, plus the precedence rule that a loop-level name overrides the organisation's. It does not contrast itself against sibling tools (e.g. when to use this rather than set_variable or set_repo_secret), which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_pr_ai_settingsAIdempotentInspect
Choose the model for a pull request's AI tasks (review, risk summary, CI fixes, conflict proposals): a model id from the catalog, or null / "" to inherit the repository's or the platform's choice. Write access to the repository. run_via ("subscription" or "api": where AI runs and who pays) is for site admins only, with an admin-scoped token, and the subscription only on a repository a site admin owns. Omitted fields are kept; the same values again are unchanged. A model below a task's floor is raised and the effective list says so. Mirrors PUT /api/v2/repos/:o/:r/pulls/:n/ai-settings. Audit-logged. Returns {number, effect, model, repository_model, effective:[{task, label, model, model_label, source, raised, note}], updated_at} plus the run-on fields for a site admin.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| model | No | Model id for this pull request's AI tasks (e.g. claude-opus-5-5); null or "" inherits the repository's or the platform's choice; omit to keep | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | Pull request number | |
| run_via | No | Site admins only: "subscription" or "api"; null or "" follows the global switch; omit to keep |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say non-read-only, idempotent, non-destructive; the description adds what the agent actually needs — write access required, admin-only escalation for run_via, silent floor-raising with the effective list reporting it, audit logging, and resource key. It even enumerates the response shape despite no output schema. Not a 5 only because error/rate-limit behavior is unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose first, then inheritance rule, then permission caveat, then response shape. Parenthetical task list and the quoted `unchanged` earn their place, though the response-shape sentence is long and partially duplicates what would be a return field listing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description does the work by naming return fields, and it covers auth, inheritance, and idempotency well. It is less complete on what happens on failure — invalid model id, non-admin passing run_via, missing write access — which matters for a mutation tool with privilege tiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value beyond it by explaining the inherit-vs-keep distinction between null/"" and omission, and by naming the semantic consequence of model choice (floor raising, effective list). It also spells out the run_via authorization dimension that the schema only hints at.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (set a pull request's AI model, covering review, risk summary, CI fixes, conflict proposals) and distinguishes it from siblings like merjax_set_ai_workspace_quota by scoping to a single PR's AI tasks. The null/"" inheritance semantics are named explicitly, so an agent knows exactly what the call sets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditions: model id from catalog vs null/"" to inherit repo or platform choice; run_via requires a site-admin-scoped token and a repo a site admin owns. Omitted fields are kept and identical values return `unchanged`, which tells the agent when re-calling is harmless and which fields are optional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_pr_draftAIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| draft | Yes | true = convert to draft, false = mark ready for review | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint and destructiveHint=false, yet the description adds substantial context beyond them: required authorization (PR author or repo owner, write access), the required 'repo' scope, the constraint that only open PRs are affected, and the side effect that marking ready triggers AI review. It also discloses the return shape, which no output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the state transition front-loaded, followed by authorization, side effects, and return shape. Every clause carries signal and nothing is padded or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers authorization, scope, preconditions, idempotency, side effects, and the returned fields. An agent has everything needed to call it correctly and to anticipate the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the four parameters is already documented, and the description mostly restates the draft boolean semantics. The added value is limited to the behavioral constraint that the call is a no-op on non-open PRs, which is not parameter-specific. Baseline 3 is appropriate when the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('mark a pull request ready for review') and explicitly covers both directions of the boolean toggle. It is immediately distinguishable from siblings like open_draft_pr or update_pr because it names the exact state transition it performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear anchor ('same rule as the web Ready for review button') and states the precondition that only an open PR changes, which tells the agent when the call will be a no-op. It does not explicitly name sibling alternatives (e.g. open_draft_pr for creating a draft), so the routing guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_repo_secretAInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Secret name: letters, digits, underscores; not starting with a digit | |
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| value | Yes | The secret value (never echoed back) | |
| expected_updated_at | No | Optional ISO time: only update if the secret's updated_at is still this (from merjax_list_repo_secrets) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only say readOnlyHint=false and destructiveHint=false. It discloses that the value is encrypted at rest and never returned, logged or audited (audit log records name only), that the name is upper-cased and the value trimmed, the admin/'repo' scope requirement, and the exact conflict/missing/unchanged failure modes — precisely the behavioral context an agent needs for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then value semantics, then concurrency, then auth, then return shape — a logical order with no filler sentences. It is dense and dash-heavy, with several clauses stacked per sentence, which costs a bit of readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by spelling out the return object ({repository, name, created, result, updated_at}), the error strings, authorization requirements, and value handling. For a 5-parameter mutation with side effects, nothing an agent needs is left out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantics the schema lacks: 'name' is normalized to upper case and trailing whitespace is stripped from 'value'. expected_updated_at's conflict/missing outcomes are also spelled out rather than just 'only update if updated_at is still this'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create or replace one workflow secret on a repository') plus where the secret surfaces (${{ secrets.NAME }}). It distinguishes itself implicitly from other secret-like siblings by scoping to repository workflow secrets, but never names the alternatives (set_loop_secret, set_variable) it should be chosen over.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditional guidance: pass expected_updated_at for optimistic concurrency, retries are safe because unchanged values write nothing. What's missing is a when-to-use-this-instead-of-that statement versus the sibling secret/variable tools, which is the main gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_token_bucketAIdempotentInspect
Set the daily model-spend bucket of one of your personal access tokens: daily_cents (1–1000000; 0 = the platform default; -1 = no bucket) or daily_usd ("2.50", "default", "none"). The call that would cross the bucket is refused and the token suspends itself until resumed. Another person's token is not found; a canary token is refused. Safe to retry: the same figure again is unchanged. Needs user scope. Audit-logged. Returns {tokenId, name, dailyCents, bucketCents, bucket, effect}.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | The personal access token's id (merjax_list_tokens, GET /api/v2/user/tokens) | |
| daily_usd | No | Bucket as a person types it: USD a day with cents ("2.50"), "default" or blank for the platform default, "none" for no bucket | |
| daily_cents | No | Bucket in US cents a day, 1–1000000; 0 = the platform default; -1 = no bucket. Alternative: daily_usd |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses real consequences: the call that would cross the bucket is refused and the token self-suspends until resumed, the required `user` scope, audit logging, and the exact response fields. This is a mutation tool whose annotations only say readOnly=false, idempotent=true, destructive=false, so the extra disclosure is genuinely load-bearing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the action and target come first, then sentinel semantics, then failure/retry behavior, then prerequisites and return shape. Every clause carries information an agent would otherwise have to discover by trial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return field list itself, plus auth scope, idempotency, and error semantics. For a three-parameter mutation tool this is complete enough to call correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both bucket parameters and their sentinel values (0, -1, 'default', 'none') are already documented in the schema, including the note that daily_usd is an alternative. The description restates those ranges and formats rather than adding new meaning, though it does flag that the call is keyed to a single token.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Set the daily model-spend bucket of one of your personal access tokens') plus the exact quantity being set, which cleanly separates it from workspace-level siblings like merjax_set_ai_workspace_quota or token-lifecycle siblings like merjax_rotate_token and merjax_resume_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives solid operating context: which token class is valid, that another person's token resolves to not-found, that a canary token is refused, and that repeating the same figure is a no-op. It stops short of explicit routing guidance such as 'use merjax_get_agent_budget to inspect a budget' or when to prefer daily_cents over daily_usd as a workflow choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_set_variableADestructiveIdempotentInspect
Create or replace an Actions variable (plain text, not for secrets — use merjax_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}.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Organisation slug | |
| name | Yes | Variable name: letters, digits and _, not starting with a digit or GITHUB_ (stored upper-case) | |
| repo | No | Repo name | |
| owner | No | Repo owner — username or organisation slug (omit when passing org) | |
| value | Yes | Plain-text value (not a secret: shown on the settings page and in logs), at most 48 KB | |
| environment | No | Environment name (or id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true; the description corroborates idempotency with an explanation ('the same value again changes nothing') and adds audit-logging, token-scope requirements and the return shape {name, effect, updatedAt}. The only gap is that the destructive consequence of 'replace' is left implicit rather than spelled out as overwriting an existing value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the verb and the exclusion first, then scoping rules, then safety properties. Every sentence carries distinct information — no restatement of the name or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite six parameters and no output schema, the definition supplies the scoping logic, the token prerequisite, and the explicit return shape including the three possible effect values, so an agent can call and interpret the result without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema does not: the conditional combination of owner/repo/environment/org that determines the variable's scope, and the admin-token constraint attached to org. That goes beyond the field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create or replace an Actions variable') and immediately distinguishes it from the adjacent secret tool by name ('not for secrets — use merjax_set_repo_secret'), which separates it from merjax_set_repo_secret, merjax_set_loop_secret and merjax_delete_variable in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules for all three scopes (owner+repo for repo-level, owner+repo+environment for environment-level, org for organisation-level) plus the prerequisite that organisation variables need an admin-scoped token, and names the alternative tool for secret values. When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_ship_specCInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Spec body (Markdown) | |
| repo | Yes | ||
| owner | Yes | ||
| title | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false. The description adds real value beyond them: it discloses the side effect (a file lands in .gluecron/specs/ with status ready and an autopilot picks it up) and a required 'repo' scope. It still says nothing about what is returned or what happens if a spec already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, but they are jargon-dense ('.gluecron/specs/', 'voice-to-pr.shipAsSpec', 'autopilot') and lead with internal mechanics rather than the user-facing purpose. Short, but not front-loaded on what the agent is accomplishing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-required-parameter mutation tool with no output schema and thin schema coverage, the description leaves key questions open: what the return value is, how owner/repo/title/body are used, and what happens on duplicate or invalid specs. The auth-scope note and side-effect disclosure help, but the definition is not complete enough to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% – only 'body' is documented (as Markdown). The description never maps owner, repo, or title to their meaning, nor does it state that body is the spec content. With all four parameters required, this is a notable gap the description should compensate for but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names an action ('Drop a spec file in .gluecron/specs/ with status: ready') and an internal wrapper ('Wraps voice-to-pr.shipAsSpec'), but it is framed in internal jargon rather than stating plainly that it creates a spec record for owner/repo with a title and body. It gestures at a sibling (voice-to-pr) without clarifying when to pick this tool instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Handle both voice + manual specs' and 'so the autopilot picks it up' hint at context, and the 'repo' scope requirement is a precondition. But there is no explicit when-to-use or when-not-to-use guidance relative to siblings like merjax_voice_to_pr or merjax_create_issue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_trigger_workflowBInspect
Dispatch a workflow_dispatch run. Mirrors POST /api/v2/repos/.../actions/workflows/:filename/dispatches. Requires 'repo' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch / tag / sha (default: repo default branch) | |
| repo | Yes | ||
| owner | Yes | ||
| inputs | No | Workflow inputs (object) | |
| filename | Yes | Workflow filename (e.g. ci.yml) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, and the description correctly frames this as a side-effecting dispatch, so there is no contradiction. It adds useful auth context ('Requires repo scope') beyond the annotations, but says nothing about whether the call is asynchronous, what it returns (the GitHub API returns 204 with no body), or whether repeated dispatches create duplicate runs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and zero filler; the endpoint mapping and auth requirement follow in priority order. It is efficient, though the terseness leaves real gaps that brevity alone does not excuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, nested-object mutation tool with no output schema, the description covers the action and auth but omits the essentials an agent needs: the shape of 'inputs', the default-branch behavior of 'ref', and what a successful dispatch yields. An agent could call it, but would be guessing on the inputs contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 60%, and the single most important parameter for workflow_dispatch, the nested 'inputs' object, is described only as 'Workflow inputs (object)' in the schema and not at all in the description. The description does not explain how filename, ref, and inputs interact with the workflow definition, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Dispatch a workflow_dispatch run') and anchors it to the upstream REST endpoint, so an agent can tell it apart from sibling read tools like merjax_get_workflow_run or control tools like merjax_cancel_workflow_run and merjax_rerun_failed_jobs. It stops short of explicitly naming those alternatives, so no credit for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Requires repo scope' line gives a real prerequisite, and 'workflow_dispatch' implies the target workflow must declare that trigger. But there is no guidance on when to use this versus rerun_failed_jobs or merjax_ci_executor, and no exclusions or caveats about duplicate dispatches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_undo_kill_switchAIdempotentInspect
Undo the last kill switch press: give every token it suspended its previous expiry back and unpause AI (unless AI was already paused before the press, which stays as it was). A press already undone, or none at all, is a precondition failure. Site admins with an admin-scoped token only. Audit-logged (security.kill_switch.undo); every site admin is alerted. Mirrors POST /api/v2/admin/security/kill-switch/undo. Returns {pressedAt, undoneAt, ofSuspended, restored, aiUnpaused, aiWasPaused, effect}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag non-readonly, non-destructive, idempotent, closed-world; the description goes well beyond by disclosing the exact state-restoration semantics, the conditional AI-unpause rule, the precondition-failure behavior, the admin-scope auth requirement, audit logging with a specific event name, and the site-admin alert side effect. The listed return fields also compensate for the missing output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The effect and its conditional exception are front-loaded in the first sentence, followed by preconditions, authorization, side effects, and the return shape. Every clause carries distinct information, with no filler despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, high-consequence admin operation with no output schema, the description supplies everything an agent needs: what it reverses, when it fails, who may call it, what is audited/alerted, and the exact return fields. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No misleading parameter language is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Undo the last kill switch press') and immediately explains the concrete effect: restoring suspended tokens' previous expiry and unpausing AI. This is clearly distinct from the sibling merjax_press_kill_switch, and the conditional nuance about pre-existing AI pause makes the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger condition (undoing the last press) and enumerates the failure preconditions — no press, or a press already undone — so an agent knows when the call will fail. It also gates use to site admins with an admin-scoped token. It stops short of explicitly naming merjax_press_kill_switch as the inverse alternative, but the context is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_unlabel_issueBIdempotentInspect
Detach a label from an issue. Idempotent. Requires 'repo' scope. Returns {removed: boolean}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| label | Yes | ||
| owner | Yes | ||
| number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real value beyond the annotations by disclosing the required 'repo' scope and the return shape {removed: boolean}, which the agent cannot get anywhere else since no output schema exists. However, 'Idempotent' merely restates idempotentHint=true from the annotations, and there is no explanation of whether the label must already exist or how a missing label/label-not-found case is reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with the action first and supporting facts after; nothing is padded. The only near-waste is the 'Idempotent.' sentence, which duplicates an existing annotation rather than adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter mutation the description covers the essentials - action, safety implication, auth scope, and return value without an output schema. The remaining gap is parameter meaning: with zero schema coverage, the agent still has to guess the semantics of 'label' and 'number' before it can call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four required parameters, so the description carries the full burden and provides none of it. It never clarifies that 'number' is the issue number, whether 'label' is a name or an ID, or what format 'owner'/'repo' take - all of which the schema leaves bare.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Detach a label from an issue'. This is clearly distinct from the inverse sibling merjax_label_issue, though it never names that sibling or any other alternative explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb - an agent can infer 'use this to remove a label', but there is no statement of when to use it versus the inverse tool, no prerequisites, and no exclusions. A one-clause pointer to merjax_label_issue for the opposite operation would have lifted this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_update_prAIdempotentInspect
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 merjax_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}.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | New base branch | |
| body | No | New body (Markdown); an empty string clears it | |
| repo | Yes | Repo name | |
| draft | No | true = back to draft, false = ready for review (merjax_set_pr_draft's rule: write access and the PR author or repo owner) | |
| owner | Yes | Repo owner — username or organisation slug | |
| title | No | New title | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read/write/idempotent profile; the description goes well beyond that with the authorization model, the required 'repo' scope, the side effect that a base change re-runs pull_request CI against the new base, the auto-merge disarming, and the fact that marking ready kicks off AI review. That is exactly the mutation-risk context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then permission, then side effects, then return shape—a sensible order. The slash-and-parenthesis phrasing ('Title / body / base:', 'marking ready starts the AI review') is dense and slightly run-on, but nearly every clause carries information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields, and it covers auth, side effects, and preconditions for a mutation tool. The only shortfall is that it never mentions the head-branch-update sibling, so an agent must infer that base changes here differ from merjax_update_pr_branch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already carries baseline meaning; the description still adds consequence-level semantics the schema lacks—what changing 'base' triggers and what the 'draft' flag does beyond toggling state. It adds little for owner/repo/number, but those are self-evident and schema-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (edit) plus the exact editable fields (title, body, base branch, draft state) on a named resource (pull request). It also disambiguates the draft path by naming merjax_set_pr_draft and the base path by restricting to open PRs, so an agent can separate this from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions—'repo' scope, author-or-write-access for title/body/base, the stricter rule for draft, and open-PRs-only for base changes. It does not say when to prefer the dedicated merjax_set_pr_draft sibling over this tool's draft parameter, leaving one real routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_update_pr_branchAInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner — username or organisation slug | |
| number | Yes | PR number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing that no force-push occurs, that the new head is a merge commit subject to CI gates, that conflicts leave the branch unchanged, and that write access plus 'repo' scope are required. The full success and failure response shapes are spelled out, which is the behavioral detail an agent needs before calling a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and its non-force-push framing come first, followed by conflict behavior, authorization, and return shape — a logical order with no filler. It is dense but multi-clause; a slightly tighter failure-shape sentence would make it leaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description supplies the return contract itself ({ok, status, headSha, previousHeadSha, baseSha, url} and the failure variant) plus auth requirements and failure semantics. For a three-parameter mutation tool, nothing an agent needs to invoke it correctly or interpret results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so owner, repo, and number are already documented in the schema, and the description adds no per-parameter meaning such as format or validation rules. The baseline 3 applies when the schema carries parameter semantics on its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — merge the base into the head of a PR branch server-side — and anchors it to a known UI action ('Update branch'). The explicit 'Never a force-push' clause separates it from any branch-rewriting sibling, and the merge-commit semantics distinguish it from merge_pr and resolve_pr_conflict.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use (branch is behind its base) and clarifies the mechanism is a server-side merge through the push gates rather than a rebase or force-push. It also tells the agent what to do on failure via conflictFiles, though it does not name the sibling tools to escalate to for conflict resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_update_repoADestructiveInspect
Update repository description / visibility / default_branch / automation dials / merge-conflict AI mode / GateTest switch. Requires 'admin' access on the repo (owner, org owners/admins, admin collaborators) and 'repo' scope. Returns {ok: true}; with gate_test_enabled, also gate_test {enabled, server_configured, state: on | disabled_in_settings | not_configured_on_server, details}. merjax_get_branch_protection reads gate_test without changing it.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repo name | |
| owner | Yes | Repo owner username | |
| automation | No | Per-repo automation dials, same keys as Settings → Automation: ai_review_mode, pr_triage_mode, issue_triage_mode, auto_merge_mode, ci_autofix_mode, auto_repair_mode, auto_issues_mode, doc_drift_mode, merge_train_mode. Values: off | suggest | auto (merge_train_mode runs only on auto). Only the keys given change. | |
| is_private | No | Set visibility (optional) | |
| description | No | New description (optional) | |
| default_branch | No | Set default branch (optional) | |
| gate_test_enabled | No | Turn the GateTest scan on or off for this repository (Settings → Gates → GateTest scan; repo_settings.gate_test_enabled, off by default). Audited as gates.settings.update. A switch that is on scans only where the server has GATETEST_URL: gate_test.state says not_configured_on_server otherwise. | |
| conflict_resolution_mode | No | Who may settle merge conflicts with AI (Settings → Gates → Merge conflicts): manual (no AI) | review_first (default: AI proposes per block, a person accepts, edits or rejects) | auto_land (saved; acted on once the auto-land step ships — until then it behaves as review_first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a mutation with destructiveHint=true, and the description adds context beyond them: the auth/scope requirement, the return shape {ok: true}, and the extra gate_test payload with its state enumeration. The one gap is that destructiveHint is never explained behaviorally — nothing warns that flipping is_private to public exposes the repo or that changes take effect immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the action and the full field inventory, then prerequisites and return shape follow in priority order. It is dense but every sentence contributes; the only mild waste is the slash-separated field list, which partly duplicates what the schema shows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with a nested object and no output schema, the description covers the essentials: what can change, who may call it, what comes back, and how the gate_test result should be interpreted. It still omits partial-update semantics (that untouched fields, including automation keys, are left alone) and any failure modes, which an agent would want before mutating settings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every field, including the automation dial keys, the conflict_resolution_mode values and the gate_test semantics. The description largely echoes that field list rather than adding new meaning such as default values or interaction effects between parameters. Baseline 3 applies when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Update') plus resource ('repository') and enumerates the mutable fields: description, visibility, default_branch, automation dials, conflict_resolution_mode and gate_test_enabled. That is far more than a restatement of the name. It stops short of a 5 because it does not disambiguate from overlapping siblings such as merjax_set_auto_merge, merjax_set_pr_ai_settings or merjax_set_branch_protection, leaving the agent to guess where the automation dials and GateTest switches really belong.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the access prerequisite ('admin' on the repo, owner/org admin/admin collaborator) and the required 'repo' scope, which tells the agent when the call can succeed. It also routes the read-only case away explicitly: 'merjax_get_branch_protection reads gate_test without changing it.' There are no exclusions for the other setting-mutating siblings, so it is clear but not fully discriminating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_voice_to_prBInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as | No | 'spec' or 'issue' (default: auto via interpretVoiceTranscript) | |
| repo | Yes | ||
| owner | Yes | ||
| transcript | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds a genuine auth constraint ('Requires repo scope'), which is useful. 'Wraps src/lib/voice-to-pr.ts' is an implementation detail of little agent value, and the blast radius of the operation (does shipping a spec create a branch/PR, or write files?) is not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core behavior and the caller's choice. The 'Wraps src/lib/voice-to-pr.ts' clause adds little for an agent and could be dropped without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a non-read-only, non-destructive tool with four params, 25% schema coverage, and no output schema, so the description has a lot of room to fill. It omits what actually gets created (branch, commit, PR, or issue contents), how the transcript is interpreted, and never reconciles the 'to_pr' name with the spec/issue-only behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description should carry more weight. It does explain the `as` switch (spec vs issue) and mentions the 'repo' scope, but three of four parameters (owner, repo, transcript) are left entirely to the schema, and the `as` explanation largely repeats the schema's own enum hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a concrete verb and resource combination ('Interpret a free-form voice transcript') and names the two outcome modes (spec or issue), which distinguishes it from siblings such as merjax_ship_spec and merjax_create_issue that produce only one of those artifacts. The name/behavior mismatch (it says 'to_pr' but only describes shipping a spec or creating an issue) keeps it from being fully unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage (when the caller has a raw voice transcript) and says the caller chooses the output via `as`. It never explicitly says when to prefer this over calling merjax_ship_spec or merjax_create_issue directly, and gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_whoamiARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds genuine behavioral detail the annotations do not: what fields come back, and that anonymous callers receive authenticated:false plus a hint. It stops short of describing cost, caching, or whether the identity check reflects the ambient session versus a stored token.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, densely packed with useful content and zero filler. The identity payload is front-loaded and the diagnostic guidance follows immediately, so an agent gets both the what and the when in one read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns, and it does so by naming the identity fields, scopes, and repo counts, plus the anonymous-case shape. It is nearly complete for a zero-parameter introspection tool; only minor details such as token expiry or scope formatting are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so there is no parameter meaning to add and the description correctly adds none. It does, however, describe the shape of the result (identity fields, scopes, repo counts), which is output semantics rather than input semantics; with no output schema present, that content is better credited elsewhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific framing — 'Who this connector is on this Gluecron instance' — then enumerates exactly what is resolved: signed-in username, email, site-admin flag, token scopes, and repo ownership/collaboration counts. That is concrete enough to separate it from nearby identity-adjacent siblings such as merjax_get_token or merjax_list_tokens.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit triggering condition: 'Call it first when a repository seems missing — the answer is usually which account authorized the connector.' That is a clear, actionable context. It does not name a competing alternative tool or state when not to call it, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merjax_write_fileAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| repo | Yes | ||
| owner | Yes | ||
| branch | Yes | ||
| content | No | UTF-8 file body (optional) | |
| message | Yes | Commit message | |
| content_base64 | No | Base64 file body (optional) | |
| expect_blob_sha | No | Optimistic-concurrency check: existing blob sha must match. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), it discloses that the write is subject to branch protection, rulesets and secret scanning, that it fires CI and webhooks, and that it requires the 'repo' scope. These are exactly the operational facts an agent needs before attempting a mutation. It stops short of stating overwrite behavior, conflict/failure modes, or what a rejected write returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with purpose, then encoding choice, then enforcement side effects, then auth. The only near-waste is the internal wrapper name `createOrUpdateFileOnBranch`, which adds little for an agent but is short enough not to hurt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation tool with no output schema, the description covers the risky parts: permissions, policy enforcement, side effects, and body encoding. Missing pieces are the return value (implied commit/blob) and what happens when the optimistic-concurrency check or branch protection rejects the write, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 50%, the description compensates well by explaining that `content` and `content_base64` are alternative encodings of the same body and when to pick the binary one — a relationship the schema does not state, since both are merely marked optional strings. `expect_blob_sha` is only covered by the schema itself, so the description does not fully close the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Create or update a file on a branch via git plumbing" gives a specific verb and resource, and the wrapping note (`createOrUpdateFileOnBranch`) confirms the semantics. It is clearly distinguishable from siblings like merjax_delete_file or merjax_read_file, though it never explicitly contrasts itself with merjax_apply_patch or merjax_atomic_multi_file_commit, which also write file content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a concrete selection rule between two parameters (use `content` for UTF-8 text, `content_base64` for binary), which is genuinely useful. However, it gives no when-to-use guidance relative to the many competing write tools in the sibling list (patch application, multi-file atomic commit), leaving the routing decision to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
262 tool updates
- Removed
gluecron_acquire_lease - Removed
gluecron_ai_cost_summary - Removed
gluecron_apply_patch - Removed
gluecron_approve_pr - Removed
gluecron_assign_issue - Removed
gluecron_atomic_multi_file_commit - Removed
gluecron_backup_status - Removed
gluecron_cancel_workflow_run - Removed
gluecron_chat_continue - Removed
gluecron_chat_with_repo - Removed
gluecron_ci_executor - Removed
gluecron_ci_health - Removed
gluecron_ci_queue_status - Removed
gluecron_clone_url - Removed
gluecron_close_issue - Removed
gluecron_close_pr - Removed
gluecron_comment_issue - Removed
gluecron_comment_pr - Removed
gluecron_commit_pr_conflict_resolution - Removed
gluecron_create_agent_session - Removed
gluecron_create_branch - Removed
gluecron_create_deploy_token - Removed
gluecron_create_issue - Removed
gluecron_create_pr - Removed
gluecron_create_repo_token - Removed
gluecron_create_runner_registration_token - Removed
gluecron_delete_branch - Removed
gluecron_delete_comment - Removed
gluecron_delete_file - Removed
gluecron_delete_loop_secret - Removed
gluecron_delete_repo - Removed
gluecron_delete_repo_secret - Removed
gluecron_delete_variable - Removed
gluecron_dismiss_review - Removed
gluecron_edit_comment - Removed
gluecron_explain_failure - Removed
gluecron_explain_repo - Removed
gluecron_find_symbol - Removed
gluecron_fork_repo - Removed
gluecron_generate_commit_message - Removed
gluecron_generate_pr_description - Removed
gluecron_generate_release_notes - Removed
gluecron_generate_tests - Removed
gluecron_get_agent_budget - Removed
gluecron_get_branch_protection - Removed
gluecron_get_commit - Removed
gluecron_get_diff - Removed
gluecron_get_pr - Removed
gluecron_get_pr_checks - Removed
gluecron_get_preview_url - Removed
gluecron_get_token - Removed
gluecron_get_variable - Removed
gluecron_get_workflow_logs - Removed
gluecron_get_workflow_run - Removed
gluecron_handover - Removed
gluecron_import_action - Removed
gluecron_label_issue - Removed
gluecron_learning_status - Removed
gluecron_list_ai_workspaces - Removed
gluecron_list_deleted_repos - Removed
gluecron_list_flaky_tests - Removed
gluecron_list_loop_secrets - Removed
gluecron_list_pr_comments - Removed
gluecron_list_pr_conflicts - Removed
gluecron_list_prs - Removed
gluecron_list_ready_to_merge - Removed
gluecron_list_repo_secrets - Removed
gluecron_list_repo_tokens - Removed
gluecron_list_runners - Removed
gluecron_list_token_spend - Removed
gluecron_list_tokens - Removed
gluecron_list_tree - Removed
gluecron_list_variables - Removed
gluecron_list_workflow_runs - Removed
gluecron_merge_pr - Removed
gluecron_open_draft_pr - Removed
gluecron_pr_status_summary - Removed
gluecron_press_kill_switch - Removed
gluecron_prioritize_workflow_run - Removed
gluecron_propose_doc_update - Removed
gluecron_propose_migration - Removed
gluecron_propose_pr_conflict_resolution - Removed
gluecron_provision_pr_sandbox - Removed
gluecron_purge_repo - Removed
gluecron_read_file - Removed
gluecron_refactor_across_repos - Removed
gluecron_release_lease - Removed
gluecron_reopen_issue - Removed
gluecron_repo_explain_codebase - Removed
gluecron_repo_health - Removed
gluecron_repo_list_issues - Removed
gluecron_repo_rating - Removed
gluecron_repo_read_file - Removed
gluecron_repo_search - Removed
gluecron_request_changes - Removed
gluecron_rerun_failed_jobs - Removed
gluecron_resolve_pr_conflict - Removed
gluecron_restore_repo - Removed
gluecron_resume_token - Removed
gluecron_review_deployment - Removed
gluecron_revoke_all_credentials - Removed
gluecron_revoke_repo_token - Removed
gluecron_revoke_runner - Removed
gluecron_revoke_token - Removed
gluecron_rotate_token - Removed
gluecron_search_code - Removed
gluecron_search_issues - Removed
gluecron_search_prs - Removed
gluecron_search_repos - Removed
gluecron_security_ioc_hits - Removed
gluecron_security_scan - Removed
gluecron_semantic_search - Removed
gluecron_set_ai_workspace_quota - Removed
gluecron_set_auto_merge - Removed
gluecron_set_branch_protection - Removed
gluecron_set_loop_secret - Removed
gluecron_set_pr_ai_settings - Removed
gluecron_set_pr_draft - Removed
gluecron_set_repo_secret - Removed
gluecron_set_token_bucket - Removed
gluecron_set_variable - Removed
gluecron_ship_spec - Removed
gluecron_trigger_workflow - Removed
gluecron_undo_kill_switch - Removed
gluecron_unlabel_issue - Removed
gluecron_update_pr - Removed
gluecron_update_pr_branch - Removed
gluecron_update_repo - Removed
gluecron_voice_to_pr - Removed
gluecron_whoami - Removed
gluecron_write_file - Added
merjax_acquire_lease - Added
merjax_ai_cost_summary - Added
merjax_apply_patch - Added
merjax_approve_pr - Added
merjax_assign_issue - Added
merjax_atomic_multi_file_commit - Added
merjax_backup_status - Added
merjax_cancel_workflow_run - Added
merjax_chat_continue - Added
merjax_chat_with_repo - Added
merjax_ci_executor - Added
merjax_ci_health - Added
merjax_ci_queue_status - Added
merjax_clone_url - Added
merjax_close_issue - Added
merjax_close_pr - Added
merjax_comment_issue - Added
merjax_comment_pr - Added
merjax_commit_pr_conflict_resolution - Added
merjax_create_agent_session - Added
merjax_create_branch - Added
merjax_create_deploy_token - Added
merjax_create_issue - Added
merjax_create_pr - Added
merjax_create_repo_token - Added
merjax_create_runner_registration_token - Added
merjax_delete_branch - Added
merjax_delete_comment - Added
merjax_delete_file - Added
merjax_delete_loop_secret - Added
merjax_delete_repo - Added
merjax_delete_repo_secret - Added
merjax_delete_variable - Added
merjax_dismiss_review - Added
merjax_edit_comment - Added
merjax_explain_failure - Added
merjax_explain_repo - Added
merjax_find_symbol - Added
merjax_fork_repo - Added
merjax_generate_commit_message - Added
merjax_generate_pr_description - Added
merjax_generate_release_notes - Added
merjax_generate_tests - Added
merjax_get_agent_budget - Added
merjax_get_branch_protection - Added
merjax_get_commit - Added
merjax_get_diff - Added
merjax_get_pr - Added
merjax_get_pr_checks - Added
merjax_get_preview_url - Added
merjax_get_token - Added
merjax_get_variable - Added
merjax_get_workflow_logs - Added
merjax_get_workflow_run - Added
merjax_handover - Added
merjax_import_action - Added
merjax_label_issue - Added
merjax_learning_status - Added
merjax_list_ai_workspaces - Added
merjax_list_deleted_repos - Added
merjax_list_flaky_tests - Added
merjax_list_loop_secrets - Added
merjax_list_pr_comments - Added
merjax_list_pr_conflicts - Added
merjax_list_prs - Added
merjax_list_ready_to_merge - Added
merjax_list_repo_secrets - Added
merjax_list_repo_tokens - Added
merjax_list_runners - Added
merjax_list_token_spend - Added
merjax_list_tokens - Added
merjax_list_tree - Added
merjax_list_variables - Added
merjax_list_workflow_runs - Added
merjax_merge_pr - Added
merjax_open_draft_pr - Added
merjax_pr_status_summary - Added
merjax_press_kill_switch - Added
merjax_prioritize_workflow_run - Added
merjax_propose_doc_update - Added
merjax_propose_migration - Added
merjax_propose_pr_conflict_resolution - Added
merjax_provision_pr_sandbox - Added
merjax_purge_repo - Added
merjax_read_file - Added
merjax_refactor_across_repos - Added
merjax_release_lease - Added
merjax_reopen_issue - Added
merjax_repo_explain_codebase - Added
merjax_repo_health - Added
merjax_repo_list_issues - Added
merjax_repo_rating - Added
merjax_repo_read_file - Added
merjax_repo_search - Added
merjax_request_changes - Added
merjax_rerun_failed_jobs - Added
merjax_resolve_pr_conflict - Added
merjax_restore_repo - Added
merjax_resume_token - Added
merjax_review_deployment - Added
merjax_revoke_all_credentials - Added
merjax_revoke_repo_token - Added
merjax_revoke_runner - Added
merjax_revoke_token - Added
merjax_rotate_token - Added
merjax_search_code - Added
merjax_search_issues - Added
merjax_search_prs - Added
merjax_search_repos - Added
merjax_security_ioc_hits - Added
merjax_security_scan - Added
merjax_semantic_search - Added
merjax_set_ai_workspace_quota - Added
merjax_set_auto_merge - Added
merjax_set_branch_protection - Added
merjax_set_loop_secret - Added
merjax_set_pr_ai_settings - Added
merjax_set_pr_draft - Added
merjax_set_repo_secret - Added
merjax_set_token_bucket - Added
merjax_set_variable - Added
merjax_ship_spec - Added
merjax_trigger_workflow - Added
merjax_undo_kill_switch - Added
merjax_unlabel_issue - Added
merjax_update_pr - Added
merjax_update_pr_branch - Added
merjax_update_repo - Added
merjax_voice_to_pr - Added
merjax_whoami - Added
merjax_write_file
6 tool updates
- Added
gluecron_delete_loop_secret - Added
gluecron_list_loop_secrets - Added
gluecron_list_token_spend - Added
gluecron_resume_token - Added
gluecron_set_loop_secret - Added
gluecron_set_token_bucket
6 tool updates
- Added
gluecron_list_ai_workspaces - Added
gluecron_press_kill_switch - Added
gluecron_repo_rating - Added
gluecron_set_ai_workspace_quota - Added
gluecron_undo_kill_switch - Changed
gluecron_update_repo1 field changed- added
Input schema / properties / gate_test_enabledAdded value: +{ + "description": "Turn the GateTest scan on or off for this repository (Settings → Gates → GateTest scan; repo_settings.gate_test_enabled, off by default). Audited as gates.settings.update. A switch that is on scans only where the server has GATETEST_URL: gate_test.state says not_configured_on_server otherwise.", + "type": "boolean" +}
1 tool update
- Added
gluecron_set_pr_ai_settings
1 tool update
- Added
gluecron_revoke_all_credentials
1 tool update
- Changed
gluecron_create_repo_token1 field changed- changed
Input schema / properties / permissions / descriptionPrevious value: -"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/v2/repos/:owner/:repo/actions/runners and reads nothing of the repository); omitted keys are none; at least one must be read or write. Example: {\"actions\": \"read\"}, or {\"runners\": \"read\"} for a runner audit."New value: +"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/v2/repos/:owner/:repo/actions/runners and reads nothing of the repository; actions: read lists workflows, runs and jobs and reads run and job logs, masked and audited); omitted keys are none; at least one must be read or write. Example: {\"actions\": \"read\"}, {\"runners\": \"read\"} for a runner audit, or {\"runners\": \"read\", \"actions\": \"read\"} for a read-only CI audit token (the ci-audit preset: runners, workflows, runs, jobs and logs; no code, no secrets, no writes)."
3 tool updates
- Added
gluecron_propose_pr_conflict_resolution - Changed
gluecron_resolve_pr_conflict1 field changed- changed
Input schema / properties / choices / descriptionPrevious value: -"Hunk id → mine | main | both-mine-first | both-main-first | base | {kind:'custom', lines}"New value: +"Hunk id → mine | main | both-mine-first | both-main-first | base | ai | {kind:'custom', lines}"
- Changed
gluecron_update_repo1 field changed- added
Input schema / properties / conflict_resolution_modeAdded value: +{ + "description": "Who may settle merge conflicts with AI (Settings → Gates → Merge conflicts): manual (no AI) | review_first (default: AI proposes per block, a person accepts, edits or rejects) | auto_land (saved; acted on once the auto-land step ships — until then it behaves as review_first).", + "type": "string" +}
1 tool update
- Changed
gluecron_create_deploy_token2 fields changed- changed
Input schema / properties / deliver / descriptionPrevious value: -"\"token\" (default): the secret in this result. \"exchange\": a single-use 60 s URL git's credential helper spends — the secret never appears here."New value: +"\"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)." - changed
Input schema / properties / token_id / descriptionPrevious value: -"With deliver \"exchange\": a fresh exchange URL for this existing grant (one you created) instead of a new grant."New value: +"A fresh exchange URL for this existing grant (one you created) instead of a new grant."
1 tool update
- Changed
gluecron_create_deploy_token2 fields changed- added
Input schema / properties / deliverAdded value: +{ + "description": "\"token\" (default): the secret in this result. \"exchange\": a single-use 60 s URL git's credential helper spends — the secret never appears here.", + "type": "string" +} - added
Input schema / properties / token_idAdded value: +{ + "description": "With deliver \"exchange\": a fresh exchange URL for this existing grant (one you created) instead of a new grant.", + "type": "string" +}
6 tool updates
- Added
gluecron_ci_health - Added
gluecron_commit_pr_conflict_resolution - Changed
gluecron_create_repo_token1 field changed- changed
Input schema / properties / permissions / descriptionPrevious value: -"Object of level per permission — keys contents, issues, pull_requests, statuses, actions; values none | read | write; omitted keys are none; at least one must be read or write. Example: {\"actions\": \"read\"}."New value: +"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/v2/repos/:owner/:repo/actions/runners and reads nothing of the repository); omitted keys are none; at least one must be read or write. Example: {\"actions\": \"read\"}, or {\"runners\": \"read\"} for a runner audit."
- Added
gluecron_list_pr_conflicts - Added
gluecron_list_ready_to_merge - Added
gluecron_resolve_pr_conflict
1 tool update
- Changed
gluecron_create_runner_registration_token2 fields changed- added
Input schema / properties / exclusiveAdded value: +{ + "description": "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.", + "type": "boolean" +} - added
Input schema / properties / repositoriesAdded value: +{ + "description": "Exclusive runners only: comma-separated repository names of this owner it serves (default: all of them)", + "type": "string" +}
1 tool update
- Added
gluecron_security_ioc_hits
3 tool updates
- Added
gluecron_delete_branch - Added
gluecron_delete_comment - Added
gluecron_edit_comment
1 tool update
- Changed
gluecron_prioritize_workflow_run1 field changed- added
Input schema / properties / levelAdded value: +{ + "description": "normal (default) | high | critical — high and critical need a site admin", + "type": "string" +}
4 tool updates
- Added
gluecron_delete_variable - Added
gluecron_get_variable - Added
gluecron_list_variables - Added
gluecron_set_variable
Related MCP Connectors
GitHub Copilot MCP: code, repo, PR, workflow tools for AI assistants.
Team memory for AI coding agents and code reviews, reviewed by humans and served over MCP.
Repo intel for AI coding agents: overview, PRs, contributors, hot files, CI, deps. Remote MCP.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables automated AI-powered code review for pull requests across GitHub, GitLab, Bitbucket, and Azure DevOps via webhooks, and manual code review through MCP tools using Groq, Claude, or GPT-4.1-
- AlicenseNot gradedqualityBmaintenanceEnables AI tools to drive role-aware Git collaboration through nine MCP tools, including starting tasks, staging/committing/pushing changes, submitting pull requests with GitHub-native auto-merge, checking status, syncing, and listing team rosters.MIT

ThinkReview MCPofficial
AlicenseNot gradedqualityBmaintenanceHosted MCP server that enables AI code reviews on GitHub, GitLab, Azure DevOps, and Bitbucket PR/MR URLs via a single tool (review_url_code), integrating with Cursor, Claude Code, Claude Desktop, and GitHub Copilot through OAuth or Bearer token authentication.1MIT- AlicenseNot gradedqualityDmaintenanceA secure and scalable Git MCP server giving AI agents powerful version control for local and (soon) serverless environments.130 npmApache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.