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 密钥属于机密,勿写入提交记录、URL 或共享集合。付费套餐会产生费用,请求按套餐限流并限制返回行数,重度使用可能触及配额上限。部分工具在低套餐下只返回摘要或部分数据。数据仅供参考,该服务并非体育博彩平台。

安装

在 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 分