Trust & billing

Pricing & payments

Agents pay per call with x402 on Cardano, with no account and no key. Apps use an API key on a contract. The free tier stays free.

x402 live on Cardano preprodPrices in tADA

Tiers #

TierTestnetMainnetIncludes
Free0$0Token list and search, status, the standard check (GET evaluate), briefs (GET explain), track record and proofs. MCP during the preview.
Data2 tADA$0.01Token state, history and market overview. The first 25 calls each day are free.
Premium5 tADA$0.05Checks sized to your order and rules, fresh investigations, questions, address lookups, monitors, and six agents.
Pro10 tADA$0.25Due Diligence Analyst, Opportunity Scout, Portfolio Checkup and Treasury Steward: agents that check many tokens or rules in one run.

Mainnet prices sit at market rates: $0.01 per call is in line with CoinGecko, CoinMarketCap and Nansen per-call data plans, and a Pro run costs less than the five to twenty calls it replaces. Current prices and the seller address are always published at /v1/status.

What is live today #

CapabilityStatus
x402 pay-per-call on the REST APILive on Cardano preprod
Masumi Coworker on Sokosumi (escrow per Task)Live on Cardano preprod
MCP server for Claude, Claude Code, CursorLive, free preview
Design-partner API keysLive, issued by hand
Chainlink CRE attestation of proofsLive on the CRE simulator
Self-service accounts, usage and prepaid packsPlanned
Mainnet pricing and subscriptionsPlanned

How x402 works #

x402 uses the HTTP status 402 Payment Required. An agent needs only a Cardano wallet:

  1. Call the endpoint

    Without payment, a paid endpoint answers 402. The PAYMENT-REQUIRED header (base64 JSON) says what to pay, in what asset, and to which address; the body repeats it in plain words.

  2. Pay

    The agent builds and signs a Cardano transaction for the exact amount, but does not broadcast it. @x402/fetch with @x402/cardano does this automatically within a spending cap you set.

  3. Retry with the signed payment

    The agent repeats the request with the PAYMENT-SIGNATURE header. CoinGraph's facilitator verifies the transaction, the answer is computed, the facilitator broadcasts the payment, and the answer is released with a PAYMENT-RESPONSE receipt carrying the transaction id.

402 response (decoded PAYMENT-REQUIRED header, real)
{
  "x402Version": 2,
  "error": "Payment required",
  "resource": {
    "url": "https://coingraph.ai/api/v1/agents/trade-gatekeeper",
    "description": "Run a CoinGraph agent (Premium tier, 5 tADA)",
    "mimeType": "application/json",
    "serviceName": "CoinGraph"
  },
  "accepts": [
    {
      "scheme": "exact",
      "network": "cardano:preprod",
      "amount": "5000000",
      "asset": "lovelace",
      "payTo": "addr_test1…",
      "maxTimeoutSeconds": 600,
      "extra": {
        "confirmationPolicy": {
          "l1Confirmations": -1
        }
      }
    }
  ]
}
Receipt (decoded PAYMENT-RESPONSE header, real)
{
  "success": true,
  "payer": "addr_test1qrwcm2ks…szndmw",
  "transaction": "d3a147217859d56695edf6135e4c34c5b483efa120052e7bde4215b39bd1d477",
  "network": "cardano:preprod",
  "extra": {
    "status": "mempool",
    "confirmations": -1
  }
}

A whole round trip takes a few seconds. That transaction on Cardanoscan. The facilitator is not custodial: it only verifies and broadcasts a transaction the agent has already signed, and never holds funds.

Pay from code #

Packages: @x402/fetch, @x402/cardano and @x402/core, version 2.26.0.

TypeScript
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactCardanoScheme } from "@x402/cardano/exact/client";
import { toClientCardanoSigner } from "@x402/cardano";

// A preprod wallet with some tADA (faucet: docs.cardano.org/cardano-testnets/tools/faucet)
const signer = toClientCardanoSigner({
  mnemonic: process.env.CARDANO_BUYER_MNEMONIC!,
  network: "cardano:preprod",
  provider: { blockfrost: { baseUrl: "https://cardano-preprod.blockfrost.io/api/v0", projectId: process.env.BLOCKFROST_PROJECT_ID! } },
});

const client = new x402Client()
  .register("cardano:*", new ExactCardanoScheme(signer))
  // Never pay more than 12 tADA for one call.
  .setSpendControls({ allowedAssets: [{ network: "cardano:*", asset: "lovelace", maxAmountPerPayment: "12000000" }] });

const payingFetch = wrapFetchWithPayment(fetch, client);

// 402 → pay → retry happens inside payingFetch.
const res = await payingFetch("https://coingraph.ai/api/v1/agents/trade-gatekeeper", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ token: "solana", size_usd: 5000, side: "buy" }),
});
const { data } = await res.json();          // { verdict: "ALLOW", summary, reasons, verify_url, … }
const receipt = res.headers.get("PAYMENT-RESPONSE"); // base64 JSON with the Cardano transaction id

The same buyer is in the repository as scripts/x402-buyer.ts.

Confirmation policy #

On preprod, CoinGraph releases the answer once its facilitator has broadcast the payment and the node accepted it (l1Confirmations: -1), because preprod blocks can be minutes apart. For real value on mainnet the policy would require block inclusion or depth, which the same code supports by changing one setting.

i

Note

On Cardano every payment output must carry a minimum amount of ADA, which is why testnet prices start at 2 tADA. On mainnet, cent-level calls are sold as prepaid packs or priced in a stablecoin.

Free allowances #

WhoAllowance
Any caller25 Data calls a day (state, history, market).
The website playground10 Premium and 5 Pro agent runs a day per visitor, so people can try agents without a wallet.
MCP (Claude, Cursor…)Free during the preview, including agent runs; the same calls cost 5–10 tADA over REST. After the preview, MCP carries the same tiers.

Design partners #

Early integrators (teams building agents, wallets or treasuries) get a free key in exchange for feedback, and use it instead of paying per call: send it as Authorization: Bearer cg_…. Write to ajay@coingraph.ai.

Masumi #

Masumi is Cardano's agent-payment and registry protocol; Sokosumi is its marketplace, where companies hire AI “Coworkers” per Task. CoinGraph Crypto Analyst is registered on Masumi and hired on Sokosumi for 1 test USDM per Task (USDM is a USD stablecoin on Cardano; the test version runs on preprod), held in escrow until the result is delivered, with the result hash recorded on chain. See Hire on Sokosumi.