{
  "openapi": "3.0.3",
  "info": { "title": "Dolphin Industrial Parts agent API", "version": "1.0.0", "description": "Read-only parts data. Compatible alternatives, not OEM parts. No prices." },
  "servers": [{ "url": "https://dolphinindustrialparts.com" }],
  "paths": {
    "/agent/lookup": { "get": { "operationId": "lookup_part", "summary": "Look up a part number", "parameters": [{ "name": "pn", "in": "query", "required": true, "schema": { "type": "string", "maxLength": 40 } }], "responses": { "200": { "description": "Envelope with data.found, data.parts, data.family_guess, data.how_to_order, data.quote_url" } } } },
    "/agent/brands": { "get": { "operationId": "list_brands", "summary": "List OEM brands", "responses": { "200": { "description": "Envelope with data.brands" } } } },
    "/agent/models": { "get": { "operationId": "list_models", "summary": "List models for a brand", "parameters": [{ "name": "brand", "in": "query", "schema": { "type": "string" } }], "responses": { "200": { "description": "Envelope with data.models" } } } },
    "/agent/catalog": { "get": { "operationId": "list_catalog", "summary": "Page through catalog parts, 100 per page", "parameters": [{ "name": "family", "in": "query", "schema": { "type": "string" } }, { "name": "page", "in": "query", "schema": { "type": "integer", "minimum": 1 } }], "responses": { "200": { "description": "Envelope with data.parts and page" } } } },
    "/agent/manifest": { "get": { "operationId": "get_manifest", "summary": "Site, contact, tools and disclaimer", "responses": { "200": { "description": "Envelope with data.endpoints and data.tools" } } } },
    "/agent/mcp": { "post": { "operationId": "mcp", "summary": "MCP server (Streamable HTTP, stateless, JSON responses only)", "description": "Model Context Protocol endpoint. Body is one JSON-RPC 2.0 message or a batch array (initialize, ping, tools/list, tools/call). Tools: lookup_part, list_brands, list_models, list_catalog, request_quote, get_manifest. Tool results carry the same envelope as the GET endpoints. Notifications return 202. Max body 64 KB.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [{ "type": "object" }, { "type": "array", "items": { "type": "object" } }] }, "example": { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "list_models", "arguments": { "brand": "IMO" } } } } } }, "responses": { "200": { "description": "JSON-RPC 2.0 response object or array" }, "202": { "description": "Accepted (notifications only)" }, "413": { "description": "Body over 64 KB" } } } }
  }
}
