Skip to main content
This is a reference for the verification API’s payload adapter. For apps you can use inside a Desk, see Desk apps.
venue: dimes. Over HTTP, multiply, dimesfi and dimesmultiply also resolve to it, so dimes.fi works too. Dimes Multiply gives 2x to 10x leveraged exposure on Polymarket markets. Positions open against a vault contract on Polygon (chain 137), and the collateral token is pUSD.

What to send

Any of these payloads. All are detected without venue.
  • An offer or quote body for POST /prediction-markets/quotes: {market_ticker, effective_side, leverage_bps, notional_amount_usd_pips, slippage_bps, ...}. notional_usd_pips is accepted in place of notional_amount_usd_pips. A body carrying a contract_signature is read as a signed quote.
  • A Polygon transaction {to, data, chainId} to a Dimes vault, bare or wrapped in {transaction} or {tx}.
  • An ERC-20 approve whose spender is a Dimes vault.
  • A batch {kind: "evm_calls", calls: [...]} or {calls: [...]} where at least one call targets a vault. Each call may use to or target.
The vaults are identified by address: A transaction, approval or batch that declares a chain other than Polygon is not detected as Dimes. With venue: "dimes" it is classified unknown and flagged, because no Dimes contract exists at those addresses on other chains. A payload that declares no chain gets a note that Polygon is assumed.

Units

The classifier converts every venue unit to dollars and multipliers before the judge reads it:
  • *_usd_pips: 10,000 pips is $1.00.
  • *_usdc_units: 6 decimals, 1,000,000 is $1.00. The token is pUSD, not USDC, whatever the field name says.
  • leverage_bps: 10,000 is 1x, so 50,000 is 5x.
Summaries show notional and collateral separately. Collateral is notional divided by leverage, and the total taken at open is collateral plus origination fee plus venue fee.

Live lookup

For offer and quote bodies, the adapter calls GET /prediction-markets/markets/{market_ticker}?expand=prices on https://api.dimes.fi/v1, or on https://api-sandbox.dimes.fi/v1 when the quote’s polygon_vault_contract_address is the sandbox vault. An offer with no vault address is looked up in production. It adds the market title, status, category, close date and the current ask for your side, and flags a side that is not accepting new positions, leverage above that side’s cap and a market that is not active. The timeout is 3.5 seconds and results are cached for 5 minutes. Calldata has no ticker, only opaque Polymarket ids, so vault transactions are not looked up and the market’s identity is marked unverified.

Notes the classifier adds

  • Leverage outside 2x to 10x, or not a multiple of 2,500 bps.
  • slippage_bps outside 100 to 1,000, and anything above 500.
  • allow_partial_fill, which lets the position open at as little as min_fill_bps of the requested size (20% when unset).
  • A signature expiry already in the past, which reverts on chain.
  • A quote whose vault address is not a known Dimes vault.
  • createPosition arguments where notional does not equal collateral × leverage. Real Dimes quotes always satisfy this, so these arguments did not come from one.
  • A draft with an empty signature. It is not executable; Dimes signs the same terms when the quote is promoted.
  • An unlimited or near-unlimited approval, and an approval or transfer of a token that is not the environment’s pUSD.
  • In a batch: a transfer to an address that is not the vault, and an approve whose spender is not a vault.
  • A push-funded open, where the pUSD pushed must equal the position’s total exactly.
  • requestPartialClose, which is gated: while it is disabled, the call is accepted but not acted on.
  • Sandbox actions are labelled as test funds.

Examples

An offer body:
A close on the production vault, sent the same way with this action:
It classifies as request-close in the position family.

From an MCP client

Instruct the agent to call verify_intent before requesting a Dimes quote or signing a vault transaction, with your rules as intent, the exact payload as action and venue: "dimes", and to act only on ALLOW. The Dimes trading agent runs every order through this adapter before it trades.
The sandbox runs on Polygon too, with its own vault and worthless test pUSD. The classifier tells the two apart by contract address, so a rule such as “sandbox only” can be checked from the payload.