MCP tools

MCP tools

The three tools agents call — find_skills, get_skill, and get_skill_file.

Once an agent is connected, it sees exactly three tools. They map directly onto progressive disclosure: search returns descriptors, then load the body, then fetch a file only when needed. Each step pulls just enough to act.

find_skills

Semantic search over your registry. Returns lightweight descriptors only — name, description, and a similarity score. No bodies, no files. This keeps agent context lean and lets the model decide what's worth loading.

Similarity is 1 − cosine distance against the embedding of each skill's name + description + trigger phrases (higher is closer).

Params: query (string).

// request
{ "tool": "find_skills", "params": { "query": "add a column without downtime" } }

// response
{
  "results": [
    { "id": "skl_8f2", "name": "Zero-downtime Postgres migrations", "description": "Run schema changes with expand/contract.", "score": 0.91 },
    { "id": "skl_1a7", "name": "Postgres backups", "description": "Snapshot and restore production databases.", "score": 0.58 }
  ]
}

get_skill

Loads one skill's SKILL.md body plus a manifest of its supporting files. The agent reads the body and only fetches files the body actually references.

Params: id (string).

// request
{ "tool": "get_skill", "params": { "id": "skl_8f2" } }

// response
{
  "id": "skl_8f2",
  "version": 3,
  "name": "Zero-downtime Postgres migrations",
  "body": "# SKILL.md\n\nUse the expand/contract workflow...",
  "files": [
    { "path": "expand-contract.md", "kind": "doc" },
    { "path": "migrate.py", "kind": "script" }
  ]
}

The returned body is the current version by default, or the tagged version if the connection pins a tag (…/w/your-workspace?tag=prod) — see Versioning.

get_skill_file

Fetches the contents of one referenced file on demand. The agent calls this only when SKILL.md points it at a specific file.

Params: id (string), path (string).

// request
{ "tool": "get_skill_file", "params": { "id": "skl_8f2", "path": "migrate.py" } }

// response
{
  "id": "skl_8f2",
  "path": "migrate.py",
  "kind": "script",
  "content": "import sys\n# ...migration helper..."
}

Each call is recorded, powering Analytics — including dead reference files that are bundled but never fetched.