Skip to main content
Glama

agy-agent-mcp

test

An MCP server that turns the Antigravity CLI (agy) into five sub-agent tools. You delegate a task, the call blocks, and you get the sub-agent's final report back. Several delegations can run at once, each with its own transcript and result.

Install

Requires Node >= 22.6 and an authenticated agy CLI.

npm install -g agy-agent-mcp

Register with OpenCode, Claude Code, or Antigravity itself:

# OpenCode
opencode mcp add agy -- agy-agent-mcp
# Claude Code
claude mcp add agy -- agy-agent-mcp
# Antigravity
agy mcp add agy-agent agy-agent-mcp

If agy is not on PATH, add --env AGY_BIN=/path/to/agy to any of the above.

OpenCode: pass --global to mcp add to register once for every project (writes ~/.config/opencode/opencode.json). Project configs defining the same server name override the global entry, so remove per-project agy blocks after switching.

After upgrading the installed package, restart the MCP client or reload its catalog (opencode api post /api/location/reload -d '{}' for OpenCode) — sessions spawned before the upgrade keep replaying the old boot failure otherwise.

From a local checkout (npm install first): opencode mcp add agy -- "$(pwd)/bin/mcp.mjs".

Related MCP server: sub-antigravity

Quickstart

Call general_task to delegate a coding task and wait for the final report:

{
  "name": "general_task",
  "arguments": {
    "prompt": "Fix failing tests in test/parser.test.ts and verify the build passes",
    "cwd": "/path/to/project"
  }
}

The call blocks until the sub-agent finishes and returns its summary:

{
  "task_id": "task_a1b2c3d4",
  "status": "success",
  "response": "Fixed the off-by-one error in src/parser.ts and verified all tests pass.",
  "usage": {
    "input_tokens": 12450,
    "output_tokens": 830,
    "total_tokens": 13280
  },
  "files_touched": ["src/parser.ts", "test/parser.test.ts"],
  "conversation_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "stream_file": "/tmp/agy-agent-mcp/tasks/task_a1b2c3d4.stream",
  "transcript_file": "/tmp/agy-agent-mcp/tasks/task_a1b2c3d4.ndjson"
}

A refused call returns {"error": "..."} with isError: true, the message names the offending argument, and nothing is spawned:

{
  "error": "missing required argument: prompt"
}

A failed run comes back with isError: true and status of error, timeout or quota_error, and error carries the CLI's own message.

Tools

Tool

Mode

Default Effort

Purpose

general_task

accept-edits

medium

Delegate a coding task that may edit files and wait for the report.

explore_task

plan

low

Delegate a read-only diagnosis or exploration task without editing files.

watch_task

—

—

Inspect live transcripts, poll progress, collect results, or cancel runs.

list_models

—

—

List model IDs accepted by the model argument.

list_agents

—

—

List custom agent profiles accepted by the agent argument.

general_task and explore_task

general_task runs in accept-edits mode (it may edit files), default effort: "medium". explore_task runs in plan mode (read-only), default effort: "low". Everything else is the same for both:

  • prompt (string, required): Full, self-contained task description for the sub-agent.

  • model (string, optional, default: CLI default): Model ID to use (e.g. gemini-3.8-flash).

  • effort (string low|medium|high, optional): Reasoning effort tier ("medium" default for general_task, "low" for explore_task).

  • agent (string, optional, default: CLI default): Antigravity agent profile (see list_agents).

  • cwd (string, optional, default: server cwd): Project directory for the delegated task.

  • background (boolean, optional, default: false): Start task detached in background and return handle immediately.

  • timeout_ms (integer 0..3600000, optional, default: 900000): Idle timeout in ms before killing silent child (0 disables).

  • edit_scope (array of strings, optional, default: unset): Paths defining expected edit boundary for change auditing.

  • add_dirs (array of strings, optional, default: unset): Extra directories to add to workspace (--add-dir).

  • sandbox (boolean, optional, default: false): Enable Antigravity terminal command sandboxing (--sandbox).

  • auto_approve (boolean, optional, default: false): Pass --dangerously-skip-permissions to stop headless auto-denials.

  • project (string, optional, default: unset): Antigravity project ID or name.

  • conversation_id (string, optional, default: unset): Existing Antigravity conversation UUID to resume.

