PrizePicks API
REMOTE · PRIZEPICKSAPI.COM
PrizePicks props, tiers, recorded line history, graded results and sportsbook comparisons.
Available components
Last scanned (3 hours ago)
Scores higher than 54% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability56
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 9621 tokens (~320/item across 30 items; 30 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
- Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
- Structured output schemas are declared (7% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 31 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- “send_feedback” added an optional parameter “got_what_needed” cosmetic
- “send_feedback” added an optional parameter “moment” cosmetic
2 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 4 Nov 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_board_at” rewrote its description, which is the text the model reads security
- Tool “get_changes” rewrote its description, which is the text the model reads security
- Tool “get_line_history” rewrote its description, which is the text the model reads security
- Tool “get_results” rewrote its description, which is the text the model reads security
- Stability: unverified → 0.03 ▲ functional
- 3 Nov 26 68
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://prizepicksapi.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.prizepicksapi.com | CN=YR1,O=Let's Encrypt,C=US | 28 Oct 2026 | 26 Jan 2027 | RSA 2048 | SHA256-RSA | 5c90c07d79319d278729e7c7fd0a1db1c27 |
| SANs: *.prizepicksapi.com, prizepicksapi.com | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of prizepicksapi.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| prizepicksapi.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://prizepicksapi.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://prizepicksapi.com/api/mcp | HTTPS enforced | 308 | https://prizepicksapi.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
compare_lines Lines against book prices ~446
PrizePicks lines beside offered sportsbook prices for a league. Use it to see where a line differs from the market. Free plan: prices run 5 minutes behind, and as_of is off.
| Name | Type | Req | Description |
|---|---|---|---|
| alt_lines | boolean | – | false: only prices at the PrizePicks line plus each book main over/under line. |
| as_of | string | – | The board and the prices as they stood at this instant (ISO 8601 with a time zone). Not combinable with priced_only. On a delayed plan it must be older than the delay; the earliest value is in the er… |
| book | string | – | betrivers, kalshi or both comma-separated. Default both. |
| cursor | string | – | meta.next_cursor from the preceding page. |
| league | string | – | NBA, NFL or NHL, or several comma-separated, for example NBA,NFL,NHL, to read them in one call. |
| limit | integer | – | Projections per page. Up to 50, or up to 1000 with view=compact. |
| player | string | – | Case-insensitive substring of the PrizePicks player name. |
| priced_only | boolean | – | true: only projections with at least one linked book price. |
| stat | string | – | Exact PrizePicks stat name, case-insensitive, for example Points. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
| view | string | – | compact: one flat row with each price as book, side, line and number, and limit up to 1000. full: every field, limit up to 50. |
No output schema declared.
No examples provided.
complete_setup Tell the team what this is for ~220
Required once per account before the data tools work. Say what data your user is looking for and what they want to do with it, in your own words. Ask your user if you do not already know; do not guess or make it up. Costs no quota. Leave out personal data.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | Your agent or client name. |
| data_wanted | string | yes | What data they are looking for: leagues, stats, tiers, history, refresh speed. 3 to 1000 characters. |
| details | object | – | Any other fields worth telling us, with any names you like, for example language, schedule or team_size. Up to 20. |
| found_us | string | yes | How your user found this API, or how you did if you found it yourself, for example a web search or a recommendation. Ask if you do not know, and do not guess. Up to 300 characters. |
| use_case | string | yes | What they want to do with it. 3 to 1000 characters. |
No output schema declared.
No examples provided.
fetch Read one public PrizePicks page ~59
The full text of one search result: a player's current lines and recent graded results, a league summary, a guide or an answer. Needs no key. Quote the read time when you state a line.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | An id from search. |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| metadata | object | – | – |
| text | string | yes | – |
| title | string | yes | – |
| url | string | yes | – |
No examples provided.
find_players Player search ~261
Stable player ids by name, league or team.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from the preceding page. Changes and history use numeric sequence cursors. |
| league | string | – | League code. |
| limit | integer | – | Maximum rows per page. Up to 1000 on /projections with view=compact. |
| person_key | string | – | Every player id of one person across split leagues. Use person_key from a player or from source_fields. |
| search | string | – | Case-insensitive name substring, at least 2 characters. |
| team | string | – | Team code as PrizePicks prints it, or a team id. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
finish_signup Collect the approved key ~51
Call with device_code from start_signup, every few seconds, until your user has approved. Returns the key once. Store it as an environment variable, never in a repo.
| Name | Type | Req | Description |
|---|---|---|---|
| device_code | string | yes | – |
No output schema declared.
No examples provided.
get_board_at Board at a past time ~330
The board as it stood at a past instant (as_of, ISO 8601 with a time zone). For backtests and point-in-time questions. Developer required. Free evaluation uses the fixed training-set sample.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | ISO 8601 timestamp with a time zone, for example 2026-10-28T01:00:00Z. Must be at or after collection start (meta.collection_started_at) and not in the future; otherwise 400 invalid_query. |
| cursor | string | – | Opaque cursor from the preceding page. Changes and history use numeric sequence cursors. |
| league | string | – | League code, for example NBA. |
| limit | integer | – | Maximum rows per page. Up to 1000 on /projections with view=compact. |
| search | string | – | Case-insensitive player name search. |
| stat | string | – | Exact stat name, case-insensitive. |
| tier | string | – | Match either selection tier. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_changes Line moves ~236
Change feed across the board: new, changed, pulled and restored lines. Save next_cursor and pass it back to read only what moved since. This is the cheap way to stay current. Developer required. Free evaluation uses the fixed training-set sample.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from the preceding page. Changes and history use numeric sequence cursors. |
| league | string | – | Optional league filter. |
| limit | integer | – | Maximum rows per page. Up to 1000 on /projections with view=compact. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_coverage Board coverage ~154
Start here. Every league on the board now, with offer counts and available stats, plus which have history and graded results.
| Name | Type | Req | Description |
|---|---|---|---|
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_demo_projections Sample lines (no key) ~405
Fictional sample rows in the live response shape, for trying the API without a key. Never present these as real lines.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from the preceding page. Changes and history use numeric sequence cursors. |
| league | string | – | One league code or up to 10 comma-separated codes, for example NBA,NFL,NHL. Exact leagues only; NBA does not include NBA1Q. |
| limit | integer | – | Maximum rows per page. Up to 1000 on /projections with view=compact. |
| search | string | – | Case-insensitive player name search. |
| start_after | string | – | Scheduled event.starts_at at or after this ISO instant, with explicit timezone. Unknown starts excluded. Available on projections only. |
| start_before | string | – | Scheduled event.starts_at before this ISO instant, with explicit timezone. Use the user timezone to convert local noon, respecting daylight saving time. |
| stat | string | – | Exact market label. For league=NHL, aliases faceoff_wins, shots_on_goal and goalie_saves map to Faceoffs Won, Shots On Goal and Goalie Saves. |
| status | string | – | Live active results must appear in the latest successful scope response and be confirmed within 30 minutes. all includes retained, potentially stale observations. |
| tier | string | – | Match either selection tier. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_fixture One game ~159
One fixture by id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| include | string | – | game_state_history adds every recorded in-play state of the game. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_fixtures Games ~297
Games with lines on the board, by league, date or status.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from the preceding page. Changes and history use numeric sequence cursors. |
| date | string | – | US Eastern calendar date of the start, YYYY-MM-DD. |
| league | string | – | League code. Sibling leagues fold onto their game: NBA1Q lines belong to the NBA fixture. |
| limit | integer | – | Maximum rows per page. Up to 1000 on /projections with view=compact. |
| resolved | boolean | – | true: only fixtures resolved to a scoreboard event. false: only unresolved. |
| start_after | string | – | Only fixtures starting at or after this instant. |
| start_before | string | – | Only fixtures starting before this instant. |
| status | string | – | Fixture status. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_game_logs Player game logs ~753
A player's box score line for each past game, newest first: minutes, opponent, home or away, and every stat. Use for recent form and for prop model features. Pass player_id (from get_projections or find_players), or player and league, with last for the most recent N games. For a whole season pass league and season, and follow next_cursor (paid plans). Free plan: the last 10 games per player, and no season-wide reads. Stats are loaded for only some leagues: meta.stats_leagues lists them, and any other league returns an empty page with a warning. SOCCER and TENNIS read every competition listed under them.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | meta.next_cursor from the preceding page. Send the same filters. |
| date | string | – | One game date, league local. |
| end_date | string | – | Games on or before this league-local date. For a feature as it stood before a game, set this to the day before. |
| include_dnp | boolean | – | true: also return games the player was listed for and did not play. |
| last | integer | – | The player's most recent N rows matching the filters. Needs one player. limit and cursor are ignored. |
| league | string | – | League code, for example NBA. meta.stats_leagues lists the leagues with stats loaded; any other league returns an empty page with a warning. A segment league from a projection row (NBA1Q) reads as it… |
| limit | integer | – | Rows per page: up to 200 with view=full, up to 1000 with view=compact. |
| opponent | string | – | Only games against this team: a code or team id. |
| player | string | – | Exact player name, case-insensitive. Needs league. A name shared by two players returns 400 listing their ids. |
| player_id | string | – | A player_id (pl_...) from /players or /projections, or a stats_player_id (sp_...) from /results. A pl_ id needs no league. An sp_ id needs league. |
| position | string | – | Position as the box score lists it, for example G, F or C. |
| season | string | – | Season label, as listed in meta.coverage.seasons: 2025-26, or 2026 in single-year leagues. |
| season_type | string | – | regular, postseason, play_in or preseason, where the league has them. |
| start_date | string | – | Games on or after this league-local date. |
| team | string | – | Only this team's players: a code (BOS) or team id (tm_...). Needs a season or date range unless a player or opponent is also sent. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
| view | string | – | compact is a flat row for bulk reads and allows limit up to 1000. full adds ids, scores and game context, with limit up to 200. |
No output schema declared.
No examples provided.
get_hit_rates Player hit rates ~268
How often one player has gone over, per stat, across their last graded games. Free plan: the last 10 games, with per-game rows from the last 7 days.
| Name | Type | Req | Description |
|---|---|---|---|
| last | integer | – | Number of most recent graded games per stat. |
| league | string | – | League code. |
| player | string | – | Exact player name, case-insensitive. Required unless player_id is sent. |
| player_id | string | – | PrizePicks player ID. Required unless player is sent. |
| stat | string | – | Exact stat name, case-insensitive. Omit to return every graded stat for the player. |
| tier | string | – | Which More-side tier to count. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_imported_lines Imported past lines ~307
Past lines supplied by third parties, not recorded by this API. Every row carries provenance. Empty until meta.available_datasets is above 0. Never present these as lines this API observed. Free plan: games from the last 7 days.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | meta.next_cursor from the preceding page. |
| from | string | – | Earliest game date, US Eastern, YYYY-MM-DD. |
| league | string | – | League code, for example NFL. |
| limit | integer | – | Maximum rows per page. |
| line_kind | string | – | What the line is. |
| player | string | – | Partial player name. |
| provenance | string | – | Kind of supplier. |
| stat | string | – | Exact stat name, case-insensitive. |
| tier | string | – | Line tier. |
| to | string | – | Latest game date, US Eastern, YYYY-MM-DD. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_injuries Injury reports ~196
Current third-party injury reports for NBA, NFL, NHL and WNBA.
| Name | Type | Req | Description |
|---|---|---|---|
| league | string | – | NBA, NFL, NHL or WNBA. Omit for all. |
| limit | integer | – | Maximum rows. |
| team | string | – | Team code (KC), stats team id, or part of the team name. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_line_history One line over time ~214
Every recorded change to one projection, oldest first. Use an id from get_projections. Developer required. Free evaluation uses the fixed training-set sample.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from the preceding page. Changes and history use numeric sequence cursors. |
| id | string | yes | – |
| limit | integer | – | Maximum rows per page. Up to 1000 on /projections with view=compact. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_line_popularity Pick count over time ~186
The reported pick count of one line every 15 minutes, and its value at the start. Use an id from get_projections.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the preceding page. |
| id | string | yes | – |
| limit | integer | – | Maximum rows. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_live_sports Live game state ~261
Developer or Production: latest source-pushed game scores, period, clock and status. Optional league and source filters. Use source=prizepicks for PrizePicks game state; default is polymarket. These are game updates, not projection lines. Always report observed_at and meta.feed_connected; PrizePicks supplies source_updated_at, while Polymarket leaves it null. A connected socket does not mean each game changed this second. If disconnected, say the returned state may be stale.
| Name | Type | Req | Description |
|---|---|---|---|
| league | string | – | Optional league code, for example NBA or NFL. |
| source | string | – | Game feed. Defaults to polymarket for compatibility. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_odds Odds by fixture ~348
PrizePicks lines and book prices grouped by fixture. Needs fixture_id or league.
| Name | Type | Req | Description |
|---|---|---|---|
| book_lines | string | – | pickem (default): only book lines at a number PrizePicks currently offers for that player and stat. all: every alternate line. |
| books | string | – | Books for book_odds: betrivers, kalshi, both comma-separated (default), or none. |
| cursor | string | – | Opaque cursor from meta.next_cursor. |
| date | string | – | US Eastern calendar date of the start, YYYY-MM-DD. |
| fixture_id | string | – | One fixture. |
| league | string | – | League code. Sibling leagues fold onto their game: NBA1Q lines belong to the NBA fixture. |
| limit | integer | – | Fixtures per page. |
| main_only | boolean | – | true: only standard (main) lines. |
| market | string | – | A market_id, for example player_points. |
| player | string | – | A player_id (pl_...) or a PrizePicks player id. |
| status | string | – | Fixture status. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_opponent_stats What a team allows ~514
What a team gives up per game to opposing teams, or by=position for what each position records against it. Needs league, one of meta.stats_leagues. Send team, or a season to read every team. Set end_date to read it as of a past day. Free plan: one team, its last 10 games.
| Name | Type | Req | Description |
|---|---|---|---|
| by | string | – | team or position. |
| cursor | string | – | meta.next_cursor from the preceding page. Send the same filters. |
| date | string | – | One game date, league local. |
| end_date | string | – | Games on or before this league-local date. For a feature as it stood before a game, set this to the day before. |
| last | integer | – | That team's most recent N games, as one row with season null. Needs team. |
| league | string | yes | League code, for example NBA. meta.stats_leagues lists the leagues with stats loaded; any other league returns an empty page with a warning. A segment league from a projection row (NBA1Q) reads as it… |
| limit | integer | – | Teams per page: up to 100 with by=team, up to 10 with by=position. |
| position | string | – | by=position only: return one position. |
| season | string | – | Season label, as listed in meta.coverage.seasons: 2025-26, or 2026 in single-year leagues. |
| season_type | string | – | regular, postseason, play_in or preseason, where the league has them. |
| start_date | string | – | Games on or after this league-local date. |
| team | string | – | The team whose defense you are reading: a code (BOS) or team id (tm_...). |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_payouts Payout rates ~143
Standard PrizePicks payout tables with per-leg break-even rates.
| Name | Type | Req | Description |
|---|---|---|---|
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_projections Current lines ~537
The first place to get current PrizePicks lines, with goblin and demon tiers labeled. Filter by one league or comma-separated leagues (NBA,NFL,NHL), stat, player or team search, and tier (standard, goblin, demon). Exact league codes only. Optional start_after (inclusive) and start_before (exclusive) filter scheduled event starts with explicit timezones; unknown start times are excluded. Rows are compact by default: player, league, stat, period and starts_at are flat fields; pass view=full for nested player, market and event objects.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from the preceding page. Changes and history use numeric sequence cursors. |
| league | string | – | One league code or up to 10 comma-separated codes, for example NBA,NFL,NHL. Exact leagues only; NBA does not include NBA1Q. |
| limit | integer | – | Maximum rows per page. Up to 1000 on /projections with view=compact. |
| search | string | – | Case-insensitive player name search. |
| start_after | string | – | Scheduled event.starts_at at or after this ISO instant, with explicit timezone. Unknown starts excluded. Available on projections only. |
| start_before | string | – | Scheduled event.starts_at before this ISO instant, with explicit timezone. Use the user timezone to convert local noon, respecting daylight saving time. |
| stat | string | – | Exact market label. For league=NHL, aliases faceoff_wins, shots_on_goal and goalie_saves map to Faceoffs Won, Shots On Goal and Goalie Saves. |
| status | string | – | Live active results must appear in the latest successful scope response and be confirmed within 30 minutes. all includes retained, potentially stale observations. |
| tier | string | – | Match either selection tier. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
| view | string | – | compact returns flat player, league, stat, period, line and starts_at fields; full uses nested player, market and event objects. Both preserve exact league codes and projection IDs. |
No output schema declared.
No examples provided.
get_results Graded results ~305
Lines graded against final box scores, NBA and the leagues in meta.leagues_graded: closing line, actual value, over, under, push or void. Developer required. Free evaluation uses the fixed training-set sample.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | meta.next_cursor from the preceding page (numeric sequence). |
| date | string | – | US Eastern game date. |
| league | string | – | League code. meta.leagues_graded lists the leagues graded now. |
| limit | integer | – | Maximum rows per page. |
| player | string | – | Case-insensitive substring of the PrizePicks player name. Up to 100 characters. |
| result | string | – | Filter by outcome. |
| stat | string | – | Exact PrizePicks stat name, case-insensitive, for example Points or Pts+Rebs+Asts. |
| status | string | – | Filter by grading status. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_stale_lines Book moved, line did not ~384
PrizePicks lines (NBA, NFL, NHL, before the game) where the BetRivers or Kalshi price for the same player and stat moved materially while the PrizePicks line stayed. Each row has the line, the book move in probability points, when it moved, how long the line has stayed since, and observed_at for both sides. Information about prices, not a prediction or betting advice: say so when you relay it.
| Name | Type | Req | Description |
|---|---|---|---|
| book | string | – | betrivers, kalshi or both comma-separated. Default both. |
| include_reverted | boolean | – | true also lists moves the book has since undone (book.still_moved false). |
| league | string | – | NBA, NFL or NHL. |
| limit | integer | – | Rows, newest move first. |
| lookback_minutes | integer | – | The move is measured against the value this many minutes earlier. |
| max_age_minutes | integer | – | Only moves first seen within this many minutes. |
| min_move | integer | – | Smallest move in the book over probability, in percentage points. |
| player | string | – | Case-insensitive substring of the PrizePicks player name. |
| stat | string | – | Exact PrizePicks stat name, case-insensitive, for example Points. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_team_stats Team stats ~530
A team's stats per game with the opponent's beside them, or group_by=season for per-game averages and totals. Needs league, one of meta.stats_leagues. Send team, or a season to read every team. Free plan: one team, its last 10 games.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | meta.next_cursor from the preceding page. Send the same filters. |
| date | string | – | One game date, league local. |
| end_date | string | – | Games on or before this league-local date. For a feature as it stood before a game, set this to the day before. |
| group_by | string | – | game or season. |
| last | integer | – | The team's most recent N games. Needs team. limit and cursor are ignored. |
| league | string | yes | League code, for example NBA. meta.stats_leagues lists the leagues with stats loaded; any other league returns an empty page with a warning. A segment league from a projection row (NBA1Q) reads as it… |
| limit | integer | – | group_by=game: rows, up to 200 with view=full and 1000 with view=compact. group_by=season: teams, up to 100. |
| opponent | string | – | Only games against this team. |
| season | string | – | Season label, as listed in meta.coverage.seasons: 2025-26, or 2026 in single-year leagues. |
| season_type | string | – | regular, postseason, play_in or preseason, where the league has them. |
| start_date | string | – | Games on or after this league-local date. |
| team | string | – | A team code (BOS) or team id (tm_...). |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
| view | string | – | group_by=game only: compact is flat and allows limit up to 1000. |
No output schema declared.
No examples provided.
get_training_set Model training rows ~396
One flat row per graded line for building a prop model: opening and closing line, tier, opponent, home or away, rest days, minutes, actual value, result. Voids left out unless include_void=true. Page with cursor; save rows as you go rather than holding them in the conversation. Free plan: one page, a labeled sample of up to 100 rows from the last 7 days.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | meta.next_cursor from the previous page, or the X-Next-Cursor header on CSV. |
| date | string | – | US Eastern game date. Use this or from and to. |
| from | string | – | First US Eastern game date, inclusive. |
| include_void | boolean | – | true also returns void rows, with reason. Default false. |
| league | string | – | League code. meta.leagues_graded on /results lists the leagues graded now. |
| limit | integer | – | Rows per page. |
| player | string | – | Case-insensitive substring of the PrizePicks player name. |
| player_id | string | – | PrizePicks player id (pp_player_id). |
| stat | string | – | Exact PrizePicks stat name, case-insensitive. |
| tier | string | – | Line tier. |
| to | string | – | Last US Eastern game date, inclusive. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
No output schema declared.
No examples provided.
get_trending Most picked lines ~228
Current lines by reported pick count, or with sort=change by how fast the count is rising. Most lines report no count. For screens and alerts.
| Name | Type | Req | Description |
|---|---|---|---|
| league | string | – | Optional league code, for example NBA. |
| limit | integer | – | Maximum rows. |
| sort | string | – | count: highest count first. change: biggest rise over window_minutes first; lines with no sample that far back come last. |
| user_request | string | yes | The current user task for this call, 3 to 500 characters in one sentence, close to their words. Required on every data call, including follow-ups and pagination. Reuse it while working on the same ta… |
| window_minutes | integer | – | How far back change is measured. |
No output schema declared.
No examples provided.
search Search public PrizePicks pages ~67
Find a player, league, guide or answer on prizepicksapi.com. Needs no key. Then call fetch with a result id. Use this when no API key is connected.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Words to look for, for example a player name, a league or a question. |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | – |
No examples provided.
send_feedback Tell the team what you need ~172
Report data or a feature you needed and could not get, wrong data, or anything confusing. Be specific about league, stat, field and what you were trying to do. Leave out personal data. Needs no key and costs no quota.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | Your agent or client name. |
| blocking | boolean | – | True if this stops the task. |
| endpoint | string | – | The tool or endpoint involved. |
| got_what_needed | boolean | – | Whether the data met the task. |
| kind | string | – | – |
| message | string | yes | What you needed or what went wrong, 3 to 2000 characters. |
| moment | string | – | The moment from meta.feedback, when answering one. |
| use_case | string | – | What is being built, up to 500 characters. |
No output schema declared.
No examples provided.
start_signup Get an API key for your user ~220
Starts getting a free API key. Say what data your user wants and what they want to do with it; ask them if you do not know, and do not guess. Returns a link for your user to approve in the browser. Show them the link and code, then call finish_signup.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | Your agent or client name. |
| data_wanted | string | yes | What data they are looking for: leagues, stats, tiers, history, refresh speed. 3 to 1000 characters. |
| details | object | – | Any other fields worth telling us, with any names you like, for example language, schedule or team_size. Up to 20. |
| found_us | string | yes | How your user found this API, or how you did if you found it yourself, for example a web search or a recommendation. Ask if you do not know, and do not guess. Up to 300 characters. |
| use_case | string | yes | What they want to do with it. 3 to 1000 characters. |
No output schema declared.
No examples provided.
How do I install the PrizePicks API MCP server?
PrizePicks API is a hosted endpoint at https://prizepicksapi.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · prizepicksapi.com
claude mcp add --transport http com-prizepicksapi-server 'https://prizepicksapi.com/api/mcp'
What is the PrizePicks API MCP server?
PrizePicks API is an MCP server listed in the public MCP registry as com.prizepicksapi/server. PrizePicks props, tiers, recorded line history, graded results and sportsbook comparisons. This page covers its hosted endpoint (https://prizepicksapi.com/api/mcp).
Is the PrizePicks API MCP server safe to use?
PrizePicks API scores 69 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the PrizePicks API MCP server expose?
PrizePicks API exposes 30 tools: get_coverage, get_projections, get_line_history, get_changes, get_board_at, and 25 more. Their descriptions and schemas cost roughly 8,647 tokens of context every time the server is loaded.
Does the PrizePicks API MCP server require authentication?
No. We connected to PrizePicks API without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the PrizePicks API MCP server still maintained?
PrizePicks API is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.