> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chance.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# Dimes

> Venue-aware verification for Dimes Multiply — pass the exact offer body or vault calldata for a leveraged Polymarket position, get a verdict bound to those bytes.

Chance understands Dimes Multiply natively — the 2–10x leveraged CFD layer on Polymarket. Submit the **exact payload** your agent is about to send — a `POST /prediction-markets/quotes` offer body, a signed quote, or the raw Polygon transaction to the `LeveragedPredictionVaultV1` contract — and the harness will classify it deterministically, decode the vault calldata by its verified selectors, **resolve the ticker against the live Dimes markets API** (title, per-side eligibility, leverage caps, live prices), and judge it against your mandate with Dimes's own documentation in the loop — returning a signed verdict whose `requestHash` binds to those exact bytes.

## What gets recognized

| Family       | Payloads                                                                                                                                                                                                          |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `margin`     | Offer/quote requests and signed quotes (`market_ticker` + `leverage_bps` + `notional_amount_usd_pips`), `createPosition` / `createPositionPushFunded` calldata, `reserveDeposit`, push-funded `evm_calls` batches |
| `position`   | `requestClose` and `requestPartialClose` calldata — summarized explicitly as risk-reducing exits                                                                                                                  |
| `permission` | ERC-20 `approve` calls whose spender is a Dimes vault (production or sandbox)                                                                                                                                     |

The classifier renders the venue's raw units as economics the judge can reason over: `leverage_bps` → `6.5x`, `*_usd_pips` → dollars (10,000 pips = \$1.00), `*_usdc_units` → dollars (6-decimal pUSD), notional vs. collateral, fee rates, and the quote's `signature_expiry`. For a `createPosition` transaction the judge sees:

```text theme={null}
Dimes OPEN POSITION: vault.createPosition on the PRODUCTION vault — $50.00 pUSD
collateral at 5x leverage = $250.00 notional exposure on Polymarket outcome token
521143…222426; origination fee 1.25%, lifetime fee APR 20% on borrowed capital,
liquidation fee 10%, expected venue fee $0.25; total user cost at open ≈ $53.38;
quote signature expires 2026-07-08T14:05:00.000Z.
```

Deterministic checks ride along as notes: the sandbox vault is flagged as test funds, an expired `signature_expiry` is flagged as a guaranteed `SignatureExpired` revert, calldata that violates the quote invariant (`notional = collateral × leverage`) is flagged as never having come from a real Dimes quote, unlimited pUSD allowances are called out, and a push-funded batch that transfers the wrong token (only pUSD funds a position — never USDC) is flagged as a guaranteed revert. Calldata-only payloads carry no market ticker, so the market's identity is explicitly marked UNVERIFIED and the judge leans ESCALATE when the mandate depends on which market is being traded.

## Use it from your bot

Wrap the offer you were already going to submit:

```ts theme={null}
const payload = {
  market_ticker: "will-btc-hit-100k-2026",
  effective_side: "yes",
  leverage_bps: 50000,           // 5x
  notional_amount_usd_pips: "2500000", // $250.00
  slippage_bps: 300,
};

const res = await fetch("https://harness.chance.cc/api/v1/intent", {
  method: "POST",
  headers: { "x-api-key": process.env.CHANCE_API_KEY!, "Content-Type": "application/json" },
  body: JSON.stringify({
    intent: "Leverage capped at 5x. Max $250 notional per market. Crypto markets only. Never open within 24h of market close.",
    venue: "dimes",
    action: payload, // the exact payload — the verdict binds to these bytes
  }),
});

const { verdict, reasoning, mode } = await res.json();
if (verdict !== "ALLOW") throw new Error(`Blocked: ${reasoning}`);
// only now POST the payload to api.dimes.fi/v1/prediction-markets/quotes
```

The same contract covers the on-chain leg: pass the `{to, data, chainId}` transaction for `createPosition` or `requestClose` (or the deposit-wallet `evm_calls` batch) as the `action` and the verdict binds to the calldata your wallet will sign.

`venue` is optional — Dimes offer bodies and vault transactions are auto-detected (`multiply` and `dimes.fi` are accepted aliases) — and freeform `action` descriptions still work (`mode: "semantic"`).

## Use it from Claude or ChatGPT

Add the hosted connector (`https://harness.chance.cc/api/mcp`, see [Connectors](/connectors)) and give your agent one standing instruction:

> Before requesting any Dimes quote or signing any vault transaction, call `verify_intent` with my rules as the intent and the exact payload as the action, with `venue: "dimes"`. Only proceed on ALLOW; on BLOCK or ESCALATE, stop and tell me why.

## How the harness knows Dimes

The judge works from a **versioned snapshot of Dimes's own docs** — the Multiply CFD design, position lifecycle (hedge-first execution, reverted opens, deferred closes), the full fee stack (origination, time-based fee on borrowed capital, liquidation fee, Polymarket venue fees on the full leveraged notional at entry and exit), the J-factor risk engine and liquidation mechanics, authentication and environments, the quotes API and quote-signature verification, the on-chain flow for EOAs and Polymarket smart wallets, and partial open/close order types — plus a curated brief of the venue's footguns (pips vs. usdc-units decimals, notional vs. collateral, pUSD-not-USDC collateral, the msg.sender-owns-the-position rule, the authority signature binding every createPosition argument, and the docs' internally inconsistent liquidation sign convention — the judge trusts `risk.health_bps`, not the direction). Static knowledge is never fetched at verdict time; the only live call is the market lookup that resolves the offer's ticker, and what it resolves is recorded in the verdict's hash-chained transcript. Every documentation page the judge consults is chained with its content hash. See [Architecture](/concepts/architecture).

## What the receipt adds for Dimes

On top of the standard proof bundle (transcript root, judge signature, onchain anchor), venue-aware verdicts carry `venue: "dimes"`, the `actionFamily` (`margin`, `position`, or `permission`), the venue `actionType` (e.g. `create-position`, `request-close`, `open-batch`), `mode: "structured"`, the knowledge-snapshot version — and the resolved market identity (title, eligibility, leverage caps, live prices at verdict time), all inside the hash-chained transcript.

<Note>
  **Sandbox:** the Dimes sandbox runs on the same chain (Polygon 137) with a separate vault and worthless test pUSD. The classifier tells them apart by contract address and labels sandbox actions as no-real-funds — so a mandate like "sandbox only" is checkable deterministically.
</Note>
