Skip to main content
Glama

agy-mcp

MCP server for Antigravity IDE — skill management, config bridge, and agent orchestration.

Wraps Antigravity's local ~/.agents/ directory (skills, .skill-lock.json, config.json) as MCP tools, so an assistant can list, read, install, and search Antigravity skills, and read or write Antigravity configuration, without shelling out manually.

Status (0.2.0)

Single-file server (src/agy_mcp/server.py) exposing 11 tools plus agy_help, covered by a 34-test pytest suite (skill CRUD, config, GitHub install with stubbed clone, security regressions) running in CI on Linux + Windows, Python 3.11 and 3.12.

Security note: 0.1.0 joined caller-supplied skill names directly into filesystem paths, so agy_delete_skill("..") could delete arbitrary directories and agy_read_skill("../victim") could read files outside the skills directory. 0.2.0 validates every skill name against a strict charset and containment-checks the resolved path before any read, write, or delete. Because this server is driven by an LLM, treat these regressions as load-bearing — see tests/test_security.py before weakening name validation.

Related MCP server: skills-mcp

Tools

Tool

Description

agy_list_skills

List installed skills from ~/.agents/skills/, merged with lock metadata

agy_read_skill

Read a skill's full SKILL.md

agy_search_skills

Search skill names and content

agy_install_skill

Write or update a skill's SKILL.md, register it in the lock file

agy_delete_skill

Remove an installed skill

agy_install_skill_from_github

Clone a GitHub repo, pull a SKILL.md out of it, install as a skill

agy_get_config / agy_set_config

Read/write Antigravity's config.json

agy_list_providers

List configured LLM providers from config

agy_skill_lock_status

Read .skill-lock.json (sources, versions)

agy_version

Report the installed Antigravity CLI version

agy_help

List all tools

Quick start

cd D:\Dev\repos\agy-mcp
uv sync
uv run agy-mcp

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "agy-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "D:\\Dev\\repos\\agy-mcp", "agy-mcp"]
    }
  }
}

By default it reads and writes ~/.agents/ — override with the AGENTS_DIR environment variable (resolved per call, so it can also be set just for tests).

Development

uv sync --group dev        # pytest, pytest-asyncio, ruff, pre-commit
uv run pytest -q           # 34 tests, < 1s, no network
uv run ruff check src tests
uv run ruff format src tests
just bootstrap             # Windows: also installs the pre-commit hook

CI (.github/workflows/ci.yml) runs lint + tests on ubuntu-latest and windows-latest across Python 3.11/3.12; scripts/ci.ps1 mirrors the same gates locally on Windows.

Requirements

  • Python 3.11+

  • uv

  • FastMCP 3.4+

Available Tools

12 tools
agy_delete_skillA

Permanently remove an installed skill.

Return Format

{"success": bool, "name": str}

Examples

agy_delete_skill("old-skill")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
skill_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It clearly discloses the destructive and irreversible nature via 'Permanently remove' and gives the return format. It does not mention permissions or effects on dependent configurations, but for a simple deletion tool the essential behavior is transparent.

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

Conciseness5/5

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

The description is compact and front-loaded with the core action, then supplements with a return format and a concrete example. Every section earns its place with no fluff or repetition.

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

Completeness3/5

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

The return format and example cover the happy path, but the optional ctx parameter is undocumented and there is no mention of error cases, idempotency, or prerequisites beyond 'installed skill'. For a simple delete tool this is usable but not fully complete.

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

Parameters2/5

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 explicitly explain skill_name or the optional ctx parameter. The example 'agy_delete_skill("old-skill")' implies that the argument is the skill name, but meaning is left mostly to inference rather than stated.

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

Purpose5/5

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

The description states a specific verb ('remove'), resource ('skill'), and permanence ('permanently'), making the tool's purpose unmistakable. It clearly differentiates from siblings like agy_list_skills, agy_read_skill, and agy_install_skill.

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

Usage Guidelines3/5

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

The description implies the tool is for deleting an installed skill, which is clear enough, but it does not explicitly state when to prefer this over alternatives or caution against using it on skills still in use. No when-not-to-use guidance is provided.

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

agy_get_configB

Read the full Antigravity configuration.

Return Format

{"config": dict, "path": str}

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure; 'Read' conveys a non-mutating operation and the return format is given. However, it does not mention authentication needs, whether the config may contain sensitive material, or any other side effects or constraints.

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

Conciseness5/5

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

