{"openapi":"3.1.0","info":{"title":"AI Promo Services public discovery","version":"2.0.0","description":"Public read-only facts. No authentication, workspace data or effect API. Limits apply per web process."},"servers":[{"url":"https://aipromoservices.com"}],"x-catalog-revision":"b051e43543600846ad7d72a43e9b1680d4f09d32401944100c590aebf2fd3a9e","components":{"schemas":{"Capability":{"type":"object","required":["id","name","category","description","operations","buildState","authentication","verification","limitations","documentationUrl","updatedAt"],"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._-]{0,119}$"},"name":{"type":"string"},"category":{"type":"string"},"description":{"type":"string"},"operations":{"type":"array","items":{"type":"string"}},"buildState":{"enum":["contract_ready","not_available"]},"authentication":{"const":"none"},"verification":{"type":"object","required":["state","verifiedAt","validUntil"],"properties":{"state":{"const":"unverified"},"verifiedAt":{"type":"null"},"validUntil":{"type":"null"}}},"limitations":{"type":"array","items":{"type":"string"}},"documentationUrl":{"type":"string","format":"uri"},"updatedAt":{"type":"string","format":"date-time"}}},"Integration":{"type":"object","required":["id","name","category","description","operations","buildState","authentication","verification","limitations","documentationUrl","updatedAt","provider"],"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._-]{0,119}$"},"name":{"type":"string"},"category":{"type":"string"},"description":{"type":"string"},"operations":{"type":"array","items":{"type":"string"}},"buildState":{"enum":["contract_ready","not_available"]},"authentication":{"const":"none"},"verification":{"type":"object","required":["state","verifiedAt","validUntil"],"properties":{"state":{"const":"unverified"},"verifiedAt":{"type":"null"},"validUntil":{"type":"null"}}},"limitations":{"type":"array","items":{"type":"string"}},"documentationUrl":{"type":"string","format":"uri"},"updatedAt":{"type":"string","format":"date-time"},"provider":{"type":"string"}}},"Methodology":{"type":"object","required":["id","name","version","summary","inputs","outputs","limitations","documentationUrl","updatedAt"],"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._-]{0,119}$"},"name":{"type":"string"},"version":{"type":"string"},"summary":{"type":"string"},"inputs":{"type":"array","items":{"type":"string"}},"outputs":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"documentationUrl":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}}},"Pricing":{"type":"object","required":["planName","offers","canonicalUrl","limitations","updatedAt"],"properties":{"planName":{"type":"string"},"offers":{"type":"array","items":{"type":"object","required":["id","name","currency","interval","amountCents","monthlyEquivalentCents","trialDays","chargedTodayCents"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"currency":{"const":"USD"},"interval":{"enum":["month","year"]},"amountCents":{"type":"integer","minimum":0},"monthlyEquivalentCents":{"type":"number","minimum":0},"trialDays":{"enum":[0,3]},"chargedTodayCents":{"type":"integer","minimum":0}}}},"canonicalUrl":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}}},"Meta":{"type":"object","required":["correlationId","generatedAt"],"properties":{"correlationId":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","correlationId","retryable"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"correlationId":{"type":"string"},"retryable":{"type":"boolean"},"resetAt":{"type":"string","format":"date-time"}}}}}}},"paths":{"/v1/capabilities":{"get":{"summary":"List public capabilities","security":[],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object","required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Capability"}},"pagination":{"type":"object","required":["nextCursor"],"properties":{"nextCursor":{"type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Capability headers","security":[],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/capabilities/{id}":{"get":{"summary":"Read one capability","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._-]{0,119}$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Capability"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Capability headers","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9._-]{0,119}$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/integrations":{"get":{"summary":"List integration records","security":[],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object","required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Integration"}},"pagination":{"type":"object","required":["nextCursor"],"properties":{"nextCursor":{"type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Integration headers","security":[],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/methodologies":{"get":{"summary":"List public methodologies","security":[],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object","required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Methodology"}},"pagination":{"type":"object","required":["nextCursor"],"properties":{"nextCursor":{"type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Methodology headers","security":[],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":600,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/pricing":{"get":{"summary":"Read prospective pricing","security":[],"parameters":[],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Pricing"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Pricing headers","security":[],"parameters":[],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/.well-known/mcp.json":{"get":{"summary":"Discover the MCP endpoint","security":[],"parameters":[],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/.well-known/aips-capabilities.json":{"get":{"summary":"Discover stable capability IDs","security":[],"parameters":[],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openapi.json":{"get":{"summary":"Read this API contract","security":[],"parameters":[],"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Untrusted host or Origin"},"404":{"description":"Unknown record"},"429":{"description":"Request limit reached; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/mcp":{"post":{"summary":"Stateless read-only MCP; JSON responses, no SSE stream","parameters":[{"name":"Accept","in":"header","required":true,"schema":{"const":"application/json, text/event-stream"}},{"name":"MCP-Protocol-Version","in":"header","description":"Required after initialize","schema":{"enum":["2025-11-25","2025-06-18"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","integer"]},"method":{"enum":["initialize","notifications/initialized","ping","tools/list","tools/call"]},"params":{"type":"object"}}}}}},"responses":{"200":{"description":"Bounded public JSON.","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Initialized notification accepted, empty body"},"400":{"description":"JSON-RPC error"},"403":{"description":"Untrusted Origin"},"406":{"description":"Accept header must name JSON and SSE"},"413":{"description":"Request exceeds64KiB"},"415":{"description":"Send uncompressed application/json"},"429":{"description":"Request limit reached"}}},"get":{"responses":{"405":{"description":"No SSE stream; use POST"}}}}}}