RAVEN. / workbench

Workbench

Everything a developer or agent needs to call Raven and verify what comes back. Copy, run, inspect. No live demo box by design — current evidence receipts are signed and cost RPC; get a key and run your own.

Current signed customer path: POST /receipt/v1. Verify the response locally; the command below calls that exact route.

Call it

pubkey — no auth
$ curl -s https://raven-hosted-verifier.onrender.com/pubkey
verify — x-api-key
$ curl -s -X POST https://raven-hosted-verifier.onrender.com/receipt/v1 \
  -H "x-api-key: $RAVEN_KEY" -H "content-type: application/json" \
  -d '{"mintAddress":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
       "tokenProgramAddress":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"}'
mcp — local, unsigned developer preview
$ npx -y raven-verify-mcp
# Claude Desktop config:
{ "mcpServers": { "raven": { "command": "npx", "args": ["-y", "raven-verify-mcp"] } } }
acp — agent-to-agent, 0.1 USDC
network:  Virtuals Agent Commerce Protocol
offering: solana_verify_token
price:    0.1 USDC per job (escrow, signed deliverable, on-chain settlement)
status:   SANDBOX ONLY — not publicly listed, not hireable today

Sample request & response

request.json
{
  "mintAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "tokenProgramAddress": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
response.json (abridged legacy v2 archive — captured response JSON)
{
  "verdict": "risk",
  "engineOutcome": "risk",
  "reason": "issuer_control_finding_present",
  "findingCodes": ["issuer_control.mint_authority_active",
                   "issuer_control.freeze_authority_active",
                   "venue.infrastructure_tier_immutable"],
  "coverageGaps": ["liquidity", "top_holders", "deployer_outcomes"],
  "engineVersion": "raven-solana-live-scan@0.1.0",
  "rpc": { "observedSlot": 424327592 },
  "replayHash": "sha256:7138cae394a76527bacef4885...",
  "officialAttestationHash": "sha256:9c01d49a8c7887bb2136fc3...",
  "keyId": "rvk_c2997e90215279c2",
  "signature": "wXKUnCWSqW4Od6k/dGA2uPcDU...",
  "signatureAlg": "ed25519"
}

Verify the signature

verify-receipt — 4 steps
1. Pin the signer key independently; GET /pubkey is a same-host cross-check
2. Do not use the abridged legacy v2 sample above as a receipt-v1 preimage
3. Follow /receipt-v1-test-vector.json for the exact receipt-v1 canonical body,
   payloadHash, receiptId binding, signerPublicKey, and ed25519 signed bytes
4. With authorized API access, re-run and compare like-for-like evidence
   at the same observed slot

Legacy v2 compatibility: POST /verify remains reachable for existing v2 integrations; do not use its verdict, replayHash, or officialAttestationHash envelope for new receipt-v1 integrations.

Ask & adjust (the working loop)

Run Raven with mintAddress + tokenProgramAddress.
Inspect the outcome. Listed findings triggered ends the conversation; no listed finding triggered continues under your gap policy.
Inspect coverageGaps. Anything listed was NOT evaluated — treat it as unverified, not as fine.
Rerun with more evidence when you have it: metadataAddress tightens metadata checks; poolAddress (Raydium CPMM) adds liquidity + vault-custody evidence.
Store the exact signed receipt-v1 object and verifier result. Preserve its subject, rules version, findings, coverage gaps, slot, payloadHash, receiptId, signerPublicKey, and signature.

Agent handoff (recommended policy)

Agent verifies the token before any trade/listing/recommendation step.
Agent stores the receipt alongside the action it gates — auditable forever.
Escalate to a human ONLY when listed findings trigger or the outcome cannot be established — receipts with no listed finding triggered and acceptable gaps proceed automatically under your policy. Raven never says "safe"; with gaps remaining the honest reading is not enough evidence for a full pass.

Using Raven from Codex / Claude / Cursor / Gemini

No human browsing required. Copy this into your agent workbench: the Agent Workbench Pack bundles context, skill, and prompt recipes — or grab the single-file skill: /raven-skill.md.
Load raven-agent-context.md as context; adopt raven-agent-skill.md as the operating skill.
Check stored receipts first (deterministic lookup per receipt-memory-policy.md), then call MCP or the hosted API; store the new raw receipt.
Escalate by policy — triggered findings and unestablishable outcomes go to a human; storage failure never changes a receipt.

Action context

Check staleness according to your integrator policy.

Agent-first, UI-second

Raven pages are for humans to inspect. Raven JSON, OpenAPI, MCP, ACP, receipts, and evals are for agents to use — agents should prefer structured endpoints over browsing. Copy points: skill snippets · receipt archive schema · key verification · agent preflight · payment policy.

Request a key Test Raven first → evals

A review console, not an execution console

The workbench exists so a human (or agent) can inspect a current receipt-v1 — rules version, findings, coverage gaps, subject, slot, payloadHash, receiptId, signerPublicKey, signature, and freshness — request missing evidence, re-run verification, or escalate. The abridged response above is an explicitly archived legacy v2 example. This page signs nothing and submits nothing. UI badges are summaries; the exact signed receipt is the artifact. Human review can approve business action under your policy; it cannot validate an invalid signature or untrusted signer.