drift_check
Check ONE proposed action against a signed agent mandate BEFORE it happens. Returns {"verdict": "ALLOW"|"DENY", "rule": } plus a report with a ledger fingerprint.
Six rules run in a fixed order, so a refusal names the most important reason rather than an incidental one: amount, payee, audience, currency, window, intent. Anything unclassified is DENY.
Use immediately before any action that spends money, moves a credential or changes state on someone else's behalf.
Do NOT use to: verify mandate signatures (AP2 does that, and this server runs after signature verification), execute the action (it only decides), or certify that an intent is truthful — "intent" arrives from the agent and is untrusted input. An agent that lies within its limits still leaves a ledger entry; proving what really happened is attest's job, not this one's.
Amounts are integer minor units (cents), never floats. Window bounds are inclusive. Fully idempotent: the same inputs always give the same verdict and the mandate is never mutated.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action being proposed. | |
| mandate | Yes | The signed authority being enforced. Treat as read-only input. |