Skip to main content
The one endpoint. Your wallet is your account: every call carries a CAIP-122 sign-in in the SIGN-IN-WITH-X header (domain api.kviria.com, URI https://api.kviria.com, a fresh single-use nonce per request). The x-kviria-agent header (or ?agent=) is a namespace label that isolates your agent’s context — it is not a secret.
The authoritative wire schema (JSON Schema, MCP-ready) lives at kviria.com/tool-definition.json. Your first 50 turns each day are free; beyond that, pay per turn — see Payments.

Building the sign-in

The SIGN-IN-WITH-X header is a CAIP-122 payload, signed by your wallet and base64-encoded. Build it per request — every nonce is single-use. 1. Build the payload:
2. Sign the EIP-191 message it describes (the standard SIWE text — domain, address, URI, version, Chain ID: 8453, Nonce, Issued At lines) with your wallet’s personal-sign. 3. Add the signature, base64 the JSON, send it:
If you use the x402 TypeScript SDKs, @x402/extensions/sign-in-with-x provides the helpers (createSIWxMessage, signEVMMessage, encodeSIWxHeader) so the three steps are two lines of code.

Request body

The structured intent

Your agent can do the mapping itself and skip the transcript entirely - zero model calls on Kviria’s side, fully deterministic. The actions: search, find, select, confirm, neighbors, across, along, at_address, street_zoom, street_end, near
Anchors resolve from Kviria’s own data only: a ref (a previous response’s id), a name exactly as returned, an index into the echoed candidates, or at coordinates. Invalid intents return a strict 400 that names the bad field - fix it and retry once.

Response

target carries the outcome: gers (stable id), name, category, location {lat, lng}, distanceM - and address: {number, street} when the match is a door. A door resolves as resolved without the confirm gate: an exact address verifies itself. evidence is the audit trail - see Determinism & evidence.