The description is two short sections: a clear purpose sentence and a structured return format. No filler or repeated schema information.

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

Completeness3/5

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

For a simple getter with no required parameters, the purpose and return format are sufficient to invoke it. However, the undocumented ctx parameter and lack of detail about what 'full Antigravity configuration' contains leave some ambiguity for an agent deciding whether this is the correct tool.

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

Parameters1/5

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

The input schema provides one optional ctx parameter with no type or description, and schema description coverage is 0%. The description does not mention ctx at all, so the agent receives no meaningful parameter guidance.

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

Purpose5/5

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

Description uses a specific verb ('Read') and resource ('full Antigravity configuration'), and the read/write contrast with sibling agy_set_config makes its role immediately distinguishable.

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

Usage Guidelines3/5

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

The description implies this is the tool to use when you need the entire configuration, but it does not explicitly state when not to use it or mention alternatives such as agy_set_config. The usage context is clear but no routing guidance is provided.

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

agy_helpB

Show all available agy-mcp tools and usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral burden. 'Show' clearly indicates a read-only, non-mutating operation, but the description does not disclose any additional behavioral traits such as output format, permissions, or side effects.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It earns its place by stating the tool's core function directly.

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

Completeness4/5

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

For a simple read-only help tool with no required parameters and an output schema, the description is largely complete. It would benefit from at least a passing mention of the optional ctx parameter, but the tool itself is low-complexity.

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

Parameters1/5

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

The schema has one optional parameter, 'ctx', with 0% description coverage. The tool description does not mention it at all, leaving an agent without any guidance on what to pass or whether it matters.

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

Purpose4/5

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

The description uses a clear verb and resource: 'Show all available agy-mcp tools and usage.' It communicates the tool's scope precisely, although it does not explicitly contrast with sibling tools like agy_list_skills or agy_get_config.

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

Usage Guidelines3/5

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

The description implies the tool is for discovering the full set of agy-mcp tools and their usage, which is a reasonable when-to-use signal. However, it does not explicitly name alternatives or state when not to use this tool.

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

agy_install_skillB

Create or update a skill by writing its SKILL.md.

Also registers the skill in .skill-lock.json as a local skill.

Return Format

{"success": bool, "name": str}

Examples

agy_install_skill("my-skill", "# My Skill\n\nBe helpful and concise.")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
contentYes
skill_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations are empty, so the description carries the full burden. It discloses that it writes SKILL.md and registers in .skill-lock.json, and provides the return format. However, it does not mention that updating overwrites existing content, whether it requires specific permissions, or any other side effects. It is adequate but not rich in behavioral detail.

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

Conciseness4/5

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

The description is concise and front-loaded with the core purpose. It includes a return format and a clear example, both adding value without verbosity. The structure is efficient and easy to parse.

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

Completeness3/5

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

Given the output schema (return format provided) and the tool's moderate complexity, the description covers the essentials: what it does, how to call it via example, and what it returns. It does not elaborate on prerequisites, error handling, or overwrite behavior, but is not critically incomplete. A 3 is appropriate.

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

Parameters2/5

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 provides an example call (agy_install_skill("my-skill", "# My Skill...")) which implies skill_name and content, but does not explicitly define either parameter, nor does it explain the optional ctx parameter. The example is helpful but does not fully compensate for the absence of schema descriptions.

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

Purpose5/5

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

The description clearly states 'Create or update a skill by writing its SKILL.md' and mentions registration in .skill-lock.json. It uses a specific verb (create/update) and resource (skill), and is distinct from siblings like agy_list_skills, agy_read_skill, and agy_delete_skill. 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.

Usage Guidelines2/5

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

The description does not mention when to use this tool versus alternatives. It neither lists sibling tools nor explains conditions for choosing it over agy_install_skill_from_github or other write operations. Usage context is only implicit from the verb 'create or update'.

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

agy_install_skill_from_githubA

Install a skill directly from a GitHub repository.

Clones the repo temporarily and extracts the skill directory.

Return Format

{"success": bool, "repo": str, "skill_name": str}

Examples

agy_install_skill_from_github("sandraschi/python-expert") agy_install_skill_from_github("sandraschi/mcp-central-docs", "skills/fleet-expert")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
repoYes
skill_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations are empty, so the description carries the behavioral burden. It discloses the core mechanism—temporarily cloning the repo and extracting the skill directory—and the return shape. It does not mention overwrite behavior, persistence, or failure modes, but the main behavior is transparent.

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

