Developer portal
Public, tokenless APIs for AI agents buying from Kemeny Studio: MCP, A2A and REST, described by OpenAPI. Errors, rate limits and the versioning policy in one place.
Start here
No account, no API key and no sandbox are needed for buyer commerce: every read is public and the only write (a quote request) is free and rate-limited. Calls hit production, and nothing you call can charge you or commit you to a purchase.
- Read the spec: https://kemenystudio.com/openapi.json (OpenAPI 3.1, typed request and response schemas).
- Connect over MCP:
https://kemenystudio.com/api/mcp(HTTP JSON-RPC, tokenless). Server card: https://kemenystudio.com/.well-known/mcp/server-card.json - Or call REST directly, for example
curl https://kemenystudio.com/api/agent/overview?services=1 - Add the MCP server to your client:
npx -y add-mcp https://kemenystudio.com/api/mcp -g, or install the buyer skill:npx skills add KemenyStudio/kemenystudiolanding
Kemeny Studio never returns a firm price from an API. Reference prices are public at https://kemenystudio.com/pricing; a human quotes after the Workflow Fit Check (https://kemenystudio.com/ai-workflow-fit-check).
Endpoints
| Method | Path | operationId | What it does | Auth |
|---|---|---|---|---|
| GET | /api/agent/health | getHealth | Liveness for agent discovery catalogs | none |
| GET | /api/agent/overview | getOverview | Company facts, fit/non-fit, buying order | none |
| GET | /api/agent/cases | searchCases | Search public production case studies | none |
| POST | /api/agent/recommend | recommendPath | Hint offer keys from a workflow description (not a score) | none |
| POST | /api/agent/quote-request | requestQuote | File a quote intent. Does not return a firm price. | none |
| GET | /api/mcp | mcpDiscovery | MCP discovery document | none |
| POST | /api/mcp | mcpJsonRpc | MCP JSON-RPC (initialize, tools/list, tools/call) | none |
| GET | /api/a2a | a2aDiscovery | A2A agent card (same document as /.well-known/agent-card.json) | none |
| POST | /api/a2a | a2aJsonRpc | A2A JSON-RPC (message/send) | none |
| GET | /api | getPaidBuyerBriefAtApiRoot | Compiled buyer brief (HTTP 402). Same resource as /api/x402/brief; this is the path agent-readiness scanners probe. | HTTP 402 payment |
| GET | /api/v1 | getPaidBuyerBriefAtApiV1 | Compiled buyer brief (HTTP 402). Exact /api/v1 only — POST /api/v1/messages is a separate authenticated channel. | HTTP 402 payment |
| GET | /api/x402/brief | getPaidBuyerBrief | Compiled buyer brief. Unpaid requests return HTTP 402 (x402 + MPP). | HTTP 402 payment |
| GET | /api/ucp | getUcpProfile | UCP profile (same document as /.well-known/ucp) | none |
| GET | /api/ucp/catalog/search | searchUcpCatalogGet | UCP catalog search (offers and cases). Not a checkout. | none |
| POST | /api/ucp/catalog/search | searchUcpCatalogPost | UCP catalog search (offers and cases). Not a checkout. | none |
| GET | /api/acp | getAcpDiscovery | ACP discovery (same document as /.well-known/acp.json) | none |
| POST | /api/acp/checkout_sessions | createAcpCheckoutSession | ACP checkout is not offered. Returns an error; never a session or a firm price. | none |
| GET | /api/icp | listIcps | List ICP definitions for ecosystem apps | API key / OAuth |
| POST | /api/oauth/token | oauthToken | OAuth 2.0 token endpoint (client_credentials) | none |
| GET | /api/oauth/authorize | oauthAuthorize | Authorization endpoint. Does not issue codes; client_credentials only. | none |
| GET | /api/oauth/jwks | oauthJwks | JWK Set. Empty because access tokens are opaque. | none |
| GET | /api/oauth/agent-auth | agentAuthDiscover | Auth.md registration policy (anonymous only; no credential issued) | none |
| POST | /api/oauth/agent-auth | agentAuthRegister | Register as anonymous. Does not issue a token. ID-JAG and email claim are not supported. | none |
Authentication
Buyer, MCP, A2A, UCP and ACP endpoints need no credentials. The ICP catalog (/api/icp) is for ecosystem apps and takes a pre-provisioned key (x-api-key, Bearer, or OAuth 2.0 client_credentials at /api/oauth/token). Details: https://kemenystudio.com/auth.md
Errors
Buyer, UCP and ACP routes return RFC 9457 problem details (application/problem+json): type, title, status, a stable machine-readable code, detail, and a resolution saying what to do next. error repeats detail for older clients. Unknown /api/* paths answer the same shape with 404. MCP and A2A return JSON-RPC errors; OAuth returns RFC 6749 errors. Every operation's error schema is in openapi.json.
| code | HTTP | Meaning |
|---|---|---|
invalid_request | 400 | A parameter or body field has the wrong type or value. detail names it. |
not_found | 404 | No endpoint at that path. Check openapi.json. |
unknown_offer | 404 | The offer key does not exist. List keys with GET /api/agent/overview?services=1. |
method_not_allowed | 405 | Wrong HTTP method. The Allow header lists the right ones. |
rate_limited | 429 | Too many requests. Wait Retry-After seconds. |
quote_not_recorded | 500 | The quote request was not saved. Retry once, then email us. |
Rate limits
Rate-limited responses carry RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (seconds until the window resets) and RateLimit-Policy (<limit>;w=<window seconds>), plus the legacy X-RateLimit-* headers. A 429 adds Retry-After. Public reads allow 60 requests a minute per client; quote requests allow 8.
Versioning
The contract is versioned by info.version in openapi.json and by path (/api/v1). Additive changes (new fields, new endpoints) ship without notice. A breaking change ships under a new path. An operation being retired is first marked deprecated: true in openapi.json and answered with Deprecation and Sunset headers, at least 90 days before it is removed.
Discovery files
- https://kemenystudio.com/llms.txt (site index for language models)
- https://kemenystudio.com/openapi.json
- https://kemenystudio.com/.well-known/api-catalog (RFC 9727)
- https://kemenystudio.com/.well-known/mcp/server-card.json
- https://kemenystudio.com/.well-known/agent-card.json (A2A)
- https://kemenystudio.com/auth.md
- https://kemenystudio.com/skills/kemeny-studio-buyer/SKILL.md
Contact
Integration questions: contacto@kemenystudio.com