
Opportunity Capture
capacitr
Capacitr provides single-call market discovery and paid analysis: paste a URL or free-text query and receive ranked Polymarket, Hyperliquid, and Deribit markets augmented with Quotient intelligence (fair odds, spread, BLUF).
Overview
Capacitr provides single-call market discovery and paid analysis: paste a URL or free-text query and receive ranked Polymarket, Hyperliquid, and Deribit markets augmented with Quotient intelligence (fair odds, spread, BLUF).
Capacitr provides single-call market discovery and paid analysis: paste a URL or free-text query and receive ranked Polymarket, Hyperliquid, and Deribit markets augmented with Quotient intelligence (fair odds, spread, BLUF). Integration is minimal — an always-on discovery endpoint (/api/skill/discovery) returns current prices, accepted assets, EIP-712 hints and a prices_version cache key; the paid POST /api/analyze-link endpoint follows an x402 payment flow (initial 402 with x402.accepts[], prefer the $CAPACITR entry; USDC supported as fallback). Settlement is proven on Base mainnet via Coinbase and MetaMask facilitators and routed automatically by assetTransferMethod. Use cases include agent-driven trade discovery, automated research, signal generation, and wallet-enabled on-chain payment flows. Core advantages: one HTTP call, one payment, one verified on-chain settlement, and no signup or persistent API key required.
Skill.md
How this skill works
Capacitr provides single-call market discovery and paid analysis: paste a URL or free-text query and receive ranked Polymarket, Hyperliquid, and Deribit markets augmented with Quotient intelligence (fair odds, spread, BLUF).
Market discovery as a single x402-paid HTTP call. Paste a URL or sentence; get back ranked Polymarket / Hyperliquid / Deribit markets with Quotient intelligence (fair odds, spread, BLUF) overlaid. One endpoint, one payment, one response.
Proven on-chain settlement
Verified end-to-end against both Coinbase and MetaMask facilitators on
Base mainnet. Each row is a real on-chain transfer to the Capacitr
payee 0x6503fB61705EB6B3C57EE1ab88a1a75A6eE01869:
| Asset | Method | Facilitator | Tx |
|---|---|---|---|
| USDC | eip3009 | Coinbase CDP | 0x484cc8…398a |
| $CAPACITR | permit2 | Coinbase CDP | 0xa6a8eb…5864 |
| $CAPACITR | erc7710 | MetaMask CDP | 0xa286dd…066e |
Your agent platform signs the right primitive for the
assetTransferMethod declared in the 402 envelope; Capacitr routes
verify + settle to the matching facilitator. No further integration
required.
Base URL
: "${CAPACITR_BASE_URL:=https://app.capacitr.xyz}"
Always-on preflight
curl -sS "$CAPACITR_BASE_URL/api/skill/discovery" | jq .
Returns current prices, accepted assets, EIP-712 domain hints, and the
canonical accepts[] shape. Treat prices_version as the cache key —
if a later 402 carries a different prices_version, re-fetch
discovery before re-signing.
The paid endpoint — POST /api/analyze-link
Default: pay in $CAPACITR. USDC supported as a fallback when the agent's wallet doesn't hold $CAPACITR. All prices come from discovery — never hard-code.
Flow
-
POST without
X-Payment. Expect402withx402.accepts[]. -
Prefer the
accepts[]entry whereextra.symbol === "capacitr". Fall back to USDC only if your wallet doesn't hold $CAPACITR on Base.# Pick CAPACITR if present, otherwise USDC accept=$(jq -r '.x402.accepts | (map(select(.extra.symbol == "capacitr"))[0] // map(select(.extra.symbol == "usdc"))[0])') -
Read
accepts[].extra.assetTransferMethodto know which signing primitive to use (see below). Sign with your wallet. -
Retry with
X-Payment: <base64 JSON>header → 200 + payload.
Why $CAPACITR?
- Aligns agent payment with the token holders driving Capacitr's research surface — directly compounds protocol value rather than flowing out to a generic stablecoin.
- Lower per-call cost than USDC equivalent.
- Same on-chain settlement guarantees via Coinbase CDP (the
permit2 + eip2612GasSponsoringflow chainstoken.permit()→x402ExactPermit2Proxy.settleWithPermit()and the facilitator pays gas — agent wallet only needs $CAPACITR balance, no ETH).
Asset transfer methods
The 402 envelope declares one method per accepts[] entry. Pick
the entry whose method your wallet can sign:
accepts[i].extra.assetTransferMethod ∈ { "eip3009", "permit2", "erc7710" }
| Method | Used for | Signing |
|---|---|---|
| permit2 | $CAPACITR (default) | Two EIP-712 sigs: token Permit + Permit2 PermitWitnessTransferFrom |
| erc7710 | $CAPACITR (operator may pick instead of permit2) | One delegation signed by a MetaMask Smart Account (or EIP-7702-upgraded EOA) |
| eip3009 | USDC (fallback) | One EIP-712 sig: TransferWithAuthorization |
The operator picks at most one method per asset for $CAPACITR. If they flip the operator switch, agents see the new method in the next 402 envelope.
permit2 — $CAPACITR via Coinbase (default)
Two signatures from any EOA. The facilitator chains
token.permit(...) → x402ExactPermit2Proxy.settleWithPermit(...) and
pays gas.
PERMIT2_CANONICAL = 0x000000000022D473030F116dDEE9F6B43aC78BA3
X402_EXACT_PROXY = 0x402085c248EeA27D92E8b30b2C58ed07f9E20001
# 1. EIP-2612 permit signature against the token
domain = { name: <accepts.extra.name>, version: <accepts.extra.version>,
chainId: 8453, verifyingContract: <accepts.asset> }
types = { Permit: [
{name: "owner", type: "address"},
{name: "spender", type: "address"},
{name: "value", type: "uint256"},
{name: "nonce", type: "uint256"},
{name: "deadline", type: "uint256"},
] }
message = { owner: <agent EOA>, spender: PERMIT2_CANONICAL,
value: MAX_UINT256, nonce: <token.nonces(owner)>, deadline }
# 2. Permit2 PermitWitnessTransferFrom signature
domain = { name: "Permit2", chainId: 8453,
verifyingContract: PERMIT2_CANONICAL }
types = { PermitWitnessTransferFrom: [
{name: "permitted", type: "TokenPermissions"},
{name: "spender", type: "address"},
{name: "nonce", type: "uint256"},
{name: "deadline", type: "uint256"},
{name: "witness", type: "Witness"},
],
TokenPermissions: [ {token, amount} ],
Witness: [ {to, validAfter} ] }
message = { permitted: { token, amount }, spender: X402_EXACT_PROXY,
nonce: <random uint256>, deadline,
witness: { to: accepts.payTo, validAfter } }
X-Payment payload shape:
{
x402Version: 2,
scheme: "exact",
network: "eip155:8453",
accepted: <copy of the chosen accepts[i] entry>,
payload: {
signature: <permit2 witness sig>,
permit2Authorization: {
permitted: { token, amount },
from: <agent EOA>,
spender: X402_EXACT_PROXY,
nonce, deadline,
witness: { to: payTo, validAfter }
}
},
extensions: {
eip2612GasSponsoring: {
info: { from, asset, spender: PERMIT2_CANONICAL, amount: MAX_UINT256,
nonce, deadline, signature: <permit sig>, version: "1" }
}
}
}
Optimization: If Permit2 already has MaxUint allowance from the
buyer (one-time approval), skip extensions.eip2612GasSponsoring.
Coinbase's simulator otherwise re-broadcasts a redundant permit and
reverts.
erc7710 — $CAPACITR via MetaMask
Requires the buyer wallet to be a MetaMask Smart Account or an
EIP-7702-upgraded EOA delegating to MetaMask's
EIP7702StatelessDeleGatorImpl (Base address
0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B). Plain EOAs cannot use
this method.
# Build delegation via @metamask/smart-accounts-kit
const delegation = createOpenDelegation({
from: buyerSmartAccount.address,
environment: buyerSmartAccount.environment,
salt: <unique uint256>, // prevents allowance-bucket reuse
scope: { type: ScopeType.Erc20TransferAmount,
tokenAddress: accepts.asset, maxAmount: accepts.amount },
caveats: [{ type: CaveatType.Redeemer,
redeemers: accepts.extra.facilitators }],
});
const signature = await buyerSmartAccount.signDelegation({ delegation });
const permissionContext = encodeDelegations([{ ...delegation, signature }]);
X-Payment payload shape:
{
x402Version: 2,
scheme: "exact",
network: "eip155:8453",
accepted: <copy of the chosen accepts[i] entry>,
payload: {
delegationManager: buyerSmartAccount.environment.DelegationManager,
permissionContext, // ABI-encoded signed delegation bytes
delegator: buyerSmartAccount.address,
}
}
eip3009 — USDC (fallback)
Use only when the agent's wallet doesn't hold $CAPACITR on Base. EIP-712
typed-data domain (read from accepts[].extra rather than hard-coding):
Best used for
When to use it
Capacitr provides single-call market discovery and paid analysis: paste a URL or free-text query and receive ranked Polymarket, Hyperliquid, and Deribit markets augmented with Quotient intelligence (fair odds, spread, BLUF).

01 · PRE-MEETING
Prepare a decision brief
Turn scattered evidence into a structured case before an investment committee meeting.

02 · TEAM WORKFLOW
Standardize handoffs
Create consistent research outputs across analysts, portfolio managers, and agents.

03 · LIVE UPDATE
Refresh the thesis
Update scenarios after a new catalyst, KPI release, or earnings result.
Community notes
Built to improve with use.
Feedback will appear here as this skill is used and reviewed.
Discover more
Related skills
View allThematic Investment Mapping
Map companies to a theme by revenue exposure, transmission channels, and second-order effects, then rank the best expressions of the theme. Use when building a thematic basket or researching idea…
alphagbm-duan-analysis
AlphaGBM Duan Yongping Analysis packages Duan-style, seller-only option playbook into a single, trade-ready call. It produces three focused panels: Sell Put (compute strike, premium, delta, DTE,…
alphagbm-fear-score
AlphaGBM FearScore provides a per‑ticker panic index (0–100) that synthesizes six orthogonal market signals—VIX level (20%), IV Rank (25%), RSI‑14 (15%), volume anomaly (15%), put/call ratio (15%),…