Conciseness5/5

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

The purpose is front-loaded in one clear sentence, followed by the mechanism, return format, and two useful examples. Each block earns its place, and there is no filler or redundant restating of schema fields.

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

Completeness4/5

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

For a medium-complexity tool with no annotations, the description covers what the tool does, how it works, what it returns, and how to call it with common argument shapes. Missing details like ctx semantics, overwrite/conflict handling, and explicit sibling selection keep it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The examples provide meaningful semantics for repo and skill_path, showing that skill_path is optional and can point to a subdirectory like 'skills/fleet-expert'. However, ctx is entirely unexplained and there are no explicit parameter descriptions.

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

Purpose4/5

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

States a specific action-and-resource pair: install a skill, and further specifies the source as a GitHub repository. The description makes it reasonably distinct from sibling agy_install_skill, though it does not explicitly name that alternative.

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

Usage Guidelines3/5

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

Usage context is implied clearly: use this when installing a skill from a GitHub repository. The examples show both a bare repository call and a subdirectory call, but the description does not explicitly say when to prefer this over agy_install_skill or mention prerequisites/exclusions.

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

agy_list_providersA

List configured LLM providers from Antigravity config.

Reads the providers section from config.json.

Return Format

{"providers": [{"name": str}], "count": int}

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations to carry safety information, the description states the behavior itself: it reads the providers section from config.json and returns a list, implying no mutation. The exact return shape is also given. It doesn't cover auth or error cases, but that is acceptable for a simple read tool.

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

Conciseness5/5

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

The description is short, front-loaded with the action, and uses a clear Return Format section. Every sentence adds information with no filler.

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

Completeness5/5

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

For a simple no-required-parameter list operation, this is complete: it identifies the source config, the exact providers section, and the return format. An agent has everything needed to invoke it correctly.

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

Parameters3/5

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

The only parameter is an optional `ctx` with a default null, and neither the schema nor the description explains its meaning. Since there are no required business parameters the practical gap is small, but the description adds no parameter semantics and schema coverage is 0%.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List configured LLM providers from Antigravity config', and further scopes it to 'the providers section from config.json'. This clearly distinguishes it from the skills/config sibling tools.

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

Usage Guidelines4/5

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

The wording makes the applicable context clear: call it when you need the configured LLM providers. It does not explicitly name alternatives or when-not conditions, but the read-only list scope is unambiguous against the sibling set.

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

agy_list_skillsA

List all installed Antigravity agent skills with source info.

Scans ~/.agents/skills/ and merges metadata from .skill-lock.json.

Return Format

{"skills": [{"name": str, "source": str, "source_type": str}], "count": int}

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses the scan location (~/.agents/skills/), the metadata merge from .skill-lock.json, and the return shape. It does not cover failure modes or permissions, but for a read-only listing tool this is adequate.

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

Conciseness5/5

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

Two compact sentences plus a return-format block. The purpose is front-loaded and every part adds usable information without waste.

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

Completeness4/5

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

The description defines scope, source paths, metadata merging, and return format, which is enough for a simple list tool. It lacks any note about the optional ctx parameter and explicit sibling routing, but the core invocation context is largely complete.

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

Parameters1/5

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

The single parameter 'ctx' has 0% schema coverage and is not mentioned in the description. The description provides no meaning beyond the bare schema field and does not compensate for the missing parameter documentation.

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

Purpose5/5

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

States a specific verb ('List') and resource ('all installed Antigravity agent skills') plus source info. This clearly differentiates it from sibling tools like agy_read_skill and agy_search_skills.

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

Usage Guidelines3/5

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

Implies a full-inventory use case by saying 'all installed', but does not explicitly say when to choose it over agy_search_skills or provide exclusions. Some routing context is present, but it is left to inference.

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

agy_read_skillA

Read a skill's full SKILL.md content.

Return Format

{"name": str, "content": str, "meta": dict}

Examples

agy_read_skill("python-expert")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
skill_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With empty annotations, the description carries the behavioral disclosure burden. The verb 'Read' implies a read-only, non-destructive operation, and the return format provides useful output expectations. However, it does not disclose error behavior for missing skills, whether it operates on installed skills only, or any side effects. It adds some value but leaves important behavior unstated.

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

Conciseness5/5

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

