Flash Props Api

io.github.iFan6oy由 GitHub 帳號 iFan6oy 發布v1.4.1更新於 Oct 26, 2026

Flash Props API: player-prop analysis, projections, evidence, and line movement over REST/MCP.

已驗證Streamable HTTP可網頁執行金融資料與分析

概覽

AI 產生的概覽

託管式體育球員盤口資料 API,讓助理瀏覽賽事、盤口、Flash 預測、證據與盤口變動,涵蓋多種運動項目與電競。

可以做什麼
  • 列出支援的運動項目及其直播狀態與預測能力,並讀取各項目的盤口詞彙表
  • 列出當日有盤口的賽事,將對戰組合解析為賽事 ID,並取得單場賽事的全部球員盤口
  • 掃描整個賽程的盤口,依球員篩選盤口,並依差距、狀態或樣本強度產生排行榜
  • 取得賽季背景、單一盤口的完整證據、依時間排列的盤口與賠率歷史,以及指定時間窗內變動最大的盤口
適用情境
適合希望助理直接回答已公布球員盤口、Flash 預測、盤口變動或球員狀態等問題,而不想自行建置體育資料介接的情況。僅供唯讀分析,並非下注或博弈工具。
執行需求
遠端 streamable HTTP 端點,無需本機安裝。取得盤口資料需將 Flash Props API 金鑰以 Authorization Bearer 權杖送出;list_sports 與 get_market_metadata 可匿名使用。提供免費方案,更高方案需付費,可提高配額與資料列上限。
安裝前請注意
API 金鑰屬於機密,請勿寫入提交紀錄、網址或共用集合。付費方案會產生費用,請求依方案限流並限制回傳列數,大量使用可能觸及配額上限。部分工具在較低方案下只回傳摘要或部分資料。資料僅供參考,此服務並非運動博弈平台。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Flash Props Api,將其新增到工作區。
  2. 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.iFan6oy%2Fflash-props-api/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "flash-props-api": {
      "type": "http",
      "url": "https://api.flashodds.live/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

Flash Props API + MCP

Flash Props API is a player-props API and MCP server by Flash AI Solutions for posted lines, Flash projections, evidence, context, and line movement across sports and esports.

This repository is the public connector and metadata surface for the hosted Flash Props API and MCP service. There is no proprietary Flash Props backend server to install from this repository. Point your client at the hosted endpoint and authenticate with a Flash Props API key for board data.

[Flash Props API MCP server]

Canonical Flash Props links

Explore the API with Postman

The Flash Props public Postman workspace contains the collection for graphical exploration and forking. To get your first successful request without an SDK, start with the Postman quickstart, create a free key, then run the List supported sports with live status + capability request inside the Start here folder.

If Postman isn't accessible from your browser, download the credential-free collection JSON and use Postman's Import action. Our API host maintains that JSON as the reference copy; the marketplace copy may lag after a product release.

Never paste your key into GitHub, a URL, a shared collection variable, or a screenshot. The collection's apiKey variable is intentionally empty; set your key privately in Postman before running authenticated requests.

Try the REST API in two requests (Node 20+)

New to sports data integrations? Run the dependency-free first-request example. It reads the current sport catalog, then fetches the market vocabulary for a sport you choose. This is a read-only example, with no wagers, betting automation, SDK install, or paid plan required.

  1. Get a free Flash Props API key.
  2. Put the key in your local FLASH_PROPS_API_KEY environment variable. Keep it out of commits and query strings.
  3. Run node examples/first-request.mjs for CS2 or node examples/first-request.mjs nfl for NFL.

On macOS/Linux, one shell-safe way to enter the key without saving it to command history is read -rs FLASH_PROPS_API_KEY && export FLASH_PROPS_API_KEY. On PowerShell, use $env:FLASH_PROPS_API_KEY = Read-Host "Flash Props API key". Clear the variable after using it.

The script checks for 401, 403 and 429 without leaking your key or silently retrying into a quota wall. It uses GET /api/v1/sports as the source of truth for current coverage; its chosen sport may have no live board right now. Tests are included under examples/first-request.test.mjs, using mocked responses and no network.

Want to connect an AI agent instead? Use the remote MCP endpoint below with the same key and plan. Prefer the live public contract if a third-party directory's cached feature list is older than the hosted server.

Connect

Streamable HTTP endpoint:

https://api.flashodds.live/mcp

Send your API key in the Authorization header:

Authorization: Bearer <your_api_key>

Anonymous access works for capability discovery (list_sports, get_market_metadata) so a client can inspect current coverage on first run. Retrieving board data requires at least a free key. Get one at https://api.flashodds.live/billing/free.

Claude Desktop

Add to your claude_desktop_config.json:

json
{  "mcpServers": {    "flash-props": {      "type": "streamable-http",      "url": "https://api.flashodds.live/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Tools

The access ladder below is generated from the hosted contract. Do not edit it by hand.

ToolAccess
list_sportsAnonymous capability discovery
get_market_metadataAnonymous capability discovery
list_gamesAnonymous preview (first 5); Free+ for the full slate
get_game_propsFree+
scan_propsAnonymous preview (first 5 rows); Free+; rows capped per tier (Free 15 rows, Builder 100, Pro 3,000, Enterprise 5,000)
find_gameFree+
find_player_propsFree+
get_player_contextFree/Builder basic; Pro full
get_prop_evidenceFree teaser; Builder basic; Pro full
get_prop_historyBuilder limited (latest 25 points); Pro full
scan_moversBuilder limited (top 25 movers); Pro full
get_leadersFree top 3; Builder top 10; Pro top 100

What each tool returns:

  • list_sports: every sport with live status, data freshness, and projection/context capability
  • get_market_metadata: market labels, families, scope, and whether a market is modeled
  • list_games: games with props for a sport
  • get_game_props: all player props for one game
  • scan_props: market-wide prop scan across the slate
  • find_game: resolve team names to an event id
  • find_player_props: every active prop for one player
  • get_player_context: season baselines, recent form, and deeper context
  • get_prop_evidence: book line, Flash line, gap, form, confidence, splits, movement
  • get_prop_history: chronological line and odds history for a prop
  • scan_movers: biggest line movers in a window
  • get_leaders: ranked boards for gap, form, and sample strength

REST and MCP share the same entitlement shaping, so a key sees the same product tier regardless of transport.

Provider-driven coverage

Do not hard-code a list of sports with Flash projections. Coverage is resolved from the server's registered model providers and can vary by sport + market.

Use list_sports (or GET /api/v1/sports) to inspect projectionCapability, effectiveProjection, and contextCapability, then use get_market_metadata to determine whether a specific market is modeled. A partially modeled sport can legitimately expose Flash projections for one stat while keeping another stat posted-lines-only.

Missing analysis is reported explicitly. Flash Props does not fabricate a projection to fill an unsupported market.

Reading projections and board snapshots

  • Check basis on every projection. current_season is built from this season. prior_season is a prior-season baseline and must never be presented as current form; basisNote and seasonId explain which season it came from.
  • Use snapshotId to tell whether numbers describe the same board. Equal snapshotId values on sports, games, and props responses mean counts and rows came from the same logical board. A mixed consistency value means the response is partial, so do not compare its counts against rows from another snapshot.

Tiers

Generated from the hosted contract. Do not edit by hand.

  • Free: $0, 300 requests/day, 10 requests/minute, 15-row scans, evidence teaser, context basic, history none, movement none, top 3 leaders
  • Builder (internal id starter): $19/mo, 25,000 requests/day, 120 requests/minute, 100-row scans, evidence basic, context basic, history limited, movement limited, top 10 leaders
  • Pro: $49/mo, 150,000 requests/day, 600 requests/minute, 3,000-row scans, evidence full, context full, history full, movement full, top 100 leaders
  • Enterprise: custom limits

See current pricing and the REST reference at https://api.flashodds.live/.

Contract

Tier limits, entitlements, and the MCP tool ladder in this README are generated, not written by hand. The hosted API publishes a keyless, machine-readable contract, and this repository vendors a copy at contract/flash-props-contract.json.

Machine sources, in order of authority:

  • GET https://api.flashodds.live/contract.json: tiers, quotas, entitlements, MCP tools and access, sports vocabulary, projection and snapshot rules. Static per API release.
  • GET https://api.flashodds.live/api/v1/sports (requires a Free key) or the anonymous MCP list_sports tool: runtime state. Which sports are modeled, live, or fresh right now lives here, never in the contract or this README.

Maintainers:

node scripts/contract.mjs sync          # regenerate README blocks and server.json versionnode scripts/contract.mjs check         # offline drift gate (runs on every push and PR)node scripts/contract.mjs check --live  # also compare the vendored copy to the hosted contractnode scripts/contract.mjs links         # check every https link in this README

CI fails when the generated blocks are stale, when prose quotes a quota or price the contract does not contain, when a retired tier name appears, when a frozen list of modeled sports appears, when server.json disagrees with the contract version or MCP endpoint, or when the README and contract disagree about which tools exist. A daily scheduled job also compares the vendored contract against the hosted one, so drift is caught even when this repository does not change.

Disclaimer

Data is informational only. Flash Props is not a sportsbook and is not affiliated with any league, team, player, sportsbook, or DFS operator.

Links

來源:README.md,提交 c3f9033

工具

12

list_sports

List sports with live status + capability

List every sport supported by Flash Props API with its live status and how deep the Flash model goes. Read-only. No side effects. Rate-limited per your tier. Returns { sports: Array<{ id, name, category, enabled, status, activeGames, activeProps, projectedProps, projectionCapability, effectiveProjection, contextCapability, marketFamilies, supportedMarkets, sources, lastFetchedAt, cacheAgeSeconds, shapeCanaryTripped, legalLine, notes, dataStatus, dataReason, projectableMarkets, projectionBasis, coverage, snapshotId, event, season }> }. id is what you pass as the sport parameter to other tools. status: "live" = props posted now, "idle" = none posted now but lines were archived recently, "offseason" = no lines archived for an extended period (observed, never a calendar). snapshotId identifies the exact board the counts describe. projectionCapability is the structural model ceiling; effectiveProjection tempers that by what is actually posted right now. contextCapability "deep" means a registered Flash pack can serve player context; "none" means it cannot. Call this tool instead of hard-coding which sports are modeled. enabled=false means the sport is outside your tier. When to use: to discover valid sport ids, or to check which sport actually has projections/context before asking for them. When not to use: if you already know the sport id and just want its props.

無需輸入參數。

get_market_metadata

Market metadata (stat vocabulary) for a sport

Return the machine-readable stat vocabulary for a sport: for each live market, its label, family, scope (map1/maps13/full_game), unit, display order, and whether a Flash projection is supported (with a reason when not). Read-only. No side effects. Rate-limited per your tier. Returns { sport, count, markets: Array<{ statKey, label, family, scopeKind, scope, scopeLabel, unit, displayOrder, uiGroup, projection: { supported, reason }, contextSupported, lineOnly, alternateLine }> }. This is what turns a raw stat key like "kills_on_game_1" into a labeled, scoped market so you can group props without guessing. Projection support is provider-driven per market, so partially modeled sports stay honest. When to use: after scan_props / get_game_props, to explain or group the raw stat keys you got back. When not to use: if you only need one sport's existence/access, list_sports already carries marketFamilies.

輸入參數sport

list_games

List today's games

Return today's games that have player props available for a sport. Read-only. No side effects. Requires an API key; rate-limited per your tier. Returns: { sport, count, games: Array<{ id, sport, homeTeam, awayTeam, startTime, live, source }> }. id is the eventId to pass to get_game_props (prefixed ud- for Underdog); live is true when the game is in progress; source is "underdog". Live games sort first; scheduled games follow. Typical workflow: call list_games to discover eventIds, then pass an eventId to get_game_props. If sport is omitted the server selects the active in-season league automatically. Returns count=0 with an empty games array (not an error) when no props are posted yet for the day. When to use: to browse all games on the slate or to find an eventId before calling get_game_props. When not to use: if you already have the eventId, skip this and call get_game_props directly. Use find_game instead when you know the team names but want a single-game eventId without browsing the full slate.

輸入參數sport

get_game_props

Get player props for a specific game

Fetch all player props for one game identified by eventId. Read-only. No side effects. Requires an API key; rate-limited per your tier. Returns: { eventId, sport, homeTeam, awayTeam, startTime, props: Array<{ player, stat, line, overOdds, underOdds, bookCount, gameState?, flashProjection? }>, sources: string[], fetchedAt, delayed, snapshotId, snapshotConsistency }. flashProjection is present when that sport + market has a registered Flash model and a player baseline is available; it is { value, sampleN, method, marketKey, basis, seasonId, basisNote } and is never fabricated. basis prior_season means a prior-season baseline, never current form. overOdds and underOdds are American-format integers (e.g. -110, +115); null when odds are not available. The stats parameter filters to specific markets (e.g. "points,rebounds" for basketball, "strikeouts,hits_allowed" for MLB). Typical workflow: (1) call list_games to get eventIds, (2) call get_game_props with the eventId. Alternatively, call find_game with team names to resolve the eventId when you know the matchup. Event ids are prefixed ud- (Underdog Fantasy source). Returns an error when the event id is not found, the game has ended with no active props, or lines have not been posted yet. When to use: when you have an eventId and want all props for that specific game. When not to use: use scan_props instead when you want a cross-game market view. Use find_player_props when you know the player name but not which game they are in.

輸入參數sportstatseventId必填

scan_props

Scan all props across today's slate (market-wide feed)

Flatten every active player prop across all of today's games for a sport into a single list. Read-only. No side effects. Requires an API key; rate-limited and row-capped per your tier (Free 15 rows, Builder 100, Pro 3,000, Enterprise 5,000). Returns: { sport, stat, count, rows: Array<{ player, stat, line, overOdds, underOdds, bookCount, gameState?, flashProjection?, eventId, sport, homeTeam, awayTeam, startTime, source, fetchedAt }>, snapshotId, snapshotConsistency }. Each row is a player prop merged with its event context; use homeTeam/awayTeam for matchup context. overOdds/underOdds are American-format integers; null when odds unavailable. Use scan_props when you need a broad cross-game market view. Returns count=0 with an empty rows array (not an error) when no props are posted for the day yet. When not to use: use get_game_props when you already have an eventId; use find_player_props for one player.

輸入參數statlimitsport

find_game

Resolve team names to an event id

Translate a matchup (home team + away team) into the eventId needed by get_game_props. Read-only. No side effects. Requires an API key; rate-limited per your tier. Use this when you know the teams playing but don't have the eventId. On success returns: { eventId }. Pass that id straight to get_game_props. On failure returns an error explaining that the game was not found on today's board. If multiple games match the team names (rare), returns the first match sorted by start time. Matching is case-insensitive substring containment against the full team name. When not to use: use list_games to browse a slate, or get_game_props directly if you already have the eventId.

輸入參數away必填home必填sport

find_player_props

Find all active props for a player

Every active prop for one player across today's board for a sport; same rows as scan_props, filtered by name (exact normalized match preferred, case-insensitive contains match as a fallback; see matchType in the response) instead of stat. Read-only. No side effects. Requires an API key. When to use: you know the player but not which game or event they are in, and you want their posted lines. When not to use: get_prop_evidence explains ONE prop with its line, gap and form; get_player_context gives season baselines and recent form but no posted lines; scan_props is the whole board.

輸入參數name必填sport

get_player_context

Season baselines, recent form, and context for a player

Season context from the sport's registered Flash pack: per-market baselines, recent form, and sport-native splits. Free and Builder receive the same basic context shape as REST; Pro adds the dense recent map/game log when available. If the sport has no registered pack or the player is unmatched, returns an honest empty context, never fabricated data. Use list_sports first when you need to discover which sports currently advertise deep context. When to use: "what is this player averaging", "how has this player been playing lately". When not to use: it returns NO posted lines; use find_player_props for the board and get_prop_evidence for one prop against its line.

輸入參數name必填sport

get_prop_evidence

One prop's evidence: book line, Flash line, gap, form, splits, movement

Assemble the whole story of a single prop in one call. Read-only. No side effects. Requires an API key and is tier-shaped exactly like REST: Free gets the book/Flash/gap teaser, Builder adds recent form + Confidence summary + movement delta + teaser splits, and Pro gets the full evidence stack including movement series and deep splits. Paywall metadata says exactly which fields are withheld. No picks, no advice. Available when the sport has a registered Flash provider; otherwise returns found:false with a reason, never fake data. When to use: explain one prop end-to-end. When not to use: scan_props for broad discovery or get_player_context for a player overview.

輸入參數stat必填eventsportplayer必填

get_prop_history

Line history for a prop (Builder+)

Chronological line/odds history for a player prop, with opened/current/movement. Free is locked with a structured tier_required response naming Builder as the first unlock. Builder receives the most recent history window; Pro receives full history. History accrues from when archiving started, so early results may be short. When to use: "has this line moved since it opened", "what did this prop open at", the timeline of ONE player prop. When not to use: scan_movers ranks movement across the whole board; get_prop_evidence already includes the movement delta beside the line.

輸入參數stateventlimitsportplayer必填

scan_movers

Biggest line movers (Builder+)

Props whose line moved most within a lookback window (default 24h, max 7d), sorted by absolute movement. Free is locked with Builder as the first unlock. Builder gets a limited board; Pro gets the full movement board. When to use: "biggest movers", "which lines moved the most today", steam across a sport. When not to use: the history of one prop is get_prop_history; the current board without movement is scan_props.

輸入參數statlimitsincesport

get_leaders

Rankings: top gaps, recent form, sample strength (tiered)

Ranked boards for a sport with a registered Flash pack. Read-only. No side effects. Tier-shaped exactly like REST: Free sees the top 3 teaser, Builder the top 10, and Pro the full board. metric=gap ranks Flash-vs-book gaps; metric=form ranks recent mean vs Flash Line; metric=sample ranks baseline size. Paywall metadata includes totalAvailable and the next unlock when rows are capped. No picks. Use list_sports to discover which sports have deep context. When to use: "where does Flash disagree most with the books", "biggest projection gaps", "who has the strongest sample". When not to use: one player is get_player_context; the posted board is scan_props; one prop end to end is get_prop_evidence.

輸入參數statlimitsportmetric

版本歷史

1
  1. v1.4.1最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分