MCP revision 2026-07-28 adds a caching utility. Servers MUST include ttlMs and cacheScope on every complete result from server/discover, tools/list, prompts/list, resources/list, resources/templates/list and resources/read.
For this server that is tools/list, and it lands straight on the work #86 and #87 did. The four tool definitions cost ~1,053 tokens, and a client reloads them on every turn whether a tool is called or not. #87 cut that cost by 31% by making the definitions say each thing once; ttlMs cuts how often the client pays it at all. The two compose.
The answer here is easy, because the tool set is fixed at startup and identical for every caller: a long ttlMs with cacheScope: "public". Nothing in tools/list varies by org, by user or by flag — --no-apex-execution only changes the description text, and it is decided before the server connects.
Goal
tools/list carries ttlMs and cacheScope: "public".
- The registration order is confirmed deterministic. The spec notes that a stable order lets clients cache the list and improves LLM prompt-cache hit rates, which is the same saving from the other side.
pnpm run eval keeps budgeting the definitions, so a regression in the standing cost still fails the build.
Blocked on #103
Not blocked on the SDK — ttlMs and cacheScope are in the type surface of the published @modelcontextprotocol/server@2.0.0. #103 migrates to it.
Order
Land after #93. Both sit on #103, #93 carries the harder half of the modern era, and this one is a two-field addition once the server speaks it.
MCP revision
2026-07-28adds a caching utility. Servers MUST includettlMsandcacheScopeon everycompleteresult fromserver/discover,tools/list,prompts/list,resources/list,resources/templates/listandresources/read.For this server that is
tools/list, and it lands straight on the work #86 and #87 did. The four tool definitions cost ~1,053 tokens, and a client reloads them on every turn whether a tool is called or not. #87 cut that cost by 31% by making the definitions say each thing once;ttlMscuts how often the client pays it at all. The two compose.The answer here is easy, because the tool set is fixed at startup and identical for every caller: a long
ttlMswithcacheScope: "public". Nothing intools/listvaries by org, by user or by flag —--no-apex-executiononly changes the description text, and it is decided before the server connects.Goal
tools/listcarriesttlMsandcacheScope: "public".pnpm run evalkeeps budgeting the definitions, so a regression in the standing cost still fails the build.Blocked on #103
Not blocked on the SDK —
ttlMsandcacheScopeare in the type surface of the published@modelcontextprotocol/server@2.0.0. #103 migrates to it.Order
Land after #93. Both sit on #103, #93 carries the harder half of the modern era, and this one is a two-field addition once the server speaks it.