propline_get_odds
Fetch live odds for sports events, with bulk game lines or per-event props, across 13 books and multiple markets.
Instructions
Get live odds. If event_id is supplied, returns full per-event props for that event; otherwise returns bulk game-line odds for the whole sport. Pass markets as a comma-separated list (e.g. 'h2h,spreads,totals' or 'player_points,player_rebounds'). Response includes a bookmakers[] array across every book that carries the requested markets (currently up to 13: Bovada, DraftKings, FanDuel, Pinnacle, BetMGM, BetRivers, Unibet, Underdog, PrizePicks, Kalshi, Polymarket, Matchbook, Smarkets — coverage varies by sport).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sport_key | Yes | ||
| event_id | No | Optional. If set, returns props for this event. | |
| markets | No | Comma-separated market keys. Defaults to h2h on bulk; h2h,spreads,totals on event. Pass an explicit list to fetch player props (sport-specific — e.g. player_points,player_rebounds for NBA; pitcher_strikeouts,batter_home_runs for MLB). | |
| bookmakers | No | Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, underdog, prizepicks, kalshi, polymarket, matchbook, smarkets). Default returns all available. |
Implementation Reference
- src/index.ts:165-170 (handler)The handler for 'propline_get_odds' which calls client().getOdds() with the sport_key, event_id, markets, and bookmakers arguments.
handler: (args) => client().getOdds(args.sport_key as string, { eventId: args.event_id as string | number | undefined, markets: args.markets as string | undefined, bookmakers: args.bookmakers as string | undefined, }), - src/index.ts:131-171 (registration)The tool definition/registration for 'propline_get_odds' in the tools array, including its name, description, input schema, and handler.
{ name: "propline_get_odds", description: "Get live odds. If event_id is supplied, returns full per-event " + "props for that event; otherwise returns bulk game-line odds for " + "the whole sport. Pass markets as a comma-separated list (e.g. " + "'h2h,spreads,totals' or 'player_points,player_rebounds'). " + "Response includes a bookmakers[] array across every book that " + "carries the requested markets (currently up to 13: Bovada, " + "DraftKings, FanDuel, Pinnacle, BetMGM, BetRivers, Unibet, " + "Underdog, PrizePicks, Kalshi, Polymarket, Matchbook, Smarkets " + "— coverage varies by sport).", inputSchema: { type: "object", properties: { sport_key: { type: "string" }, event_id: { type: ["string", "number"], description: "Optional. If set, returns props for this event.", }, markets: { type: "string", description: "Comma-separated market keys. Defaults to h2h on bulk; h2h,spreads,totals on event. Pass an explicit list to fetch player props (sport-specific — e.g. player_points,player_rebounds for NBA; pitcher_strikeouts,batter_home_runs for MLB).", }, bookmakers: { type: "string", description: "Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, underdog, prizepicks, kalshi, polymarket, matchbook, smarkets). Default returns all available.", }, }, required: ["sport_key"], additionalProperties: false, }, handler: (args) => client().getOdds(args.sport_key as string, { eventId: args.event_id as string | number | undefined, markets: args.markets as string | undefined, bookmakers: args.bookmakers as string | undefined, }), }, - src/index.ts:67-164 (registration)The tools array (ToolDef[]) that contains all tool definitions including 'propline_get_odds'.
const tools: ToolDef[] = [ { name: "propline_list_sports", description: "List all sports PropLine currently polls. Returns sport keys " + "(e.g. baseball_mlb, basketball_nba, soccer_epl) along with human " + "titles and active status. Use this first to discover what " + "sport_key values are valid for the other tools.", inputSchema: { type: "object", properties: {}, additionalProperties: false, }, handler: () => client().listSports(), }, { name: "propline_list_events", description: "List upcoming events for a sport. Returns each event's id, " + "home_team, away_team, commence_time. Use the returned event_id " + "to drill into per-event odds, props, +EV, or results.", inputSchema: { type: "object", properties: { sport_key: { type: "string", description: "Sport key from propline_list_sports — e.g. baseball_mlb, basketball_nba", }, live: { type: "boolean", description: "If true, only return in-progress (live) events. Defaults to false.", }, }, required: ["sport_key"], additionalProperties: false, }, handler: (args) => client().listEvents(args.sport_key as string, { live: args.live as boolean | undefined, }), }, { name: "propline_list_event_markets", description: "List the market types available for a specific event (e.g. h2h, " + "spreads, totals, player_points, pitcher_strikeouts). Useful when " + "you don't know which prop markets a given event carries.", inputSchema: { type: "object", properties: { sport_key: { type: "string" }, event_id: { type: ["string", "number"] }, }, required: ["sport_key", "event_id"], additionalProperties: false, }, handler: (args) => client().listEventMarkets( args.sport_key as string, args.event_id as string | number, ), }, { name: "propline_get_odds", description: "Get live odds. If event_id is supplied, returns full per-event " + "props for that event; otherwise returns bulk game-line odds for " + "the whole sport. Pass markets as a comma-separated list (e.g. " + "'h2h,spreads,totals' or 'player_points,player_rebounds'). " + "Response includes a bookmakers[] array across every book that " + "carries the requested markets (currently up to 13: Bovada, " + "DraftKings, FanDuel, Pinnacle, BetMGM, BetRivers, Unibet, " + "Underdog, PrizePicks, Kalshi, Polymarket, Matchbook, Smarkets " + "— coverage varies by sport).", inputSchema: { type: "object", properties: { sport_key: { type: "string" }, event_id: { type: ["string", "number"], description: "Optional. If set, returns props for this event.", }, markets: { type: "string", description: "Comma-separated market keys. Defaults to h2h on bulk; h2h,spreads,totals on event. Pass an explicit list to fetch player props (sport-specific — e.g. player_points,player_rebounds for NBA; pitcher_strikeouts,batter_home_runs for MLB).", }, bookmakers: { type: "string", description: "Comma-separated subset of book keys (bovada, draftkings, fanduel, pinnacle, betmgm, betrivers, unibet, underdog, prizepicks, kalshi, polymarket, matchbook, smarkets). Default returns all available.", }, }, required: ["sport_key"], additionalProperties: false, }, - src/client.ts:93-114 (helper)The client.getOdds() method that makes the actual HTTP request. If eventId is provided, hits /v1/sports/{sportKey}/events/{eventId}/odds; otherwise hits /v1/sports/{sportKey}/odds with markets and bookmakers query params.
getOdds( sportKey: string, opts: { markets?: string; bookmakers?: string; eventId?: string | number; } = {}, ): Promise<unknown> { if (opts.eventId) { return this.request( `/v1/sports/${sportKey}/events/${opts.eventId}/odds`, { markets: opts.markets, bookmakers: opts.bookmakers, }, ); } return this.request(`/v1/sports/${sportKey}/odds`, { markets: opts.markets, bookmakers: opts.bookmakers, }); }