DOCS

CALL SENTINEL

Three doors, one swarm. Any MCP client, any A2A agent, any script with an x402-aware fetch. Verdicts cost 1 CCD; discovery, badge checks, audit and track lookups are free.

01 · MCP

Streamable HTTP, stateless. Add the server to Claude Desktop, Claude Code or any MCP client; discovery is free, verdicts are paid when a paywall is configured.

mcp config
{
  "mcpServers": {
    "sentinel": {
      "type": "http",
      "url": "https://<sentinel-host>/mcp"
    }
  }
}
agent prompt
Before trading any Solana token, call sentinel_verdict with its mint. Treat DANGER or RUGGED as a hard stop. Quote the risk score, the confidence and the top reason to the user, and link the audit record. Check sentinel_track once per session to know how well the judge has been calibrated lately.

02 · Tools

sentinel_verdict{ mint, fresh? }

Full swarm verdict: band, risk, confidence, headline, decisive fact, action, reasons, clean signals, what would change it, scorecard, advocate and rebuttal, vetoes, findings, consensus, flags, evidence incl. money flow, attestation (digest, Concordium tx, ML-DSA-65 signature). Paid over x402 when the server has a paywall. Streams progress notifications.

sentinel_agents{}

The nine agents: roles, registry token ids, badge addresses, badge-check URLs, Agent Card URLs.

sentinel_check_badge{ id }

Verify any Concordium agent badge or list an account's badges via the Agent Registry.

sentinel_audit{ digest? | mint? | limit? }

Past verdicts with their on-chain audit records and outcomes.

sentinel_track{ limit? }

The track record: Brier, skill vs base rate, log score, reliability bins, per specialist; graded verdicts with their grade anchors.

03 · A2A

A2A v1.0 over JSON-RPC with SSE streaming. The Agent Card at /.well-known/agent-card.json is the one pinned in the Concordium Agent Registry and carries the badge extension.

SendStreamingMessage
POST /a2a
A2A-Version: 1.0

{"jsonrpc":"2.0","id":1,"method":"SendStreamingMessage","params":{"message":{"messageId":"m1","role":"ROLE_USER","parts":[{"data":{"mint":"Bo9jh3wsmcC2AjakLWzNmKJ3SgtZmXEcSaW7L2FAvUsU"}}]}}}

→ task · statusUpdate (one per specialist) · artifactUpdate { verdict } · statusUpdate COMPLETED

04 · x402

Pay per verdict in CCD on Concordium testnet: 1 CCD, paid to <owner account>. The 402 response carries the requirements; the client signs a sponsored transfer, our facilitator pays the fee and submits, finality in about ten seconds, verdict in the 200. The paying agent never needs CCD for fees, only for the price.

MCP
Claude, GPT, any MCP client
tools/call sentinel_verdict · 1 CCD
A2A
agents speaking A2A v1.0
SendMessage with a mint → Task with the verdict artifact
HTTP
bots and scripts
POST /x402/verdict · 1 CCD
plain HTTP
POST /x402/verdict  {"mint":"<mint>"}
→ 402 · PAYMENT-REQUIRED: base64({ "x402Version": 2, "accepts": [{ "scheme": "exact", "network": "ccd:testnet",
     "amount": "1000000", "asset": "CCD", "payTo": "<owner accou…", "extra": { "feePayer": "<sponsor>" } }] })
POST /x402/verdict + PAYMENT-SIGNATURE: base64({ signedTransaction, sender })
→ 200 · PAYMENT-RESPONSE: base64({ success, transaction }) · verdict JSON

05 · Audit trail

Each verdict is canonicalised and hashed (sha256 over chain, mint, snapshot time, evidence, verdict). The digest, the subject, the band, the score and the agents' registry ids are appended to the sentinel_audit contract on Concordium testnet. The contract has no update and no delete; outcomes are added beside a record with grade, once per horizon. EU AI Act Art. 12 record keeping, readable by anyone on CCDScan.

contract entrypoints
sentinel_audit.record { digest: [u8;32], chain, subject, verdict, risk_score: u8, agent_ids: [u64], observed_at: u64 } → seq
sentinel_audit.view(seq) → Record · count() · info()
sentinel_audit.grade  { seq, horizon: u32, labels, rugged, liquidity_bps: u16, price_bps: u16, observed_at }
                      (once per horizon; the record itself is never edited)
sentinel_audit.grades(seq) → [Grade]

06 · Track record

Every sealed verdict is scored against what the token did at 1h, 24h and 7d. riskScore/100 is read as the forecast P(rug); a rug is liquidity down more than 99%, no trades left, the labels of arXiv:2608.20271, or a pool under 1% of market cap. The report gives the Brier score, the skill against the base rate, the log score, a reliability diagram and the same per specialist, so a calling agent can weigh Sentinel the way Sentinel weighs its own agents. Live at /track, over MCP as sentinel_track, and as JSON at /track.

07 · Verify a verdict

Two independent proofs. On-chain: the stored verdict JSON must hash to the digest in the Concordium record. Offline: the ML-DSA-65 (FIPS 204) signature over sha256(digest ‖ mint ‖ verdict ‖ score ‖ at) with context sentinel.verdict/1, public key at /.well-known/sentinel-keys.json. Post-quantum by design: the chains sign with Ed25519, the proof that a verdict came from Sentinel does not depend on it. Every audit record has a button that runs this check in your browser.