The description is compact and well-organized: a one-line purpose statement, a clear return format block, and a concrete example. Every element earns its place and the structure is scannable. No redundant or filler content.

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

Completeness3/5

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

The tool is simple, and the description provides purpose, return format, and an example—adequate for a basic call. But it omits edge-case behavior such as what happens when the skill does not exist, whether skills must already be installed, or how content is encoded. Given the absence of annotations and schema descriptions, these gaps make the definition only minimally complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must clarify parameters. The example agy_read_skill("python-expert") makes it clear that skill_name is a positional string identifying a skill. However, the optional 'ctx' parameter is completely unexplained, and the description only partially compensates for the lack of schema descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: 'Read a skill's full SKILL.md content.' This clearly distinguishes the tool from siblings like agy_list_skills (which lists names), agy_search_skills, and mutation tools like install/delete. An agent can immediately understand the tool's unique function.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not state conditions such as 'use when you need the full content rather than just the list of skills' or mention exclusions/prerequisites like requiring the skill to be installed. The example only shows how to call it, not when to choose it.

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

agy_search_skillsB

Search across all installed skill names and content.

Return Format

{"results": [{"name": str, "match": str}], "count": int}

Examples

agy_search_skills("python") agy_search_skills("docker")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations are entirely empty, so the description carries the full burden of behavioral disclosure. It discloses the search scope (names and content) and the exact return format, and 'search' inherently implies a non-destructive read. However, it doesn't address match semantics, case sensitivity, or result limits. No contradiction with annotations exists since there are none.

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

Conciseness4/5

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

The purpose is front-loaded, followed by a compact return-format code block and two clear usage examples. Every sentence earns its place with no filler.

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

Completeness3/5

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

This is a low-complexity search tool with an output schema and the return format also embedded in the description, so results are well covered. However, the opaque ctx parameter is never explained and there is no guidance on when this tool is preferred over its siblings, leaving the definition merely adequate for the core action.

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

Parameters2/5

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

Schema description coverage is 0% and the description mentions neither parameter. 'query' is inferable from the examples and the schema, but 'ctx' (nullable, default null) is entirely unexplained, and the description adds nothing about how the query is matched or what ctx controls.

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

Purpose4/5

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

The description states a specific verb (search), resource (installed skills), and scope (names and content), which clearly differentiates it from list_skills (enumerate) and read_skill (load a specific skill). It is clear and specific, though it doesn't explicitly name sibling alternatives within the text.

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

Usage Guidelines2/5

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

No when-to-use guidance, alternatives, or exclusions are given. The examples show syntax but not the conditions under which an agent should choose search over list or read. With 11 sibling tools, the lack of any routing guidance is a notable gap.

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

agy_set_configA

Set a configuration value in Antigravity config.json.

Creates the config file if it doesn't exist.

Return Format

{"success": bool, "key": str, "value": any}

Examples

agy_set_config("default_model", "claude-sonnet-4-6")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
keyYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With empty annotations, the description carries the full behavioral burden and does a decent job: it discloses the side effect of creating the config file if nonexistent and specifies the exact return format. It does not cover overwrite semantics or error conditions, but adds meaningful context beyond the schema and annotations.

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

Conciseness5/5

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

The description is compact and well-organized with distinct sections for the core action, side effect, return format, and example. There is no filler text; each line earns its place.

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

Completeness3/5

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

The description provides a usable overview, return format, and a concrete example, which is adequate for a simple setter. However, it omits guidance on the ctx parameter, valid config keys, and overwrite behavior, leaving notable gaps for an agent with no earlier context.

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

Parameters2/5

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 explicitly explain the key, value, or ctx parameters. The example implies positional mapping but leaves ctx entirely undocumented, and the schema's value type (string) conflicts with the documented return type (any), adding ambiguity.

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

Purpose5/5

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

The description states a concrete verb ('Set') and resource ('configuration value in Antigravity config.json'), making it unambiguous what the tool does. It is clearly differentiated from sibling tools like agy_get_config by focusing on the write operation.

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

Usage Guidelines3/5

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

The description implies usage as the config setter counterpart to agy_get_config, but it never explicitly states when to prefer this tool over alternatives or mentions exclusions/prerequisites. The verb and resource provide basic context, but no proactive routing guidance is offered.

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

agy_skill_lock_statusB

Read the .skill-lock.json to see installed skill sources and versions.

Return Format

{"version": int, "skills": [{"name": str, "source": str, "source_type": str}], "count": int}

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

