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.