antigravity-workers
Provides integration with Google Antigravity workers to delegate code analysis, review, isolated edits, multimodal research, and native image generation tasks, returning reports and patches for inspection.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@antigravity-workersReview the parser in this repo and report issues with file references."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Antigravity Workers
Supervised Google Antigravity workers for Codex, exposed through a local Model Context Protocol (MCP) server.
Delegate bounded code analysis, review, isolated edits, multimodal research, and native image generation. Codex owns requirements, review, validation, and integration. Workers return reports and patches for inspection.
Features
Individual analysis, review, and edit workers with queued execution and retries.
Read-only teams with distinct roles, reviewer and coordinator stages, correction rounds, messaging, and live dashboards.
Isolated Git worktrees for edit jobs, with patch inspection before
apply_run.Explicitly scoped media inputs copied into per-run workspaces; native image generation and editing.
Persistent run and team ledgers, cancellation, continuation, and recovery after interruption.
One scheduler per state directory, shared across multiple MCP clients.
No npm runtime dependencies.
Related MCP server: Code Worker MCP
Requirements
Node.js 20 or newer and Git on
PATH.A separately installed and authenticated Antigravity CLI (
agy) for real worker jobs. CLI access, model availability, provider terms, and usage limits are separate from this project.Codex or another MCP client supporting local standard-input/output servers.
Windows and Linux are the supported targets for this release. macOS is not currently supported: an interrupted scheduler can leave a stale local socket that prevents restart.
The test suites use a mock CLI and require no provider account. This repository contains the integration; it does not redistribute the Antigravity CLI or grant access to Google services.
Quick start
git clone https://github.com/McDuckVc/antigravity-workers.git
cd antigravity-workers
npm testRegister the MCP server using your checkout's absolute path:
codex mcp add antigravity-workers -- node "/absolute/path/antigravity-workers/server/index.mjs"If agy is installed somewhere other than its default location:
codex mcp add antigravity-workers --env ANTIGRAVITY_AGY_PATH="/absolute/path/to/agy" -- node "/absolute/path/antigravity-workers/server/index.mjs"On Windows, quote paths containing spaces and use your actual executable paths. The default CLI location on Windows is %LOCALAPPDATA%/agy/bin/agy.exe; on other platforms the server resolves agy from PATH.
Restart your Codex session after registering the server. Ask it to run doctor and list_models, then give a bounded assignment, for example:
Use Antigravity Workers to review the parser in this repository. Report issues with file references. Do not modify files.
For the orchestration guidance, copy skills/antigravity-orchestrator to your personal Codex skills directory (~/.codex/skills/) or use this repository as a plugin through your configured marketplace. Direct MCP registration installs the tools; adding the skill supplies the workflow instructions.
Plugin packaging
The repository includes a portable plugin.json and mcp.json, plus .codex-plugin/plugin.json and .mcp.json compatibility files. The portable MCP configuration uses ${PLUGIN_ROOT} to resolve the installed server location. A marketplace host must support local stdio servers. See the official plugin packaging documentation for marketplace setup. Publication on GitHub does not install the plugin into the official directory.
Tools
Purpose | Tools |
Diagnostics |
|
Code workers |
|
Run lifecycle |
|
Teams |
|
Media |
|
Read the tool schemas exposed by the server for complete inputs. Prefer model_policy (quality, balanced, or fast) and check list_models for account availability.
Configuration
Set these variables in the MCP client's server environment:
Variable | Default / purpose |
| Override the CLI executable path. |
| Windows: |
|
|
| Server default 32; bundled plugin configuration 64. |
|
|
|
|
|
|
| 250 MB per input file. |
| 1024 MB across a request's inputs. |
| 12 MB for inline artifacts. |
|
|
Model IDs are configurable defaults, not guarantees of provider availability. Matching model suffixes determine compatible effort.
Data and execution boundaries
This is a local orchestration tool, not a security sandbox. Workers run with the permissions enforced by Antigravity and the host. Give them only authorized projects and inputs. Code and media jobs may send selected content to the configured provider.
The state directory can contain prompts, responses, logs, worktrees, artifacts, and local runtime authentication material. Keep it outside public repositories. get_account returns the active account identifier only when explicitly requested; it does not expose OAuth tokens.
Edit workers require a Git repository. Inspect the patch and relevant tests before calling apply_run; read-only teams never apply edits. See SECURITY.md.
Development and validation
npm testThe mock suites exercise the MCP protocol, queuing and retries, worker lifecycles, teams, scoped media, image artifacts, patch handling, shared runtime ownership, and restart behavior. CI runs these tests on Windows and Linux with Node.js 22 and 24.
The optional npm run test:live invokes your authenticated Antigravity CLI and consumes provider usage. It is excluded from CI. Additional media/image smoke checks are opt-in through ANTIGRAVITY_MEDIA_SMOKE_FILE and ANTIGRAVITY_IMAGE_SMOKE=1.
Contributing and license
See CONTRIBUTING.md. Licensed under MIT.
Independent community project; not affiliated with or endorsed by Google or OpenAI. Product names belong to their respective owners.
Available Tools
23 toolsapply_runA
Apply a successful edit worker's reviewed patch to its original Git checkout. Run only after Codex has inspected the patch and validation evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds that only 'successful edit worker's reviewed patch' should be applied and that it targets the 'original Git checkout,' which implies mutating the working tree. However, it does not disclose potential side effects such as overwriting local changes, requiring a clean checkout, or whether the patch is committed.
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 no filler. The core action is front-loaded in the first sentence, and the critical precondition follows immediately in the second. Every word 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 single-parameter tool with no output schema, the description covers purpose and precondition well, but it omits run_id semantics and the post-apply behavior (e.g., return value, whether the checkout is updated in place). These gaps matter for an agent invoking a mutation.
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 input schema has one required parameter, run_id, with 0% description coverage in the schema. The description never explicitly states that run_id refers to the edit run whose patch should be applied. The agent must infer this from the tool name and context, which is insufficient for a mutation 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?
Description uses a specific verb and resource: 'Apply a successful edit worker's reviewed patch to its original Git checkout.' This clearly distinguishes the tool from sibling tools like get_run, start_edit, and continue_run. The annotation title 'Apply reviewed Antigravity patch' reinforces the same unambiguous 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 gives an explicit precondition: 'Run only after Codex has inspected the patch and validation evidence.' This is clear when-to-use guidance, but it does not mention alternatives or exclusions, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_runADestructive
Request cancellation of an active Antigravity worker process.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, so the cancellation is understood as destructive. The description adds the 'active' constraint and uses 'request' to hint at possible asynchronous semantics, but it does not disclose whether cancellation is reversible, whether it requires special permissions, or what happens to the process after the request.
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, tight sentence with no filler. It front-loads the action and the resource, and every word contributes to meaning without redundancy.
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 tool with destructive annotations, this is mostly adequate. However, there is no output schema and the description does not mention what the response will be, whether cancellation is asynchronous, or how the active condition is enforced. These missing details reduce confidence for an agent invoking the tool without further inspection.
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 does not compensate by explaining run_id, its format, or how to obtain it. While the parameter name is fairly self-explanatory, the low coverage means the description should provide at least some annotation of the ID's role and provenance; 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?
The description states a specific verb ('cancel') and resource ('Antigravity worker process'), and the 'active' qualifier narrows scope to running runs. It is clearly distinguishable from sibling tools like get_run, continue_run, and cancel_team, even without extra context.
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 word 'active' implies this tool is meant for currently running run processes, which gives some usage context. However, it does not explicitly state when not to use it, nor does it mention checking run status with get_run or using continue_run for resuming. There are no clear exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_teamADestructive
Cancel all queued or running workers in a multi-agent team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is covered. The description adds a useful boundary by specifying only queued or running workers are affected, but it does not explain subsequent team state, partial cancellation behavior, or whether cancellation is irreversible.
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 sentence, front-loaded with the action and scope, with no filler or repetition. Every word contributes to the meaning.
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 destructive action with annotations present, the core behavior is covered. However, the missing parameter guidance and lack of any output/return information keep it from being fully self-contained for an agent.
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 never mentions team_id, its format, or where to obtain it. The parameter name is fairly self-explanatory, so there is minimal implicit meaning, but the description does not sufficiently compensate for the absent schema documentation.
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 specific verb ('cancel') and precisely names the affected resource ('all queued or running workers in a multi-agent team'). It also distinguishes itself from the sibling tool cancel_run by operating at the team/worker level rather than a single run.
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 context for when to use the tool: when the entire team's pending or in-flight workers need to be cancelled. It does not explicitly name alternatives like cancel_run or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_runB
Continue a completed Antigravity conversation as a new asynchronous run in the same workspace or isolated worktree.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| effort | No | ||
| prompt | Yes | ||
| run_id | Yes | ||
| max_retries | No | ||
| model_policy | No | ||
| timeout_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint=false and destructiveHint=false. The description adds useful context: the run is asynchronous and can run in the same workspace or an isolated worktree. It does not explain side effects, return behavior, or what happens to the original conversation, but the annotations lower 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?
A single well-structured sentence with no filler. The key qualifiers — completed, new asynchronous run, same workspace or isolated worktree — are front-loaded and every word 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?
With 7 parameters and no output schema, the description is too thin. It does not explain how results are retrieved, what the asynchronous execution entails in practice, how workspace/worktree isolation is selected, or the effects of optional parameters. The schema provides enums and bounds, but substantial operational context 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 0%, so the description must compensate, but it never mentions run_id, prompt, model, effort, max_retries, model_policy, or timeout_minutes. Only from the tool name and phrase 'completed... conversation' can run_id and prompt be inferred; all optional parameters remain 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 description uses a specific verb ('Continue') and a clear resource ('completed Antigravity conversation'), and specifies the result is 'a new asynchronous run'. This distinguishes it from siblings like start_* and resume_team, though it does not explicitly name alternatives.
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 context is clear: use it when a conversation is completed and should be continued as a new run. However, it does not state when not to use it or directly compare against alternatives such as resume_team, cancel_run, or start_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctorBRead-only
Check the Antigravity CLI, global worker state, and configured defaults.
| 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, and the description aligns with them without contradiction. The description adds modest context by naming exactly what is checked (CLI, worker state, defaults), but it does not disclose output shape, side-effect-free behavior beyond the annotations, or any runtime implications.
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 front-loaded sentence that conveys the core purpose in under a dozen words. Every part of it earns its place, and there is no filler or redundancy.
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-only diagnostic tool, the description is mostly sufficient for selection and invocation. However, with no output schema, it does not explain what the tool returns (e.g., status report, list of problems, config values), which leaves some ambiguity for an agent attempting to use 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 has zero parameters stolen, so there is nothing for the description to explain. The schema is empty and schema description coverage is 100%, earning the baseline of 4 for parameter 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 clearly states the verb 'Check' and the resources involved—Antigravity CLI, global worker state, and configured defaults—so it is not a tautology. It is somewhat broad and does not explicitly differentiate from sibling tools, but it is specific enough to convey the diagnostic scope.
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 no guidance on when to use this tool versus alternatives like list_runs, get_run, or cancel_run. There is no mention of troubleshooting scenarios, preconditions, or cases where another tool should be preferred, leaving the agent to infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountARead-only
Report the active Antigravity account identifier without reading or returning OAuth credentials or tokens.
| 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. The description adds value by explicitly stating that OAuth credentials or tokens are NOT read or returned, which is a meaningful behavioral guarantee beyond 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?
One sentence, front-loaded with the action and resource, and the exclusion of credentials/tokens is a valuable addition without waste.
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-only tool with no output schema, the description is nearly complete. It could mention the return format (e.g., string vs object), but the core purpose and safety profile are 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?
There are zero parameters, so the schema carries no burden. The description clarifies what the tool does not return (credentials/tokens), which is the only semantic context an agent needs for a parameterless 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?
The description states a specific verb ('Report') and resource ('active Antigravity account identifier'), and explicitly distinguishes itself from credential/token access. This is clear and unambiguous, and the title 'Check Antigravity account' reinforces 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 this is a read-only informational call for identifying the active account, and the readOnlyHint annotation supports that. It doesn't explicitly name alternatives or when-not-to-use, but for a zero-parameter account identifier tool, the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_runARead-only
Read a multimodal run, optionally wait up to 30 seconds, and inline completed image or audio artifacts when small enough.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| wait_ms | No | ||
| include_media | No | ||
| include_prompt | 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 valuable behavioral context: it can wait up to 30 seconds, and it inlines artifacts only when small enough. This goes beyond the schema and annotations, though it doesn't specify what happens when artifacts are too large or what 'small enough' means.
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, well-structured sentence that front-loads the core action ('Read a multimodal run') and packs the key behaviors (waiting, inlining) efficiently. No wasted words.
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 annotations covering safety, the description covers the main behaviors: reading, waiting, and inlining. It lacks details on return format or what happens when artifacts are too large, but given the absence of an output schema and the tool's relative simplicity, it is reasonably complete. A bit more on the 'small enough' threshold or fallback behavior would make it fully complete.
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 compensate. It explains the purpose of wait_ms (wait up to 30 seconds) and include_media (inline artifacts), but doesn't detail run_id or include_prompt. The description adds some meaning beyond the schema, but not enough to fully compensate for the 0% 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?
The description clearly states the tool's purpose: reading a multimodal run, with optional waiting and inlining of completed image/audio artifacts. It distinguishes itself from sibling tools like get_run by specifying the multimodal/media aspect and the inline artifact behavior.
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 when to use this tool: when you need to read a multimodal run and possibly wait for completion. It doesn't explicitly state when not to use it or name alternatives, but the context of siblings like get_run and start_media_analysis provides enough differentiation. A clear exclusion or alternative mention would improve it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runARead-only
Read a worker run and optionally wait up to 30 seconds for progress or completion.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| wait_ms | No | ||
| include_prompt | No |
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 non-annotation behavior: optional waiting and the fact that it surfaces progress or completion. However, it does not disclose timeout behavior, response shape, or what happens after the wait expires, so it only partially enriches the behavioral picture.
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 is front-loaded with the verb and resource, then adds the key optional behavior. Every word earns its place; there is no filler or 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 three-parameter tool with no output schema and zero schema descriptions, this description is noticeably thin. It covers the core read and wait behavior but leaves include_prompt, the return format, and the distinction between waiting and immediate return unspecified. It is minimally viable but not fully complete.
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 compensate. It does clarify run_id (the run to read) and wait_ms (wait up to 30 seconds for progress/completion), but it says nothing about include_prompt. Two of three parameters gain meaning, but one remains entirely 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 description states a specific action and resource: 'Read a worker run.' It also distinguishes this from siblings like get_media_run by narrowing to 'worker run,' and the title 'Read Antigravity run' adds product context. An agent can tell what this tool is for 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 gives clear usage context: use this to read a run, with optional blocking up to 30 seconds for progress or completion. It does not explicitly name alternatives or exclusion conditions, but the intended use is evident enough for an agent to select it over list_runs or get_media_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_teamARead-only
Read a multi-agent team, optionally wait for progress, and optionally include its agent-to-agent transcript.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | ||
| wait_ms | No | ||
| include_transcript | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint, so the safety profile is covered. The description adds substantive behavioral traits beyond that: the optional wait-for-progress behavior and the optional transcript inclusion, both of which materially change how the call behaves. It does not conflict with 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 sentence with no filler, front-loaded with the core verb and resource, then the two optional modifiers. Every part 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 read-only tool with three parameters, the description covers all semantic options in one sentence. There is no output schema, so a tiny bit more detail about the response shape would help, but the core behavior and parameters are complete enough for an agent to 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 property descriptions are completely absent (0% coverage), so the description carries the burden. It explicitly maps wait_ms to 'wait for progress' and include_transcript to 'include transcript', adding meaning beyond the raw schema. team_id is only implied by 'a multi-agent team', and no format details are given, keeping this 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?
States a specific verb 'Read' with a singular resource 'a multi-agent team', and names two optional behaviors (wait for progress, include transcript) that clarify what the tool returns. The title 'Read Antigravity team' reinforces it, and the contrast with sibling list_teams is clear.
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 when you need to read one team and optionally wait or fetch the transcript, but it does not explicitly state when to prefer this over list_teams, team_dashboard, or other team-related tools. No alternatives or exclusions are named, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_artifactsARead-only
List generated media artifacts and their absolute paths, hashes, MIME types, and sizes from the global ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| run_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful context beyond that: results come from a global ledger rather than a user- or run-scoped view, and the returned fields include absolute paths, hashes, MIME types, and sizes. It does not mention ordering or pagination, but the safety profile is already covered by 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?
The description is one compact sentence with the verb and resource front-loaded, followed by concrete return-field details. There is no filler, tautology, or repetition of the tool 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 list tool with no output schema and three optional parameters, the description covers what the result contains but not how the optional filters behave, whether the ledger spans all runs, or what a default call returns. The readOnly annotations reduce safety concerns, and the basic purpose is clear, but an agent still lacks some context needed to confidently use the optional filters.
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 does not explain any of the three parameters (kind, limit, run_id). While kind roughly aligns with 'media artifacts', limit and run_id are left entirely to name inference. The description adds no parameter semantics beyond what the schema itself already exposes.
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 generated media artifacts') and enumerates the exact metadata returned: absolute paths, hashes, MIME types, and sizes. The 'global ledger' scope and artifact focus clearly separate it from sibling tools like list_models, list_runs, and list_teams.
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 this is the tool to use when retrieving generated artifact metadata, but it gives no explicit conditions, exclusions, or references to alternatives. An agent must infer when to prefer list_artifacts over run-scoped tools such as get_media_run or list_runs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsARead-only
List models currently available to the active Antigravity account and show the configured quality, balanced, and fast routes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and destructiveHint annotations already establish this as a safe read operation. The description adds useful behavioral context by scoping results to the active Antigravity account and by revealing that configured routes are returned, which is not visible 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?
The description is a single front-loaded sentence covering both the primary action and the secondary output without filler or redundancy. Every clause adds useful 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 zero-parameter read-only listing, the description covers the essential behavior and the key returned concepts: available models and route presets. It does not detail the exact return shape or explain route meanings, but the tool is simple enough that this is adequate.
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?
This tool has zero parameters and 100% schema coverage, so there are no parameter semantics for the description to clarify. The zero-parameter baseline applies and the description does not need to compensate.
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 concrete verb and resource: 'List models currently available to the active Antigravity account' plus the distinct output of configured quality, balanced, and fast routes. It is clearly about model availability rather than account details or teams, though it does not explicitly name a sibling to differentiate from.
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 'currently available' implies this tool is for inspecting what models exist in the current account context, and the mention of routes suggests when route configuration is needed. However, it gives no explicit when-to-use or when-not-to-use guidance and names no alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_runsBRead-only
List recent Antigravity worker runs from the global operational ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Optional exact project path filter. | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, which the description agrees with. The description adds minor context (global ledger, recent) but does not disclose details like default ordering, pagination, or whether results are scoped to the current user. Since annotations cover the safety profile, this is adequate 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?
A single sentence with zero wasted words. The key action and scope are front-loaded, making it highly efficient and easy 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?
The tool is a simple list operation with two optional parameters and no output schema. The description covers the essence but omits details like result format, ordering, or any default filtering. For a read-only list tool, this is minimally sufficient, but it could be more complete.
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 50% (cwd is described, limit is not). The description provides no additional parameter meaning, leaving the limit parameter's semantics undocumented. The self-explanatory name 'limit' helps, but with only 50% coverage, the description should 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?
States a specific verb 'List', a clear resource 'recent Antigravity worker runs', and a source 'global operational ledger'. This distinguishes it from sibling list tools like list_models, list_teams, and list_artifacts, and from run-specific tools like get_run or cancel_run.
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?
No guidance on when to use this tool versus alternatives. The description does not mention when to prefer list_runs over get_run, get_media_run, or other list tools, nor does it exclude any scenarios. An agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsARead-only
List recent multi-agent teams from the persistent operational ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds context about 'recent' and 'persistent operational ledger', but does not disclose behaviors like pagination, ordering, or whether cwd affects results. With annotations covering the main safety aspect, this is adequate 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?
One sentence with no filler, front-loading the verb and object. It delivers the core purpose immediately and contains zero redundant words.
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 list operation with optional parameters and no output schema, the description covers basic intent. However, it leaves cwd semantics unexplained and provides no detail on output format or pagination, which an agent might need to call it effectively. It is minimal viable but has 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 0% – the description does not mention cwd or limit at all. While limit has schema constraints (1–100) inferring its purpose, cwd is an unnamed string with no explanation in either schema or description, leaving the agent to guess its role. The description fails to compensate for the lack of parameter documentation.
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 specific verb ('List') and resource ('multi-agent teams') with a clear source scope ('persistent operational ledger'). It distinguishes this from siblings like start_team (creation) and get_team (single team retrieval) without needing to open their schemas.
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 when to use the tool – when you need a list of recent teams – but does not explicitly mention alternatives or exclusions. It lacks guidance on choosing between list_teams and related tools like get_team or list_runs, so the usage context is only inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
message_agentA
Send a persisted message from Codex or one team member to another. Delivery continues the recipient's Antigravity conversation and records the reply.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| team_id | Yes | ||
| to_agent_id | Yes | ||
| from_agent_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=false and destructiveHint=false, indicating a write operation without destructiveness. The description adds behavioral context beyond annotations by specifying that the message is 'persisted' and that 'delivery continues the recipient's conversation and records the reply,' which clarifies the side effects on the conversation history.
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 two sentences with no fluff, front-loading the primary action and outcome. Every clause adds relevant information, making it concise and well-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?
While the core purpose is clear, the description omits essential details for correct invocation: parameter semantics (especially the optional from_agent_id), expected response format, and any prerequisites or error conditions. Given there is no output schema, the lack of return-value description is a notable 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 description coverage is 0%, so the description carries the full burden of explaining parameters. It only hints at the from/to relationship ('from Codex or one team member to another') but does not explicitly map to the four parameters (message, team_id, to_agent_id, from_agent_id). No parameter-specific meaning is added, leaving agents to infer from parameter names alone.
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 clearly states the action ('Send a persisted message'), the participants ('from Codex or one team member to another'), and the effect ('continues the recipient's Antigravity conversation and records the reply'). This is a specific verb+resource and distinguishes it from sibling tools that handle media generation, runs, or teams.
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 the tool is for inter-agent messaging within the Antigravity platform, but it does not explicitly state when to use it over alternatives or when not to use it. No exclusions or comparisons to siblings are provided, leaving the context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_teamA
Restart an interrupted or failed team from its original assignments, preserving a link to the prior team ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the behavioral detail of 'preserving a link to the prior team ledger', which goes beyond the annotations. However, it does not explain what 'restart' means in terms of state changes (e.g., whether it resets progress or just re-triggers execution), leaving some ambiguity about side effects. With annotations covering the mutation/safety profile, the description adds moderate 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?
The description is a single, tightly written sentence with no wasted words. It front-loads the primary purpose and adds a key detail (preserving ledger link) without clutter. It is concise and well-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 tool with one parameter and no output schema, the description is reasonably complete. It states the purpose and the condition for use (interrupted or failed teams). It does not describe return values or asynchronous behavior, but given the tool's simplicity and the presence of annotations covering safety, it is adequate for an agent to make a correct call. The missing parameter documentation is the main gap, but that is already penalized in parameter_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?
The schema defines a single parameter, team_id, with no description, and schema description coverage is 0%. The tool description does not mention the parameter at all, so it fails to compensate for the missing schema documentation. The parameter name 'team_id' is self-explanatory, but the description provides no additional semantics about the expected value (e.g., 'the ID of the team to resume'). This is a clear gap given the low 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?
The description states a specific verb ('Restart'), a clear resource ('an interrupted or failed team'), and a distinct scope ('from its original assignments'). It also adds the detail of preserving a link to the prior ledger, which helps differentiate it from start_team (creating new) and continue_run (resuming runs). The purpose is 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?
The description explicitly conditions the tool on teams that are 'interrupted or failed', providing clear when-to-use guidance. It does not explicitly name alternatives like start_team for new teams, but the condition implies that distinction. No exclusions are stated, but the context is sufficiently clear for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_analysisBRead-only
Start an asynchronous read-only Antigravity worker for bounded investigation or planning.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Absolute path to the project or directory to inspect. | |
| task | Yes | A bounded, self-contained assignment for the worker. | |
| model | No | Antigravity model id. Defaults to gemini-3.1-pro-high. | |
| effort | No | Reasoning effort. Defaults to high. | |
| context | No | Relevant constraints or known context. | |
| max_retries | No | Automatic retries after a failed worker process. Defaults to 1. | |
| model_policy | No | Routing policy. Quality uses Pro High, balanced uses Flash Medium, and fast uses Flash Low unless configured otherwise. | |
| timeout_minutes | No | ||
| acceptance_criteria | No | Specific conditions that define a good result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, covering safety. The description reinforces 'read-only' and adds 'asynchronous' and 'bounded', which are useful behavioral traits not in annotations. However, it does not disclose what the worker returns (e.g., a run ID), how to retrieve results, or whether the process is cancellable—information an agent needs for an async tool. It adds some context but not enough for a 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 description is a single sentence with zero filler. It front-loads the core action and purpose, and every word earns its place. It is appropriately sized for a tool whose schema and annotations carry the detailed parameter and safety 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 tool with 9 parameters, no output schema, and an asynchronous nature, the description is notably incomplete. It does not mention what the tool returns (e.g., a run ID), how to track progress (e.g., via get_run or list_runs), or any prerequisites. The agent is left to infer the workflow from sibling tool names. Given the complexity, more guidance is expected.
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 89%, so most parameters already have clear descriptions. The tool description adds no parameter-specific semantics—it does not mention cwd, task, model, effort, or any other parameter. Per the rubric, a high coverage baseline of 3 is appropriate, and the description does not compensate with additional clarification.
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 action ('Start an asynchronous read-only Antigravity worker') and its purpose ('bounded investigation or planning'). The verb+resource are clear, and the mention of 'read-only' distinguishes it from mutation tools. However, it does not differentiate from sibling tools like start_media_analysis or start_review, which also start workers; the name 'analysis' implies generality but is not explicitly contrasted.
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 clear context for when to use it ('for bounded investigation or planning') which implies a scope, but it does not state when not to use it or mention alternatives. With many sibling start_* tools, explicit routing guidance (e.g., 'use start_media_analysis for media-specific tasks') is missing, leaving the agent to infer based on the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_editA
Start an asynchronous Antigravity implementation worker in an isolated Git worktree. It cannot directly alter the active checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Absolute path to the project or directory to inspect. | |
| task | Yes | A bounded, self-contained assignment for the worker. | |
| model | No | Antigravity model id. Defaults to gemini-3.1-pro-high. | |
| effort | No | Reasoning effort. Defaults to high. | |
| context | No | Relevant constraints or known context. | |
| max_retries | No | Automatic retries after a failed worker process. Defaults to 1. | |
| model_policy | No | Routing policy. Quality uses Pro High, balanced uses Flash Medium, and fast uses Flash Low unless configured otherwise. | |
| timeout_minutes | No | ||
| acceptance_criteria | Yes | Specific conditions that define a good result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond the annotations: the operation is asynchronous, runs in an isolated Git worktree, and cannot directly alter the active checkout. This gives an agent a clear picture of side effects and scope, adding value over the basic readOnlyHint/destructiveHint flags. It does not detail post-completion behavior, but the core safety and execution model is well covered.
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 two sentences with zero waste. The primary action is front-loaded, and the key constraint ('cannot directly alter the active checkout') is stated immediately. Every clause adds 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 tool with 9 parameters and no output schema, the description covers the essential behavioral context (async, isolated, non-destructive to active checkout) but omits what the caller receives in return (e.g., a run ID) or how to track progress. Since it is an async starter, this is a meaningful gap. However, the schema covers parameter details, so the description is not fully inadequate.
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 89%, so the input schema already documents nearly all parameters (cwd, task, model, effort, context, max_retries, model_policy, acceptance_criteria; timeout_minutes lacks a description but is covered by min/max). The description adds no parameter-specific meaning beyond what the schema provides, so the baseline of 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 clearly states the verb ('Start'), the resource ('Antigravity implementation worker'), and a key distinguishing constraint ('in an isolated Git worktree', 'cannot directly alter the active checkout'). This separates it from sibling tools like start_analysis or start_review, which serve different purposes, and from apply_run that would directly modify the checkout.
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 conveys the intended use (starting an implementation worker in isolation) but does not explicitly state when to use it versus alternatives, nor provide exclusions. The isolation constraint hints at when not to use it (when direct checkout modification is needed), but this is not made explicit. No alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_image_editA
Edit or transform one to five explicitly supplied reference images with Antigravity's native generate_image tool and capture the result.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Antigravity model id. Defaults to the configured balanced route for media tasks. | |
| effort | No | ||
| prompt | Yes | Exact edit or transformation instructions, including what must remain unchanged. | |
| image_paths | Yes | Absolute paths to reference images placed in scope. | |
| max_retries | No | ||
| output_name | No | ||
| aspect_ratio | No | 1:1 | |
| model_policy | No | Routing policy. Media tasks default to balanced. | |
| timeout_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is non-read-only and non-destructive; the description adds that the operation runs through generate_image and that the result is captured. It does not disclose whether originals are modified, how outputs are persisted, or error behavior, but the annotation safety profile covers the most critical ambiguity.
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 tight sentence with no filler; it states the action, scope, and mechanism immediately. The description is short but purposeful, with the most important distinguishing information 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 nine parameters, no output schema, and thin annotations, the description needs to cover prerequisites, return/capture behavior, and defaults, but it provides only a high-level operation. It leaves an agent unsure of how the result is returned or saved and what the unconstrained parameters mean.
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 44%, so the description should compensate for undocumented parameters. It does not explain effort, max_retries, output_name, aspect_ratio, or timeout_minutes; the only parameter-related content ('one to five') merely restates the schema's min/max items. That is insufficient for a 9-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 names a specific operation ('Edit or transform'), a resource ('reference images'), and the mechanism ('Antigravity's native generate_image tool'). It also bounds the resource count to one to five, which distinguishes this from pure generation 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?
The phrase 'explicitly supplied reference images' signals the key context: this tool is for editing existing images, not generating from scratch. It stops short of explicitly naming alternatives or exclusions, but the required image_paths parameter makes the intended use reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_image_generationB
Generate one image with Antigravity's native generate_image tool and capture it in the persistent artifact ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Antigravity model id. Defaults to the configured balanced route for media tasks. | |
| effort | No | ||
| prompt | Yes | Detailed visual brief. | |
| max_retries | No | ||
| output_name | No | Safe logical output name; the actual generated file type is preserved. | |
| aspect_ratio | No | 1:1 | |
| model_policy | No | Routing policy. Media tasks default to balanced. | |
| timeout_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint=false and destructiveHint=false, so the basic mutation profile is known. The description adds useful behavioral context: exactly one image is produced and the result is persisted in the artifact ledger. However, it does not explain ledger retention, permissions, or what happens on failure, so it adds moderate but not deep transparency.
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, focused sentence with no filler. The primary action and the artifact-ledger side effect are both front-loaded, making it easy to parse quickly.
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 8 parameters, no output schema, and no mention of return values or error behavior, the description is not complete enough for confident invocation. It establishes intent well but leaves practical details such as output_name handling, retry semantics, and result format entirely unaddressed.
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 50%, with effort, max_retries, aspect_ratio, and timeout_minutes left undocumented in the schema. The description does not compensate for this: it mentions no parameter meanings, defaults, or relationships, so an agent gets little semantic help beyond the prompt field.
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 action ('Generate one image'), identifies the underlying mechanism ('Antigravity's native generate_image tool'), and adds a distinguishing side effect ('capture it in the persistent artifact ledger'). This separates it from sibling tools like start_image_edit or start_media_analysis, though the distinction is implicit rather than explicitly 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?
There is no guidance on when to use this tool versus the many sibling start_* tools, nor any mention of exclusions or alternatives. The description focuses entirely on what happens internally, leaving tool selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_media_analysisARead-only
Analyze explicitly supplied images, PDFs, audio, video, documents, datasets, or other files with Antigravity's native multimodal capabilities. Inputs are copied into a per-run isolated Git workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | The analysis question or requested extraction. | |
| model | No | Antigravity model id. Defaults to the configured balanced route for media tasks. | |
| effort | No | ||
| context | No | Optional research context, terminology, or output requirements. | |
| file_paths | Yes | Absolute paths to files the user has placed in scope. | |
| max_retries | No | ||
| model_policy | No | Routing policy. Media tasks default to balanced. | |
| timeout_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, establishing it as a safe read operation. The description adds valuable context: 'Inputs are copied into a per-run isolated Git workspace', which informs the agent about the isolation and copying behavior. It does not contradict annotations. However, it omits details like how results are returned, but the core behavioral disclosure beyond annotations is sufficient.
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 two concise sentences with no filler. The primary purpose is stated first, followed by a relevant behavioral detail. It is front-loaded and efficient.
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 8 parameters and no output schema, the description covers the core functionality and the isolated workspace behavior. However, it does not explain what the tool returns (e.g., a run ID) or how to retrieve results, nor does it mention prerequisites beyond files being supplied. While sibling tools like get_media_run exist, the description does not direct the agent to them. Given the complexity, some details 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 description coverage is 63%, so most parameters (task, file_paths, model, context, model_policy) already have descriptions. The tool description itself adds no parameter-specific semantics; it does not explain the purpose of effort, max_retries, or timeout_minutes which lack schema descriptions. Since coverage is high, the baseline is 3, and the description does not compensate for the uncovered 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?
The description clearly states the verb 'Analyze' with a specific resource: explicitly supplied files including images, PDFs, audio, video, documents, datasets, etc. It also mentions 'Antigravity's native multimodal capabilities', which distinguishes it from text-only analysis tools. The purpose is unambiguous and differentiates from siblings like start_analysis.
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 does not provide any guidance on when to use this tool versus alternatives. It neither mentions specific use cases, prerequisites, nor exclusions. It does not reference sibling tools such as start_analysis or start_review, so an agent has no explicit criteria for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_reviewARead-only
Start an asynchronous read-only Antigravity worker to critically review code or a proposed change.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Absolute path to the project or directory to inspect. | |
| task | Yes | A bounded, self-contained assignment for the worker. | |
| model | No | Antigravity model id. Defaults to gemini-3.1-pro-high. | |
| effort | No | Reasoning effort. Defaults to high. | |
| context | No | Relevant constraints or known context. | |
| max_retries | No | Automatic retries after a failed worker process. Defaults to 1. | |
| model_policy | No | Routing policy. Quality uses Pro High, balanced uses Flash Medium, and fast uses Flash Low unless configured otherwise. | |
| timeout_minutes | No | ||
| acceptance_criteria | No | Specific conditions that define a good result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the safety profile is known. The description adds value by specifying it is 'asynchronous' and a 'worker', which implies background execution and potential delays. It also names the action as 'critically review', but does not mention how results are returned or how to monitor progress. Given the high annotation coverage, the additional async context earns a 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 description is a single, focused sentence that front-loads the core action and purpose. It avoids redundancy with the schema and annotations, containing only information that an agent cannot derive elsewhere. Every word earn 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?
Given the tool has 9 parameters and no output schema, the description should clarify the operational flow. It mentions 'asynchronous' but does not state how the agent will receive results (e.g., a run ID, use get_run). The sibling tools like get_run and list_runs imply the pattern, but the description could be more explicit. However, the schema covers parameter details well, so a 3 is appropriate for a moderately complex 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 89%, so most parameters already have detailed descriptions in the schema. The tool description itself adds almost no parameter-specific information beyond the general purpose. This meets the baseline of 3 for high coverage, but does not go beyond to clarify parameter relationships or usage nuances.
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 ('Start'), a specific resource ('Antigravity worker'), and a clear purpose ('critically review code or a proposed change'). This distinguishes it from sibling tools like start_media_analysis or start_image_generation, which target different domains. The phrase 'read-only' also adds a safety signal.
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 clearly implies it is for code review tasks, which separates it from media/image/analysis tools. However, it does not explicitly mention alternatives or conditions for when to use this instead of other 'start_*' tools like start_analysis or start_edit. Since the domain is highlighted, it provides clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_teamCRead-only
Start a queued multi-agent Antigravity team. Workers investigate in parallel, exchange reports through a lead coordinator, perform correction rounds, and finish awaiting independent Codex review.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| name | No | ||
| agents | Yes | ||
| effort | No | ||
| context | No | ||
| objective | Yes | ||
| max_retries | No | ||
| model_policy | No | ||
| review_rounds | No | ||
| timeout_minutes | No | ||
| coordinator_model | No | ||
| coordinator_effort | No | ||
| acceptance_criteria | No | ||
| coordinator_model_policy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description itself transparently discloses the workflow (queued start, parallel workers, correction rounds, awaiting review), but the annotations declare readOnlyHint=true while the description describes a stateful operation that queues work and spawns agents. This is a direct contradiction with the annotations, which per the rubric forces a score of 1 and an Annotation Contradiction flag.
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 two sentences and roughly 30 words, with the core action front-loaded and the workflow detail providing real information about execution behavior. There is no filler or repetition, though the prose is slightly flowery.
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 tool with no output schema and no parameter documentation, the description omits critical operational facts: what the call returns (team ID? run ID?), how to monitor or manage the running team (siblings get_team, team_dashboard, message_agent, cancel_team indicate an async lifecycle), and what 'queued' means for the caller. The workflow prose helps but does not close the gaps needed for correct invocation and follow-up.
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 14 parameters, so the description must compensate heavily, but it explains no parameter directly. It supplies workflow vocabulary (coordinator, review rounds, queued, agents) that hints at coordinator_model, review_rounds, and agents, yet leaves cwd, objective, effort, model_policy, max_retries, timeout_minutes, acceptance_criteria, context, and name semantically opaque.
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 ('Start a queued multi-agent Antigravity team') and elaborates the workflow (parallel investigation, lead coordinator report exchange, correction rounds, independent Codex review). This clearly identifies what the tool does and differentiates it from single-agent siblings like start_analysis or start_review, 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?
There is no explicit statement of when to use this tool versus start_analysis, start_review, resume_team, or the other team-management siblings, and no exclusions or prerequisites. However, the workflow detail ('Workers investigate in parallel... correction rounds... Codex review') implies the tool is for heavyweight multi-agent investigation, giving the agent a weak but real usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_dashboardBRead-only
Return a compact live dashboard snapshot with team progress, agent states, recent events, messages, and result preview.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds a meaningful behavioral profile by labeling the data as a 'compact live dashboard snapshot' and specifying the included components, aligning with the read-only intent. This is value beyond the annotations, though it stops short of describing freshness or performance details.
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 efficient sentence that front-loads the core action and object. It uses a list to convey the dashboard contents without padding, so every word earns its place. It could be even more informative with a short note on output shape, but it remains concise.
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 only one required parameter, no output schema, and read-only annotations, the description gives a reasonable mental model by listing the returned components. However, it lacks any clarification about response format, the meaning of 'result preview', whether the data is truly live, or how to handle errors. These gaps are moderate given 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 coverage is 0% for the single required team_id parameter, but the description does not explain the parameter's format, purpose, or how it relates to the dashboard. The only implicit hint is the word 'team' in the tool name and description, which is insufficient when the schema provides no documentation.
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 clearly states that the tool returns a dashboard snapshot and enumerates its key contents (team progress, agent states, recent events, messages, result preview). It is specific and actionable, though it does not explicitly differentiate itself from sibling tools like get_team or get_run.
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?
No guidance is given about when to choose team_dashboard over get_team, list_teams, or get_run. There are no scenario hints, prerequisites, or exclusions, so an agent must infer usage solely from the tool name and description.
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.
23 tool updates
v0.3.0- First observed
apply_run - First observed
cancel_run - First observed
cancel_team - First observed
continue_run - First observed
doctor - First observed
get_account - First observed
get_media_run - First observed
get_run - First observed
get_team - First observed
list_artifacts - First observed
list_models - First observed
list_runs - First observed
list_teams - First observed
message_agent - First observed
resume_team - First observed
start_analysis - First observed
start_edit - First observed
start_image_edit - First observed
start_image_generation - First observed
start_media_analysis - First observed
start_review - First observed
start_team - First observed
team_dashboard
TDQS
Scored across 23 tools
Most tools are clearly separated by domain (account, models, media, runs, teams), but start_media_analysis vs start_analysis vs start_review vs start_edit could cause some confusion since all are 'start' actions on different worker types. The descriptions help distinguish them, though the media vs analysis boundary is slightly less obvious.
The naming is mostly consistent with verb_noun patterns: get_account, list_models, start_analysis, get_run, cancel_run, apply_run. Minor deviations exist: 'doctor' is a noun-only command, and 'team_dashboard' is noun-first rather than verb_noun, but the overall pattern is predictable.
23 tools is on the higher end but appropriate for a server covering account info, model listing, media generation/analysis, async runs, and multi-agent teams. Each tool serves a distinct operational purpose, though a few could be consolidated (e.g., team_dashboard vs get_team).
The surface covers the main lifecycle: starting runs, reading runs, continuing, cancelling, and applying edits; teams can be started, read, messaged, cancelled, and resumed. Minor gaps include no explicit tool for listing models' details beyond routes, no media cancellation, and no direct team result artifact listing, but core workflows are covered.
Maintenance
Related MCP Connectors
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
Reliable async execution for agent tool calls: schema gating, retries, idempotency, audit trail.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables Codex to delegate bulk code reading, patching, and testing to an async worker using cheaper AI models, while receiving compact results.48 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables Codex to offload expensive code reading, editing, and checking to a worker agent via Claude Code, supporting async jobs and long-running tasks.MIT
- AlicenseAqualityCmaintenanceEnables Claude to delegate tasks to external coding agents (Codex or Antigravity) for independent reviews, separate quota usage, and async processing.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables Codex to delegate bounded work to external LLMs through role-based MCP tools, with worker health checks and audit logging.MIT