There are no annotations to fall back on, but the description itself reveals that this is a read-only operation on a specific file and includes the expected return shape. It does not disclose behavior when the lock file is missing, malformed, or out of sync, so the transparency 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.

Conciseness5/5

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

The description is appropriately short, front-loads the main purpose, and adds a compact, useful return-format block. Every sentence contributes meaning and there is no filler.

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

Completeness3/5

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

For a simple read-only status tool, the description covers the action, resource, and return format. However, it omits usage context relative to sibling tools, parameter semantics, and failure behavior, so it is not fully complete for an agent deciding among related skill-management tools.

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

Parameters2/5

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

The only parameter, ctx, has zero schema description and is not mentioned in the tool description. The parameter is optional with a default of null, which lowers the impact, but with 0% schema coverage the description should still clarify its role.

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

Purpose4/5

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

The description clearly states the verb 'Read' and the resource '.skill-lock.json', with an explicit purpose: seeing installed skill sources and versions. It is specific, but it does not explicitly differentiate itself from the similar sibling agy_list_skills, so it falls short of a 5.

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

Usage Guidelines3/5

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

The phrase 'to see installed skill sources and versions' implies when the tool is useful. However, it gives no explicit guidance about when to prefer this tool over alternatives like agy_list_skills or agy_get_config, and it provides no exclusion criteria.

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

agy_versionA

Get the installed Antigravity CLI version.

Return Format

{"version": str, "path": str}

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral burden. It conveys a read-only retrieval ('Get') and discloses the exact return format including version and path. It doesn't mention side effects, errors, or prerequisites, but for a version-check tool this is mostly sufficient.

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

Conciseness5/5

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

The description is minimal and effective: one clear sentence plus a compact return-format block. It is front-loaded, uses a clear markdown header, and contains no filler.

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

Completeness3/5

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

The core purpose and return format are covered, and an output schema exists. However, the 'ctx' parameter remains unexplained, and there is no explicit statement that no arguments are required. This is a clear gap, though the tool is simple enough that the impact is moderate.

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

Parameters2/5

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

The schema has one parameter 'ctx' with zero description coverage, and the description does not explain it at all. It also fails to state that the tool can be called with no arguments. The impact is reduced because the parameter is optional with a default of null, but the description adds no semantic value.

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

Purpose5/5

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

The description states 'Get the installed Antigravity CLI version', which clearly identifies the action (get) and resource (installed CLI version). It is easily distinguishable from sibling tools that handle skills, config, and providers.

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

Usage Guidelines4/5

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

The purpose is unambiguous, and no sibling tool performs this function, so the usage context is clear without needing explicit exclusions. It doesn't explicitly say 'use this when you need the CLI version', but the description strongly implies it.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.2.0
    • First observedagy_delete_skill
    • First observedagy_get_config
    • First observedagy_help
    • First observedagy_install_skill
    • First observedagy_install_skill_from_github
    • First observedagy_list_providers
    • First observedagy_list_skills
    • First observedagy_read_skill
    • First observedagy_search_skills
    • First observedagy_set_config
    • First observedagy_skill_lock_status
    • First observedagy_version

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target clearly distinct actions (list/read/search/install/delete skills vs. config get/set), but agy_list_skills and agy_skill_lock_status both report installed skill source info and could be confused. The detailed return formats and examples help resolve most ambiguity.

Naming Consistency4/5

Tools consistently use the agy_ prefix with snake_case and a mostly verb_noun pattern like agy_list_skills and agy_set_config. Minor exceptions like agy_help, agy_version, and agy_skill_lock_status deviate from the verb_noun convention but remain readable and predictable.

Tool Count5/5

12 tools is well-scoped for a server managing Antigravity skills, configuration, providers, and version info. Each tool has a defined role, and the count is appropriate without feeling bloated or sparse.

Completeness4/5

The skill lifecycle is well covered: list, read, search, install, delete, and GitHub-based install are all present, with config get/set and provider listing. Minor gaps exist such as no direct provider add/remove tool or config deletion, but these can be worked around via set_config.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to discover, install, and manage SKILL.md skills from a Git-backed registry via MCP tools for search, install, and list operations.
    12 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude/MCP agents to search, list, get details, and generate install commands for skills, MCP servers, and connections from the DFL Forge skills registry.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for managing AI skills and tools from GitHub marketplaces, enabling discovery, installation, removal, and auto-updates via natural language or commands.
    -