{"ok":true,"tool":"mcp-capability-handshake-diff","module_version":"0.1.0","result":{"slug":"mcp-capability-handshake-diff","name":"MCP Capability Handshake Diff","version":"0.1.0","category":"compatibility","status":"beta","mode":"lookup","summary":"Explain effective MCP capabilities and negotiation mismatches.","description":"Compares bounded client and server initialize capabilities, protocol versions, and caller-required features. It performs a local negotiation diff and does not connect to either peer.","when_to_use":["Client and server MCP capabilities must be compared before connection.","A missing required capability or protocol-date mismatch needs explanation."],"do_not_use_when":["The peers must actually be connected or their initialize exchange captured.","A capability outside the published bounded vocabulary is required."],"tested_with":["MCP initialize capability documents"],"input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"client":{"type":"object","properties":{"protocol_version":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"capabilities":{"maxItems":10,"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}}},"required":["protocol_version","capabilities"],"additionalProperties":false},"server":{"type":"object","properties":{"protocol_version":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"capabilities":{"maxItems":10,"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}}},"required":["protocol_version","capabilities"],"additionalProperties":false},"required_capabilities":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}}},"required":["client","server","required_capabilities"],"additionalProperties":false},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compatible":{"type":"boolean"},"protocol_version_match":{"type":"boolean"},"effective_capabilities":{"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}},"client_only_capabilities":{"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}},"server_only_capabilities":{"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}},"missing_required_on_client":{"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}},"missing_required_on_server":{"type":"array","items":{"type":"string","enum":["tools","resources","prompts","sampling","elicitation.form","elicitation.url","tasks","logging","roots","completions"]}}},"required":["compatible","protocol_version_match","effective_capabilities","client_only_capabilities","server_only_capabilities","missing_required_on_client","missing_required_on_server"],"additionalProperties":false},"payment":{"kind":"free"},"side_effects":[],"retention":"Capability documents are compared in memory and are not retained.","limits":{"supported_capability_names":10,"max_client_requests_per_minute":30,"max_global_requests_per_minute":120},"examples":{"input":{"client":{"protocol_version":"2025-11-25","capabilities":["tools","elicitation.form"]},"server":{"protocol_version":"2025-11-25","capabilities":["tools","tasks"]},"required_capabilities":["tools"]},"output":{"compatible":true,"protocol_version_match":true,"effective_capabilities":["tools"],"client_only_capabilities":["elicitation.form"],"server_only_capabilities":["tasks"],"missing_required_on_client":[],"missing_required_on_server":[]},"negative":[{"scenario":"The peers must actually be connected or their initialize exchange captured.","expected_error":"INVALID_INPUT","charged":false}]},"execution":{"errors":[{"code":"INVALID_INPUT","retryable":false,"charged":false,"recovery":"Correct the request to match input_schema."},{"code":"TOOL_PAUSED","retryable":true,"charged":false,"recovery":"Wait for the operator to resume the tool."},{"code":"RATE_LIMITED","retryable":true,"charged":false,"recovery":"Retry after the response Retry-After interval."},{"code":"DEPENDENCY_UNAVAILABLE","retryable":true,"charged":false,"recovery":"Retry with the same idempotency identity."}],"idempotency":{"required":false,"mock_or_unpaid_header":null,"x402_extension":null,"replay_retention":null}},"endpoints":{"describe":"/v1/tools/mcp-capability-handshake-diff","execute":"/v1/tools/mcp-capability-handshake-diff"}},"meta":{"request_id":"req_6167bd3856d146848fb7afd624cdb85b","observed_at":"2026-07-25T08:25:49.727Z"}}