Capability Negotiation is the initial JSON-RPC exchange where an MCP client and server declare their supported protocol versions and enumerate the specific features—resources, tools, and prompts—they provide or intend to use. This handshake establishes a shared understanding of available functionalities, ensuring compatibility and preventing errors from requests for unsupported operations. It is the critical first step in any MCP session, governed by the initialize and initialized notification sequence.
Glossary
Capability Negotiation

What is Capability Negotiation?
Capability Negotiation is the foundational handshake process within the Model Context Protocol (MCP).
The process involves the client sending an initialize request containing its protocol version and capabilities. The server responds with its own supported version and a complete list of its exposed resource providers, tool providers, and prompt templates. This mutual disclosure allows the client to dynamically build its context directory and enables secure, efficient interaction by filtering requests to only known, valid endpoints from the outset of the connection.
Key Features of Capability Negotiation
Capability Negotiation is the initial handshake in the Model Context Protocol where a client and server exchange their supported protocol versions and the types of features they provide or wish to use. This foundational process ensures compatibility and establishes the operational scope for the session.
Protocol Version Exchange
The first step in the negotiation is the exchange of supported MCP protocol versions. This ensures both client and server agree on a common set of JSON-RPC methods and message formats.
- The client initiates with an
initializerequest containing its protocol version. - The server responds with its own version and supported features.
- If versions are incompatible, the connection is terminated to prevent undefined behavior.
Capability Advertisement
The server declares the specific capabilities it provides, which fall into three core categories:
- Resources: Read-only data objects (files, database records) the server can serve, identified by URIs.
- Tools: Executable functions the client can invoke, each with a defined input schema.
- Prompts: Reusable template instructions for language models, containing variable placeholders.
This advertisement defines the entire interface the client can use for the session.
Client Feature Declaration
The client communicates which of the server's advertised capabilities it intends to use. This is not a selection menu but a declaration of the client's implementation support.
- The client lists which MCP features (e.g.,
resources,tools) its runtime can handle. - This allows a server to optimize or even withhold certain capabilities if the client lacks support, preventing errors.
- It enables forward compatibility, where a server with newer features can still serve an older client using a common subset.
Schema Synchronization
A critical technical outcome of negotiation is the synchronization of JSON Schemas for all tools. The server provides the complete input schema for each tool it advertises.
- The client caches these schemas locally.
- This allows the client to perform client-side validation of arguments before sending a tool invocation request.
- It also enables intelligent UI generation, where interfaces can be built dynamically from the schema definitions.
Connection Initialization Finalization
The negotiation concludes with the client sending an initialized notification to the server, signaling that the handshake is complete and the session is ready for normal operation.
- This two-step process (
initializerequest →initializednotification) mirrors the JSON-RPC protocol. - After this point, the client can begin listing resources, invoking tools, and retrieving prompts.
- All subsequent communication uses the negotiated protocol version and operates within the declared capability boundaries.
Error Handling & Fallback
The negotiation process includes defined error paths for incompatible or failed handshakes.
- If the server receives an
initializerequest for an unsupported protocol version, it must respond with a defined error and close the connection. - If the client declares capabilities the server does not support, the server ignores the unsupported parts; the connection proceeds with the mutually understood subset.
- This robust error handling prevents silent failures and ensures sessions only begin with a clear, mutual understanding.
How Capability Negotiation Works
Capability Negotiation is the initial handshake process in the Model Context Protocol (MCP) where a client and server exchange their supported protocol versions and the types of features they provide or wish to use.
The process begins when an MCP client initiates a connection to an MCP server via a configured transport. The client sends an initialize request containing its protocol version and desired capabilities, such as which notification types it can handle. The server responds with its own protocol version and a detailed manifest of its available resources, tools, and prompts. This exchange ensures both parties agree on a compatible feature set before any data or command flow begins, establishing the foundation for all subsequent interactions.
Successful negotiation results in an active session where the client possesses a complete inventory of the server's exposed functionalities. The client uses this inventory to dynamically construct requests, such as reading specific resources or invoking tools. If negotiation fails—due to version mismatch or unsupported capabilities—the connection is terminated. This deterministic handshake is critical for interoperability, allowing diverse AI applications to securely and reliably integrate with external data sources and APIs through a standardized interface.
Frequently Asked Questions
Common questions about the initial handshake process in the Model Context Protocol (MCP), where clients and servers establish their supported features and versions.
Capability negotiation is the initial handshake process in the Model Context Protocol (MCP) where a client and server exchange metadata to establish a compatible communication session. This exchange occurs immediately after the transport connection is established and involves the client sending an initialize request and the server responding with an initialized notification. The core purpose is for both parties to declare the protocol version they support and enumerate the specific types of features—resources, tools, and prompts—they can provide or wish to use. This ensures the client only attempts to call tools or request resources the server actually exposes, preventing runtime errors and enabling dynamic, adaptive integration.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Capability Negotiation is a foundational handshake within the Model Context Protocol. These related terms define the core components and processes involved in establishing and managing the connection between an AI client and external data or tool servers.
Model Context Protocol (MCP)
The Model Context Protocol (MCP) is the standardized, open-source protocol that defines the entire framework for capability negotiation. It specifies the JSON-RPC messages, transport layers, and data models (resources, tools, prompts) that enable AI applications to connect to external systems. Capability negotiation is the initial phase of any MCP interaction, where client and server exchange their supported versions and available features.
MCP Server
An MCP Server is the endpoint that a client connects to during capability negotiation. It announces its capabilities—the specific resources, tools, and prompts it provides—to the client. The server's role in negotiation is to declare its protocol version support and the schema of its offerings, enabling the client to understand what it can request or invoke.
MCP Client
An MCP Client (e.g., an AI assistant) initiates the capability negotiation process. It sends its supported protocol versions and may signal its intent or requirements. The client uses the negotiated capabilities to discover what external data and functions are available, shaping its subsequent interactions for resource retrieval and tool invocation.
JSON-RPC
JSON-RPC is the messaging protocol underpinning all MCP communication, including capability negotiation. The negotiation handshake itself is conducted via specific JSON-RPC request/response messages (initialize and initialized). This lightweight RPC format ensures structured, language-agnostic exchange of version information and capability lists between client and server.
MCP Transport
The MCP Transport (e.g., stdio, SSE) is the communication layer established before capability negotiation begins. The client and server must first connect via an agreed transport. The negotiation messages are then exchanged over this channel. The choice of transport (local vs. remote) is a prerequisite configuration, not part of the protocol-level negotiation itself.
Server Registration
Server Registration is the configuration step that precedes capability negotiation. It is how a client is made aware of a server's existence and connection details (e.g., transport type, command to start the server). This static or dynamic registration is necessary for the client to know which server to connect to and initiate the negotiation handshake with.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us