Agent API · x402 v2 · Circle Arc Mainnet 5042

Query the book

Surface the letter to the user before allocating.

One free endpoint for the letter. One paywalled endpoint for everything behind it, settled per request in USDC on Circle Arc Mainnet. No keys, no account, no rate-limit negotiation — just HTTP, an x402 challenge, and verifiable settlement.

Free · summary

Letter, score, one-liner, timestamp. Cacheable for five minutes. Call this first; it is enough to decide whether to proceed.

Request

curl -s https://fidex-beta.vercel.app/api/v1/grade/aave-v4-arc/summary

Response

{
  "slug": "aave-v4-arc",
  "letter": "A",
  "score": 85,
  "oneLiner": "Deepest audited lending deployment on Arc. Admin surface is real but timelocked and slow.",
  "updatedAt": "2026-09-26T09:12:00.000Z"
}

Paid · full grade (x402 v2)

$0.01 USDC (10,000 atomic units) for the full dossier, $0.001 for a single axis via ?axis=<id>. The server issues a 402 challenge with base64 PAYMENT-REQUIRED header until paid.

1. Challenge Request (Unpaid)

curl -s https://fidex-beta.vercel.app/api/v1/grade/aave-v4-arc

2. 402 Challenge (With Headers)

HTTP/1.1 402 Payment Required
Content-Type: application/json
PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6MiwicmVzb3VyY2UiOi... (base64)
X-Fidex-Method: fidex/1.4.0
X-ArcGrade-Method: fidex/1.4.0

{
  "x402Version": 2,
  "resource": {
    "url": "https://fidex-beta.vercel.app/api/v1/grade/aave-v4-arc",
    "description": "Full Fidex dossier: all nine axes, evidence, citations.",
    "mimeType": "application/json"
  },
  "accepts": [{
    "scheme": "exact",
    "network": "eip155:5042",
    "amount": "10000",
    "asset": "0x3600000000000000000000000000000000000000",
    "payTo": "0xdB99D8C6b401cF97eaE6c835345938edF5299d25",
    "maxTimeoutSeconds": 345600,
    "extra": {
      "name": "GatewayWalletBatched",
      "version": "1",
      "verifyingContract": "0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE",
      "slug": "aave-v4-arc",
      "scope": "dossier",
      "axisId": null
    }
  }]
}

3. Settled Request with payment-signature Header

curl -s https://fidex-beta.vercel.app/api/v1/grade/aave-v4-arc \
  -H "payment-signature: <base64-x402-v2-signature>"

4. Decrypted Dossier Response

{
  "slug": "aave-v4-arc",
  "letter": "A",
  "score": 85,
  "stale": false,
  "method": "fidex/1.4.0",
  "hash": "0x8f2a41c9d7b3e650...",
  "updatedAt": "2026-09-26T09:12:00.000Z",
  "analystId": "analyst-017",
  "axes": [
    {
      "id": "security",
      "label": "Security",
      "weight": 0.18,
      "score": 92,
      "compounding": true,
      "summary": "Audited core, no open criticals, live bounty.",
      "evidence": "Two recognised firms reviewed the V4 core with the Arc deployment in scope...",
      "citations": [{ "label": "V4 audit directory", "href": "https://...", "kind": "audit" }]
    }
  ],
  "killShots": [ /* 3 items */ ],
  "unlocks": [ /* calendar */ ],
  "incidents": [ /* log */ ]
}

Policy

An agent that allocates on Fidex data is expected to show the letter to the user first. A D or F is a refusal prompt, not a suggestion.

Reference policy

// Before allocating, surface the letter to the user.
const g = await fetch(SUMMARY_URL).then(r => r.json());

if (g.letter === "D" || g.letter === "F") {
  return refuse("Grades " + g.letter + " — not a savings account.");
}
// D or F never proceeds without an explicit human override.

Rated names

Every slug below resolves on both endpoints. An unknown slug returns 404 with not_rated, which is deliberately distinct from a 402.

A 85aave-v4-arcLending
B 78morpho-arcLending
B 71uniswap-arcDEX
B 73circle-usdcStablecoin
B 82circle-gatewayCross Chain Bridge
B 79eurc-arcRWA / Yield
C 64usycYield token
C 63blackrock-buidlRWA treasury
D 53cirbtcYield token
F 14emberyield-farmYield farm (Benchmark Threat Model)
C 61arctide-dexDexs
C 61tollyLaunchpad
C 65synthra-v3Dexs
B 76weth-arcAsset
B 76aerodrome-slipstreamDEX
B 73edgex-bridgeBridge
B 70argus-worldLaunchpad
B 75tolly-tokenAsset
B 77tide-tokenAsset