Judge a vault decision before capital moves (paid)
evaluate_vault_decisionCall this before an agent moves capital into or out of a vault, with the decision it is about to make: the vault, the amount, the MANDATE it must stay inside and the CLAIMS the decision rests on. It is judged against our stored due-diligence snapshot of that vault, deterministically and without a model, and comes back with a verdict: supported, conditional, human_review_required, insufficient_evidence (the snapshot is older than your mandate accepts, or a claim states as known what the snapshot records as unread), not_approved (a mandate limit is broken or a claim is contradicted) or out_of_coverage (we hold no snapshot, nothing charged). Every finding cites the snapshot field it rests on as dd:<digest>#<json pointer>, so it can be checked and cannot be invented, and requiredNextSteps says what would change the verdict. A claim the snapshot contradicts is told the DIRECTION of its error, never the true figure: the figures are in the due-diligence report. PAID: $2 a judgement over x402, or inside a plan that reads due diligence. FREE with dryRun: true (can it be judged, how old is our snapshot, what would be checked; no verdict) and FREE in full on the two public sample vaults, ethereum-sentora-rlusd-main-6dc58a and ethereum-1337-usdc-94643e. A supported verdict means the decision is consistent with our evidence and its own mandate. It is not advice and not a guarantee about the vault. Keep the digest: anybody can confirm at /v1/reports/{digest} that we issued that judgement unchanged.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pass | No | A decision pass from this vault’s due-diligence report (its X-ASPERN-Decision-Pass header): 24 hours of judgements on that vault without paying again. | |
| vault | Yes | The vault slug, or an address we can resolve to one. `list_vaults` or `find_vaults` find a slug. | |
| action | No | What the decision does. Default allocate. | |
| claims | No | What the decision assumes, at most 20, each `{ field, value }` where `field` is a JSON pointer into the due-diligence document, e.g. /capital/withdrawableUsd, /capital/totalUsd, /subject/chain or /dimensions/0/level. | |
| dryRun | No | True for the free preview: whether we can judge it and what would be checked, without a verdict. | |
| mandate | No | The limits the decision must stay inside. Each is optional and a limit left out is not checked: `maxPositionUsd`, `maxShareOfVault` (0..1 of the vault’s capital), `maxShareOfWithdrawable` (0..1 of what the vault declares withdrawable now), `allowedChains` (list), `maxDimensionLevel` (the worst of low, moderate, elevated, high, severe that any of the six risk dimensions may read), `humanApprovalAboveUsd`, `maxEvidenceAgeHours` (default 48). | |
| amountUsd | Yes | The amount the decision moves, in US dollars. | |
| rationale | No | Free text, carried with the decision and not read. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| meta | No | How current this answer is and what it was read from: `freshness` and the ages behind it. Present on every answer from this server, whatever the tool. | |
| says | Yes | Dry run only: the answer in one sentence. | |
| price | Yes | Dry run only: the price of a judgement and the vaults where it is free. | |
| vault | Yes | The vault slug the decision resolved to. | |
| checks | Yes | Dry run only: the checks this decision would get. | |
| digest | No | SHA-256 of this judgement, recorded so it can be verified at /v1/reports/{digest}. | |
| dryRun | Yes | True on the free preview. | |
| paidBy | No | free-sample, report-pass (a pass from this vault’s due-diligence report) or this-call. Absent on a dry run. | |
| sample | No | True on the two free sample vaults, where findings quote values. | |
| verify | No | The path that verifies the digest. | |
| verdict | Yes | supported, conditional, human_review_required, insufficient_evidence, not_approved or out_of_coverage. Null on a dry run of a vault we can judge. | |
| findings | No | Each check that said something: `kind`, `weight` (hard, evidence, soft, none), `evidence` (dd:<digest>#<pointer>, or null where it concerns the packet alone) and `says`. | |
| snapshot | Yes | The snapshot judged against: `digest`, `readAt` and `ageHours`. Null where we hold none. | |
| warnings | No | Anything the server wants a caller to know about THIS answer before acting on it. Empty is the normal case and is not a guarantee. | |
| judgeable | Yes | Dry run only: whether we hold a snapshot to judge it against. | |
| limitations | Yes | What this judgement does not cover. Always present. | |
| requiredNextSteps | No | What would have to change for a better verdict, one line per finding. |