401 with unauthorized. To top up, add a
PAYMENT-SIGNATURE header to a call. See Payments.
Every call also names your agent, with the x-kviria-agent header or
?agent= in the URL: 3 to 64 characters of lowercase letters, digits and
hyphens. The name keeps your agent’s context apart from other agents’. It
is not a secret.
The machine-readable contract is the
tool definition. The OpenAPI
document is at https://api.kviria.com/openapi.json.
The key
Get a key at api.kviria.com/key. It is shown once. The same key works on every call, and on the MCP server. Connect and pay covers keys, OAuth and replacing a key.Request body
Your agent parses the user’s words into the request’s fields. Kviria never receives the words.
What each type needs:
find a place, an address, the two streets of a
corner, or a kind; search a kind; near a place or the two streets of a
corner; across and next_to a place; corner the two streets; pick the
number; confirm the answer. street_end needs nothing. A request without
what its type needs gets 400 invalid_request, whose message names it.
Any other field is refused with 400 unsupported_field. A body with
transcript gets 400 transcript_removed. The fields intent,
candidates, references and frame are no longer accepted, and the
message says what replaced them. See
Conversation state for state and anchor.
Response
A
target, and each candidate, has these fields:
An exact address comes back as
one, with the door’s facts in
target.address. When one number matches several doors, they come back as
many.
The decisions and your move on each are in
Narrowing. The evidence is in
Determinism and evidence.
Response headers
x-request-id: the request’s id. Quote it if you write to us about a call.x-kviria-balance-remaining: on a paid turn, the account’s remaining balance in USDC base units (millionths of a dollar).