Skip to main content
POST /api/v1/intent and the MCP tool verify_intent take the same fields and run the same pipeline. How the fields are used: Verification.

Fields

string
required
The rules the action must satisfy. Must be non-empty after trimming.
string | object
required
The proposed action. A non-empty string is judged as written. An object is classified by a venue adapter when one matches (mode: "structured") and otherwise judged as JSON (mode: "semantic").
string
The adapter to use. Ids: hyperliquid, limitless, polymarket, dimes, myriad, orderly, derive, lifi, meow, liquid, robinhood, x402, agentcards, uniswap, solana, starknet, alchemy.
  • HTTP: any string. It is lowercased, stripped of punctuation and matched against the ids, aliases and id prefixes. An unknown value is ignored without an error, and object actions fall back to structural detection.
  • MCP: an enum of the ids above plus evm (an alias for alchemy). Any other value fails schema validation.
Omit it to let an object action be detected from its shape.
object
Facts for the judge, shown to it as JSON under CONTEXT.
object
{ source?: string, excerpt: string }: the platform’s own documentation for the tool being called. The ChanceBot desk sends this. It is taken out of CONTEXT and shown to the judge in a fenced REFERENCE block, introduced as third-party background that may be wrong, never changes the intent, never authorizes the action, and whose instructions are ignored.
  • excerpt must be a non-empty string. It is trimmed, fence markers are removed, and it is cut at 4,000 characters with […] appended.
  • source is trimmed, fence markers are removed, and it is cut at 300 characters.
  • A reference of any other shape stays in CONTEXT as ordinary data.
string
default:"generic"
HTTP only. The judge prompt. Omit it. An unknown value falls back to generic.

Example

Response: POST /api/v1/intent

Status 201.
string
Verification id (UUID).
string
Per-run identifier, 0x and 32 bytes. Not a hash of the payload. Also accepted by the GET.
string
Always COMPLETED.
string | null
ALLOW, BLOCK, ESCALATE or null. Execute only on ALLOW.
string | null
The judge’s decisive reason.
string
structured or semantic.
string | null
The adapter used.
string | null
order, margin, withdrawal, transfer, staking, vault, position, swap, payment, subaccount, permission or unknown. null without a venue.
string | null
The venue’s own action name, when the classifier found one.
object
transcriptRoot, outputHash, signature, judge, attested, anchorTx, anchorVerified, transcriptUri, explorerTx. See Receipts.
integer
Balance after this call.

Response: verify_intent

A text result: the verdict, the reasoning, a proof summary, the verification id and the balance, followed by a fenced JSON block. The JSON has the same fields as the HTTP response except actionType.

Response: GET /api/v1/intent/{id}

{id} is the verification id or its requestHash. It finds any verification on the account, including those behind escrow proposals and dashboard runs. Status 200. There is no mode, venue, actionFamily, actionType or creditsRemaining.

Response: get_verification

The MCP tool takes id (the verification id or requestHash) and returns the GET fields, plus proof.transcriptUri and proof.explorerTx, as text and a JSON block. Free.

Errors

Any error means the action was not verified. Do not execute it.