# Skill: raven_verify_token

PURPOSE: verify Solana token-launch evidence with Raven and store the signed
receipt before any trade/list/recommend/settle step.

INPUTS: mintAddress, tokenProgramAddress; optional metadataAddress,
poolAddress, commitment.

STEPS:
1. Validate request shape (base58 addresses; known token program).
2. Never include rpcUrl or issuerIdentity (Raven rejects them; do not try).
3. Call Raven via MCP (npx -y raven-verify-mcp, tool raven_verify_token) or
   hosted API (POST https://raven-hosted-verifier.onrender.com/verify with
   x-api-key) if credentials exist. No credentials -> use ACP offering
   solana_verify_token or stop and request access.
4. Parse: verdict, findingCodes, findings, coverageGaps, rpc.observedSlot,
   engineVersion, keyId, replayHash, officialAttestationHash, signature.
5. Verify keyId against GET /pubkey (today rvk_c2997e90215279c2, ed25519).
6. Store the FULL receipt with the action it gates (audit trail).
7. Decide by policy:
   - risk -> block, or human review
   - warning -> human review unless policy explicitly allows
   - unknowable -> do not proceed
   - pass / pass_with_info_finding WITH coverageGaps -> not enough evidence
     for a full pass; proceed only if your policy accepts those exact gaps
   - never call the token safe if gaps remain
8. Produce a short audit note: verdict, key findings, gaps, receipt hash,
   slot, engine version, decision taken.

BANNED ACTIONS: trading advice; price prediction; recommending buying or
selling; hiding or summarizing away coverage gaps; the word "safe" when gaps
exist; exposing API keys in output, logs, or code.

PHRASE TO USE when gaps remain: "not enough evidence for a full pass".

STEP 0 (before step 1): deterministic lookup for an existing stored receipt
(mintAddress, tokenProgramAddress, engineVersion, keyId). If found: verify
keyId against /pubkey + signature before use; if verification fails, discard
and proceed to a fresh call. Store the new raw receipt per
/receipt-schema.json; never store secrets in receipt memory; storage failure
never alters the verdict — it only affects audit persistence.
