Developer documentation
Eckari exposes provider-neutral capabilities over plain HTTPS at https://api-staging.eckari.com. Every response uses the same envelope, every error uses a stable code, and every capability is discoverable by machines.
Machine-readable references
- GET https://api-staging.eckari.com/v1/openapi.json — OpenAPI 3.1
- GET https://api-staging.eckari.com/v1/capabilities — catalogue with schemas, prices, examples
- GET https://api-staging.eckari.com/.well-known/eckari-x402.json — x402 resource catalogue
- GET https://api-staging.eckari.com/v1/discovery/mcp-tools.json — MCP tool metadata
- GET https://api-staging.eckari.com/llms.txt
Access modes
Capabilities declare two channel prices. Account access (Authorization: Bearer ek_live_…) is metered and billed in arrears; the developer portal and API keys are not yet enabled in this environment, so keys are rejected with INVALID_API_KEY. Accountless x402 pays per call: send the request without credentials, receive 402, sign the payment, retry.
x402 flow
- Call the capability. Input is validated first — malformed requests get
400and are never charged. - Unpaid requests receive
402with a base64PAYMENT-REQUIREDheader (x402 v2PaymentRequired: schemeexact, network, USDC amount, payTo). - Create a payment payload with an x402 client (for example
@x402/fetch) and retry withPAYMENT-SIGNATURE. - The gateway verifies the payment, executes the upstream work, settles, and returns
200with aPAYMENT-RESPONSEheader carrying the settlement transaction. If fulfilment fails, nothing is settled.
# 1. Unpaid request → 402 challenge curl -i "https://api-staging.eckari.com/v1/companies/uk/01234567/status" # 2. Paid request (client libraries do this for you) curl -i "https://api-staging.eckari.com/v1/companies/uk/01234567/status" \ -H "PAYMENT-SIGNATURE: <base64 x402 v2 PaymentPayload>"
// TypeScript client using @x402/fetch + viem (Base Sepolia testnet)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const signer = privateKeyToAccount(process.env.PAYER_PRIVATE_KEY as `0x${string}`);
const client = new x402Client().register("eip155:84532", new ExactEvmScheme(signer));
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const res = await fetchWithPayment("https://api-staging.eckari.com/v1/companies/uk/01234567/status");
console.log(await res.json());Response envelope
{
"data": {
"company_number": "01234567",
"company_name": "EXAMPLE TRADING LIMITED",
"status": "active",
"status_detail": null,
"is_active": true,
"date_of_cessation": null,
"source_status": "active"
},
"meta": {
"capability": "company.uk.status",
"version": "1.0.0",
"retrieved_at": "2026-08-17T12:00:00Z",
"source": "companies_house",
"freshness": "live",
"request_id": "req_…"
}
}meta.source names the upstream register; meta.freshness is one of live, near_live, cached, static. Every response carries an x-request-id header.
Errors
{
"error": {
"code": "NOT_FOUND",
"message": "No register entry found for this identifier",
"request_id": "req_…",
"details": null
}
}| Code | HTTP |
|---|---|
| INVALID_INPUT | 400 |
| AUTHENTICATION_REQUIRED | 401 |
| INVALID_API_KEY | 401 |
| PROJECT_DISABLED | 403 |
| CAPABILITY_NOT_ALLOWED | 403 |
| BUDGET_EXCEEDED | 403 |
| BILLING_REQUIRED | 403 |
| PAYMENT_REQUIRED | 402 |
| PAYMENT_FAILED | 402 |
| CAPABILITY_UNAVAILABLE | 503 |
| UPSTREAM_RATE_LIMITED | 429 |
| UPSTREAM_UNAVAILABLE | 503 |
| NOT_FOUND | 404 |
| AMBIGUOUS_IDENTIFIER | 422 |
| UNSUPPORTED_REGION | 422 |
| LICENCE_RESTRICTED | 503 |
| INTERNAL_ERROR | 500 |
MCP
Tool metadata for every capability is generated from the registry. A hosted Eckari MCP server is planned for the next phase; the tool definitions below are what it will expose (9 tools, server eckari).
- company_uk_accountsGet UK company accounts summary and due datesx402 USD 0.003
- company_uk_chargesList UK company registered charges (mortgages and security)x402 USD 0.005
- company_uk_directorsList UK company directors and officersx402 USD 0.005
- company_uk_filingsList UK company filing historyx402 USD 0.005
- company_uk_ownersList UK company beneficial owners (persons with significant control)x402 USD 0.005
- company_uk_profileGet UK company profilex402 USD 0.004
- company_uk_registered_officeGet UK company registered office addressx402 USD 0.003
- company_uk_searchSearch UK companies by namex402 USD 0.004
- company_uk_statusCheck UK company statusx402 USD 0.003
Full definitions: https://api-staging.eckari.com/v1/discovery/mcp-tools.json
Catalogue
Browse all 10 capabilities with prices, schemas and examples on the capabilities page.