{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"Greenhouse Guide Quote X-Ray MCP API","version":"1.1.0","description":"Machine-readable contract for the read-only Greenhouse Quote X-Ray MCP Streamable HTTP endpoint. It supports the current 2026-07-28 protocol and the SDK legacy 2024-2025 initialization revisions. The endpoint checks quote wording transiently, returns scope findings without echoing or persisting quote text, and does not write quote analytics, send email, create a lead, or contact a seller. A request count, bucket timestamp, and process-local keyed network fingerprint are kept in bounded process memory for abuse protection.","contact":{"name":"Greenhouse Guide","email":"david@greenhouses.guide","url":"https://greenhouses.guide/contact"},"license":{"name":"All rights reserved","url":"https://greenhouses.guide/terms"}},"servers":[{"url":"https://greenhouses.guide"}],"security":[],"externalDocs":{"description":"Greenhouse Quote X-Ray connector guide","url":"https://greenhouses.guide/integrations/greenhouse-quote-xray"},"tags":[{"name":"MCP","description":"Model Context Protocol over Streamable HTTP."}],"paths":{"/mcp":{"post":{"tags":["MCP"],"summary":"Send an MCP JSON-RPC request","operationId":"handleMcpRequest","description":"Supports current 2026 discovery and tool requests, plus legacy initialization, notifications, and tool requests. Current 2026 and the 2025-06-18 and 2025-11-25 revisions use one message per POST. JSON-RPC batches are accepted only for 2025-03-26 and earlier, with at most 10 messages.","parameters":[{"name":"Accept","in":"header","required":true,"description":"MCP Streamable HTTP response media types.","schema":{"type":"string","example":"application/json, text/event-stream"}},{"name":"MCP-Protocol-Version","in":"header","required":false,"description":"Required on current 2026-07-28 requests. Legacy clients send the version returned by initialize on later requests. Batch requests require 2025-03-26 or an earlier listed revision.","schema":{"type":"string","enum":["2026-07-28","2025-11-25","2025-06-18","2025-03-26","2024-11-05","2024-10-07"]}},{"name":"Mcp-Method","in":"header","required":false,"description":"Required on current 2026-07-28 requests and must equal the JSON-RPC body method. Omit for legacy requests.","schema":{"type":"string","enum":["server/discover","tools/list","tools/call"]}},{"name":"Mcp-Name","in":"header","required":false,"description":"Required on current 2026-07-28 tools/call requests and must equal analyze_greenhouse_quote. Omit for other methods and legacy requests.","schema":{"type":"string","const":"analyze_greenhouse_quote"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/McpRequest"},{"$ref":"#/components/schemas/McpLegacyBatch"}]}}}},"responses":{"200":{"description":"MCP JSON-RPC response, legacy batch response, or event stream.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpResponse"}},"text/event-stream":{"schema":{"type":"string"}}}},"202":{"description":"MCP notification accepted without a response body."},"400":{"description":"Malformed JSON-RPC or MCP request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpErrorResponse"}},"text/plain":{"schema":{"type":"string"}}}},"403":{"description":"Host or Origin validation failed."},"413":{"description":"Request body or legacy batch is too large."},"415":{"description":"The request did not use application/json."},"429":{"description":"The quote-analysis rate limit was exceeded.","headers":{"Retry-After":{"description":"Seconds before another request should be attempted.","schema":{"type":"integer","minimum":1}}}}}}}},"components":{"schemas":{"JsonRpcId":{"oneOf":[{"type":"string"},{"type":"integer"}]},"JsonRpcErrorId":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"AnalyzeGreenhouseQuoteArguments":{"type":"object","properties":{"quoteText":{"type":"string","minLength":1,"maxLength":50000,"description":"Written greenhouse quote scope to check. Remove names, email addresses, phone numbers, job addresses, payment details, and unrelated confidential material first."}},"required":["quoteText"],"additionalProperties":false},"AnalyzeGreenhouseQuoteOutput":{"type":"object","properties":{"status":{"type":"string","const":"analysis_ready"},"findings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["found","vague","excluded","missing"]},"whyItMatters":{"type":"string"},"question":{"type":"string"},"matchedSignals":{"type":"array","items":{"type":"string"}}},"required":["id","label","status","whyItMatters","question","matchedSignals"],"additionalProperties":false}},"languageFlags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["allowance","placeholder","variable-price","starting-price","exclusion"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"question":{"type":"string"}},"required":["id","label","count","question"],"additionalProperties":false}},"counts":{"type":"object","properties":{"found":{"type":"integer","minimum":0,"maximum":9007199254740991},"vague":{"type":"integer","minimum":0,"maximum":9007199254740991},"excluded":{"type":"integer","minimum":0,"maximum":9007199254740991},"missing":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["found","vague","excluded","missing"],"additionalProperties":false},"analyzedCharacters":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncated":{"type":"boolean"},"disclaimer":{"type":"string"},"analysisUrl":{"type":"string","format":"uri"}},"required":["status","findings","languageFlags","counts","analyzedCharacters","truncated","disclaimer","analysisUrl"],"additionalProperties":false},"McpImplementation":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"additionalProperties":true},"McpModernMeta":{"type":"object","properties":{"io.modelcontextprotocol/protocolVersion":{"type":"string","const":"2026-07-28"},"io.modelcontextprotocol/clientInfo":{"$ref":"#/components/schemas/McpImplementation"},"io.modelcontextprotocol/clientCapabilities":{"type":"object","additionalProperties":true}},"required":["io.modelcontextprotocol/protocolVersion","io.modelcontextprotocol/clientCapabilities"],"additionalProperties":true},"McpLegacyInitializeRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"initialize"},"params":{"type":"object","properties":{"protocolVersion":{"type":"string","enum":["2025-11-25","2025-06-18","2025-03-26","2024-11-05","2024-10-07"]},"capabilities":{"type":"object","additionalProperties":true},"clientInfo":{"$ref":"#/components/schemas/McpImplementation"}},"required":["protocolVersion","capabilities","clientInfo"],"additionalProperties":true}},"required":["jsonrpc","id","method","params"],"additionalProperties":false},"McpLegacyInitializedNotification":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"method":{"type":"string","const":"notifications/initialized"},"params":{"type":"object","additionalProperties":true}},"required":["jsonrpc","method"],"additionalProperties":false},"McpLegacyToolsListRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"tools/list"},"params":{"type":"object","additionalProperties":true}},"required":["jsonrpc","id","method"],"additionalProperties":false},"McpLegacyAnalyzeToolCallRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"tools/call"},"params":{"type":"object","properties":{"name":{"type":"string","const":"analyze_greenhouse_quote"},"arguments":{"$ref":"#/components/schemas/AnalyzeGreenhouseQuoteArguments"},"_meta":{"type":"object","description":"Optional legacy MCP request metadata.","additionalProperties":true}},"required":["name","arguments"],"additionalProperties":false}},"required":["jsonrpc","id","method","params"],"additionalProperties":false},"McpModernDiscoverRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"server/discover"},"params":{"type":"object","properties":{"_meta":{"$ref":"#/components/schemas/McpModernMeta"}},"required":["_meta"],"additionalProperties":false}},"required":["jsonrpc","id","method","params"],"additionalProperties":false},"McpModernToolsListRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"tools/list"},"params":{"type":"object","properties":{"_meta":{"$ref":"#/components/schemas/McpModernMeta"},"cursor":{"type":"string"}},"required":["_meta"],"additionalProperties":false}},"required":["jsonrpc","id","method","params"],"additionalProperties":false},"McpModernAnalyzeToolCallRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"tools/call"},"params":{"type":"object","properties":{"name":{"type":"string","const":"analyze_greenhouse_quote"},"arguments":{"$ref":"#/components/schemas/AnalyzeGreenhouseQuoteArguments"},"_meta":{"$ref":"#/components/schemas/McpModernMeta"}},"required":["name","arguments","_meta"],"additionalProperties":false}},"required":["jsonrpc","id","method","params"],"additionalProperties":false},"McpLegacyRequest":{"anyOf":[{"$ref":"#/components/schemas/McpLegacyInitializeRequest"},{"$ref":"#/components/schemas/McpLegacyInitializedNotification"},{"$ref":"#/components/schemas/McpLegacyToolsListRequest"},{"$ref":"#/components/schemas/McpLegacyAnalyzeToolCallRequest"}]},"McpLegacyBatch":{"type":"array","description":"Available only with MCP-Protocol-Version 2025-03-26, 2024-11-05, or 2024-10-07.","minItems":1,"maxItems":10,"items":{"$ref":"#/components/schemas/McpLegacyRequest"}},"McpRequest":{"anyOf":[{"$ref":"#/components/schemas/McpLegacyRequest"},{"$ref":"#/components/schemas/McpModernDiscoverRequest"},{"$ref":"#/components/schemas/McpModernToolsListRequest"},{"$ref":"#/components/schemas/McpModernAnalyzeToolCallRequest"}]},"McpSuccessResponse":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"result":{"type":"object","additionalProperties":true}},"required":["jsonrpc","id","result"],"additionalProperties":false},"McpErrorResponse":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcErrorId"},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","message"],"additionalProperties":true}},"required":["jsonrpc","id","error"],"additionalProperties":false},"McpSingleResponse":{"oneOf":[{"$ref":"#/components/schemas/McpSuccessResponse"},{"$ref":"#/components/schemas/McpErrorResponse"}]},"McpResponse":{"oneOf":[{"$ref":"#/components/schemas/McpSingleResponse"},{"type":"array","minItems":1,"maxItems":10,"items":{"$ref":"#/components/schemas/McpSingleResponse"}}]}}},"x-mcp":{"transport":"streamable-http","endpoint":"/mcp","protocolVersions":["2026-07-28","2025-11-25","2025-06-18","2025-03-26","2024-11-05","2024-10-07"],"authentication":"none","readOnly":true,"legacyBatchMaxItems":10,"legacyBatchProtocolVersions":["2025-03-26","2024-11-05","2024-10-07"],"tools":["analyze_greenhouse_quote"],"toolSchemas":{"analyze_greenhouse_quote":{"input":{"$ref":"#/components/schemas/AnalyzeGreenhouseQuoteArguments"},"output":{"$ref":"#/components/schemas/AnalyzeGreenhouseQuoteOutput"}}}}}