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.
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:
@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.
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.
402 → sign → retry
Capacitr advertises one entry per asset in accepts[]. Read extra.assetTransferMethod to know which signing primitive to use.
# 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"}'{
"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- Sign EIP-712 TransferWithAuthorization against the token contract
- Wrap in payload.authorization
permit2
2 sigs- Sign EIP-2612 Permit on the token (spender = Permit2 canonical)
- Sign Permit2 PermitWitnessTransferFrom (spender = x402ExactPermit2Proxy)
- Wrap in payload.permit2Authorization + extensions.eip2612GasSponsoring
erc7710
1 sig- Build ERC-7710 delegation with ERC-20 transfer scope
- smartAccount.signDelegation()
- encodeDelegations → payload.permissionContext
What you get back
One typed payload. Quotient enrichment is per-prediction when available.
{
"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.
extractedLLM-extracted entities, keywords, tickers, categories. Use to refine downstream prompts.
searchIdUUID. Snapshot stored at /api/markets/search/{id}, rendered at /markets/search/{id}.
Live demo
Hits this same Capacitr deploy. Inspect a real 402 envelope; paste a signed X-Payment header to settle on-chain.