Source record · tier 1 standards and regulators
Model Context Protocol specification 2026-07-28, Server Features: Tools
- Publisher
- Model Context Protocol project
- URL
- https://modelcontextprotocol.io/specification/2026-07-28/server/tools
- Published
- 2026-07-28
- Updated
- unknown
- Accessed
- 2026-09-05
- HTTP status
- 200
- License
- MIT license; permitted under the specification license
Source notes citing this source
- The 2026-07-28 message flow diagram shows the server answering a subscriptions listen request with a notification named notifications slash subscriptions slash acknowledged. in context
- The message flow diagram in the 2026-07-28 Tools page wraps the subscription handshake the list changed notification and the client's re-issued tools list request in a single optional fragment labelled listChanged. in context
- 10 of the pages behind tranche 006 and tranche 007 claims carried Mermaid diagrams that the corpus's own extraction dropped, totalling roughly 11,000 characters of unread evidence. field report in context
- Because the Message Flow section of the Tools page is diagram-only in both 2025-11-25 and 2026-07-28, an extraction that removes mermaid blocks leaves that section empty in both revisions and a comparison of the two extractions shows no change there, although the diagrams differ. inferred in context
- The Stateful Tools example on the 2026-07-28 Tools page is a jsonc block containing comments and three separate objects, so it is complete as published yet is not a single valid JSON document. in context
- As served on 2026-09-30 the 2026-07-28 Tools page contained 23 json blocks, 1 jsonc block and 1 mermaid block, every fence was closed, and the document ended with the list item 'Log tool usage for audit purposes'. in context
- In the MCP 2026-07-28 Tools page, the Message Flow section consists of a single mermaid sequenceDiagram code block and contains no prose. in context
- The 2026-07-28 Tools Message Flow diagram places the update steps inside an 'opt listChanged' block in which the client first sends subscriptions/listen (toolsListChanged: true) and the server sends notifications/subscriptions/acknowledged before notifications/tools/list_changed. in context
- On the 2026-07-28 Tools page the string notifications/subscriptions/acknowledged appears only inside the Message Flow mermaid block; the page's prose does not mention the acknowledgement. in context
- The tools list result set may vary by the authorization presented on the request, because credentials are per-request input rather than connection state. in context
- The Tools page depicts a client re-issuing the tools list request after a notification inside an optional fragment of its message flow diagram rather than requiring it. inferred in context
- Delivery of a tool list changed notification to a subscribed client is a SHOULD rather than a MUST. in context
- In the 2026-07-28 revision a server that declared the list changed capability SHOULD send the tool list changed notification to clients that have opened a subscriptions listen stream with the tools list changed filter set to true. in context
- A protocol level listChanged notification cannot by itself reveal a tool whose schema changed without the server announcing it because the specification makes the notification a SHOULD and imposes no client obligation. inferred in context
- In the 2026-07-28 revision a server that declared the listChanged capability SHOULD send the list changed notification to clients that have opened a subscriptions/listen stream with toolsListChanged set to true. in context
- The 2026-07-28 revision states that for trust and safety and security clients MUST consider tool annotations to be untrusted unless they come from trusted servers. in context
- The 2026-07-28 revision states that servers SHOULD return tools in a deterministic order meaning the same ordering across requests when the underlying set has not changed and gives reliable client caching and model prompt cache hit rates as the reasons. in context
- The 2026-07-28 revision gives 2 valid forms for a tool with no parameters and recommends the form that sets additionalProperties to false because it explicitly accepts only empty objects. in context
- The Model Context Protocol list changed notification is the method notifications/tools/list_changed. in context
- In the Model Context Protocol the listChanged capability indicates whether the server will emit notifications when the list of available tools changes. in context
- The 2026-07-28 revision permits the tool set to vary by the authorization presented on the request on the stated ground that credentials are per-request input rather than connection state. in context
- The 2026-07-28 revision requires that the set of tools a server returns MUST NOT vary per connection or as a side effect of other requests on the connection although it MAY change over time. in context
- Neither the 2025-06-18 nor the 2026-07-28 revision states any obligation on a client that receives a tools list changed notification. in context
- In the 2026-07-28 revision a tool's inputSchema and outputSchema default to JSON Schema 2020-12 when no schema field is present and the inputSchema MUST be a valid JSON Schema object and not null. in context
- Because the JSON Schema dialect defaults when the schema field is absent 2 tools with identical visible schemas may be validated under different dialects. inferred in context
- The 2026-07-28 revision states that tool names SHOULD be between 1 and 128 characters in length inclusive. in context
- The Tools page of the specification roughly doubled in extracted length between revision 2025-06-18 and revision 2026-07-28, from about 10,000 characters to about 21,000. field report in context
- The 2026-07-28 revision permits tool schema properties to carry an x-mcp-header annotation that exposes parameter values as HTTP headers. in context
- The Tools page grew by roughly half between the 2025-11-25 and 2026-07-28 revisions and the change is almost entirely additive. field report in context
- The execution and task support fields present in the 2025-11-25 Tools page are removed in the 2026-07-28 revision. in context
- The Stateful Tools section contains no RFC 2119 keywords at all; MUST SHOULD MAY REQUIRED and SHALL each occur 0 times within it. in context
- The specification states that the protocol has no concept of a state handle and that from the wire's perspective a handle is an ordinary string in a tool result and an ordinary argument to subsequent tool calls. in context
- The specification reconciles stateful tools with the rule that a tool set must not vary per connection: the invariance rule binds the tools list operation while handles vary the tool call. in context
- The Model Context Protocol's Stateful Tools section declares itself non-normative guidance for tool design. in context
- The specification does not state what state a stateful tool holds who holds it or for how long, nor what happens to it when a connection drops. in context
- Statefulness in Model Context Protocol tools is a design convention carried in ordinary tool arguments and results rather than a protocol mechanism. inferred in context
Cite this source record
APA
WarmTransfer. (2026, July 28). Model Context Protocol specification 2026-07-28, Server Features: Tools. WarmTransfer. https://warmtransfer.net/knowledge/sources/mcp-spec-2026-07-28-server-tools
BibTeX
@misc{warmtransfer-mcp-spec-2026-07-28-server-tools,
title = {Model Context Protocol specification 2026-07-28, Server Features: Tools},
author = {{WarmTransfer}},
year = {2026},
url = {https://warmtransfer.net/knowledge/sources/mcp-spec-2026-07-28-server-tools},
note = {Model Context Protocol project, accessed 2026-09-05}
}