agy-bridge
agy-bridge is an MCP server that lets Claude Code delegate heavy work to the Antigravity CLI (agy), keeping large outputs out of Claude's context window.
Analyze large or multiple files (
analyze_files) — logs, dumps, generated code, >200-line files, or >3 files at once, returning only the answer.Codebase archaeology (
deep_search) — git log/diff/blame spelunking, repo-wide greps, "when/why did X change" questions.Web/documentation lookups (
web_lookup) — library docs, API references, error messages, current versions, and newer-than-training-data knowledge.Adversarial second opinions (
adversarial_review) — plan critiques, design reviews, and pre-merge code review that hunts for flaws, edge cases, and security issues.Multi-turn sessions (
follow_up) — continue a prior delegation bysession_idwithout resending context.Raw delegation (
delegate) — arbitrary heavy tasks with full shell/file/web tool access in a givencwd.Automatic model routing and quota failover across available
agy models, plus per-callmodeloverride and configurable timeouts/truncation.
agy-bridge
An MCP bridge that lets Claude Code delegate heavy tasks to the Antigravity CLI (agy) — saving Claude's context window and tokens for what matters.
Claude sends a task → the bridge routes it to the best available model via agy → only the answer comes back. Large files, deep git searches, and web lookups never touch Claude's context.
Listed on
User → Claude Code → agy-bridge (MCP) → agy CLI → Gemini / Claude / GPT-OSS
← ← ←Why this over claude-to-agy?
claude-to-agy | agy-bridge | |
Tool surface | 1 generic | 6 purpose-built tools — Claude self-routes reliably |
Model selection | none (agy default only) | per-tool routing across all |
Multi-turn | stateless | session continuity — |
Output safety | unbounded | configurable truncation cap protects Claude's context |
Sandbox | no | optional |
Install | uvx (Python) | npx (Node) — zero install |
Related MCP server: codex-agy-bridge
Requirements
Node.js 18+
Antigravity CLI (
agy) installed and authenticated
Install
# 1. Register the MCP server (user scope = all projects).
# add-json bakes in a generous client-side timeout so long analyze_files /
# delegate calls don't trip Claude Code's tool-call deadline (see Timeouts).
claude mcp add-json -s user agy-bridge \
'{"command":"npx","args":["-y","agy-bridge"],"timeout":600000}'
# 2. Add delegation rules to your project (or ~/.claude/CLAUDE.md for global)
curl -o CLAUDE.md https://raw.githubusercontent.com/sshahzaiib/agy-bridge/main/CLAUDE.mdThe
"timeout": 600000(10 min, milliseconds) is the client-side tool-call deadline — without it, a cold-startanalyze_files(~40–50s) or a longdelegatecan hit Claude Code's default and returntimed out waiting for responsewhile the agy run is still going. If your client doesn't honor a per-servertimeout, set the global env varMCP_TOOL_TIMEOUT=600000instead. Details and the agy-side budgets are in Timeouts and cancellation.
Tools
Tool | Use for | Model routing (first available) |
| Files >200 lines, >3 files at once, logs, dumps, generated code | Gemini Flash (High) → Gemini Pro (Low) → fallback |
| git log/diff/blame archaeology, repo-wide greps | Gemini Flash (Medium) → (High) → fallback |
| Docs, API references, external/current knowledge | Gemini Flash (Medium) → (High) → fallback |
| Plan critiques, design and code reviews | Gemini Pro (High) → Gemini Flash (High) → fallback |
| Continue a prior session by | inherits the session |
| Anything else heavy | Gemini Flash (High) → fallback |
All tools accept optional cwd (project root) and model (an id or display name from agy models; validated, with available models listed on mismatch).
Every response ends with a footer:
---
[agy-bridge] model: Gemini Flash (High) | session: 1f0c…-d4 (use follow_up to continue)Model routing
On first use the bridge runs agy models (cached for the process lifetime) and picks the first available model in the tool's preference chain. Chain entries name a family and tier rather than a version (Gemini * Flash (High)), and * resolves to the newest version agy currently lists, so a Gemini release never silently breaks routing. Chains are Gemini-first; Claude Opus and GPT-OSS are appended as a last resort and only used when no Gemini model is listed. If none is available it falls back to AGY_DEFAULT_MODEL, and finally to agy's own default. agy silently ignores unknown --model values, so the bridge validates names up front instead of letting requests land on the wrong model.
Quota-aware failover
agy never surfaces quota exhaustion in print mode — it silently retries the 429 until its print-timeout, then exits 0 with empty output, which used to look like an indefinite hang. The bridge now watches each run's log file (via --log-file) and on RESOURCE_EXHAUSTED (code 429):
kills the agy process group immediately (no waiting out the timeout),
parses the reset time ("Resets in 4h24m") into an in-process cooldown registry,
retries the same prompt on the next model in the tool's chain,
skips cooled-down models on all subsequent calls until their quota resets.
Failovers are annotated in the response footer (failover: <model>: quota exhausted (resets in 4h24m)). Only when every candidate is exhausted does the call fail — in seconds, with reset times listed — instead of hanging.
Timeouts and cancellation
Each tool has its own default timeout sized to its job: web_lookup 120s, deep_search 180s, analyze_files / adversarial_review / follow_up 300s, delegate 600s. Setting AGY_TIMEOUT explicitly overrides all of them at once. To change a single tool, set AGY_TIMEOUT_<TOOL_NAME> instead (e.g. AGY_TIMEOUT_DEEP_SEARCH=300); a per-tool override takes precedence over the global AGY_TIMEOUT and the tool's default. The full set of per-tool variables is AGY_TIMEOUT_ANALYZE_FILES, AGY_TIMEOUT_DEEP_SEARCH, AGY_TIMEOUT_WEB_LOOKUP, AGY_TIMEOUT_ADVERSARIAL_REVIEW, AGY_TIMEOUT_FOLLOW_UP, and AGY_TIMEOUT_DELEGATE. The kill path escalates SIGTERM → SIGKILL across the whole process group, and the deadline fires even if agy's helper processes hold the output pipes open. Cancelling the tool call from the MCP client (e.g. pressing Esc in Claude Code) also kills the agy run instead of orphaning it.
Two timeout layers — align them. The timeouts above are the agy-side budget. Your MCP client (Claude Code) has its own, separate tool-call timeout, and if it is shorter than the agy budget the client gives up first — you'll see Error: timed out waiting for response (note: agy-bridge's own timeout reads agy timed out after Ns instead). The work is not lost: the agy session persists, so follow_up with the returned session_id retrieves the result. But the real fix is to make the client wait at least as long as agy: the Install command already sets a per-server timeout of 600000ms (scoped to the agy-bridge entry only). If you registered the server without it, re-run the add-json command from Install, or set the global env var MCP_TOOL_TIMEOUT=600000. Rule of thumb: client timeout ≥ agy budget.
Expected latency. Most of the perceived "slowness" is cold start: the first call in a session spawns the agy CLI and warms the model. A simple analyze_files over 3 files measures around 40–50s cold (≈46s observed), dropping on subsequent same-session calls. A first call that also hits a quota 429 takes longer while the bridge fails over. So a client timeout below ~60s will intermittently trip on cold starts even for "simple" questions — size it generously.
Configuration
All optional, via environment variables:
Variable | Default | Description |
|
| Path to the agy binary |
| per-tool | Seconds; overrides all per-tool timeouts at once (see above), passed as |
| per-tool | Seconds; overrides the timeout for a single tool only, e.g. |
|
| Truncation cap for tool output |
| unset | Fallback model when no chain entry is available (name, id, or |
|
| Pass |
|
| Run agy with |
|
|
|
Failure behavior
The bridge always fails loudly: agy errors surface as MCP tool errors with agy's actual stderr, and degraded model routing is annotated in the response footer. By default the calling agent (Claude) will typically do the work itself after a failure — visible in the transcript, but easy to stop noticing in a long session. Set AGY_ON_FAILURE=strict to append an explicit "do NOT perform this work yourself — report the failure to the user" instruction to every delegation error, so you keep control over when token savings are silently lost.
Development
npm install
npm test # vitest unit tests (exec mocked — no agy needed)
npm run typecheck
npm run build # tsup → dist/index.jsSupport
agy-bridge is free and MIT-licensed. If it saves you tokens every day, Ko-fi keeps it maintained.
Contributors
Contributions are welcome — open an issue or PR.
Star History
License
MIT
Available Tools
6 toolsadversarial_reviewA
Get an adversarial second opinion from a different model family (Gemini Pro). ALWAYS use this for plan critiques, design reviews, and pre-merge code review: it hunts for flaws, edge cases, security issues, and unstated assumptions you may have missed.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Absolute path to the working directory / project root. Defaults to the server's cwd. | |
| files | No | File paths to review instead of inline content. | |
| focus | No | Optional focus area, e.g. 'security', 'concurrency'. | |
| model | No | Override the model: a name or id from `agy models`, or a `*` version pattern such as "Gemini * Pro (High)". Normally omit — the tool routes automatically. | |
| content | No | Inline content to review (plan, diff, code snippet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose real behavioral traits beyond the name: routing to a different model family (Gemini Pro) and an adversarial hunting posture covering edge cases, security issues and unstated assumptions. It omits cost/latency implications of a second-model call, whether content is sent externally, and what a review returns (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?
Two sentences, front-loaded with the what and the model-family detail, then the usage triggers. The trailing list 'flaws, edge cases, security issues, and unstated assumptions you may have missed' is slightly padded and 'you may have missed' restates the adversarial premise.
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?
All five parameters are optional, so the agent must decide for itself that content or files is required to make the call useful, and the description never says so. Combined with no output schema and no note on what a review produces or costs, the definition is workable but leaves meaningful gaps for a tool that spends a second model 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 description coverage is 100%, so all five parameters are already documented, and the description does not discuss any of them. It implicitly maps 'plan', 'design', 'code review' to the content/files inputs but adds no syntax, precedence, or combination rules beyond the schema. 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?
Names a specific verb+resource: an adversarial second opinion sourced from a different model family (Gemini Pro), with the issue classes it targets. It is clearly distinct from web_lookup and deep_search, but it never distinguishes itself from the sibling 'delegate', which is the one tool an agent could plausibly 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?
Gives explicit when-to-use triggers: plan critiques, design reviews, pre-merge code review, and states them emphatically ('ALWAYS'). It offers no when-not guidance and never names an alternative tool, so an agent still has to infer the boundary against 'delegate' or 'analyze_files'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_filesA
Delegate file analysis to the Antigravity CLI (Gemini) instead of reading files yourself. USE THIS whenever a file is large (>200 lines) or the task spans more than 3 files: logs, database dumps, generated code, cross-file reviews, comparisons. The files never enter your context — only the answer does.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Absolute path to the working directory / project root. Defaults to the server's cwd. | |
| files | Yes | File paths to analyze (relative to cwd or absolute). | |
| model | No | Override the model: a name or id from `agy models`, or a `*` version pattern such as "Gemini * Pro (High)". Normally omit — the tool routes automatically. | |
| question | Yes | What you want to know about these files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does disclose the single most important behavioral trait: the files never enter the agent's context and only the answer returns. That is exactly the non-obvious fact an agent needs in order to decide between this and reading files directly. It leaves out secondary behavior such as latency/cost, authentication requirements for the external CLI, and what happens when a file path is invalid or too large.
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 earning its place: the action and mechanism first, the trigger conditions second, the payoff (context savings) last. The imperative 'USE THIS' is front-loaded where a scanning agent will catch it, and there is no 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 four-parameter delegation tool with no annotations and no output schema, the description covers the decision-relevant essentials: what it does, when to reach for it, and that only a synthesized answer comes back. The remaining gap is what that answer looks like and how failures surface, which matters somewhat because there is no output schema to describe the return 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 description coverage is 100%, so the schema already explains cwd, files, model, and question thoroughly, and the description adds no syntax, format, or routing detail beyond it. The baseline of 3 applies; the one thing it could have added, guidance on when to override the model, is already deferred to the schema's 'Normally omit' note.
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 ('Delegate file analysis') plus the mechanism ('Antigravity CLI (Gemini)'), and explicitly contrasts it with the default behavior ('instead of reading files yourself'). An agent can immediately tell this apart from sibling tools like deep_search or web_lookup, which operate on the web rather than on local files.
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, actionable triggers — files over 200 lines, tasks spanning more than 3 files — and enumerates the shapes of work it suits (logs, database dumps, generated code, cross-file reviews, comparisons). What's missing is the inverse guidance: when NOT to use it (e.g., small files, single-file edits, cases where exact file contents must be quoted back), and no sibling tool is named as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_searchA
Delegate codebase archaeology to the Antigravity CLI: git log/diff/blame spelunking, wide greps across a repo, 'when/why did X change', 'where is Y used'. USE THIS instead of running many search commands yourself — it saves your context.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Absolute path to the working directory / project root. Defaults to the server's cwd. | |
| model | No | Override the model: a name or id from `agy models`, or a `*` version pattern such as "Gemini * Pro (High)". Normally omit — the tool routes automatically. | |
| query | Yes | What to find, e.g. 'when was the auth middleware refactored and why'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose meaningful behavior — that work is delegated to an external CLI and that the point is context economy. It does not say whether the operation is strictly read-only, what the response looks like (report vs. raw hits), or anything about latency/cost of spawning a CLI 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 sentences, front-loaded with the delegation model, then the concrete capability list, then the selection rule. No filler; even the 'archaeology' metaphor earns its place by framing history-focused search.
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 three-parameter, one-required tool with no annotations and no output schema, the description covers intent and routing well. The notable gap is return shape and safety profile — an agent cannot tell from this text what it gets back or whether the CLI can touch the working tree.
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 cwd, model, and query are all documented in the schema and baseline 3 applies. The description's example phrasings ('when/why did X change', 'where is Y used') usefully signal that query should be natural language, but that meaning is largely already conveyed by the schema's own example.
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 ('Delegate codebase archaeology... git log/diff/blame spelunking, wide greps') and concrete example intents, so an agent knows exactly what class of work it covers. It does not name or contrast the sibling tools (analyze_files, web_lookup, delegate), leaving the codebase-vs-file-analysis boundary 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?
'USE THIS instead of running many search commands yourself — it saves your context' is an explicit selection rule with the alternative it displaces. It stops short of stating when NOT to use it (e.g., a single known file read, or a plain web lookup), so the exclusion side is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delegateA
Raw delegation to the Antigravity CLI for heavy tasks that don't fit the other tools. agy has full tool access (shell, file reads, web) in the given cwd.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Absolute path to the working directory / project root. Defaults to the server's cwd. | |
| model | No | Override the model: a name or id from `agy models`, or a `*` version pattern such as "Gemini * Pro (High)". Normally omit — the tool routes automatically. | |
| prompt | Yes | The complete task prompt for agy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the key trait: agy has full tool access (shell, file reads, web) within the given cwd, so an agent knows this can mutate files and execute commands. However, it says nothing about blocking behavior, timeouts, cost, permissions, or whether shell execution is sandboxed — significant gaps for an unrestricted delegation 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?
Two sentences, no filler, with the core identity and the risk-relevant capability disclosure front-loaded. Every clause earns its place.
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 powerful, unannotated delegation tool with no output schema, the description omits what comes back (raw text, transcript, artifacts), whether the call blocks until completion, and any timeout or cost ceiling. The capability disclosure is useful but the operational picture is incomplete.
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 cwd, model, and prompt are already documented in the schema, including the advice to normally omit model. The description only reinforces cwd scoping ('in the given cwd') and adds no format or content guidance for prompt beyond 'complete task prompt.' 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: raw delegation to the Antigravity CLI (agy), scoped to 'heavy tasks that don't fit the other tools.' The agent can tell this is a general-purpose escape hatch, though it never names which sibling (deep_search, analyze_files) it replaces in a given situation.
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?
Offers a loose exclusion criterion ('tasks that don't fit the other tools') but no positive selection criteria and no named alternatives or prerequisites. Usage is implied rather than spelled out, leaving the agent to guess when delegation beats a dedicated sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
follow_upA
Continue a previous Antigravity session by session_id (returned by every other tool). USE THIS for follow-up questions about a prior delegation — the full prior context is already on agy's side, so you don't resend anything.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Absolute path to the working directory / project root. Defaults to the server's cwd. | |
| model | No | Override the model: a name or id from `agy models`, or a `*` version pattern such as "Gemini * Pro (High)". Normally omit — the tool routes automatically. | |
| question | Yes | The follow-up question. | |
| session_id | Yes | The session id returned by a previous agy-bridge call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden. It does add real behavioral context — that the prior context lives on agy's side and need not be resent — but says nothing about what happens with an invalid or expired session_id, whether the call can trigger side effects, or how model/cwd overrides interact with the resumed session.
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, zero waste, and the operational constraint (context already on agy's side, nothing to resend) is front-loaded where the agent will act on 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 four-parameter continuation tool with no output schema and no nested objects, the definition covers the essential behavior — session continuity and no resend. Missing only edge-case behavior around invalid sessions, which is a modest gap rather than a blocking one.
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 are already documented in the schema. The description adds only a marginal gloss on session_id ('returned by every other tool'), leaving cwd and model entirely to the schema. 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?
States a specific verb and resource — 'Continue a previous Antigravity session by session_id' — and immediately scopes it to follow-up questions about a prior delegation, which cleanly separates it from delegate and the other siblings. An agent can identify the tool 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 explicit when-to-use guidance ('USE THIS for follow-up questions about a prior delegation') and explains why no payload resend is needed. It stops short of naming delegate as the alternative for new work or stating what to do when a session is missing/expired, so the routing guidance is clear but not fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_lookupA
Delegate a web/documentation lookup to the Antigravity CLI (Gemini with web access): library docs, API references, error messages, current versions, external knowledge. USE THIS when you need information you don't have or that may be newer than your training data.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Absolute path to the working directory / project root. Defaults to the server's cwd. | |
| model | No | Override the model: a name or id from `agy models`, or a `*` version pattern such as "Gemini * Pro (High)". Normally omit — the tool routes automatically. | |
| query | Yes | What to look up on the web. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses the backend (Antigravity CLI, Gemini with web access), which tells the agent this is an outbound delegated call. It says nothing about whether the operation is read-only, latency or cost characteristics, failure modes, or what the response 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?
Two sentences, front-loaded with the mechanism and followed by the usage trigger. No wasted words and no redundancy with 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 tool with no annotations and no output schema, the description should indicate what comes back — raw page text, a synthesized answer, or citations — since the schema cannot. It also omits any note on result freshness or scope limits, leaving an agent unable to predict the return value's 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 description coverage is 100%, so query, cwd, and model are already documented in the schema, including the advice to normally omit model. The description adds no guidance on how to phrase the query or when to supply cwd, so 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 — delegate a web/documentation lookup to the Antigravity CLI — and enumerates the content types it handles (library docs, API references, error messages, current versions). It does not differentiate itself from plausible siblings like deep_search or delegate, so an agent still has to 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?
The 'USE THIS when you need information you don't have or that may be newer than your training data' clause gives a clear positive trigger. However, it names no alternatives and no exclusions, so the choice between web_lookup, deep_search, and delegate is left unstated.
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.
6 tool updates
v0.5.0- Changed
adversarial_review1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Override the model (exact name from `agy models`, e.g. \"Gemini 3.1 Pro (High)\"). Normally omit — the tool routes automatically."New value: +"Override the model: a name or id from `agy models`, or a `*` version pattern such as \"Gemini * Pro (High)\". Normally omit — the tool routes automatically."
- Changed
analyze_files1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Override the model (exact name from `agy models`, e.g. \"Gemini 3.1 Pro (High)\"). Normally omit — the tool routes automatically."New value: +"Override the model: a name or id from `agy models`, or a `*` version pattern such as \"Gemini * Pro (High)\". Normally omit — the tool routes automatically."
- Changed
deep_search1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Override the model (exact name from `agy models`, e.g. \"Gemini 3.1 Pro (High)\"). Normally omit — the tool routes automatically."New value: +"Override the model: a name or id from `agy models`, or a `*` version pattern such as \"Gemini * Pro (High)\". Normally omit — the tool routes automatically."
- Changed
delegate1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Override the model (exact name from `agy models`, e.g. \"Gemini 3.1 Pro (High)\"). Normally omit — the tool routes automatically."New value: +"Override the model: a name or id from `agy models`, or a `*` version pattern such as \"Gemini * Pro (High)\". Normally omit — the tool routes automatically."
- Changed
follow_up1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Override the model (exact name from `agy models`, e.g. \"Gemini 3.1 Pro (High)\"). Normally omit — the tool routes automatically."New value: +"Override the model: a name or id from `agy models`, or a `*` version pattern such as \"Gemini * Pro (High)\". Normally omit — the tool routes automatically."
- Changed
web_lookup1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Override the model (exact name from `agy models`, e.g. \"Gemini 3.1 Pro (High)\"). Normally omit — the tool routes automatically."New value: +"Override the model: a name or id from `agy models`, or a `*` version pattern such as \"Gemini * Pro (High)\". Normally omit — the tool routes automatically."
6 tool updates
v0.1.0- First observed
adversarial_review - First observed
analyze_files - First observed
deep_search - First observed
delegate - First observed
follow_up - First observed
web_lookup
TDQS
Scored across 6 tools
The tools have mostly distinct purposes: file analysis, codebase search, web lookup, adversarial review, session follow-up, and raw delegation. The generic `delegate` tool overlaps conceptually with all the specialized delegation tools, but its description frames it as a fallback for heavy tasks, which reduces confusion.
Names include verb_noun (`analyze_files`), adjective_noun (`deep_search`, `adversarial_review`), noun_noun (`web_lookup`), verb_preposition (`follow_up`), and a bare verb (`delegate`). The names are readable and action-oriented, but they do not follow a single predictable convention.
Six tools is a well-scoped set for a delegation bridge, with each tool covering a distinct delegation mode. The raw fallback tool supports edge cases without bloating the surface.
The surface covers the main delegation workflows: file analysis, codebase search, web lookup, adversarial review, session continuation, and raw fallback. Minor gaps exist around explicit session management, such as listing or cancelling sessions, but agents can work around these via `delegate` or `follow_up`.
Maintenance
Related MCP Connectors
Source-checked CLI guides and model-aware planning for Claude Code, Codex, and Grok Build.
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
Related MCP Servers
- AlicenseBqualityBmaintenanceA lightweight MCP bridge that lets Claude Code delegate heavy tasks to the Antigravity CLI - saving context window and tokens for what matters.112MIT
- AlicenseBqualityAmaintenanceAn MCP bridge that lets Codex delegate long-running agent work to the Antigravity CLI, providing observable and resumable tool-based execution with project scoping.1446 PyPI16MIT
- AlicenseNot gradedqualityDmaintenanceMCP bridge for calling local coding-agent CLIs (Codex, Claude) from another agent, enabling bounded tasks like code review, verification, and bug hunting.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that lets Claude Code call the Google Antigravity CLI (agy) headlessly for a second opinion from a different model family, or to have agy read project files on Claude's behalf so large files never enter Claude's context window.24 npmMIT