EVIDIQ Assay
A signature is irreversible, and hex is unreadable. Assay turns calldata, an EIP-712 payload, or an unsigned transaction into a plain-language statement of what it will do — unwrapping multicall and execute wrappers to reach the call that actually matters — and flags the parts worth refusing.
EVIDIQ Assay
Agent #9727Quickstart
Connect the Streamable HTTP MCP endpoint, then preflight for free before paying.
claude mcp add --transport http evidiq-assay https://mcp.evidiq.dev/assay/mcp
Or probe the public pricing discovery endpoint:
curl -s https://mcp.evidiq.dev/assay/x402
Prefer a Skill file? Fetch the agent-readable EVIDIQ Assay Skill:
curl -s https://mcp.evidiq.dev/assay/skill.md
What Assay is for
Before an agent signs
Read the intent while refusing is still free — after signing there is nothing to decide.
Wrapped calls
multicall and execute hide the real call; Assay decodes the inner one, not the wrapper.
Allowance traps
Unlimited approvals, setApprovalForAll, Permit and Permit2 grants, and what the spender already holds.
Net effect, not intent
Pinned-block simulation reports asset deltas per address, so the outcome is checked rather than assumed.
Who you are dealing with
Bytecode screening for proxies, owner privileges, mint, pause, blacklist, and fee setters — or no code at all.
Proof for a counterparty
attest_intent signs the digest, so both sides can show the check covered exactly these bytes.
Ten MCP tools
Five free tools cover discovery, preflight, and offline verification. Five paid tools handle decoding, allowance analysis, simulation, counterparty screening, and attestation.
Paid analysis
- decode_transaction — Decode calldata, EIP-712, or an unsigned transaction into plain-language intent, unwrapping multicall and execute wrappers to reach the inner call. (0.005 USDT0)
- assess_approval — Allowance analysis: unlimited or excessive amounts, setApprovalForAll, Permit and Permit2 grants, and the spender's existing on-chain allowance. (0.01 USDT0)
- simulate_transaction — Simulate against a pinned block and report net asset deltas per address. (0.015 USDT0)
- screen_counterparty — Bytecode-level screening: proxy and upgradeability slots, owner privileges, mint, pause, blacklist and fee-setter surface, and whether any code exists at all. (0.02 USDT0)
- attest_intent — Bind the decoded intent and verdict to a content digest, sign it with EIP-191, and anchor the digest. (0.03 USDT0)
Free preflight and verification
- assay_capabilities — Rule catalog with severities and which rules are heuristic, plus supported chains, selector-set version, limits, and full pricing. (free)
- validate_payload — Parse-check the payload and return the detected kind and counts by severity — without the findings, and without charging. (free)
- estimate_cost — Quote one paid tool, or the whole price table when no tool is named. (free)
- verify_assay_report — Recompute the report digest and verify its EIP-191 signature offline. (free)
- get_artifact — Retrieve a stored report or attestation by id, within its TTL. (free)
What it accepts
Raw calldata, an EIP-712 typed-data JSON document, an unsigned transaction JSON, or a plain message. The kind is detected rather than declared, and validate_payload reports which kind it read before you pay. A payload it cannot parse is never scored as safe.
# calldata: approve(spender, 2^256-1) 0x095ea7b3000000000000000000000000<spender>ffffffff…ffff
Recommended workflow
Settlement happens before a paid tool runs, so a malformed argument is still a paid call. Preflight for free first.
- Call assay_capabilities for the rule and selector set versions, chains, and prices.
- Call validate_payload — it returns the detected kind and counts by severity for free.
- Decode with decode_transaction; for an approval, add assess_approval.
- Check the net effect with simulate_transaction, and the target with screen_counterparty.
- If a counterparty needs proof, call attest_intent and hand over the report.
- Verify offline with verify_assay_report, and re-fetch with get_artifact while its TTL lasts.
What a report proves, and what it does not
A report proves that these exact bytes, under this selector set and rule set version, decode to this intent and produced these findings. Anyone can re-run it and compare digests. It does not prove a transaction is safe to sign: simulation reflects one pinned block, some rules are explicitly heuristic and marked as such, and an unknown selector is reported as unknown rather than assumed harmless. Credentials are refused outright — a private key or mnemonic in the input is an error, and nothing is stored, attested, or anchored.
{
"engine": "EVIDIQ-Assay/1.0",
"selectorSetVersion": "1.0.0",
"chain": "eip155:196",
"intent": "Approve <spender> to move an unlimited amount of <token>",
"findings": [
{ "rule": "UNLIMITED_APPROVAL", "severity": "high", "heuristic": false }
],
"integrity": { "algorithm": "SHA-256", "digest": "...", "signature": "0x...", "signer": "0x..." }
}x402 pricing
| Tool | Atomic | USDT0 | Access |
|---|---|---|---|
| decode_transaction | 5000 | 0.005 | x402-paid |
| assess_approval | 10000 | 0.01 | x402-paid |
| simulate_transaction | 15000 | 0.015 | x402-paid |
| screen_counterparty | 20000 | 0.02 | x402-paid |
| attest_intent | 30000 | 0.03 | x402-paid |
| assay_capabilities | 0 | Free | Always ungated |
| validate_payload | 0 | Free | Always ungated |
| estimate_cost | 0 | Free | Always ungated |
| verify_assay_report | 0 | Free | Always ungated |
| get_artifact | 0 | Free | Always ungated |
Payments use x402 v2 exact scheme with USDT0 (6 decimals) on X Layer (eip155:196). Verification and settlement run through the official OKX Onchain OS Payment SDK (@okxweb3/x402-core and @okxweb3/x402-evm). The OKX facilitator verifies each authorization and settles it on X Layer before any decoding runs.
Settled on X Layer
A live decode_transaction call paid 0.005 USDT0 (5000 atomic) on approve calldata carrying a max-uint amount, and returned the decoded intent with the unlimited-allowance finding. The receipt is status 0x1 and the transaction was broadcast by an OKX facilitator relayer rather than an Assay-held key — the on-chain evidence that settlement ran through the official SDK.
0x804a7454d75fefbbdfe43a365ec494d52e02700f18ebc3a85c75e8223b66d4eeLicensing
EVIDIQ owns and licenses its original Assay code under MIT. Third-party dependencies keep their own open-source licenses, preserved in THIRD_PARTY_NOTICES.md.
Assay reads what an agent is about to sign. For the counterparty agent itself, use EVIDIQ Core; for the endpoint serving it, use EVIDIQ Sentinel; to keep a tamper-evident record of what was signed, use EVIDIQ Vault. Nothing here is financial advice, and no report is a guarantee of safety.