Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Compare two saved MCP tools/list responses by matching tools on their programmatic name, then separating additions and removals from changes to existing definitions. Keep the protocol version, capture time, authorization context, and pagination status with each snapshot: without them, an apparent tool change may reflect a partial capture or different permissions rather than a changed server interface.

What a saved tools/list response tells you

A tools/list response is a record of the tools visible in a particular request context, not necessarily a timeless inventory of everything a server can provide. A tool definition can include a programmatic name, description, and inputSchema, plus optional fields such as title, outputSchema, annotations, and _meta. The MCP schema reference for 2025-06-18 documents these fields and the list result shape: MCP schema reference, 2025-06-18.

Protocol versions matter. The 2025-06-18 reference lists tools and optional nextCursor; the 2026-07-28 Tools specification example also includes resultType and requestState. Preserve the exact raw response and label it with the applicable protocol version rather than assuming all saved responses share one fixed shape. See the MCP Tools specification, 2026-07-28.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Capture complete, comparable snapshots

Before diffing definitions, make sure each snapshot represents a complete and identifiable capture. The current MCP specification supports pagination, and a response may provide a cursor for retrieving another page. If one capture stops early, tools absent from it can be mistaken for removals.

  1. Save the raw JSON-RPC response for every page rather than only a flattened summary.
  2. Record server identity, protocol version, timestamp, authorization or scope context, and whether all cursor pages were collected. Record permission context without storing credentials or secrets.
  3. Follow each returned cursor until the inventory is complete, retaining page and cursor provenance so the assembled snapshot can be audited.
  4. Keep unknown fields in the saved data. A comparator that does not recognize a field should not silently erase it.

The 2026-07-28 specification says the available tool set must not vary per connection or as a side effect of other requests on that connection, while allowing it to vary according to authorization presented on a request. Two complete lists can therefore differ because they were captured under different permissions. The specification also describes list-change notifications when the server declares the relevant capability and a client subscribes; a notification can prompt a refresh, but it does not make an older saved response current by itself.

Compare names first, then definitions

Use each tool’s programmatic name as its identifier. Compare membership separately from edits to tools that appear in both captures. A useful report has three membership groups and then field-level changes for the shared names:

  • Added: names present in the newer snapshot but absent from the earlier one.
  • Removed: names present in the earlier snapshot but absent from the newer one.
  • Modified: names present in both whose definition fields differ.

For each matched name, compare descriptive and contract fields separately. A display-oriented title or description edit is not the same kind of change as an input-schema edit. Treat outputSchema as optional, and compare annotations and _meta as their own category rather than mixing them into schema changes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Structural versus semantic schema diffs

Parse JSON before comparing it. Whitespace and the order of object keys are not semantic changes, so a textual diff of raw JSON can be noisy. For schema objects, either show a structural diff or normalize them under explicit, appropriate rules. The MCP 2025-11-25 specification says schema usage defaults to JSON Schema 2020-12 when $schema is absent; account for that dialect when interpreting schema changes. Do not present a normalized result as universal equivalence unless the normalization rules and dialect are clear. The relevant guidance is in the MCP Tools specification, 2025-11-25.

Separate ordering and hints from contract changes

Ordering

Report list order separately from membership and definition edits. The 2026-07-28 specification recommends that servers return tools in deterministic order to support reliable caching, but an ordering difference alone does not establish that a callable interface changed. Avoid treating a reorder as a removal followed by an addition.

Annotations

Annotation values can be useful signals—for example, a change to readOnlyHint or destructiveHint deserves attention—but they are hints, not proof of runtime behavior. The 2025-11-25 specification says clients must consider tool annotations untrusted unless they come from trusted servers. Flag annotation changes separately and assess them in the context of the server and its trustworthiness.

Judge compatibility from the specific schema edit

A diff identifies what changed; it does not by itself establish whether clients will break. Inspect the changed schema and the requests made in the relevant context before assigning compatibility impact. For example, adding a required input field can materially affect callers that do not supply it, while changing a display title does not alter the input contract. State the observed edit and its consequence separately, and do not infer changed runtime behavior solely from metadata or an annotation.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Keep API-specific caching claims in context

OpenAI’s API documentation describes an mcp_list_tools output item and says that while the item remains in the API request context, the API will not fetch the list again on each conversation turn. This is documented behavior for that API context, not a general MCP caching rule. See OpenAI API documentation for MCP servers.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.