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.

  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

MethodPathoperationIdWhat it doesAuth
GET/api/agent/healthgetHealthLiveness for agent discovery catalogsnone
GET/api/agent/overviewgetOverviewCompany facts, fit/non-fit, buying ordernone
GET/api/agent/casessearchCasesSearch public production case studiesnone
POST/api/agent/recommendrecommendPathHint offer keys from a workflow description (not a score)none
POST/api/agent/quote-requestrequestQuoteFile a quote intent. Does not return a firm price.none
GET/api/mcpmcpDiscoveryMCP discovery documentnone
POST/api/mcpmcpJsonRpcMCP JSON-RPC (initialize, tools/list, tools/call)none
GET/api/a2aa2aDiscoveryA2A agent card (same document as /.well-known/agent-card.json)none
POST/api/a2aa2aJsonRpcA2A JSON-RPC (message/send)none
GET/apigetPaidBuyerBriefAtApiRootCompiled buyer brief (HTTP 402). Same resource as /api/x402/brief; this is the path agent-readiness scanners probe.HTTP 402 payment
GET/api/v1getPaidBuyerBriefAtApiV1Compiled buyer brief (HTTP 402). Exact /api/v1 only — POST /api/v1/messages is a separate authenticated channel.HTTP 402 payment
GET/api/x402/briefgetPaidBuyerBriefCompiled buyer brief. Unpaid requests return HTTP 402 (x402 + MPP).HTTP 402 payment
GET/api/ucpgetUcpProfileUCP profile (same document as /.well-known/ucp)none
GET/api/ucp/catalog/searchsearchUcpCatalogGetUCP catalog search (offers and cases). Not a checkout.none
POST/api/ucp/catalog/searchsearchUcpCatalogPostUCP catalog search (offers and cases). Not a checkout.none
GET/api/acpgetAcpDiscoveryACP discovery (same document as /.well-known/acp.json)none
POST/api/acp/checkout_sessionscreateAcpCheckoutSessionACP checkout is not offered. Returns an error; never a session or a firm price.none
GET/api/icplistIcpsList ICP definitions for ecosystem appsAPI key / OAuth
POST/api/oauth/tokenoauthTokenOAuth 2.0 token endpoint (client_credentials)none
GET/api/oauth/authorizeoauthAuthorizeAuthorization endpoint. Does not issue codes; client_credentials only.none
GET/api/oauth/jwksoauthJwksJWK Set. Empty because access tokens are opaque.none
GET/api/oauth/agent-authagentAuthDiscoverAuth.md registration policy (anonymous only; no credential issued)none
POST/api/oauth/agent-authagentAuthRegisterRegister 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.

codeHTTPMeaning
invalid_request400A parameter or body field has the wrong type or value. detail names it.
not_found404No endpoint at that path. Check openapi.json.
unknown_offer404The offer key does not exist. List keys with GET /api/agent/overview?services=1.
method_not_allowed405Wrong HTTP method. The Allow header lists the right ones.
rate_limited429Too many requests. Wait Retry-After seconds.
quote_not_recorded500The 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

Contact

Integration questions: contacto@kemenystudio.com