
Vault Exit Lawyer
Before moving treasury funds out of an ERC-4626 or ERC-7540 vault: reads the chain at one pinned block and returns how much can exit now, the haircut vs convertToAssets, partial-exit maximum, liquidity coverage, queue/cooldown timing, admin-power flags (upgrade, pause, multisig threshold, timelock), and a verdict EXIT_NOW_FULL / EXIT_PARTIAL / QUEUED / BLOCKED / UNKNOWN. With a holder it simulates redeem via eth_call. Optional docsUrls are checked against the contract for contradictions. All numbers are computed deterministically; the model only reads documentation. Answers in seconds to about a minute; if a data source stalls it returns a signed partial result (partial, missing) that names what was not read instead of timing out. Not financial advice.
What you get
Stops a yield router from sizing a withdrawal the vault cannot honor, and flags vaults whose docs promise liquidity the contract does not provide.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/vault-exit. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.
curl -i -X POST https://agents.writerslogic.com/api/v1/vault-exit \
-H 'content-type: application/json' \
-d '{"chain":"ethereum","vault":"0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB","exit":{"shares":"1000000000000000000000"}}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
chain | string; one of "ethereum", "base", "polygon", "arbitrum", "optimism" | yes | Chain the vault lives on. |
vault | string | yes | ERC-4626 or ERC-7540 vault address. |
exit | object | yes | Exactly one of shares or assets, as base-unit integer strings. shares may be "max" (needs holder). |
holder | string | no | Address that holds the shares. Enables an exact eth_call redeem simulation and per-holder limits. |
docsUrls | array<string; length 0..2000>; max 4 items | no | Public documentation pages whose redemption claims are checked against the contract. |
Example request body
{
"chain": "ethereum",
"vault": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB",
"exit": {
"shares": "1000000000000000000000"
}
}
Result
The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.
| Field | Type | Required | Description |
|---|---|---|---|
chain | string | no | |
vault | string | no | |
block_number | integer | no | |
block_timestamp | integer | no | |
verdict | string; one of "EXIT_NOW_FULL", "EXIT_PARTIAL", "QUEUED", "BLOCKED", "UNKNOWN" | no | |
confidence | string; one of "high", "medium", "low" | no | Lowered one level when the result is partial or the docs check is incomplete. |
summary | string | no | One-sentence decision with the amount that can leave now and the critical admin-flag count. |
next_step | string | no | Concrete action for the caller given the verdict. |
verdict_reasons | array<string> | no | |
partial | boolean | no | True when the time budget ended a stage early; missing says which. |
missing | array<object> | no | Stages the time budget cut off and what each gap means for the result. |
time_budget | object | no | budget_ms and elapsed_ms for this request. |
vault_info | object | no | Name, asset, decimals, totals, and vault-type specifics (MetaMorpho, Yearn v3, Euler v2, ERC-7540). |
request | object | no | Resolved exit in shares with fair (convertToAssets) and quoted (previewRedeem) values. |
holder | one of | no | |
exitable_now | object | no | assets, shares, basis (simulation | liquidity_pool | claimable_queue | ...). |
haircut | object | no | fee_haircut_bps = price haircut vs convertToAssets; undeliverable_now_bps = share of the exit that cannot leave this block; effective_haircut_bps (null when QUEUED, which is delay not loss). |
partial_exit_max | object | no | Largest exit that works now (shares, assets, method, resolution_shares). |
time_to_full_exit | object | no | kind, seconds (null when the contract states no schedule), basis. |
liquidity | object | no | Pool assets, coverage_ratio, per-market (Morpho Blue) or per-strategy (Yearn) withdrawable amounts. |
simulation | one of | no | |
admin | object | no | |
unknowns | array<string> | no | |
what_would_change_verdict | array<string> | no | |
docs_analysis | object | no | Claims with verified quotes, contradictions with severity (ensemble plus adversarial review), confidence. |
Pay and connect
Available through: x402 (USDC on Base), MCP, RapidAPI.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent