Agents & MCP
Expose a collection over MCP with the three-tier lean index -> manifest -> item pattern so an agent spends context only on what it opens. Covers each tier's payload shape, naming symmetry, and when to collapse the middle tier.
4 files
Description
Expose a collection over MCP with the three-tier lean index -> manifest -> item pattern so an agent spends context only on what it opens. Covers each tier's payload shape, naming symmetry, and when to collapse the middle tier.
An agent pays for every token a tool returns. A tool that lists ten skills by dumping all ten SKILL.md bodies burns the context budget before the agent has decided which one it needs. Progressive disclosure fixes this: the agent walks from a cheap overview down to exactly one item's contents, and never loads what it did not ask for.
This is the house pattern behind a well-built library surface (skills, agents, files, design systems). It generalizes to any MCP server exposing a collection - internal docs, a records table, a catalog.
list_* tool returns so much that a few calls blow the context window.list_<plural>): id/slug plus a one-line descriptor per item. No contents. This is the map. It must stay small enough that listing the whole collection costs little.get_<singular>): one item's summary (for a skill, the SKILL.md body) plus a file/section manifest - each part's path and a one-line purpose, still no part contents. The agent reads this to decide which parts are worth pulling.get_<singular>_<part>): the actual contents of ONE part, fetched on demand.The purpose line in the manifest is load-bearing: it is the only signal the agent has to decide whether a part is worth its tokens. Write it as "what this covers and when to pull it," not a title. See reference/tiers.md.
list_<plural>; item tools are get_<singular>. Keep the naming symmetric so an agent can predict the next call. See reference/naming.md.get_*, it does not belong in the index.list/get is correct there; do not add ceremony. See reference/collapsing.md.{bytes, truncated, maxBytes, url}); a binary returns a durable URL, not bytes.reference/tiers.md.reference/tiers.md.reference/naming.md.reference/tiers.md - the payload shape for each tier, byte caps, truncation and binary handling, worked examples.reference/naming.md - naming symmetry, descriptions as prompt engineering, cross-referencing sibling lenses.reference/collapsing.md - when a two-tier surface is right, and the failure modes of over- and under-disclosing.Added 2026-07-01. Back to the Skill Library.

New tutorials, open-source projects, and deep dives on coding agents - delivered weekly.