01The problem
Agents and on-chain systems increasingly act on settled outcomes — to settle a bet or parlay, resolve a dispute, score a track record, feed a backtest, or keep an audit trail. The truth usually exists somewhere: Polymarket and Kalshi resolve their markets, a game finishes with a final score. But consuming that truth provably means running a node, trusting an oracle or an RPC/indexer, or scraping a scoreboard yourself — and an outcome passed around in a plain HTTP body or a tool-call is not portable proof: it can be edited, replayed, or misattributed.
There's no drop-in, offline-verifiable "this market resolved YES / this game ended 112–104, final — here's a signature anyone can check" record for the x402 / agent world. That portable record is what Predge Attest is — not a stronger truth anchor than the chain or an oracle, a far more portable one.
02What it is
Every attestation — across all four verticals — returns the same self-contained signed envelope:
{
"payload": { /* the settled facts for this outcome */ },
"canonical": "…", // payload as JSON, keys sorted, no whitespace
"signature": "…", // ed25519 over `canonical` (hex, 64 bytes)
"public_key": "13fa3d18…52d9" // raw 32-byte ed25519 point
}
- Verify offline, no trust in Predge at call time. Re-canonicalise
payload, checksignatureagainst the key published atdata.predge.io/.well-known/predge-attest.json. If it verifies, the outcome is authentic and untampered — provable to a third party, a contract, or an auditor, years later, with no dependency on Predge or a chain connection. - Settled, not modeled. Every payload is the final result from the outcome's own source of record — a resolved market, a finished game — never an estimate or a projection.
- One key, one verify recipe. The same ed25519 key
13fa3d18…52d9signs all four verticals; write the verifier once and it checks every attestation Predge issues.
03The four attestations
One primitive, four settled-outcome sources. Each is $0.02 per call and returns the same signed envelope.
A resolved Polymarket market's outcome — resolved, resolution (yes|no), resolved_at. Optional ?side=yes|no adds correct: was that specific call right. Winner by CLOB token index.
A settled game result from ESPN — winner, final score, completed. Optional ?winner={ABBR} adds correct. Leagues: nba, wnba, nfl, college-football, mlb, nhl, mls, epl, champions-league, laliga.
A settled Kalshi market resolution — resolved, resolution (yes|no) — from Kalshi's public market API. Optional ?side=yes|no adds correct. Attests the market's own result, not trader flow.
A wallet's signed win/loss record over resolved markets — turns a self-reported win rate into signed proof anyone can check. Window 7d or 30d.
04Why it's defensible
- Portability is the wedge. The win is offline verification in one
crypto.verify(), with nothing to run — no node, no oracle, no scraper, no RPC. Drop the signed record straight into an agent tool-call, a paid API response, a dispute file, a leaderboard, or a Web2 audit trail, and anyone can re-verify it forever. - Signed settled outcomes across prediction markets, sports and Kalshi. Not a single feed but a signing layer that spans four settled-outcome classes under one key and one verify recipe — a breadth a single-vertical source can't match.
- Not a new trust anchor. If you already run an oracle or a node for on-chain settlement, keep it — this is for the many agents and tools that just need a verifiable result they didn't have to source or trust themselves. We don't claim to be more trustworthy than the chain or an oracle; we claim to be more portable.
- Published, stable key.
13fa3d18…52d9lives on the canonical origin — verification never needs to hit Predge again. - Proven end-to-end. Real paid calls have been independently verified (
crypto.verify= true) and a tampered payload is correctly rejected. See it yourself on the free 2-minute proof page.
05Who it's for
Betting & trading agents
A provable, not self-reported, win record — stamp each resolved pick or market with a signed outcome.
Dispute & settlement tooling
A tamper-evident settled-outcome input for auto-settlement, parlays, and arbitration evidence.
PM & sports data platforms
A verifiable-outcome layer on top of raw Polymarket, Kalshi, and sports feeds.
Backtesting & research
Signed, resolved-outcome records that can't be quietly edited after the fact.
06How to consume it & pricing
- Pay-per-call over x402 — $0.02 per attestation, USDC on Base or Solana mainnet (gasless via facilitator). No API keys, no accounts, no signup — a wallet just pays. Errors, unfinished games, and unknown IDs are never charged.
- As MCP tools —
predge_attest,predge_sports_attest,predge_kalshi_attest, andpredge_wallet_attestin@predge/whale-data-mcp(official MCP Registry), for MCP-native agents and hosts. - Raw HTTP —
GETthe endpoint, 402 → PAYMENT-SIGNATURE → 200 + the signed envelope. Every 402 advertises both Base and Solana accepts; pick the network your wallet holds USDC on. - Volume / integration tiers negotiated per partner — dedicated pricing, a test wallet, or a custom envelope/discovery format turned around same-day.
07Links
Docs & quickstart — data.predge.io Free 2-minute proof page — verify a live call Public key (machine-readable) Verification guide (Node · PyNaCl) OpenAPI MCP server —predge_attest · predge_sports_attest · predge_kalshi_attest · predge_wallet_attest