# Kemeny Studio developer portal: agent APIs, MCP and OpenAPI

> 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.

1. Read the spec: https://kemenystudio.com/openapi.json (OpenAPI 3.1, typed request and response schemas).
2. Connect over MCP: `https://kemenystudio.com/api/mcp` (HTTP JSON-RPC, tokenless). Server card: https://kemenystudio.com/.well-known/mcp/server-card.json
3. Or call REST directly, for example `curl https://kemenystudio.com/api/agent/overview?services=1`
4. 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


---
Canonical page: https://kemenystudio.com/developers
Site overview for LLMs: https://kemenystudio.com/llms.txt · Full content: https://kemenystudio.com/llms-full.txt
