ToolRouter implements the draft SEP-2640 Skills Extension under the extension identifier io.modelcontextprotocol/skills. This page was verified against that 27 August 2026 draft snapshot and the working-group charter; the proposal remains in review, so its wire contract may change before it becomes final. ToolRouter tracks the current Resources-based design rather than the superseded skill://index.json experiment.
Every approved ToolRouter operation is published as an Agent Skill. The skill provides workflow instructions for calling ToolRouter's existing discover and use_tool tools; it does not bypass authentication, billing, approval, connector, policy, or human-review safeguards.
Capability negotiation
Skills-aware MCP clients request the extension during initialization:
{
"capabilities": {
"extensions": {
"io.modelcontextprotocol/skills": {}
}
}
}ToolRouter advertises:
{
"capabilities": {
"extensions": {
"io.modelcontextprotocol/skills": {
"directoryRead": true
}
}
}
}Clients that do not support the extension continue through ToolRouter's ordinary text tool flow. Both stdio and hosted HTTP retain initialization capabilities and omit Skills-specific resources for clients that did not negotiate the extension.
The legacy Streamable HTTP adapter keeps bounded, expiring sessions in one gateway process. Deploy it as a single replica or with session affinity; the planned MCP 2026-07-28 adapter removes this constraint with request-scoped capabilities.
Discovery and retrieval
skills/listreturns stable, URI-sorted pages of up to 100 skill entries and an opaquenextCursorwhen another page exists.skills/getreturns one entry by its exactSKILL.mdURI, whether or not the client saw it in a listing.resources/readreturns theSKILL.mdor one of its referenced schema/example files.resources/directory/readlists direct children of every directory in ToolRouter'sskill://namespace.
Each operation uses this URI shape:
skill://toolrouter/<tool-name>/<tool-name>-<operation-name>/SKILL.mdThe directory segment immediately above SKILL.md matches the Agent Skills frontmatter name. Tool-qualified names avoid collisions across the catalogue. The entry's resources array is complete and includes the raw byte size and lowercase sha256:<hex> digest of every file. ToolRouter currently publishes SKILL.md, references/input-schema.json, references/examples.json, and references/output-schema.json when an output schema exists, and excludes any generated skill above SEP-2640's 512-resource or 16 MiB limit.
Progressive disclosure
Use skills/list metadata to decide whether a skill applies, then load only that skill's SKILL.md. Read its referenced schema or examples only when needed. Do not prefetch every file in the catalogue: SEP-2640 requires on-demand retrieval so connection cost scales with actual use rather than catalogue size.
The skill catalogue is public metadata and returns cacheScope: "public" with a five-minute freshness hint. File digests verify that a read matches the selected entry; they do not make server-supplied instructions inherently trusted. Hosts remain responsible for origin-aware identity, digest verification, user approval, collision handling, and treating a generic resources/read as transport rather than automatic skill activation.