A tier-carrying model ID (e.g. gemini-3.8-flash-high) already encodes its tier and must not be paired with a conflicting effort. Headless runs never prompt: tools requiring user confirmation are denied automatically and surfaced in denied_actions. Add rules under permissions.allow in your Antigravity settings.json to grant access.

watch_task

Reads recent activity, polls progress, collects complete results, or stops runs:

  • stream_file (string, optional, default: latest run): State path, task_<id>.stream filename, or task ID.

  • tail_lines (integer 0..2000, optional, default: 400): Trailing transcript lines to return (0 for all).

  • wait (boolean, optional, default: false): Wait for run to finish and return complete final result in one call.

  • cancel (boolean, optional, default: false): Stop the running task immediately. Cannot combine with wait: true.

list_models

Lists model IDs accepted by model. Takes no arguments (any argument is refused). Output: Raw CLI output in models and parsed model names in model_ids.

list_agents

Lists agent profiles accepted by agent (rejects any arguments). Output: Configured custom agent profiles in agents.

Two ways to delegate

  • Way 1 — just delegate: The call blocks until the sub-agent finishes, and you get the final report back.

  • Way 2 — delegate and collect later: Pass background: true to receive a handle immediately, then:

    • watch_task({ stream_file, wait: true }) collects the complete result in one call without polling;

    • watch_task alone polls live transcript lines and the step digest while running;

    • cancel: true stops the in-flight child process.

Several delegations can run concurrently, each with its own transcript and result. When runs share a git working tree, files_touched and scope_violations may include other runs' changes, which the result flags with audit_note. A wait for a run owned by another server process is refused with an error envelope telling you to poll instead; a cancel for such a run is reported as ignored, with a hint that the run belongs to another process.

Watching a run live

Every run streams live activity to <AGY_MCP_STATE_DIR>/task_<id>.stream (default /tmp/agy-agent-mcp/tasks/task_<id>.stream). The result is the sub-agent's summary, not its transcript; the transcript is on disk (.stream for humans, .ndjson for machines) and the result carries the paths. You can watch any run live from a terminal with tail -f:

tail -f /tmp/agy-agent-mcp/tasks/task_<id>.stream

Sample transcript:

session open · cwd=/tmp/probe · permission_mode=request-review · tools=60
● user_input
● agent_response
  ⎿ done in 3.5s · 8059 tokens
← Write /tmp/probe/hello.txt
  ⎿ done in 1.2s
→ Read /tmp/probe/hello.txt
  ⎿ 1 lines, 6 bytes · done in 0.02s
● agent_response
Created /tmp/probe/hello.txt with the word probe.
  ⎿ done in 3.4s · 2198 tokens
== done: status=SUCCESS · 12.1s

Whether the client shows live progress depends on the client (OpenCode does not, Claude Code does). Call watch_task for an in-protocol view of the live step digest (steps, step_count, phase, usage_latest) and recent transcript lines.

Live-follow companion CLI

npx agy-agent-follow --model gemini-3.8-flash --effort high "summarize the open TODOs in src/ in one paragraph"
  • Delegates through the same runner as the MCP tools; every mirrored transcript line is printed to stdout as it is written, with the machine-readable result JSON right before exit (exit code 0 only on status: "success").

  • --tool general|explore switches the posture (accept-edits vs read-only plan), plus --cwd and --timeout-ms.

  • --effort low|medium|high sets the reasoning tier; a model ID that already carries one (e.g. gemini-3.8-flash-high) must not repeat a different tier — that combination is refused locally, before any task is spawned.

  • Ctrl-C / SIGTERM kill the in-flight agy child (receipts in the same tasks directory).

If something goes wrong

Symptom

Cause

What to do

Refused call

Input argument validation failed before any child process was spawned.

Fix the argument named in the error message and call the tool again.

Failed run

The sub-agent exited non-zero, timed out, or hit a quota ceiling.

Inspect error and notes. Increase timeout_ms for timeouts, or retry after quota resets.

Missing permission

A tool required user approval that headless execution cannot provide.

Pass auto_approve: true (pair with sandbox: true), or add allow-rules in your own Antigravity settings.json.

Unknown model ID

The CLI does not recognize the ID, or it carries a tier that conflicts with an explicit effort.

