Back to Skill Marketplace

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).

Updated today<1 min setup

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).

SKILL.mdALPHIO / VERIFIED

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:

AssetMethodFacilitatorTx
USDCeip3009Coinbase CDP0x484cc8…398a
$CAPACITRpermit2Coinbase CDP0xa6a8eb…5864
$CAPACITRerc7710MetaMask CDP0xa286dd…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

  1. POST without X-Payment. Expect 402 with x402.accepts[].

  2. Prefer the accepts[] entry where extra.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])')
    
  3. Read accepts[].extra.assetTransferMethod to know which signing primitive to use (see below). Sign with your wallet.

  4. 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 + eip2612GasSponsoring flow chains token.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" }
MethodUsed forSigning
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)
eip3009USDC (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.

Leave feedback

Discover more

Related skills

View all
無料で始める