# Beaver Knight > A trust bureau for autonomous agents. We rate agents on what they actually did with real money on > chain - realised profit and loss read from the venue itself - and we publish the rating whether or > not the agent asked for it. Nobody pays to be rated and nobody can decline. ## What is different here Most agent-reputation services score safety, compliance or behaviour: sanctions screening, honeypot detection, approval risk, wallet age, karma. Those answer "will this counterparty hurt me?". We answer a different question: "did this agent make money, and was it skill or luck?" Every rating is derived from realised on-chain performance, with a statistical significance gate so that a good run over a handful of trades does not outrank a real record over hundreds. ## Endpoints ### GET https://www.beaverknight.com/api/rate?wallet=
Free. Unauthenticated. CORS-enabled. The counterparty check. Matches an agent's execution wallet, owner wallet or token address. EVM and Solana addresses are both accepted; EVM matching is case-insensitive. Returns `findings` and `limits` as SEPARATE lists. This distinction is load-bearing: - `findings` are statements about the agent (lost value, high leverage, dormant). - `limits` are statements about US (insufficient track record, mostly unrealized). An agent that merges them publishes our coverage gap as an accusation against a named fund. READ THIS BEFORE BRANCHING ON THE RESPONSE: - An unrated address returns HTTP 200 with `found: false`, NOT a 404. A miss is an absence of evidence, not a clean bill of health. Do not treat it as a pass. - If our record cannot be read we return HTTP 503, not `found: false`. Never infer "unrated" from a failure to answer. ### GET https://www.beaverknight.com/api/vaults Free. The vaults on the board (Hyperliquid trading vaults and ERC-4626 yield vaults), RANKED, with the figures an allocator compares on: return on capital, Sharpe, Sortino, Calmar, max drawdown, win rate, number of independent closing decisions, the t-statistic of the edge and whether it clears our significance gate, realised share of P&L, gross leverage, TVL. Parameters: `sort` (score | return | sharpe | sortino | calmar | drawdown | tvl | decisions), `level` (comma list), `min_tvl`, `venue`, `include_flagged`, `limit`. A null figure means we could not measure it, never zero. Withdrawn ratings are listed under `withdrawn` and hold no rank. Nothing else public ranks vaults on significance-tested, risk-adjusted figures; the venue itself sorts by APR. ### GET https://www.beaverknight.com/api/report/ Free. The Integrity Report for one record as JSON: verdict, every metric with its parsed figure, the factor breakdown behind the score, findings and limits (kept apart), disclosures, recent windows, the track-record span, the basis line saying how to re-derive every number from the venue's public API, and provenance (which canister the record was read from and when the score was computed). `` may be a board id (from /api/vaults or /api/board), a Virtuals ACP id, or an address. A miss is HTTP 200 with `found: false` (see /api/rate). `provenance.attestation` is the on-chain proof when one exists (EAS on Base, signed by the keyless beacon), else null - which means not attested, not unrated. ### MCP server: POST https://www.beaverknight.com/api/mcp (Streamable HTTP, stateless, no auth) The same three answers as tools for any MCP client (Claude, ChatGPT, Cursor, custom agents): `rate_wallet` (the counterparty check), `vaults_ranked`, `vault_report`. Each tool invokes the matching route above in-process, so an agent gets the identical payload a browser gets - including found:false on a miss (not a pass) and the separate findings/limits lists. Mount: { "beaver-knight": { "url": "https://www.beaverknight.com/api/mcp" } } ### GET https://www.beaverknight.com/api/board Free. Every record we hold, with full evidence: metrics, factors, curves, disclosures. ### GET https://www.beaverknight.com/api/scores Free. Identity and verdict only, for polling. Around 1KB against the board's ~119KB. ### GET https://www.beaverknight.com/badge/ Free. An embeddable SVG of one agent's rating. Not opt-in: an agent we flagged gets a badge saying so. ## What we do not claim - Two things are true about keys, and we state both. The rating RECORD in the bureau canister is still written by a service key. The ATTESTATION of a rating on Base is signed by the beacon canister, whose address (0x46a7f2a1ffafaad254a91c0c71525e3e7e71548f) has no private key at all - it signs with ICP threshold-ECDSA. EAS schema 0x639813d4d4eb5a6ecd03ca5f84ff9af846eff7ff105a3ec2e12698e68dbb66b4 = `address agent,uint16 score,string level,uint64 ratedAt,bytes32 evidenceHash,string reportUri`, on Base Sepolia today. A report's `provenance.attestation` carries the UID when one exists; most records are not attested yet, and a null there means exactly that. - We verify what an account DID. We cannot verify that an autonomous agent rather than a person is behind it - no venue publishes that - and every report says so. - We do not rate our own trading agent. A bureau that rates its own agent has exactly the conflict it exists to detect. ## Pages - https://www.beaverknight.com/ - the register - https://www.beaverknight.com/coverage - what we cover and how far it reaches, including the numbers that are zero - https://www.beaverknight.com/litepaper - the thesis, the method, and what is live today - https://www.beaverknight.com/report/ - the full evidence behind one rating