One JSON document. The agent's whole shape.
Every conformant agent serves a CapabilitiesManifest at /.well-known/openkarta-manifest. Below is the live document for our reference product agent.
Wire format
{
"agentId": "halcyon-shop",
"displayName": "Halcyon Shop",
"protocolVersion": "0.1",
"tier": "http",
"baseUrl": "https://halcyon-shop.fly.dev",
"actions": ["discover","search","get","quote","checkout","status","cancel","return"],
"supportedItemTypes": ["product"],
"paymentRails": ["razorpay_routes","stripe_connect","cod"],
"languages": ["en","hi"],
"regions": [{ "country": "IN", "pincodes": ["560001","560002","560003"] }],
"inventoryVolatility": "realtime",
"catalogSize": "small",
"priceRange": { "minMinor": 10000, "maxMinor": 500000, "currency": "INR" },
"productCapabilities": {
"categories": ["coffee","tea","snacks","groceries"],
"serviceAreas": [{ "country": "IN", "city": "Bengaluru", "radiusKm": 8 }],
"deliveryModes": ["instant","same_day","scheduled","standard"],
"returnWindow": 7
}
} Implemented verbs
All 8 verbs are implemented. The orchestrator's typed client maps each verb 1:1 to an HTTPS endpoint — no envelope, no JSON-RPC, no SOAP. Every response is Zod-checked against the wire schema before returning to the caller.
Operations telemetry
Product capabilities
| Property | Value |
|---|---|
| categories | coffee, tea, snacks, groceries |
| serviceAreas | IN · Bengaluru · 8 km radius |
| deliveryModes | instant same_day scheduled standard |
| returnWindow | 7 days |
Field reference
Stable identifier. Lower-kebab-case, namespaced by the merchant. Used everywhere — registry rows, signed quotes, conformance badges.
The OpenKarta wire-format version this agent implements. Currently `0.1`. The orchestrator refuses unknown majors.
One of `lite` (hosted), `http` (custom server), or `agentic` (LLM-fronted). Determines how the registry routes traffic.
HTTPS root for verb endpoints. The registry probes `/.well-known/openkarta-manifest` here during verification.
Which of the 8 verbs this agent implements. `return` is optional and only meaningful for product orders.
Closed enum: `product`, `stay`, `flight`, `bus`, `service`. Drives auto-detection in the conformance suite.
Closed enum of rails the agent can settle on. The orchestrator filters by user-allowed rails before quoting.
ISO-3166 country codes plus optional pincodes / cities. Registry filters listings by region for region-aware search.
Hint for orchestrators. Integer minor-units only — no floats. Helps consumer agents triage agents before fanning out.
Type-specific block. `stay`, `flight`, `bus`, `service` each have their own analogous block with closed-enum fields.
Write your manifest. Get listed.
The full Zod schema for CapabilitiesManifest ships in @openkarta/spec. Wrap your existing API with the SDK, validate locally, then submit at the registry.