DeepChamp for Agents

为 AI agents 提供免费的体育赛事安排和对阵研究工具,支持 MCP 和 REST,无需注册。仅供研究;21+。

托管 MCP 服务器

npx add-mcp 'https://deepchampai.com/mcp'

可安装到 Claude Code、Codex、Cursor 等客户端

文档

Quickstart

The free tools need no account and no key. Try one now.

curl

curl 'https://deepchampai.com/api/agent/v1/slate/today?sport=nba'

Connect a coding agent over remote MCP. Pick your client:

Claude Code

Add the server from the command line.

shell

claude mcp add --transport http deepchamp https://deepchampai.com/mcp

Codex

Add this to ~/.codex/config.toml (or run `codex mcp add deepchamp --url https://deepchampai.com/mcp\`), then restart Codex.

toml

[mcp_servers.deepchamp]
url = "https://deepchampai.com/mcp"
startup_timeout_sec = 20

Claude Desktop and Cursor

Add this to the MCP settings file (claude_desktop_config.json, or.cursor/mcp.json) and restart the client.

json

{
  "mcpServers": {
    "deepchamp": {
      "url": "https://deepchampai.com/mcp"
    }
  }
}

VS Code

Add this to.vscode/mcp.json in your workspace.

json

{
  "servers": {
    "deepchamp": {
      "type": "http",
      "url": "https://deepchampai.com/mcp"
    }
  }
}

Any other MCP client

Point it at the streamable HTTP endpoint https://deepchampai.com/mcp. The server card is at https://deepchampai.com/mcp/server-card.

url

https://deepchampai.com/mcp

Install the agent skill

shell

npx skills add https://deepchampai.com --skill deepchamp-edge -g -y

The skill teaches your agent every tool and when to use it. The OpenAPI 3.1 document at /openapi.json describes every live REST operation; generate a client from it with any OpenAPI tool.

Charts and pictures (Claude Code, Codex and others)

The free get_daily_slate and get_matchup_context tools can return a visual with the data. It only draws fields the JSON already carries: no odds, no prices, no logos or photos (teams are neutral tiles), and no result claims. Every picture ends with derived analysis, not advice, 21+, 1-800-MY-RESET.

ClientText chartInline PNGPicture linkstructuredContent
Claude CodeOwn text blockYes (the model sees it)YesLeft out, so every block reaches the model
CodexOwn text blockYes (the model sees it)YesLeft out (Codex drops all content when it is present)
Any other clientInside the JSON (visual.text_chart)Only with visual: "image"YesKept

Claude Code and Codex give an MCP image to the model, not to the person in a terminal, so the server instructions ask the model to paste the chart block into its reply and link visual.url (a model may not follow them, which is why the picture link is also in the answer). The picture link is a public URL on this site (/api/agent/v1/visual/slate/{sport}/{date}.png and /visual/matchup/..., with an .svg twin), cached like the free JSON. Paid lines never get a picture link.

Arguments on tools that can carry a visual: visual is auto (default, by client), image (picture and link), text (chart only) or none (plain data). harness (claude-code, codex, generic) is a display hint that changes the format and nothing else. The client is recognised from the MCP client name, the User-Agent or the X-Agent-Harness header; all of these are self-declared and never unlock anything.

The response envelope

Every response has four parts: data, compliance, meta and billing. Errors use a smaller body (see Errors).

FieldMeaning
dataThe tool result. Its shape is in the OpenAPI document and the MCP tool schema.
complianceage_gate (21), notice, helpline, helpline_url, ai_generated, terms_url, privacy_url. Relay it to the people your agent serves.
meta.request_idQuote it in support requests and when rating a response.
meta.as_ofWhen the response was produced.
meta.model_versionThe model version, for example dc-intel-1.0.0. Log it with every signal.
meta.data_freshness_secondsAge of the data behind the response, or null.
meta.cachehit, miss, stale or none.
meta.dayThe Eastern calendar day the response is for.
billing.statusfree, charged, not_charged or replayed. You are charged only on charged.
billing.units / price_microsUnits used and the price in millionths of a US dollar.
billing.payer / balance_microsWho paid (none, account or receipt) and the remaining prepaid balance when a key was used.

Prices are integers in micro-USD: one US dollar is 1,000,000 micro-USD. Free responses are cacheable for five minutes. Paid and error responses are never cacheable.

Authentication

Free tools: none. Do not send a key. Paid tools: one of two ways, which you can mix. Paying is the signup, so there is no form to fill in first.

  • Pay per call. Call the tool, receive an HTTP 402 payment challenge, pay it, and repeat the request with the credential. The receipt is your identity.
  • API key. A key spends a prepaid balance. Send it in the X-DC-Api-Key header. Keys look like dc_sk_live_ followed by an id, a secret and a checksum, so secret scanners can find a leak. Only a hash is stored. A key is shown once and can be rotated or revoked.

API key (when paid lines are open)

curl 'https://deepchampai.com/api/agent/v1/ranked-picks?sport=nba' \
  -H 'X-DC-Api-Key: dc_sk_live_<your key>' \
  -H 'Idempotency-Key: 6f1c1a52-0a0e-4f6e-9a77-5f0f5d1c9d11'

Never put a key in client-side code, a public repository or a prompt. Paid access is not open yet: only the free tools are live today.

Payments and the 402 flow

A paid call without a valid credential returns HTTP 402 Payment Required (REST) or JSON-RPC error -32042 (MCP) with a payment challenge: the price, the methods we accept and an expiry. Your agent pays and repeats the same request with the credential. We use the HTTP payment authentication scheme (the Machine Payments Protocol), so clients such as the Stripe link CLI and the mppx library do the exchange for you.

the 402 flow

# 1. Call a paid tool without a credential
curl -i 'https://deepchampai.com/api/agent/v1/ranked-picks?sport=nba'
#    HTTP/1.1 402 Payment Required
#    WWW-Authenticate: Payment ...   (the challenge: price, methods, expiry)

# 2. Pay the challenge with a method your agent supports, for example a card token
npx @stripe/link-cli mpp pay '<url>'

# 3. Repeat the same request with the credential and a stable idempotency key
curl -i 'https://deepchampai.com/api/agent/v1/ranked-picks?sport=nba' \
  -H 'Authorization: Payment <credential>' \
  -H 'Idempotency-Key: 6f1c1a52-0a0e-4f6e-9a77-5f0f5d1c9d11'
#    HTTP/1.1 200 OK   (billing.status = charged, Payment-Receipt header)

Rails and their status

  • Card, by Shared Payment Token Coming soon npx @stripe/link-cli mpp pay <url>
    Machine Payments Protocol (MPP). US businesses, all states.
  • Stablecoin (USDC) over MPP and x402 Coming soon
    US customers except New York. Switches on after our payment processor completes its stablecoin access review.
  • stripe pay, zero fee (enterprise) Coming soon stripe pay @deepchampai --dry-run
    Enterprise settles at a 5% discount on this rail.
  • Invoice (enterprise) Coming soon
    From $500 per month.
  • Stripe Projects Coming soon stripe projects add deepchamp/edge-api
    Listing in progress.
  • API key Coming soon
    Never put a key in client-side code, a public repository or a prompt.

No payment rail is live yet. The free tools never ask for payment.

Payment minimums set what can be paid per call: a card payment needs at least $0.50 and a stablecoin payment at least one cent. Calls priced below that, such as the calculators at half a cent, are prepaid-only: fund a balance and use an API key. The 402 response says which methods can pay the call in front of you.

Idempotency

Send an Idempotency-Key header (up to 120 characters) on every paid call. A repeat with the same key and the same request returns the stored response with billing.status of replayed and does not charge again. The same key with a different request is 409 idempotency_conflict. A payment receipt buys exactly one successful call; a receipt whose call failed can be reused.

When you are charged

You are charged only when billing.status is charged. You are never charged for a client or server error, a rate limit, a paused line, a provider fault, a timeout, a refused or filtered answer, or a replay. Every error body says billable: false. If a charge ever lands for a call that failed, it is refunded.

We only ever receive payments. DeepChamp never sends money. Card payments settle to our Stripe balance; stablecoin is converted to dollars by Stripe; every paid call has a receipt and a ledger entry.

Tools

One row per tool, from the catalog the MCP server, the OpenAPI document and the agent card also read. A tool is live only when its product line is on. The live price book is deepchampai.com/api/agent/v1/pricing and always wins over this table.

ToolRoutePriceStatus
get_daily_slate Games for a sport and Eastern date with start times, status, and plain-language rest and schedule context.GET /slate/todayFree, no signupLive
get_matchup_context Schedule context for one game: each team's last result, rest, and next game. Facts and our computed context only.GET /matchup/{sport}/{date}/{slug}Free, no signupLive
request_capability Tell us what you need that is missing: a category, sport, market, format and urgency, with an optional short plain-text note. Enumerated fields only. Free, never charged, no signup.POST /request-capabilityFree, no signupLive
rate_response Say whether a response was useful, with a reason code, tied to its request id. No free text. Free, never charged, no signup.POST /rate-responseFree, no signupLive
get_edge_score Our edge score, probability and confidence tier for one pick or game market.GET /edge-score$0.010 per callComing soon
get_ranked_picks Ranked signals for a sport and day with edge score, probability, tier, rationale and factors.GET /ranked-picks$0.030 per callComing soon
get_matchup_brief Our written research brief for one game, built from our signals.GET /briefs/matchup$0.050 per callComing soon
get_prop_brief Our written research brief for one player prop signal.GET /briefs/prop$0.050 per callComing soon
get_research_card A compact research card for one pick.GET /research-card$0.020 per callComing soon
get_ranked_news News ranked, deduped and scored by us, with attribution and link.GET /news$0.020 per callComing soon
get_game_news Ranked stories linked to one game.GET /news/by-game$0.010 per callComing soon
search_news Search our ranked story index.GET /news/search$0.020 per callComing soon
get_daily_intel Our daily digest with changed-since cursors.GET /intel/daily$0.020 per callComing soon
get_injury_lineup_intel Injury and lineup items in our words.GET /intel/injuries-lineups$0.020 per callComing soon
get_live_game_intel Derived live flags and what changed between polls.GET /live/intel$0.020 per callComing soon
get_market_signals Derived gap buckets and movement direction. No prices.GET /markets/signals$0.030 per callComing soon
evaluate_market Arithmetic on your own price plus our probability: fair value, edge, expected value, Kelly.POST /evaluate-market$0.015 per callComing soon
get_signal_archive Our issued signals by day, as issued.GET /archive/signals$0.010 per pageComing soon
get_news_archive Our ranked stories by day, as issued.GET /archive/news$0.010 per pageComing soon
ask_jev A natural-language research question in; an answer and structured evidence cards out.POST /askfrom $0.040, up to $0.10Coming soon
subscribe Signed webhook or event stream for new ranked news, live flags and market signals.POST /subscriptions$0.005 per eventComing soon
fair_value No-margin fair probability from prices you supply, proportional or power method. Prices as american, decimal, probability or cents.POST /tools/fair-value$0.005 per callComing soon
best_price The best of the quotes you supply per outcome. Arithmetic only.POST /tools/best-price$0.005 per callComing soon
kelly_math Kelly sizing arithmetic on your price and probability. Enterprise keys of accounts that attested a human decides before any stake only; others get 403 human_attestation_required, never charged.POST /tools/kelly-math$0.005 per callComing soon
hedge_calculator Plain arithmetic on your stake and prices. Enterprise keys of accounts that attested a human decides before any stake only; others get 403 human_attestation_required, never charged.POST /tools/hedge$0.005 per callComing soon
jev_rank Orders your candidate list by our edge score and confidence where we have a signal; unmatched candidates follow.POST /tools/jev-rank$0.020 per callComing soon
match_event Maps free text plus a date to our game ids with a confidence. The text is never stored.GET /match-event$0.005 per callComing soon
ev_scan Batch edge and expected value over selections whose prices you supply. Stake sizing appears only for accounts that attested a human decides before any stake.POST /tools/ev-scan$0.025 per callComing soon
list_subscriptions Your webhook subscriptions. Needs an enterprise key; free.GET /subscriptionsFree, no signupComing soon
get_usage Today's requests, spend, remaining cap and prepaid balance for your account. Needs an enterprise key; free.GET /usageFree, no signupComing soon
get_evaluation Calibration and closing-line value of our own signals. Status is unproven until 500 graded signals exist, and it reports calibration only, with no performance claims. Free, no signup.GET /evaluationFree, no signupComing soon
send_feedback Tell us whether a response was useful. Free, no signup; nothing personal is stored.POST /feedbackFree, no signupComing soon
calc_kelly Sizing fraction for your price and your probability, capped at 5 percent of bankroll. Enterprise keys of accounts that attested a human decides before any stake only.POST /calc/kelly$0.005 per callComing soon
calc_fair_value No-margin fair probability from one or two of your own prices.POST /calc/fair-value$0.005 per callComing soon
calc_hedge The stake on the other side that equalizes the result, from your own prices. Enterprise keys of accounts that attested a human decides before any stake only.POST /calc/hedge$0.005 per callComing soon
calc_parlay Combined price, and combined probability if you supply yours, for two to twenty legs.POST /calc/parlay$0.005 per callComing soon
calc_best_price Rank up to 50 prices you supply for the same outcome by payout.POST /calc/best-price$0.005 per callComing soon
calc_ev_scan Expected value per unit for up to 50 price and probability pairs you supply.POST /calc/ev-scan$0.005 per callComing soon

Routes are relative to https://deepchampai.com/api/agent/v1. Free tools also have these routes: GET /slate/{date}, GET /matchup/{sport}/{date}/{slug}, GET /pricing, GET /catalog and GET /health.

Signal verification

Every ranked signal carries signal_id, content_hash, model_version and issued_at. The signal_id is stable for identical content. The issued_at time is when we first issued exactly that content. The content_hash is a hash of the immutable fields of the signal, so you can check that the copy you hold is the copy we issued.

Signals are appended to a hash-chained ledger. Ask the verify endpoint whether the hash you hold matches: it returns the issue time, the model version, the chain position and a matches flag. Verification opens with the picks line. The ledger exists for the people who receive signals and for our own evaluation. It records issue times and content, never outcomes.

How to evaluate DeepChamp shows how to use these fields to measure the intelligence yourself.

Errors

Errors use one shape and are never billed or cached:

error body

{
  "error": {
    "code": "rate_limited",
    "message": "The free tier allows 20 requests a minute and 300 a day per client. Retry in 43 seconds.",
    "request_id": "req_0000000000sample0000",
    "billable": false,
    "retry_after_seconds": 43
  }
}

A 429 or 503 may carry a Retry-After header. Back off, then retry; use the same Idempotency-Key for a paid retry.

HTTPcodeMeaning
400invalid_requestA parameter is missing, unknown or out of range. The message names the field.
401invalid_api_keyThe key is missing, malformed or revoked.
402payment_requiredThe call is paid. The response carries the payment challenge and the price; pay it and repeat the request.
402insufficient_fundsThe prepaid balance cannot cover the call. Top up and retry.
403key_disabledThe key was disabled.
403account_suspendedThe account was suspended.
403bannedAccess was withdrawn after repeated failures or abuse.
403scope_forbiddenThe key is not allowed to call this tool.
404not_foundThe route or the item does not exist, or the line is not open yet.
404outside_free_windowA free read outside yesterday, today and tomorrow in US Eastern time.
409idempotency_conflictThe same Idempotency-Key was used with a different request.
409request_in_progressAn identical request is still running. Wait and retry with the same key.
409receipt_already_usedA payment receipt buys one successful call. Pay again for a different request.
409replay_unavailableThe response is never stored (evaluate_market). Not charged; resend with a new key to recompute.
413request_too_largeThe request body is over the size cap.
429rate_limitedToo many requests. Wait the number of seconds in Retry-After.
429concurrency_limitedToo many calls in flight for this key.
429daily_cap_exceededThe daily call or spend cap was reached.
429spend_cap_exceededA spend cap on the key, account or wallet was reached.
429session_cap_exceededThe per-session cap was reached (ask_jev).
503line_disabledThe product line is not open or was paused. Not charged.
503paid_lane_disabledPaid access is not open yet.
503kill_switchBillable calls are paused. Free reads stay up.
503provider_unavailableAn upstream provider is unavailable. Not charged.
503lane_budget_exhaustedThe line reached its daily budget. Not charged.
503service_unavailableA temporary fault. Retry with backoff.
504timeoutThe call timed out on our side. Not charged.

Limits

Free tools: 20 requests a minute and 300 a day per IP address, cached for 5 minutes, for today minus 1 to today plus 1 (US Eastern), one sport per call and at most 30 games. Sports: nba, nfl, mlb, nhl, cfb, cbb, wnba.

Paid callers get higher limits by tier. These are beta defaults. Per-key overrides exist and the numbers may change; the response headers and error bodies always state the limit that applies.

TierRequests a minuteIn flightDaily spend cap
Free (web)202none (free tools only)
Pay per call602$5
Developer1204$25
Partner3006$250

Using many keys, addresses or accounts to get around a limit breaks the Acceptable Use Policy. There is no service level in the beta.

Versioning and status

The API path is versioned (/api/agent/v1). Adding fields and tools is not a breaking change; build clients that ignore fields they do not know. We give 30 days' notice of a breaking change to a paid tool unless a law, a data provider or security requires faster action. The model version is in meta.model_version on every response.

Status: deepchampai.com/api/agent/v1/health returns liveness and which lines are on, with no upstream calls.

Compliance

Research and information, not betting advice. No outcomes are guaranteed. Adults 21+ only, where legal. Every response carries a compliance object. When your product shows our output, or something built from it, to a person, show the notice and the helpline in readable text, say that it is AI-generated, and say it is for adults 21 and over. Show it at the start of each session and with every response that presents a ranked signal, a probability or an edge score.

compliance object

{
  "age_gate": 21,
  "notice": "Research and information, not betting advice. No outcomes are guaranteed. Adults 21+ only, where legal. AI-generated analysis can be wrong; use your own judgment.",
  "helpline": "1-800-MY-RESET",
  "helpline_url": "https://www.1800myreset.org",
  "ai_generated": true,
  "terms_url": "https://deepchampai.com/terms/api",
  "privacy_url": "https://deepchampai.com/privacy"
}

A person makes every betting decision. Automated wagering with our output is not allowed. If someone shows signs of distress about gambling, show the helpline and do not use an output to encourage more betting. Problem gambling help: call or text 1-800-MY-RESET, or chat at 1800myreset.org.

Changelog

2026-10-31: Charts and pictures for Claude Code and Codex

The free slate and matchup answers now carry a terminal chart, a picture link and, for Claude Code and Codex, an inline image the model can see. Both coding harnesses hand images to the model rather than to you in a terminal, so the server asks the model to paste the chart into its reply, and the link opens the picture in your browser. Pass visual=none for the plain data.

2026-10-30: Beta opens: free daily slate and matchup context

The free daily slate and matchup context are live over REST and MCP with no signup. OpenAPI 3.1, the MCP server card, the A2A agent card, agents.md and the deepchamp-edge skill are published. The catalog of paid lines is listed as coming soon. The Beta API Terms and the Acceptable Use Policy are published. The waitlist and the pricing survey are open.