Crosswire — Polymarket & Kalshi Arbitrage

Registre officiel Autres

Cross-venue Polymarket+Kalshi arbitrage: resolution mismatch, void risk & settlement divergence.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http crosswire-polymarket-kalshi-arbitrage 'https://api.crosswire-api.com/mcp'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "crosswire-polymarket-kalshi-arbitrage": {
            "type": "http",
            "url": "https://api.crosswire-api.com/mcp"
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Crosswire — MCP server
  2. Remote MCP endpoint
  3. Tools
  4. Verdict semantics
  5. Coverage
  6. Pricing & keys
  7. What we never do
  8. License

Crosswire — MCP server

Pre-trade resolution-risk firewall for cross-venue prediction-market arbitrage. Before executing a two-leg Polymarket + Kalshi position, Crosswire flags resolution mismatch, void risk, and settlement divergence — void-rule asymmetry, settlement-scope differences (90-minute vs extra-time), settlement-source and -timing gaps, stale data, and thin liquidity between Polymarket and Kalshi FIFA World Cup 2026 markets — so automated trading agents don't get blown up by markets that look identical but settle differently. Verdict: safe / caution / block.

It does not predict outcomes and it does not execute trades. It answers one question: if I buy this contract on one venue and sell its twin on the other, do they actually settle on the same thing? When they don't, it names the exact clause that breaks the hedge.

Remote MCP endpoint

https://api.crosswire-api.com/mcp
Connect

Generic MCP client config (mcp.json):

{
  "mcpServers": {
    "crosswire": {
      "url": "https://api.crosswire-api.com/mcp"
    }
  }
}

Claude Code:

claude mcp add --transport http crosswire https://api.crosswire-api.com/mcp

Tools

check_resolution_risk

Pre-trade safety check for a cross-venue pair. Returns a machine-readable verdict — execution_verdict: safe / caution / block — inside a full Fungibility & Settlement Audit Object (FSAO) with structured findings, top-level divergence flags, venue rule overrides, fee-adjusted spread, and verdict reasons.

Identify the pair by either:

  1. canonical_event_id — a pair id from list_covered_events, e.g. "wc26:match:MEX-RSA:2026-06-11:result#home" (#home / #draw / #away selects the outcome leg), or
  2. market_a + market_b — one Polymarket conditionId (0x… hex) and one Kalshi ticker (e.g. KXWCGAME-26JUN11MEXRSA-MEX), order-insensitive. outcome on a ref is optional — matching uses only (venue, market_id).

Optional: notional_usd (enables the thin-liquidity check at your trade size).

If the pair is not covered, the tool returns a non-error coverage reply (covered: false) naming the covered matches and the coverage cutoff instead of an FSAO.

Example — real production audit (World Cup opener, Mexico vs South Africa, home leg):

Request:

{
  "canonical_event_id": "wc26:match:MEX-RSA:2026-06-11:result#home"
}

Response (abridged with …):

{
  "audit_id": "aud_01KTW2Y7S3Q3JFYJK863FJB66X",
  "canonical_event_id": "wc26:match:MEX-RSA:2026-06-11:result#home",
  "leg_a": { "venue": "polymarket", "market_id": "0x4cd77d45…10ff", "outcome": "Yes" },
  "leg_b": { "venue": "kalshi", "market_id": "KXWCGAME-26JUN11MEXRSA-MEX", "outcome": "yes" },
  "matching_confidence": 0.98,
  "semantically_fungible": false,
  "scope_divergence_flag": false,
  "void_rule_divergence_flag": true,
  "settlement_source_divergence_flag": true,
  "settlement_timing_divergence_flag": true,
  "polymarket_rule_override": "If the game is canceled entirely, with no make-up game, this market will resolve \"No\". …",
  "kalshi_rule_override": "If the game is cancelled or rescheduled to over two weeks away, the market will resolve to a fair price …",
  "findings": [
    { "code": "void_rule", "severity": "fatal",
      "detail": "Void conditions differ … A core void asymmetry can void one leg while the other settles.",
      "affects_fungibility": true },
    { "code": "settlement_source", "severity": "warn",
      "detail": "fifa.com (UMA-adjudicated) vs Kalshi internal …" },
    { "code": "settlement_timing", "severity": "warn",
      "detail": "2h statistics fallback vs unspecified …" }
  ],
  "fee_adjusted_true_spread": 0.0009,
  "snapshot_age_seconds": 61,
  "execution_verdict": "block",
  "verdict_reasons": [ "void_rule: Void conditions differ …", "…" ],
  "ruleset_sha": "…"
}

That block is the product working as intended: a canceled match pays the Polymarket leg $0 while Kalshi resolves the same position to "a fair price" — the hedge breaks exactly when you need it.

list_covered_events

Free discovery of everything check_resolution_risk can audit: the covered canonical events, their per-outcome pair ids (…#home / #draw / #away), the Polymarket conditionIds and Kalshi tickers with outcome labels for each pair, match dates, the frozen ruleset_sha pinning the identity graph, the coverage kickoff cutoff, and snapshot freshness. Takes no arguments. Use a returned pair_id (or a pair's two market ids) as input to check_resolution_risk.

Verdict semantics

VerdictMeaningAgent action
safeNo fatal findings, data fresh. The two contracts settle on the same thing.Proceed; your stack decides.
cautionNon-fatal divergence or degraded data (e.g. stale snapshot, thin liquidity, source/timing gaps).Proceed only if your strategy tolerates the named finding.
blockA fatal divergence (void-rule asymmetry, scope mismatch, granularity mismatch…) can settle the legs differently.Do not execute the pair as a hedge.

Every FSAO carries the findings that produced the verdict — the audit is explainable, append-only logged server-side, and reproducible from {ruleset_sha, snapshot_ts, canonical_event_id}.

Coverage

FIFA World Cup 2026 match markets listed on both Polymarket and Kalshi, expanding in batches throughout the tournament. Current coverage is always live — query list_covered_events, or /v1/events and /v1/health on the REST API. Listings here are intentionally coverage-generic; the endpoint is the source of truth.

Pricing & keys

The MCP tools are free at launch — no key. The keyed REST API (POST /v1/audit, same FSAO) issues free opening-weekend keys by mail: nicolasduartejaraba@gmail.com.

What we never do

  • No outcome prediction. No model probabilities are exposed.
  • No execution. No order routing or placement. The gate returns a verdict; your stack decides.
  • No custody. No customer keys, funds, or settlement.
  • No strategy harvesting. The API sees only the two market references being audited and an optional notional.

Crosswire is an advisory data service. Nothing it returns is financial advice.

License

MIT — covers this repository (listing metadata and documentation). The Crosswire service itself is proprietary.

Questions fréquentes

Qu'est-ce que Crosswire — Polymarket & Kalshi Arbitrage ?

Cross-venue Polymarket+Kalshi arbitrage: resolution mismatch, void risk & settlement divergence.

Comment installer Crosswire — Polymarket & Kalshi Arbitrage ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http crosswire-polymarket-kalshi-arbitrage 'https://api.crosswire-api.com/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour Crosswire — Polymarket & Kalshi Arbitrage ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

Crosswire — Polymarket & Kalshi Arbitrage est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient Crosswire — Polymarket & Kalshi Arbitrage ?

Il est publié par NicolasDuarte04. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.