Free tools Windows power users keep installed
One-click scans. No signup required.
MCP messages use JSON-RPC 2.0 envelopes: requests carry a method and ID, responses echo that ID with a result or error, and notifications have no ID and receive no reply. The current specification, versioned 2026-07-28, changes how context and follow-up input work compared with earlier MCP revisions, so the version matters when reading examples.
What an MCP message looks like
Every client-server message in MCP conforms to JSON-RPC 2.0. The envelope identifies the operation and, for a request, lets the sender match the eventual response to the request.
As an Amazon Associate I earn from qualifying purchases.
Request
A request includes jsonrpc set to "2.0", a string or integer id, a method, and optional params. An ID cannot be null, and a sender must not reuse an ID that is still outstanding.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {"name": "search", "arguments": {"q": "otters"}}
}
This illustrative call asks to run a tool named search, passing otters as the query. The method names and parameter contents tell the recipient what operation is requested; the ID is for matching messages, not for describing the operation. See the versioned base protocol specification.
#1 Best Overall
Result response
A successful response contains jsonrpc: "2.0", the same id as the request, and a result object. In the 2026-07-28 protocol, that result includes resultType: complete means the operation finished, while input_required means the client must provide additional input. For compatibility with an earlier protocol version, a client may interpret a missing resultType as complete.
Error response
An error response has an error object containing an integer code and a message. It ordinarily echoes the request ID, allowing the sender to associate the failure with the correct call.
Notification
A notification has a method and optional params, but no id. Because there is no request to answer, the receiver must not send a response.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteRank #2
How requests, input, and notifications fit together
The current base protocol describes request/response, Multi Round-Trip Requests (MRTR), and subscribe-and-notify patterns. These describe how messages interact; they do not change the JSON-RPC envelope rules.
Ordinary request and response
The client sends a request with an ID. The server returns either a result or an error carrying that ID. This pairing is the basic pattern behind operations such as tool calls.
Multi Round-Trip Requests
If an operation needs more client input, the server can return a result marked input_required, identify what it needs, and have the client retry the original operation with the supplied answers. The July 28, 2026 release announcement says MRTR replaces server-initiated elicitation, sampling, and roots requests that previously depended on a held-open stream. See the release announcement.
Rank #3
Subscribe and notify
A subscription begins with a request/response interaction, even if its response is followed by a long-lived notification stream. The subscription state belongs to that request; it is not inferred from the transport connection.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →What changed in the 2026-07-28 revision
The July 28, 2026 release announcement identifies 2026-07-28 as the released specification. This revision retires the initialize/initialized exchange and the Mcp-Session-Id protocol session header. Instead of negotiating context once and associating later traffic with a protocol session, each request carries its protocol version and client context in _meta. Clients may use server/discover to learn server capabilities in advance, but discovery is optional.
Earlier MCP revisions used initialization to negotiate the protocol version and capabilities, then associated later communication with a session. Examples written for those revisions may therefore show initialize or session headers. When implementing or interpreting an example, check which revision it targets rather than assuming the lifecycle is unchanged.
Rank #4
Stateless describes the protocol core, not necessarily the application. An application can still preserve task or conversation state, but cross-request state must be referenced by an explicit identifier supplied by the client rather than inferred silently from a connection or process.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How HTTP transport relates to the JSON-RPC body
With Streamable HTTP, the JSON-RPC message remains the body of a POST. Headers such as MCP-Protocol-Version, Mcp-Method, and Mcp-Name expose routing metadata to HTTP infrastructure; they do not replace the JSON-RPC message. A server or intermediary may use the headers to route traffic without treating them as the operation’s full content.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Validation and error codes
MCP uses JSON Schema to validate protocol data. If a schema does not declare $schema, the current specification defaults to JSON Schema 2020-12; implementations must support that dialect, and the specification recommends using it. The versioned page identifies the TypeScript schema as the protocol source of truth and provides a generated JSON Schema for tooling.
The current base protocol lists standard JSON-RPC error codes for general failures and reserves -32020 through -32099 for MCP-defined server errors.
| Code | Meaning in the current specification |
|---|---|
-32020 |
HeaderMismatch |
-32021 |
MissingRequiredClientCapability |
-32022 |
UnsupportedProtocolVersion |
-32602 |
Invalid Params; the current revision uses this for resource-not-found where older revisions used -32002 |
Clients that need to interoperate with older servers are advised to accept the legacy -32002 resource-not-found code as well as the current code. The authoritative list and schema guidance are in the base protocol specification.
Quick Recap
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.




