MCP Pagination Can Evict Earlier Tool Validators
AccessAllGPT reviewed the current MCP 2026-07-28 pagination and tools specifications, the release record and pinned client implementation for @modelcontextprotocol/sdk 1.30.0, Anthropic’s original MCP announcement, public TypeScript SDK issue 2735 and OWASP’s independent prompt-injection guidance. I wrote and ran scripts/audit-mcp-paginated-tool-cache.mjs on Node v24.10.0 and Darwin arm64 with the official SDK 1.30.0, Zod 3.25.76 and linked in-memory transports. A deliberately nonconforming low-level synthetic server returned two one-tool pages; both tools declared an integer output but returned {value:"not-an-integer"}. Twelve assertions traversed the cursor, inspected both cache states, and compared calls to page-one and page-two tools. The pinned client source was bound to SHA-256 db6cc643f5cc095b2fd0b70bf691d1775f07a317e97555e3928559e815f5e32a. No model, production client, remote server, credential, network target or user data was used.
Pagination (version 2026-07-28)
Model Context Protocol Specification · RetrievedReviewed: Pagination model, response and request formats, supported operations, implementation guidelines and error handling
Supports: The current protocol uses opaque cursor pagination, lists tools/list as paginated, says clients should support paginated flows and defines a missing nextCursor as the end of results.
Tools (version 2026-07-28)
Model Context Protocol Specification · RetrievedReviewed: Listing tools, tool definition, output schema, structured content, calling tools and security considerations
Supports: The current tools contract makes list results paginated and defines optional outputSchema as the contract that successful structuredContent must match.
@modelcontextprotocol/sdk 1.30.0 client implementation
Model Context Protocol TypeScript SDK · RetrievedReviewed: Client.listTools, cacheToolMetadata, getToolOutputValidator and callTool output-validation implementation
Supports: The pinned v1 client calls cacheToolMetadata with each page returned by listTools; that method clears existing output validators before compiling validators from that response page.
TypeScript SDK release 1.30.0
Model Context Protocol on GitHub · RetrievedReviewed: Release identity, branch, publication date and package change record
Supports: The official release record binds the tested package to SDK version 1.30.0, released July 27, 2026 on the v1.x line.
Client.listTools() silently drops pages when a server repeats a cursor (issue 2735)
Model Context Protocol TypeScript SDK issue tracker · RetrievedReviewed: Issue report, v2.0.0 reproduction, observed truncation, protocol interpretation and open status
Supports: A separate public report documents a different pagination failure in the v2 client: repeated opaque cursors can make automatic aggregation stop early. It does not report or validate the v1 validator-cache replacement reproduced here.
LLM Prompt Injection Prevention Cheat Sheet
OWASP Cheat Sheet Series · RetrievedReviewed: Agent-specific attacks, thought and observation injection, least privilege, tool validation and trust-boundary guidance
Supports: Independent defensive guidance treats tool output as untrusted content and recommends tool validation plus permission and session-context checks; it does not test MCP pagination or this SDK.
Introducing the Model Context Protocol
Anthropic · RetrievedReviewed: November 25, 2024 announcement, protocol purpose, architecture, SDKs and ecosystem description
Supports: Anthropic introduced MCP as an open standard for connecting AI assistants to data sources and tools, establishing why a complete discovered inventory matters to agent clients.