{"openapi":"3.1.0","info":{"title":"Lynka MCP API","version":"1.0.1","description":"OpenAPI description of Lynka CRM’s existing Model Context Protocol (MCP) Streamable HTTP endpoint. This is a JSON-RPC MCP API, not a general REST API. Authenticate with the connected Lynka account. The live tools/list method is authoritative for the current tool names and full per-tool input schemas.","contact":{"name":"Lynka Support","email":"support@lynkacrm.com","url":"https://lynkacrm.com/support"}},"servers":[{"url":"https://api.lynkacrm.com","description":"Production Lynka API host"}],"externalDocs":{"description":"Agent onboarding and live OAuth/MCP discovery links","url":"https://lynkacrm.com/developers"},"paths":{"/mcp":{"post":{"operationId":"sendLynkaMcpRequest","summary":"Send an MCP JSON-RPC request","description":"Send one MCP JSON-RPC request to initialize the connection, ping the server, list available tools, or call a listed tool. Tool calls operate only within the connected user’s existing Lynka workspace permissions. The server does not support JSON-RPC batch requests.","security":[{"LynkaOAuth":["email","profile","offline_access"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/InitializeRequest"},{"$ref":"#/components/schemas/PingRequest"},{"$ref":"#/components/schemas/ListToolsRequest"},{"$ref":"#/components/schemas/CallToolRequest"}]},"examples":{"initialize":{"summary":"Initialize MCP","value":{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"example-agent","version":"1.0.0"}}}},"listTools":{"summary":"Discover tools and their input schemas","value":{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}},"callTool":{"summary":"Call a tool returned by tools/list","value":{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"lynka_get_me","arguments":{}}}}}}}},"parameters":[{"name":"MCP-Protocol-Version","in":"header","required":false,"schema":{"type":"string"},"description":"MCP protocol version negotiated during initialize."},{"name":"MCP-Session-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Session identifier when returned by the server."}],"responses":{"200":{"description":"JSON-RPC result or JSON-RPC error. A successful tools/call returns MCP content and structuredContent where available.","content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","id"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"result":{"type":"object","description":"Method result. tools/list returns tool definitions with JSON Schema inputSchema values; tools/call returns MCP content and, when provided, structuredContent."},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{}}}}}}}},"400":{"description":"Malformed JSON-RPC request or unsupported batch request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpError"}}}},"401":{"description":"Missing or invalid bearer authorization; response includes the OAuth protected-resource metadata challenge.","headers":{"WWW-Authenticate":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpError"}}}},"413":{"description":"Request body exceeds the supported limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpError"}}}},"502":{"description":"MCP backend is temporarily unavailable.","content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","id"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"result":{"type":"object","description":"Method result. tools/list returns tool definitions with JSON Schema inputSchema values; tools/call returns MCP content and, when provided, structuredContent."},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{}}}}}}}}}}}},"components":{"securitySchemes":{"LynkaOAuth":{"type":"oauth2","description":"OAuth 2.1 authorization is provided by Lynka’s existing authorization server. Discovery metadata: https://pouasbdullbpyiqgyneq.supabase.co/auth/v1/.well-known/oauth-authorization-server.","flows":{"authorizationCode":{"authorizationUrl":"https://pouasbdullbpyiqgyneq.supabase.co/auth/v1/oauth/authorize","tokenUrl":"https://pouasbdullbpyiqgyneq.supabase.co/auth/v1/oauth/token","scopes":{"email":"Read the authenticated account email claim.","profile":"Read basic authenticated account profile claims.","offline_access":"Request a refresh token for continued authorized access."}}}}},"schemas":{"JsonRpcRequestBase":{"type":"object","required":["jsonrpc","id","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]}}},"InitializeRequest":{"allOf":[{"$ref":"#/components/schemas/JsonRpcRequestBase"},{"type":"object","properties":{"method":{"const":"initialize"},"params":{"type":"object","required":["protocolVersion","capabilities","clientInfo"],"properties":{"protocolVersion":{"type":"string","description":"MCP protocol version; Lynka supports 2026-07-28, 2025-11-25, 2025-06-18 and 2025-03-26."},"capabilities":{"type":"object"},"clientInfo":{"type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"}}}},"additionalProperties":true}},"required":["method","params"]}]},"PingRequest":{"allOf":[{"$ref":"#/components/schemas/JsonRpcRequestBase"},{"type":"object","properties":{"method":{"const":"ping"},"params":{"type":"object"}},"required":["method"]}]},"ListToolsRequest":{"allOf":[{"$ref":"#/components/schemas/JsonRpcRequestBase"},{"type":"object","properties":{"method":{"const":"tools/list"},"params":{"type":"object","properties":{"cursor":{"type":"string"}},"additionalProperties":false}},"required":["method"]}]},"CallToolRequest":{"allOf":[{"$ref":"#/components/schemas/JsonRpcRequestBase"},{"type":"object","properties":{"method":{"const":"tools/call"},"params":{"$ref":"#/components/schemas/ToolCallParams"}},"required":["method","params"]}]},"HttpError":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message."}},"required":["error"]},"ToolCallParams":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Tool name exactly as returned by tools/list."},"arguments":{"type":"object","additionalProperties":true,"description":"Tool-specific arguments defined by that tool’s inputSchema."}},"additionalProperties":false}}},"x-mcp":{"endpoint":"https://api.lynkacrm.com/mcp","transport":"streamable-http","protectedResourceMetadata":"https://api.lynkacrm.com/.well-known/oauth-protected-resource/mcp","serverCard":"https://lynkacrm.com/.well-known/mcp.json","liveToolSchemasMethod":"tools/list","toolAreas":["identity and workspace context","CRM search","leads and notes","deals and pipeline","activities and follow-ups","customers and contacts","quotes and invoices","products and services","reports"],"authorizationNotes":"Read and write access follows the connected user’s current Lynka workspace membership, record visibility and permissions. Deal creation requires a qualified lead. Quote creation makes a draft and does not send it. Marking a deal Won or Lost requires explicit human confirmation."}}