Verify a mandate and decide on an act
verify_mandateCheck if an act is permitted under a mandate by verifying signature, validity, scope, constraints, and approval rules, returning allow, deny, or require_approval with reason codes.
Instructions
Check a mandate and decide whether an act is permitted under it. Call this before every act, on your own mandate or on one a counterparty presented.
It checks the document against the published schema and the rules the schema cannot express, verifies the issuer signature, checks the validity interval, and, when proposed_action is given, checks the act against the mandate's actions, its four scope axes, its constraints in stable order, and its approval rules.
Returns one decision, allow, deny, or require_approval, with the registered reason codes behind it, the per-constraint outcomes, and action_hash, the hash of the exact act evaluated.
On require_approval: pass that action_hash to issue_approval, then call this tool again with the returned approval_id and the identical proposed_action. The decision becomes allow. A deny is never approvable.
This server makes no network call. Resolve the mandate's status_endpoint yourself and pass the result as status. An absent result, one older than 60 seconds, or any status other than active denies with A202-MANDATE-STATUS-UNRESOLVED or A202-MANDATE-INACTIVE: unavailability is not permission.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | RFC 3339 instant to check against. Defaults to now. | |
| status | No | What you retrieved from the mandate's status endpoint, and when. Omit it and the decision is deny. | |
| mandate | No | The mandate document, when it came from a counterparty. | |
| approval | No | An approval object presented directly, instead of approval_id. | |
| mandate_id | No | A mandate this server holds, as returned by issue_mandate. | |
| approval_id | No | An approval this server holds, from issue_approval, that releases a require_approval hold. | |
| proposed_action | No | The act to evaluate against the mandate. Constraint paths address this document from $, so a spending limit reads $.proposed_terms.core.total.amount. |