MCP Server Broken After Update? Migration Checker
MCP server or client stopped working after updating to the 2026-07-28 spec's stateless rewrite? Paste a request or response to check for the removed initialize handshake, missing _meta protocol fields, and malformed Multi Round-Trip Request results. 100% client-side.
π Runs entirely in your browser β no data is ever sent anywhereWhat changed in MCP's 2026-07-28 spec
The Model Context Protocol's 2026-07-28 revision replaces the old stateful model β a one-time initialize/initialized handshake followed by an Mcp-Session-Id header on every later request β with a stateless design where each request carries its own protocol version and capabilities in a params._meta object. It also adds header-based routing (Mcp-Method / Mcp-Name / MCP-Protocol-Version) so gateways can route without parsing JSON bodies, a mandatory resultType field on every successful result, a Multi Round-Trip Requests (MRTR) mechanism for mid-call user input that replaces server-initiated streams, and optional ttlMs/cacheScope caching hints on list responses. All four Tier 1 SDKs (TypeScript, Python, Go, C#) already speak it, which means anything still shaped like the old handshake will start failing against updated servers or clients.
What this checks
Paste either a bare JSON-RPC message or a raw HTTP block (request line + headers, a blank line, then the JSON body β e.g. copied from curl -i output or a browser's network inspector). For requests, it flags the deprecated initialize/initialized handshake, a missing or incomplete params._meta (checking for the required io.modelcontextprotocol/protocolVersion and io.modelcontextprotocol/clientCapabilities keys, and the optional clientInfo/logLevel keys), and β when headers are included β a lingering Mcp-Session-Id header or a missing/mismatched Mcp-Method, Mcp-Name, or MCP-Protocol-Version. For responses, it checks that result.resultType is present, validates input_required results carry inputRequests and requestState, and notes when a list-shaped result (tools/prompts/resources) is missing the new optional ttlMs/cacheScope caching hints.
Frequently asked questions
What exactly should I paste in?
Either just the JSON-RPC message body on its own, or a full raw HTTP block β request line and headers, then a blank line, then the JSON body β if you want the header-level checks (Mcp-Method, Mcp-Name, MCP-Protocol-Version, and the deprecated Mcp-Session-Id) included too.
How confident are these checks?
Checks marked as spec violations (high severity) are verified directly against the published 2026-07-28 TypeScript schema and worked examples. Lower-severity notes β like the ttlMs/cacheScope caching hints, or the exact shape of individual Multi Round-Trip Request entries β are flagged more conservatively since those corners of the spec are less exhaustively documented; treat those as prompts to double-check, not definitive failures.
Does this replace an actual MCP SDK's validation?
No β it's a structural sanity check for spotting the specific things that break when migrating from the pre-2026-07-28 stateful model, not a substitute for testing against a real client or server SDK.
Is my pasted request/response data sent anywhere?
No. Everything is parsed and checked locally in your browser with plain JavaScript β nothing you paste is transmitted or stored.
Related AI tools
Token Counter
Count tokens for GPT-5, GPT-4o, and older OpenAI models as you type, using the exact same tokenizer OpenAI's API uses.
Citations Viewer
Paste a Claude Citations API response to see the answer text with each cited passage highlighted and matched to its source document, location, and quoted text.
Signature Validator
Getting a 400 error or silently broken multi-turn tool use from the Gemini 3 API? Paste your request or response to check function-calling turns for missing thoughtSignature fields, functionResponse ordering mistakes, and missing id echoes.
MCP Validator
Paste a Model Context Protocol tool definition β a single tool object, an array, or a full tools/list response β to check it against the spec: missing name or inputSchema, a name most clients will reject, a required property that doesn't exist, malformed annotations, and more.
Bracketly is free and open-source. If this tool saved you time, consider supporting it.
β Buy me a coffee