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 foralchemy). Any other value fails schema validation.
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.excerptmust be a non-empty string. It is trimmed, fence markers are removed, and it is cut at 4,000 characters with[…]appended.sourceis trimmed, fence markers are removed, and it is cut at 300 characters.- A
referenceof any other shape stays inCONTEXTas 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.