list_models only lists tier-carrying IDs (e.g. gemini-3.8-flash-high); a bare ID such as gemini-3.8-flash is valid but will not appear there. Use either form, and do not pass a conflicting effort.

Configuration

Variable

Default

Purpose

AGY_BIN

agy

Path to the Antigravity CLI binary.

AGY_MCP_IDLE_TIMEOUT_MS

900000

Per-run idle timeout in ms (15 min, resets on child output; 0 disables).

AGY_MCP_PRINT_TIMEOUT_MS

0 (off)

Hard wall-clock timeout ceiling per run in ms (0 disables).

AGY_MCP_ROOT

unset

Directory jail restricting allowed task cwd and edit_scope paths.

AGY_MCP_STATE_DIR

/tmp/agy-agent-mcp/tasks

Directory for task .stream transcripts and .ndjson receipts.

AGY_MCP_RETENTION_DAYS

7

Days to retain task transcripts and receipts on startup sweep (0 disables).

AGY_MCP_DENY_AUTO_APPROVE

unset

Set to 1 or true to disable auto_approve across all calls.

Development

npm test               # offline test suite (test/client6.ts, fake agy binary)
node test/client.ts    # maintainer live e2e test (requires agy auth + trusted workspace)
npm run lint           # check formatting and lint rules with Biome
npm run lint:fix       # auto-apply Biome formatting and safe fixes

