Skip to main content
ClaudeWave

Remote MCP server: pre-trade resolution-risk audit for Polymarket/Kalshi prediction-market pairs — safe/caution/block before you execute both legs

MCP ServersOfficial Registry0 stars0 forksMITUpdated today
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/NicolasDuarte04/crosswire-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "crosswire-mcp": {
      "command": "node",
      "args": ["/path/to/crosswire-mcp/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/NicolasDuarte04/crosswire-mcp and follow its README for install instructions.
Use cases

MCP Servers overview

# 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
```

- Transport: **streamable HTTP**
- The MCP tools are **free — no API key, no signup**
- Website: [crosswire-api.com](https://crosswire-api.com) · Status & track record: [api.crosswire-api.com](https://api.crosswire-api.com/)

### Connect

Generic MCP client config (`mcp.json`):

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

Claude Code:

```bash
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:

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

Response (abridged with `…`):

```json
{
  "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

| Verdict | Meaning | Agent action |
|---|---|---|
| `safe` | No fatal findings, data fresh. The two contracts settle on the same thing. | Proceed; your stack decides. |
| `caution` | Non-fatal divergence or degraded data (e.g. stale snapshot, thin liquidity, source/timing gaps). | Proceed only if your strategy tolerates the named finding. |
| `block` | A 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`](https://api.crosswire-api.com/v1/events) and
[`/v1/health`](https://api.crosswire-api.com/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](mailto:nicolasduartejaraba@gmail.com?subject=Crosswire%20API%20key).

## 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](LICENSE) — covers this repository (listing metadata and documentation). The Crosswire
service itself is proprietary.

What people ask about crosswire-mcp

What is NicolasDuarte04/crosswire-mcp?

+

NicolasDuarte04/crosswire-mcp is mcp servers for the Claude AI ecosystem. Remote MCP server: pre-trade resolution-risk audit for Polymarket/Kalshi prediction-market pairs — safe/caution/block before you execute both legs It has 0 GitHub stars and was last updated today.

How do I install crosswire-mcp?

+

You can install crosswire-mcp by cloning the repository (https://github.com/NicolasDuarte04/crosswire-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is NicolasDuarte04/crosswire-mcp safe to use?

+

NicolasDuarte04/crosswire-mcp has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.

Who maintains NicolasDuarte04/crosswire-mcp?

+

NicolasDuarte04/crosswire-mcp is maintained by NicolasDuarte04. The last recorded GitHub activity is from today, with 0 open issues.

Are there alternatives to crosswire-mcp?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy crosswire-mcp to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: NicolasDuarte04/crosswire-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/nicolasduarte04-crosswire-mcp)](https://claudewave.com/repo/nicolasduarte04-crosswire-mcp)
<a href="https://claudewave.com/repo/nicolasduarte04-crosswire-mcp"><img src="https://claudewave.com/api/badge/nicolasduarte04-crosswire-mcp" alt="Featured on ClaudeWave: NicolasDuarte04/crosswire-mcp" width="320" height="64" /></a>

More MCP Servers

crosswire-mcp alternatives