Live and prematch Pinnacle odds, price drops and no-vig fair prices. Free demo access, no key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
PinnWire API key (pk_...). Optional — omit to use the public demo key at reduced rate limits. Get a free key at https://pinnwire.com
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Recent Pinnacle price DROPS — the dropping-odds / odds-shortening / steam-move signal: every outcome whose price fell, with from/to decimal prices, drop %, and nvp, the no-vig decimal fair price (1/nvp = fair implied probability — a de-vigged baseline for arbitrage checks, +EV / value betting, prediction-market pricing and model calibration; an estimate, not a guarantee). Buffer covers roughly the last 3 hours. Does not compare other sportsbooks or prove a move is informed money.
Live or prematch drops. Default live
Max drop records returned. Default 25, max 100
Sport identifier: 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Volleyball/Handball, 11 Esports, 12 Golf, 13 Cricket. Call list_sports when unknown.
Minimum price decrease in percent. Default 2 for this tool (REST default is 5)
Recent Pinnacle price DROPS — the dropping-odds / odds-shortening / steam-move signal: every outcome whose price fell, with from/to decimal prices, drop %, and nvp, the no-vig decimal fair price (1/nvp = fair implied probability — a de-vigged baseline for arbitrage checks, +EV / value betting, prediction-market pricing and model calibration; an estimate, not a guarantee). Buffer covers roughly the last 3 hours. Does not compare other sportsbooks or prove a move is informed money.
| Argument | Type | Description |
|---|---|---|
| mode | string | Live or prematch drops. Default live |
| limit | integer | Max drop records returned. Default 25, max 100 |
| sport_id | integer | Sport identifier: 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Volleyball/Handball, 11 Esports, 12 Golf, 13 Cricket. Call list_sports when unknown. |
| min_drop_pct | number | Minimum price decrease in percent. Default 2 for this tool (REST default is 5) |
{
"type": "object",
"properties": {
"mode": {
"enum": [
"live",
"prematch"
],
"type": "string",
"description": "Live or prematch drops. Default live"
},
"limit": {
"type": "integer",
"description": "Max drop records returned. Default 25, max 100"
},
"sport_id": {
"type": "integer",
"description": "Sport identifier: 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Volleyball/Handball, 11 Esports, 12 Golf, 13 Cricket. Call list_sports when unknown."
},
"min_drop_pct": {
"type": "number",
"description": "Minimum price decrease in percent. Default 2 for this tool (REST default is 5)"
}
}
}Current full odds detail for one event (live, prematch or special) by event_id. Use after get_live_odds / get_prematch_odds returns the id.
| Argument | Type | Description |
|---|---|---|
| event_id* | integer | Event id from another odds tool |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"type": "integer",
"description": "Event id from another odds tool"
}
}
}Current feed status: events in store and last_odds_update_seconds_ago (feed-update age). generated_at is response time, not the source odds tick.
No arguments.
{
"type": "object",
"properties": {}
}Current live (in-play) sports betting odds from Pinnacle, the sharp bookmaker whose prices arbitrage scanners, betting models and prediction markets treat as the market reference. Returns available decimal moneylines/match-winner prices, spreads/handicaps, totals/over-under and team totals per period, plus optional props & specials. Use for live odds displays, +EV / expected-value screens, model features, or the Pinnacle leg of a cross-book comparison. Not a multi-book aggregator, historical archive, or bet-placement tool.
| Argument | Type | Description |
|---|---|---|
| sport_id* | integer | Sport identifier: 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Volleyball/Handball, 11 Esports, 12 Golf, 13 Cricket. Call list_sports when unknown. |
| max_events | integer | Max events returned. Default 25, max 100 |
| include_specials | boolean | Also include currently published player props, team props, exact-score markets, futures and other specials |
{
"type": "object",
"required": [
"sport_id"
],
"properties": {
"sport_id": {
"type": "integer",
"description": "Sport identifier: 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Volleyball/Handball, 11 Esports, 12 Golf, 13 Cricket. Call list_sports when unknown."
},
"max_events": {
"type": "integer",
"description": "Max events returned. Default 25, max 100"
},
"include_specials": {
"type": "boolean",
"description": "Also include currently published player props, team props, exact-score markets, futures and other specials"
}
}
}Compact current full-game lines for one prematch event (no period structure). Optional market_type filter: money_line | spreads | totals | team_total.
| Argument | Type | Description |
|---|---|---|
| event_id* | integer | Event id from another odds tool |
| market_type | string | Limit the response to one market type |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"type": "integer",
"description": "Event id from another odds tool"
},
"market_type": {
"enum": [
"money_line",
"spreads",
"totals",
"team_total"
],
"type": "string",
"description": "Limit the response to one market type"
}
}
}Current prematch (pregame / upcoming-match) Pinnacle odds for one sport — sharp lines for handicapping, expected-value screens and model features. Same shape as get_live_odds. Callers can store snapshots for their own line-history or closing-line-value analysis; this is not a historical opening/closing-odds archive.
| Argument | Type | Description |
|---|---|---|
| sport_id* | integer | Sport identifier: 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Volleyball/Handball, 11 Esports, 12 Golf, 13 Cricket. Call list_sports when unknown. |
| max_events | integer | Max events returned. Default 25, max 100 |
| include_specials | boolean | Also include currently published props & specials |
{
"type": "object",
"required": [
"sport_id"
],
"properties": {
"sport_id": {
"type": "integer",
"description": "Sport identifier: 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Volleyball/Handball, 11 Esports, 12 Golf, 13 Cricket. Call list_sports when unknown."
},
"max_events": {
"type": "integer",
"description": "Max events returned. Default 25, max 100"
},
"include_specials": {
"type": "boolean",
"description": "Also include currently published props & specials"
}
}
}Map the 13 covered sports to sport_id values before calling the odds tools. Does not consume API quota.
No arguments.
{
"type": "object",
"properties": {}
}