Kortex serves AI agents as first-class clients: an MCP server over the full platform (not just the graph), the cost of every call returned on every result, receipts an agent can cite and replay, machine-readable grounding documents, and a developed error contract. Deterministic underneath; the agent gets the same governed, source-traceable answers a human analyst gets.
MCP (streamable HTTP): POST https://kortex.orkora.com/v2/mcp X-API-Key on every request Discovery manifest: GET https://kortex.orkora.com/.well-known/kortex.json Agent map: GET https://kortex.orkora.com/llms.txt Errors: GET https://kortex.orkora.com/v2/errors · OpenAPI: /openapi.json
| tool | what it does | floor |
|---|---|---|
| kortex_cost_preview | estimate any call before running it; free | 0 |
| kortex_schema | graph schema: labels, edge types, live totals | 1,000 |
| kortex_search_generators | generator search by fuel, zone, operator, MW | 2,000 |
| kortex_get_node | any node as a faceted view with per-domain provenance | 2,000 |
| kortex_traverse | N-hop traversal from a node; billed per edge delivered | 5,000 |
| kortex_cypher | read-only Cypher; billed on delivered output at field weights | 20,000 |
| kortex_tables | every servable dataset: catalogue + governed row fetch with filters | 50,000 |
| kortex_series | time-series catalogue + fetch (prices, rates, carbon, flows) | 2,000 |
| kortex_country | 18-indicator country profile; absence disclosed, never interpolated | 2,000 |
| kortex_asset_profile | sectioned asset risk profile, evidence class per section | 2,000 |
| kortex_entity | LEI-keyed corporate profile + ownership control map (attribute-once totals) | 2,000 |
| kortex_insight | pre-built cross-domain screens (stranded assets, queue blockage…) | 5,000 |
| kortex_siting_screen | the flagship in one call: ranked zones + rejections + receipt | 5,000 |
| kortex_receipt | replay a frozen answer by receipt id: cite receipts, not screenshots | 1,000 |
Every tool result is JSON with a cost block: what was billed, the category floor, the delivered-output value and the basis. Settlement is max(floor, delivered-output value) at the same field weights as REST, on every channel, so no path through the platform is a cheaper pipe for the same data. Provenance metadata is never billed. A hard 402 gate re-checks the actual cost before the payload is delivered; a blocked response bills nothing, and tool errors bill nothing.
{"data": {…}, "cost": {"billed_credits": 51000, "floor_credits": 50000,
"delivered_value_credits": 51000, "basis": "max(category floor, delivered-output value)"},
"receipt_id": "…"} // when the payload carries a retrievable provenance receipt
A server-side billing-integrity watchdog audits value density on every response (payload size vs credits billed) and flags any route serving materially more than it charges; flagged routes are reviewed and repriced at source.
| uri | contents |
|---|---|
| kortex://pricing | live cost weights and the settlement rule |
| kortex://errors | stable error codes with meaning and resolving action |
| kortex://schema | node labels, edge types, live totals |
| kortex://sources | registered sources with licence and rights status |
| kortex://rights | rights modes, fail-closed semantics, evidence-class principles |
| kortex://corrections | the corrections register: every governance-driven change to a served number, before/after and reason (also RSS at /v2/corrections.rss, deltas via ?since=) |
These exist so an agent grounds itself in Kortex's actual governance instead of guessing: what things cost, what errors mean, what the rights position is, where every number comes from.
Envelope-bearing results carry a receipt: the frozen canonical answer, graph snapshot id, software build and resolved sources, retrievable forever at GET /v2/receipts/{id} or via the kortex_receipt tool. An agent that cites a Kortex receipt is citing an artifact its principal can independently replay. Absence is disclosed (present=false), contradicted data is quarantined and documented, and there is no LLM in the stack: the same call returns the same answer.