{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"Made Agent Access API","version":"1.0.0","description":"Machine-readable transport and OAuth discovery for the Made remote MCP server. MCP clients should discover tools at runtime with tools/list."},"externalDocs":{"description":"Made MCP connector documentation","url":"https://www.made.app/mcp"},"servers":[{"url":"https://mcp.made.app","description":"Canonical Made MCP server"}],"x-mcp":{"endpoint":"https://mcp.made.app/mcp","transport":"streamable-http","protocolVersion":"2025-06-18","protectedResourceMetadata":"https://mcp.made.app/.well-known/oauth-protected-resource","authorizationServerMetadata":"https://www.made.app/.well-known/oauth-authorization-server","documentation":"https://www.made.app/mcp"},"paths":{"/mcp":{"post":{"operationId":"sendMcpRequest","summary":"Send an MCP JSON-RPC request","description":"Initializes an MCP session, lists tools, invokes tools, or sends other MCP JSON-RPC messages. The response can be JSON or a Server-Sent Events stream.","security":[{"madeOAuth":[]}],"parameters":[{"$ref":"#/components/parameters/McpProtocolVersion"},{"$ref":"#/components/parameters/McpSessionId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/McpInitializeRequest"},{"$ref":"#/components/schemas/McpListToolsRequest"},{"$ref":"#/components/schemas/McpCallToolRequest"},{"$ref":"#/components/schemas/JsonRpcRequest"}]}}}},"responses":{"200":{"$ref":"#/components/responses/McpSuccess"},"202":{"description":"The MCP notification was accepted."},"400":{"$ref":"#/components/responses/JsonRpcError"},"401":{"$ref":"#/components/responses/OAuthChallenge"}}},"get":{"operationId":"openMcpEventStream","summary":"Open an MCP Server-Sent Events stream","description":"Opens the server-to-client event stream for an initialized MCP session.","security":[{"madeOAuth":[]}],"parameters":[{"$ref":"#/components/parameters/McpProtocolVersion"},{"$ref":"#/components/parameters/RequiredMcpSessionId"}],"responses":{"200":{"description":"MCP Server-Sent Events stream.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"401":{"$ref":"#/components/responses/OAuthChallenge"}}},"delete":{"operationId":"closeMcpSession","summary":"Close an MCP session","security":[{"madeOAuth":[]}],"parameters":[{"$ref":"#/components/parameters/McpProtocolVersion"},{"$ref":"#/components/parameters/RequiredMcpSessionId"}],"responses":{"200":{"description":"The MCP session was closed."},"204":{"description":"The MCP session was closed with no response body."},"401":{"$ref":"#/components/responses/OAuthChallenge"}}}},"/.well-known/oauth-protected-resource":{"get":{"operationId":"getOAuthProtectedResourceMetadata","summary":"Get OAuth protected-resource metadata","security":[],"responses":{"200":{"description":"OAuth protected-resource metadata for the MCP endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthProtectedResourceMetadata"}}}}}}}},"components":{"securitySchemes":{"madeOAuth":{"type":"oauth2","description":"Made OAuth 2.1 authorization code flow with PKCE.","flows":{"authorizationCode":{"authorizationUrl":"https://www.made.app/api/auth-v2/oauth2/authorize","tokenUrl":"https://www.made.app/api/auth-v2/oauth2/token","refreshUrl":"https://www.made.app/api/auth-v2/oauth2/token","scopes":{"openid":"Request the openid scope.","profile":"Request the profile scope.","email":"Request the email scope.","offline_access":"Request the offline_access scope.","catalog:read":"Request the catalog:read scope.","media:read":"Request the media:read scope.","media:write":"Request the media:write scope.","generations:read":"Request the generations:read scope.","generations:write":"Request the generations:write scope.","billing:read":"Request the billing:read scope."}}}}},"parameters":{"McpProtocolVersion":{"name":"MCP-Protocol-Version","in":"header","required":false,"schema":{"type":"string"},"description":"The MCP protocol version negotiated by the client."},"McpSessionId":{"name":"Mcp-Session-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Session identifier returned by the MCP server after initialization."},"RequiredMcpSessionId":{"name":"Mcp-Session-Id","in":"header","required":true,"schema":{"type":"string"},"description":"Session identifier returned by the MCP server after initialization."}},"schemas":{"JsonRpcRequest":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"method":{"type":"string"},"params":{"type":"object"}}},"JsonRpcResponse":{"type":"object","required":["jsonrpc"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"result":{},"error":{"$ref":"#/components/schemas/JsonRpcError"}}},"JsonRpcError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{}}},"McpInitializeRequest":{"type":"object","additionalProperties":false,"required":["jsonrpc","id","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"method":{"type":"string","const":"initialize"},"params":{"type":"object","additionalProperties":false,"required":["protocolVersion","capabilities","clientInfo"],"properties":{"protocolVersion":{"type":"string"},"capabilities":{"type":"object"},"clientInfo":{"type":"object","additionalProperties":false,"required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"}}}}}}},"McpListToolsRequest":{"type":"object","additionalProperties":false,"required":["jsonrpc","id","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"method":{"type":"string","const":"tools/list"},"params":{"type":"object","properties":{"cursor":{"type":"string"}}}}},"McpCallToolRequest":{"type":"object","additionalProperties":false,"required":["jsonrpc","id","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"method":{"type":"string","const":"tools/call"},"params":{"type":"object","additionalProperties":false,"required":["name","arguments"],"properties":{"name":{"type":"string"},"arguments":{"type":"object"}}}}},"OAuthProtectedResourceMetadata":{"type":"object","required":["resource","authorization_servers"],"properties":{"resource":{"type":"string","format":"uri"},"authorization_servers":{"type":"array","items":{"type":"string","format":"uri"}},"scopes_supported":{"type":"array","items":{"type":"string"}},"resource_documentation":{"type":"string","format":"uri"}}}},"responses":{"McpSuccess":{"description":"MCP JSON-RPC response or Server-Sent Events stream.","headers":{"Mcp-Session-Id":{"description":"MCP session identifier established during initialization.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}},"text/event-stream":{"schema":{"type":"string"}}}},"JsonRpcError":{"description":"MCP JSON-RPC error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"OAuthChallenge":{"description":"OAuth authorization is required.","headers":{"WWW-Authenticate":{"description":"Bearer challenge containing the protected-resource metadata URL.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}}}}}