Live · Base mainnet · proven on-chain

Pay-per-call
market discovery
for agents.

Paste a URL or thesis. Get ranked Polymarket / Hyperliquid / Deribit markets with Quotient intelligence overlaid. Settle in USDC or $CAPACITR via x402 on Base.

Base URL
app.capacitr.xyz
Settlement
USDC · $CAPACITR
Facilitators
Coinbase · MetaMask
x402
v1 + v2
Proven on Base mainnet
01 · Install

Pick your agent platform

Each platform installs the same skill. Only the auth wiring differs.

Bankr loads skills from the BankrBot/skills repo. Capacitr's skill is being merged via PR #390. Once merged, Bankr agents can invoke it from Farcaster:

bash
@bankr capacitr analyze https://x.com/example/status/123

Bankr's wallet signs the x402 payment in USDC (default) or $CAPACITR (per-route opt-in) and routes through Capacitr's configured facilitator automatically.

02 · Auth

Three credentials

Pick per endpoint. Agents typically mix: skill key for per-user calls, x402 for paid public endpoints.

x402

Per call · paid
  • POST /api/analyze-link

Pay USDC or $CAPACITR per call. No signup. Identity = your wallet address.

Skill key

Long-lived · auth
  • GET /api/feed
  • POST /api/chat
  • /api/interests
  • /api/risk-profile
  • GET /api/user

Mint at /settings/skill-keys. Revocable. For agents acting on behalf of a Capacitr user.

Privy JWT

Browser · session
  • All skill-key endpoints
  • POST /api/auth/sync
  • /api/skill-keys CRUD

Short-TTL token from the web client. Required to mint or revoke skill keys.

03 · x402 spec

402 → sign → retry

Capacitr advertises one entry per asset in accepts[]. Read extra.assetTransferMethod to know which signing primitive to use.

curl
# 1. Discovery preflight (always free)
curl https://app.capacitr.xyz/api/skill/discovery

# 2. Unpaid POST → 402
curl -X POST https://app.capacitr.xyz/api/analyze-link \
  -H "Content-Type: application/json" \
  -d '{"query":"oil"}'
402 envelope (truncated)
{
  "error": "Payment Required",
  "prices_version": "a3c29b2fc00429e1",
  "x402": {
    "version": 1,
    "accepts": [
      {
        "scheme": "exact",
        "network": "base",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "maxAmountRequired": "50000",
        "payTo": "0x6503fB61705EB6B3C57EE1ab88a1a75A6eE01869",
        "extra": { "assetTransferMethod": "eip3009", "symbol": "usdc", "name": "USD Coin", "version": "2" }
      },
      {
        "scheme": "exact",
        "network": "base",
        "asset": "0x65F8152809Dd1fC0D5d8A345c9008d37B95f9ba3",
        "maxAmountRequired": "1000000000000000",
        "payTo": "0x6503fB61705EB6B3C57EE1ab88a1a75A6eE01869",
        "extra": { "assetTransferMethod": "permit2", "symbol": "capacitr", "name": "CAPACITR", "version": "1" }
      }
    ]
  }
}

Signing recipes per method

eip3009

1 sig
Wallet
Any EOA
  1. Sign EIP-712 TransferWithAuthorization against the token contract
  2. Wrap in payload.authorization
SDKs
@coinbase/x402 · viem.signTypedData · Privy useX402Fetch

permit2

2 sigs
Wallet
Any EOA
  1. Sign EIP-2612 Permit on the token (spender = Permit2 canonical)
  2. Sign Permit2 PermitWitnessTransferFrom (spender = x402ExactPermit2Proxy)
  3. Wrap in payload.permit2Authorization + extensions.eip2612GasSponsoring
SDKs
@coinbase/x402 · Custom viem

erc7710

1 sig
Wallet
MetaMask SA or EIP-7702 EOA
  1. Build ERC-7710 delegation with ERC-20 transfer scope
  2. smartAccount.signDelegation()
  3. encodeDelegations → payload.permissionContext
SDKs
@metamask/smart-accounts-kit
04 · Response

What you get back

One typed payload. Quotient enrichment is per-prediction when available.

200 OK
{
  "extracted": {
    "summary":  "...",
    "keywords": ["oil", "OPEC", ...],
    "entities": ["OPEC", "Iran", ...],
    "tickers":  ["OIL"],
    "categories": ["energy", ...]
  },
  "predictions": [
    {
      "question":         "Will Crude Oil hit $200 by June?",
      "slug":             "cl-hit-jun-2026",
      "yesPrice":         0.0145,
      "noPrice":          0.9855,
      "volume":           3841735,
      "quotientOdds":     0.085,
      "spread":           0.07,
      "spreadDirection":  "q_higher",
      "bluf":             "..."
    }
  ],
  "perps":   [{ "asset": "OIL-PERP", "markPrice": 64.20, "recommendation": "..." }],
  "options": [],
  "recommendedTrades": [{ "marketType": "polymarket", "venue": "...", "recommendation": "..." }],
  "searchId": "uuid"
}
predictions[]

Ranked by relevance. quotientOdds + spread present when Quotient covers the market. spreadDirection: q_higher = BUY YES, q_lower = BUY NO.

perps[]

Hyperliquid perp matches when the thesis maps to a tradable instrument.

options[]

Deribit options. [] when no Deribit instrument fits.

recommendedTrades[]

Server's distilled trade ideas across all asset types. Informational — agent decides sizing.

extracted

LLM-extracted entities, keywords, tickers, categories. Use to refine downstream prompts.

searchId

UUID. Snapshot stored at /api/markets/search/{id}, rendered at /markets/search/{id}.

05 · Try it

Live demo

Hits this same Capacitr deploy. Inspect a real 402 envelope; paste a signed X-Payment header to settle on-chain.

Loading wallet mode…