See CONTRIBUTING.md for development setup (behavior lives in code and the test suite's summary lines).

MIT, see LICENSE.

Available Tools

5 tools
explore_taskRun read-only Antigravity exploration taskA

Delegate read-only task to agy sub-agent (plan mode, read-only). Prompt must be self-contained. Blocks until finished, returning report (status, response, usage, files_touched, transcript paths). Default effort: low. background: true returns handle immediately (collect with watch_task). conversation_id resumes earlier thread. Headless runs auto-deny gated tools (in denied_actions; auto_approve skips).

NameRequiredDescriptionDefault
cwdNoTask cwd (defaults to server cwd).
agentNoAgent profile (see list_agents).
modelNoModel (e.g. gemini-3.8-flash). Tier-carrying id (e.g. gemini-3.8-flash-high) encodes tier and wins over effort; pairing with different effort is refused locally.
effortNoEffort: low|medium|high (bare models; tier-carrying ids win).
promptYesSelf-contained task prompt for sub-agent.
projectNoProject ID or name.
sandboxNoTerminal sandbox flag (--sandbox).
add_dirsNoExtra workspace dirs (--add-dir).
backgroundNoRun in background; collect with watch_task. Emits no progress notifications.
edit_scopeNoAllowed edit paths; out-of-scope edits flag in scope_violations.
timeout_msNoIdle timeout in ms (0..3600000; 0 disables; default 900000).
auto_approveNoPass --dangerously-skip-permissions to avoid auto-denying tools. Pair with sandbox.
conversation_idNoExisting conversation ID to resume.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present the description carries the full burden and does so: it discloses that the call blocks until completion, the exact result payload (status, response, usage, files_touched, transcript paths), the default effort, and that headless runs auto-deny gated tools with denied_actions recorded unless auto_approve is set. These are non-obvious runtime behaviors an agent could not infer 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and mode, then behavior, then parameter notes; nearly every clause carries information. The telegraphic style (e.g. 'in denied_actions; auto_approve skips') is dense and slightly elliptical, costing a bit of readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, no-annotation, no-output-schema tool, the description covers blocking semantics, return shape, background collection, and permission denial well. It says nothing about timeout behavior, failure modes, or what status values are possible, which are the remaining gaps for an agent planning recovery.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds value by stating the default effort is 'low' and explaining that conversation_id continues an earlier thread rather than starting fresh. It also ties background:true to watch_task, meaning not already conveyed by the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delegate read-only task to agy sub-agent') plus the execution mode ('plan mode, read-only'), which implicitly separates it from the sibling general_task. An agent can pick this tool for read-only exploration 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operating guidance: prompt must be self-contained, background:true yields a handle to collect with watch_task, and conversation_id resumes a prior thread. It never explicitly contrasts with general_task or says when NOT to use this tool, so it stops short of a full routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

general_taskRun general-purpose Antigravity sub-agent taskA

Delegate coding task to agy sub-agent (accept-edits mode, may edit files). Prompt must be self-contained. Blocks until finished, returning report (status, response, usage, files_touched, transcript paths). Default effort: medium. background: true returns handle immediately (collect with watch_task). conversation_id resumes earlier thread. Headless runs auto-deny gated tools (in denied_actions; auto_approve skips).

NameRequiredDescriptionDefault
cwdNoTask cwd (defaults to server cwd).
agentNoAgent profile (see list_agents).
modelNoModel (e.g. gemini-3.8-flash). Tier-carrying id (e.g. gemini-3.8-flash-high) encodes tier and wins over effort; pairing with different effort is refused locally.
effortNoEffort: low|medium|high (bare models; tier-carrying ids win).
promptYesSelf-contained task prompt for sub-agent.
projectNoProject ID or name.
sandboxNoTerminal sandbox flag (--sandbox).
add_dirsNoExtra workspace dirs (--add-dir).
backgroundNoRun in background; collect with watch_task. Emits no progress notifications.
edit_scopeNoAllowed edit paths; out-of-scope edits flag in scope_violations.
timeout_msNoIdle timeout in ms (0..3600000; 0 disables; default 900000).
auto_approveNoPass --dangerously-skip-permissions to avoid auto-denying tools. Pair with sandbox.
conversation_idNoExisting conversation ID to resume.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it does substantial work: it discloses that the call blocks until completion, enumerates the report fields returned, states the default effort level, explains background-handle behavior, and warns that headless runs auto-deny gated tools listed in denied_actions. It stops short of covering failure modes, cost/latency implications of long blocking runs, or concurrency limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and every subsequent sentence carries distinct operational information. The telegraphic, comma-spliced style packs a lot in but makes some clauses (headless auto-deny / auto_approve) harder to parse on first read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter delegation tool with no annotations and no output schema, the description is unusually complete: it explains blocking behavior, return payload fields, background retrieval via watch_task, thread resumption, permission denial in headless mode, and the edit-permission profile. Remaining gaps are sibling disambiguation against explore_task and guidance on timeout/sandbox interactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter including background, conversation_id, auto_approve, and effort. The description adds only a couple of facts not in the schema, notably the medium default effort and the reinforced self-containment requirement for prompt, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: delegate a coding task to the agy sub-agent, with the key qualifier that it runs in accept-edits mode and may edit files. That edit capability implicitly separates it from explore_task, but the sibling is never named, so the distinction 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operational context: the prompt must be self-contained, background: true returns a handle to collect with watch_task, and conversation_id resumes an earlier thread. What it lacks is an explicit rule for choosing between general_task and explore_task (read-only exploration), which is the most likely sibling confusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsList available agy agentsA

List agent profiles for agent argument. Returns agents (raw agy agents output). Empty output means no custom agent configured.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses the return shape ('raw agy agents output') and the empty-result semantics, but omits whether built-in agents are included, ordering, or failure behavior. Read-only nature is only implied by 'List'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose and return semantics, with no filler. The terseness comes at some cost in clarity around what 'agy agents output' contains.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read tool with no output schema, the description covers purpose, return format, and empty-result meaning. Only minor gaps remain, such as agent categorization and ordering, which are unlikely to block correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline of 4 applies. The description does add value by connecting the tool output to the 'agent' argument of other tools, which the empty schema cannot convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List agent profiles') and ties it to a concrete consumer ('for agent argument'), which makes the purpose actionable. It is reasonably distinguishable from list_models, though the domain jargon 'agy agents' is unexplained and the tie to siblings is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the agent must infer that this is called to discover valid values for the 'agent' argument. The note that empty output means no custom agent configured is a useful usage signal, but there is no explicit when-to-use/when-not guidance or naming of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsList available agy modelsA

List models for model argument. Returns models (raw agy models output) and model_ids (parsed ids). CLI lists tier-carrying ids only; bare ids like gemini-3.8-flash are valid for model but not in list.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses return values (models raw output, model_ids parsed ids) and a key behavioral caveat: the CLI lists only tier-carrying ids, while bare ids are valid but omitted. It does not explicitly state read-only safety, but the nature of a list operation is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the purpose, then return details and a crucial caveat. Every sentence adds value without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, annotation-free tool with no output schema, the description explains the action, return values, and an important limitation. Nothing essential for an agent 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema baseline is 4. The description references a 'model argument' but that is not a parameter of this tool; no additional parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (List) and resource (models) and contextualizes it for the model argument. It does not explicitly differentiate from sibling tools like list_agents, but the resource is distinct enough for an agent to identify its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context: use this to find models for the model argument, and explains that the returned list may not include all valid bare ids. No explicit when-not or alternatives are given, but the intended usage is implicit and sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watch_taskWatch live or recent task stream transcriptA

Read transcript tail of an agy run (snapshot, not follow; no args = latest run). Digest: steps (50 most recent), step_count (total; step_count > steps.length means clipped), phase, elapsed_seconds, usage_latest, content (raw tail). Finished runs carry complete final result (failed run says why). wait: true blocks until finished in one call (not combinable with cancel; cannot await foreign run). cancel: true stops owned run (foreign/ambiguous reported ignored with hint).

NameRequiredDescriptionDefault
waitNoBlock until finished and return result in one call. Incompatible with cancel; cannot await foreign run.
cancelNoStop running task owned by this process and report cancelled.
tail_linesNoTrailing lines (1..2000, default 400; 0 returns all, capped at 200k chars).
stream_fileNoTranscript or task ID. Omit for latest run.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so well: it discloses snapshot semantics, digest contents including clipping behavior, final-result availability for finished runs, blocking behavior for wait, and ownership rules for cancel. It also notes that foreign/ambiguous cancel requests are ignored with a hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information is front-loaded with the core purpose first, then digest contents, then wait/cancel behavior. The dense single paragraph is efficient and every sentence adds value, though the density slightly reduces scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 fully explains the return digest (steps, step_count with clipping indicator, phase, elapsed_seconds, usage_latest, content). It covers everything an agent needs to call and interpret the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters. The description adds a few useful details (no args means latest run, wait/cancel interaction, tail digest meaning) but does not meaningfully extend parameter semantics beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (transcript tail of an agy run), with scope details like snapshot-not-follow and no-args-latest. An agent can distinguish it from list_agents or general_task 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains key usage conditions: omit args for latest run, use wait:true to block until finished, cancel:true to stop owned runs, and notes incompatibility between wait and cancel. It lacks explicit routing against siblings, but gives clear operational context.

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.

  1. 5 tool updatesv0.4.0
    • Changedexplore_task15 fields changed
      • changedInput schema / properties / add_dirs / description
        Previous value: -"Extra directories to add to the task's workspace (--add-dir, repeatable)"New value: +"Extra workspace dirs (--add-dir)."
      • changedInput schema / properties / agent / description
        Previous value: -"Antigravity agent profile to use (see list_agents)"New value: +"Agent profile (see list_agents)."
      • changedInput schema / properties / auto_approve / description
        Previous value: -"Expert switch: pass --dangerously-skip-permissions so headless runs stop auto-denying gated tools. Pair it with sandbox when granting it. Allowed by this server."New value: +"Pass --dangerously-skip-permissions to avoid auto-denying tools. Pair with sandbox."
      • addedInput schema / properties / background
        Added value: +{
        +  "description": "Run in background; collect with watch_task. Emits no progress notifications.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / conversation_id / description
        Previous value: -"Existing agy conversation ID to continue/resume instead of starting a new conversation. Returned by previous task results."New value: +"Existing conversation ID to resume."
      • changedInput schema / properties / cwd / description
        Previous value: -"Working directory for the delegated task (project the sub-agent operates on). Defaults to the server's cwd."New value: +"Task cwd (defaults to server cwd)."
      • changedInput schema / properties / edit_scope / description
        Previous value: -"Give the sub-agent an edit boundary (files and directories relative to cwd, or absolute). Out-of-scope changes are surfaced in the result's files_touched/scope_violations audit; it is an audit-and-replay control, not a sandbox — the CLI writes files itself."New value: +"Allowed edit paths; out-of-scope edits flag in scope_violations."
      • changedInput schema / properties / effort / description
        Previous value: -"Reasoning effort for the task"New value: +"Effort: low|medium|high (bare models; tier-carrying ids win)."
      • changedInput schema / properties / effort / enum
        Previous value: -[
        -  "low",
        -  "medium",
        -  "high",
        -  "xhigh",
        -  "max"
        -]New value: +[
        +  "low",
        +  "medium",
        +  "high"
        +]
      • changedInput schema / properties / model / description
        Previous value: -"Model for the task, e.g. gemini-3.8-flash-medium, claude-opus-5-5-high (see list_models)"New value: +"Model (e.g. gemini-3.8-flash). Tier-carrying id (e.g. gemini-3.8-flash-high) encodes tier and wins over effort; pairing with different effort is refused locally."
      • changedInput schema / properties / project / description
        Previous value: -"Antigravity project ID or name for the task"New value: +"Project ID or name."
      • changedInput schema / properties / prompt / description
        Previous value: -"Full, self-contained task description for the sub-agent. Include all needed context and file paths."New value: +"Self-contained task prompt for sub-agent."
      • addedInput schema / properties / prompt / pattern
        Added value: +"\\S"
      • changedInput schema / properties / sandbox / description
        Previous value: -"Run the task with Antigravity's terminal sandbox flag enabled (--sandbox)"New value: +"Terminal sandbox flag (--sandbox)."
      • changedInput schema / properties / timeout_ms / description
        Previous value: -"Idle timeout for the run in ms (0..3600000; 0 disables the idle kill for this run). Resets on every stdout/stderr chunk from the child; kicks in after this much child silence and kills the child (SIGTERM, then SIGKILL after 5s). Default: 900000 (AGY_MCP_IDLE_TIMEOUT_MS)."New value: +"Idle timeout in ms (0..3600000; 0 disables; default 900000)."
    • Changedgeneral_task15 fields changed
      • changedInput schema / properties / add_dirs / description
        Previous value: -"Extra directories to add to the task's workspace (--add-dir, repeatable)"New value: +"Extra workspace dirs (--add-dir)."
      • changedInput schema / properties / agent / description
        Previous value: -"Antigravity agent profile to use (see list_agents)"New value: +"Agent profile (see list_agents)."
      • changedInput schema / properties / auto_approve / description
        Previous value: -"Expert switch: pass --dangerously-skip-permissions so headless runs stop auto-denying gated tools. Pair it with sandbox when granting it. Allowed by this server."New value: +"Pass --dangerously-skip-permissions to avoid auto-denying tools. Pair with sandbox."
      • addedInput schema / properties / background
        Added value: +{
        +  "description": "Run in background; collect with watch_task. Emits no progress notifications.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / conversation_id / description
        Previous value: -"Existing agy conversation ID to continue/resume instead of starting a new conversation. Returned by previous task results."New value: +"Existing conversation ID to resume."
      • changedInput schema / properties / cwd / description
        Previous value: -"Working directory for the delegated task (project the sub-agent operates on). Defaults to the server's cwd."New value: +"Task cwd (defaults to server cwd)."
      • changedInput schema / properties / edit_scope / description
        Previous value: -"Give the sub-agent an edit boundary (files and directories relative to cwd, or absolute). Out-of-scope changes are surfaced in the result's files_touched/scope_violations audit; it is an audit-and-replay control, not a sandbox — the CLI writes files itself."New value: +"Allowed edit paths; out-of-scope edits flag in scope_violations."
      • changedInput schema / properties / effort / description
        Previous value: -"Reasoning effort for the task"New value: +"Effort: low|medium|high (bare models; tier-carrying ids win)."
      • changedInput schema / properties / effort / enum
        Previous value: -[
        -  "low",
        -  "medium",
        -  "high",
        -  "xhigh",
        -  "max"
        -]New value: +[
        +  "low",
        +  "medium",
        +  "high"
        +]
      • changedInput schema / properties / model / description
        Previous value: -"Model for the task, e.g. gemini-3.8-flash-medium, claude-opus-5-5-high (see list_models)"New value: +"Model (e.g. gemini-3.8-flash). Tier-carrying id (e.g. gemini-3.8-flash-high) encodes tier and wins over effort; pairing with different effort is refused locally."
      • changedInput schema / properties / project / description
        Previous value: -"Antigravity project ID or name for the task"New value: +"Project ID or name."
      • changedInput schema / properties / prompt / description
        Previous value: -"Full, self-contained task description for the sub-agent. Include all needed context and file paths."New value: +"Self-contained task prompt for sub-agent."
      • addedInput schema / properties / prompt / pattern
        Added value: +"\\S"
      • changedInput schema / properties / sandbox / description
        Previous value: -"Run the task with Antigravity's terminal sandbox flag enabled (--sandbox)"New value: +"Terminal sandbox flag (--sandbox)."
      • changedInput schema / properties / timeout_ms / description
        Previous value: -"Idle timeout for the run in ms (0..3600000; 0 disables the idle kill for this run). Resets on every stdout/stderr chunk from the child; kicks in after this much child silence and kills the child (SIGTERM, then SIGKILL after 5s). Default: 900000 (AGY_MCP_IDLE_TIMEOUT_MS)."New value: +"Idle timeout in ms (0..3600000; 0 disables; default 900000)."
    • Changedlist_agents1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_models1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedwatch_task4 fields changed
      • addedInput schema / properties / cancel
        Added value: +{
        +  "description": "Stop running task owned by this process and report cancelled.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / stream_file / description
        Previous value: -"Stream transcript to read. Omit for the latest task_<id>.stream in AGY_MCP_STATE_DIR. Accepted forms: an absolute path under AGY_MCP_STATE_DIR, a bare file name like \"task_f8870173.stream\", or a task id like \"task_f8870173\" / \"f8870173\"."New value: +"Transcript or task ID. Omit for latest run."
      • changedInput schema / properties / tail_lines / description
        Previous value: -"Number of trailing lines to return (1..2000, default 400; 0 returns the full transcript, hard-capped at 200,000 chars)."New value: +"Trailing lines (1..2000, default 400; 0 returns all, capped at 200k chars)."
      • addedInput schema / properties / wait
        Added value: +{
        +  "description": "Block until finished and return result in one call. Incompatible with cancel; cannot await foreign run.",
        +  "type": "boolean"
        +}
  2. 5 tool updatesv0.2.1
    • First observedexplore_task
    • First observedgeneral_task
    • First observedlist_agents
    • First observedlist_models
    • First observedwatch_task

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct action: launching write-capable tasks (general_task), read-only tasks (explore_task), monitoring runs (watch_task), and enumerating models/agents. The two task tools are separated by mode (accept-edits vs plan) and the descriptions make the boundary explicit. No tool pair is likely to be misselected.

Naming Consistency4/5

Names are readable and follow a loose grouping convention: task-oriented tools end in `_task` while enumeration tools use `list_` prefix. This is not a single strict verb_noun pattern throughout, but the deviation is minor and predictable rather than chaotic.

Tool Count5/5

Five tools is well-scoped for a sub-agent delegation server: two launch modes, one monitor/control tool, and two discovery tools. Cancel and wait are folded into watch_task rather than becoming separate tools, which keeps the surface lean without losing capability.

Completeness4/5

The core lifecycle is covered: launch (two modes), monitor/wait/cancel, resume via conversation_id, and enumerate models/agents. Minor gaps exist — there is no tool to list all runs (watch_task with no args only resolves the latest) and foreign runs cannot be awaited — but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessOutdated data

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP-compatible coding agents to run the local Antigravity CLI as a coding agent, manage conversation context and common options, and inspect usage, quota, models, version, help, and read-only slash commands.
    34 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI harnesses to delegate code analysis, modification, testing, and long-running tasks to the locally installed Antigravity CLI via stdio MCP, with job status tracking and conversation continuity.
    3
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables a local Codex chat to ask a second opinion, review staged, unstaged, or revision-based diffs, and delegate coding tasks to the Antigravity CLI running in isolated or disposable workspaces. Supports starting, polling, retrieving, and cancelling tasks with returned answers, diffs, changed-file lists, exit codes, and time/output limits, while never auto-applying returned patches.
    8
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables delegating coding tasks to the official Antigravity CLI from any MCP client, with task listing, model selection, streamed event tracking, cancellation, and resumable sessions. Runs each task against an isolated copy of the repository so results can be previewed, tested, and only integrated into the original after explicit user confirmation.
    23
    42 npm
    MIT