Fitness · Beta
SportsStack
API integration
Ship Fitness features without building the integration. Full SportsStack API access via Proxy and 60+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with SportsStack
Common scenarios for SaaS companies building SportsStack integrations for their customers.
Launch a DFS or Pick'em product without managing sports data vendors
Fantasy and Pick'em operators can use Truto to pull normalized player stats, season stats, and injury data from SportsStack to auto-generate prop lines and grade user picks in real time, without negotiating direct contracts or maintaining ingestion pipelines.
Power live odds and betting widgets for media and affiliate publishers
Sports media platforms can embed live odds, event scoreboards, and contextual news via SportsStack's market and event endpoints, letting publishers ship affiliate-driving betting widgets across thousands of pages from a single Truto-managed connection.
Automate bet settlement and grading for sportsbooks and tracking apps
Risk management and bet-tracking SaaS can integrate SportsStack's grader and settlement batch endpoints through Truto to evaluate confidence scores and consensus values, triggering instant payouts on high-confidence outcomes while flagging contested wagers for review.
Price Same-Game Parlays inside social and community betting apps
Social betting platforms can use the parlay odd creation endpoint via Truto to dynamically price multi-leg SGPs against DraftKings and FanDuel inventory, letting touts share live-priced bet slips and notify followers when wagers settle.
Build cross-provider identity resolution for sports analytics tools
Analytics platforms can use SportsStack's global identities and mappings endpoints through Truto to align internal player and team IDs with a canonical common_model_id, eliminating reconciliation work across leagues, providers, and data sources.
What You Can Build
Ship these features with Truto + SportsStack
Concrete product features your team can ship faster by leveraging Truto’s SportsStack integration instead of building from scratch.
Real-time scoreboard and play-by-play UI
Stream live game state using event scoreboards, linescores, and event plays endpoints plus SportsStack webhooks to power live in-game UIs without polling.
Automated bet grading and settlement engine
Submit user bet slips to the settlement batch endpoint and consume grader odd results to auto-settle wagers based on settlement_confidence and consensus values.
Same-Game Parlay pricing module
Let users construct 2-leg SGPs and price them dynamically against supported sportsbooks via the create parlay odd endpoint.
Player prop generation for fantasy and Pick'em
Combine season stats, event stats, and player play stats to auto-generate prop lines and grade them as live play stats stream in.
Injury-aware projection and alerting system
Use injury timelines and league injuries endpoints to surface chronological practice and status observations for projections, lineup tools, and push alerts.
Odds comparison and Inside Edge recommendation widgets
Render standardized spread, moneyline, and totals modules using market odds and latest odds, augmented with betting recommendations tied to specific market types and players.
SuperAI
SportsStack AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_sports_stack_stat_types
List all statistical data type definitions in the SportsStack data dictionary, normalized across multiple data providers. Returns: name, description, type, providers for each stat type, spanning baseball, basketball, football, golf, ice hockey, motorsports, soccer, and tennis.
list_all_sports_stack_futures
List future markets in sportsstack, including tournament outrights, season totals, and player props. Returns: id, future_type, league_id, tournament_id, market_type_id. Optionally include per-market outcomes via include_outcomes=true. Max 1000 results per page.
get_single_sports_stack_future_by_id
Get a single sportsstack future market by id. Returns: id, future_type, league_id, tournament_id, market_type_id. Required: id. Optionally include outcomes with include_outcomes=true.
list_all_sports_stack_markets
List sportsstack betting markets filtered by league. Returns: common_model_id, name, market_type, event_id, league_id, status, updated_at, is_future, tournament_id, start_date, and outcomes with nested odds. Required: league_id. Deprecated — use /api/v1/market_odds for better performance.
get_single_sports_stack_market_by_id
Get a single sportsstack betting market by id. Returns: common_model_id, name, market_type, event_id, league_id, status, updated_at, is_future, tournament_id, start_date, and outcomes with nested odds. Required: id.
list_all_sports_stack_market_odds
List sportsstack betting markets with nested outcomes and odds data. Returns: common_model_id, name, market_type, status, league_id, and outcomes (each containing selection, line, status, and nested odds with price, sportsbook, aggregator). Required: league_id. Max page size 250. Deprecated — prefer GET /api/v1/odds for larger page sizes and a flat response.
get_single_sports_stack_event_odd_by_id
Get pre-structured odds for a sportsstack event by id, optimized for single-call rendering of the full betting page. Returns: main_lines (6-box data with away/home team spread, moneyline, and total markets) and other_markets (non-main-line markets grouped by market_type). Required: id.
list_all_sports_stack_odds
List sportsstack betting odds filtered by league or event. Returns: id, event_id, league_id, market_id, outcome_id, sportsbook, aggregator, market_type, is_main, is_live, updated_at. At least one of league_id or event_id must be provided. Defaults to latest odds only per outcome/sportsbook/aggregator combination; set latest_only=false for full historical data.
get_single_sports_stack_odd_by_id
Get a single sportsstack betting odd by its UUID. Returns: id, event_id, league_id, market_id, outcome_id, sportsbook, aggregator, market_type, is_main, is_live, updated_at. Required: id.
list_all_sports_stack_betting_recommendations
List Inside Edge betting recommendations in sportsstack. Returns recommendation-only rows including league_id, event_id, player_id, team_id, market_type, and recommendation_type fields; priced odds fields are intentionally excluded. Max 1000 rows per page.
create_a_sports_stack_parlay_odd
Price a same-game parlay for a SportsStack MLB pregame event directly against supported sportsbooks (FanDuel and DraftKings by default). Returns: common_model_id, event_id, status, quote_type, legs, quotes, requested_at, and metadata. Required: id, legs. The legs array must contain exactly 2 legs.
list_all_sports_stack_injuries
List player injuries in sportsstack filtered by league. Returns: common_model_id, player_id, source, status, injury_type, confidence, reported_at, practice_participation, recent_practice_status, return_date, source_tier, and more. Required: league_id.
list_all_sports_stack_injury_timelines
List the chronological history of injury status observations for a player in sportsstack. Returns: id, player_id, status, injury_type, source, source_tier, confidence, reported_at, inserted_at, and updated_at. Required: id.
list_all_sports_stack_news
List sportsstack news items sorted by date (newest first), with flexible filtering by league, entity type, entity ID, and date range. Returns: id, headline, summary, analysis, date, for_entity_type, for_entity_id, league_id, tags, author, source, betting_analysis, priority, inserted_at, updated_at, and optional entity_tags. Required: league_id.
get_single_sports_stack_news_by_id
Get a single sportsstack news item by id. Returns the complete news item including headline, summary, analysis, betting_analysis, author, source, date, for_entity_type, for_entity_id, league_id, tags, priority, edit_history, original_content, metadata, inserted_at, and updated_at. Required: id.
get_single_sports_stack_event_scoreboard_by_id
Get the latest event scoreboard for a sportsstack event by id. Returns the live game state including common_model_id, event_id, sport, league, period, time_on_clock, home_score, away_score, period_half, period_half_over, details (sport-specific JSONB), inserted_at, and updated_at. Required: id.
list_all_sports_stack_mappings
List sportsstack entity identity mappings ordered by most recently updated first. Returns: id, entity_type, integration, league, source_id, common_model_id, inserted_at, updated_at. Supports optional filters (entity_type, integration, league, source_id) and enrichment params (include_all_mappings, return_source_id_format, include_source_mappings_by_source).
get_single_sports_stack_mapping_by_id
Get a single sportsstack entity identity mapping by id. Returns: id, entity_type, integration, league, source_id, common_model_id, inserted_at, updated_at. Required: id.
list_all_sports_stack_events
List sportsstack events for a league, optionally filtered by season year, week, date, season type, status, or participant. Returns: common_model_id, title, scheduled_start_time, status, season_year, participants, and event_scoreboard. Required: league_id.
get_single_sports_stack_event_by_id
Get a single sportsstack event by id. Returns: common_model_id, title, scheduled_start_time, status, season_year, league_id, participants, and event_scoreboard. Required: id.
list_all_sports_stack_global_identities
List global player identity groups in sportsstack, optionally filtering by name or ID. Returns: global_player_id, canonical_name, player_ids, and players (each with common_model_id, full_name, is_active, league_id, league_abbreviation, and team_id). Max 1000 items per page.
list_all_sports_stack_leagues
List sportsstack leagues, optionally filtered by sport. Returns: name, abbreviation, common_model_id, sport_id, and image_url for each league in the collection.
get_single_sports_stack_league_by_id
Get a single sportsstack league by id. Returns: name, abbreviation, common_model_id, sport_id, and image_url. Required: id.
list_all_sports_stack_players
List sportsstack players for a given league. Returns: common_model_id, full_name, position, team_id, is_active, birthday, height_in, weight_lbs, image_url, and additional biographical and draft fields. Optionally filter by team_id or search by name via search_phrase. Required: league_id.
get_single_sports_stack_player_by_id
Get a single sportsstack player by id. Returns: common_model_id, full_name, position, team_id, is_active, birthday, height_in, weight_lbs, image_url, and additional biographical and draft fields. Required: id.
list_all_sports_stack_seasons
List seasons in sportsstack, optionally filtered by league, year, type, or status. Returns: common_model_id, name, season_year, season_type, status, start_date, end_date, league_id, abbreviation, image_url, and metadata.
get_single_sports_stack_season_by_id
Get a single sportsstack season by id. Returns: common_model_id, name, season_year, season_type, status, start_date, end_date, league_id, abbreviation, image_url, and metadata. Required: id.
list_all_sports_stack_sports
List all sports available in sportsstack. Returns: name, abbreviation, common_model_id, image_url. Optionally filter results by sport name.
get_single_sports_stack_sport_by_id
Get a single sport by id from sportsstack. Returns: name, abbreviation, common_model_id, image_url. Required: id.
list_all_sports_stack_teams
List sportsstack teams for a given league. Returns: common_model_id, name, abbreviation, market, nickname, status, colors, image_url, league_id, and metadata. Optional filters include search_phrase, fuzzy matching, and status. Required: league_id.
get_single_sports_stack_team_by_id
Get a single sportsstack team by id. Returns: common_model_id, name, abbreviation, market, nickname, status, colors, image_url, league_id, and metadata. Required: id.
get_single_sports_stack_tournament_by_id
Get a single sportsstack tournament by id. Returns: common_model_id, name, bracket_type, tournament_type, status, start_date, end_date, season_year, and league_id. Required: id.
list_all_sports_stack_tournaments
List sportsstack tournaments. Returns: common_model_id, name, bracket_type, tournament_type, status, start_date, end_date, season_year, and league_id.
get_single_sports_stack_grader_odd_by_id
Grade a single bet in sportsstack using the OpticOdds-compatible grader endpoint. Returns: fixture_id, status, result, line, player_score, graded_at, sportsstack settlement enrichment (action, consensus_value, settlement_confidence), and opticodds grading data. Required: fixture_id, market, name.
create_a_sports_stack_settlement_batch
Evaluate settlement confidence for a batch of markets in sportsstack. Returns a batch settlement confidence response; the upstream API does not enumerate response body fields. Required: league, markets. Batch size is limited to 200 markets per request.
list_all_sports_stack_gradeable_props
List gradeable stat types and entities for a settlement event in sportsstack. Returns an array of gradeable prop objects; the upstream API does not enumerate the field-level structure of each record. Required: id. Optionally filter by league abbreviation (e.g., 'nba').
get_single_sports_stack_settlement_by_id
Query settlement confidence for a single betting market in SportsStack. Returns: action (settle/caution/hold recommendation), settlement_confidence score, consensus_value across providers, reasoning, result (win/loss/push), provider_count, margin_safety, and reliability details. Required: event_id, entity_id, entity_type, stat_name, line, league.
get_single_sports_stack_settlement_result_by_id
Get settlement results for an entire event in sportsstack. Returns settlement result data with format-specific attributes whose shape varies by the format parameter ('full' for one row per real outcome, 'flat' for legacy collapsed rows, 'outcomes' for per-outcome confidence grouped by entity/stat). Required: id, league.
list_all_sports_stack_market_types
List all market type definitions used in sports betting in sportsstack. Returns: canonical_name, display_name, category, provider_aliases, and stat_mapping for each market type. Optionally filter results by category (e.g., core, player_props, game_props) or provider (e.g., the_odds_api, sportradar_sr).
get_single_sports_stack_data_health_by_id
Get data health status for a sportsstack tenant/league combination. Returns: health_score (0–100), league_id, league_abbreviation, tenant_id, provider, validation_timestamp, results (entity counts for teams, players, events, seasons, coverage percentages, and relationship completeness), and issues (list of detected data problems with type, severity, message, and count). Required: league_id.
list_all_sports_stack_event_plays
List play-by-play actions for a sportsstack event. Returns: id, description, play_type, event_id, period, play_number, offense_id, defense_id, game_context, play_details, minutes_remaining, seconds_remaining, time_on_clock, source, league_id, tenant_id, and common_model_id. Required: id (Event UUID).
list_all_sports_stack_play_stats
List play-level player statistics in sportsstack across all events. Returns: common_model_id, player_id, event_id, play_id, play_number, play_type, period, league_id, inserted_at, and player_info (including role and per-play statistics). Optionally filter by player_id, event_id, or league_id. Defaults to 1000 records per page.
list_all_sports_stack_event_stats
List sportsstack event stats for players and teams across sporting events. Returns: common_model_id, event_id, for_entity_id, for_entity_type, is_projection, source, season_year, week, scheduled_start_time, team_id, data, inserted_at, updated_at.
get_single_sports_stack_event_stat_by_id
Get a single sportsstack event stat record by id. Returns: common_model_id, event_id, for_entity_id, for_entity_type, is_projection, source, season_year, week, scheduled_start_time, team_id, data, inserted_at, updated_at. Required: id.
list_all_sports_stack_rankings
List sportsstack rankings and standings snapshots for a league. Returns: id, for_entity_id, for_entity_type, season_year, season_type, table_type, ranking_overall, record_wins, record_losses, primary_group, secondary_group, and split/scoring fields. Required: league_id.
get_single_sports_stack_ranking_by_id
Get a single sportsstack ranking or standings snapshot by id. Returns the full record including id, for_entity_id, for_entity_type, league_id, season_year, season_type, table_type, ranking_overall, record_wins, record_losses, primary_group, secondary_group, split stats, scoring fields, and metadata. Required: id.
list_all_sports_stack_season_stats
List season-level statistics for players and teams in sportsstack. Returns: common_model_id, for_entity_id, for_entity_type, season_year, source, is_projection, team_id, inserted_at, updated_at, and a data object of aggregated season stats (e.g. passing_yards, rushing_yards, games_played, touchdowns). Required: league_id, season_year. Use player_id/team_id for single-entity lookups or player_ids/team_ids for bulk.
get_single_sports_stack_season_stat_by_id
Get a single season stats record by id in sportsstack. Returns: common_model_id, for_entity_id, for_entity_type, season_year, source, is_projection, team_id, inserted_at, updated_at, and a data object of aggregated season stats (e.g. passing_yards, rushing_yards, games_played, touchdowns). Required: id.
list_all_sports_stack_standings
List sportsstack standings snapshots for a league, optionally filtered by entity, season, group, and source provider. Returns: id, for_entity_id, for_entity_type, league_id, season_year, season_type, record_wins, record_losses, record_ties, ranking_overall, primary_group, secondary_group, table_type, metadata, and full split/scoring fields. Required: league_id.
get_single_sports_stack_standing_by_id
Get a single sportsstack standings snapshot by id. Returns: id, for_entity_id, for_entity_type, league_id, season_year, season_type, record_wins, record_losses, record_ties, ranking_overall, primary_group, secondary_group, table_type, metadata, and full split/scoring fields. Required: id.
create_a_sports_stack_webhook
Send a test webhook delivery in sportsstack, bypassing the batcher and RabbitMQ to verify the HTTP delivery path independently of the pipeline. Returns: status, destination_id, destination_name, and message. If destination_id is omitted, the first active webhook destination for the tenant is used.
get_single_sports_stack_tournament_bracket_by_id
Get the bracket structure for a sportsstack tournament by id. Returns: tournament (name, bracket_type, status, start_date, end_date), rounds (each with round_number, round_name, round_type, and matchups containing position, home_team, away_team, status, winner_id, and series_score), plus groups and metadata. Required: id.
list_all_sports_stack_global_identity_players
List global player identity groups in sportsstack, grouping cross-league player records under a single canonical identity. Returns: global_player_id, canonical_name, player_ids, and a players array where each entry includes common_model_id, full_name, is_active, league_id, league_abbreviation, and team_id. Optionally filter by search_phrase, global_player_id, or player_id.
get_single_sports_stack_event_linescore_by_id
Get the linescore for a sportsstack event by id. Returns: common_model_id, event_id, sport, league. Required: id.
list_all_sports_stack_event_related_stats
List player or team performance statistics for a specific sportsstack event. Returns: common_model_id, for_entity_type, for_entity_id, event_id, source, updated_at, and week. Required: id, for_entity_type.
list_all_sports_stack_event_play_stats
List play statistics for a sportsstack event by event id. Returns sport-specific statistical records whose fields vary by sport type; consult the upstream sportsstack docs for the field-level breakdown. Required: id.
list_all_sports_stack_player_play_stats
List play statistics records for a sportsstack player by their id. Returns records with id and sport-specific stat attributes that vary by sport and league (e.g., basketball, football, baseball). Required: id.
list_all_sports_stack_latest_odds
List the latest betting market odds from sportsstack. Returns: market_id, market_name, market_status, market_type, market_updated_at, and a nested outcomes array — each outcome containing outcome_id, outcome_name, outcome_status, outcome_line, and an odds array with odds_price, odds_price_type, odds_sportsbook, odds_is_main, and odds_aggregator.
list_all_sports_stack_news_by_entity
List news articles for a specific entity in sportsstack by entity type and entity ID. Returns: for_entity_id, for_entity_type, event_id, entity_tags, and edit_history. Pass include_entity_tags=true to include tagged entity mentions in each article. Required: type, id.
list_all_sports_stack_news_by_league
List news items for a specific league in sportsstack. Supports optional filtering by entity type and entity ID to narrow results to news for specific players, teams, or events within the league. Returns: id. Required: id.
list_all_sports_stack_league_injuries
List the league-wide injury report for a sportsstack league. Returns: common_model_id, player_id, source, updated_at for each injured player. Required: id (league UUID).
Why Truto
Why use Truto’s MCP server for SportsStack
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 500+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with SportsStack in under an hour. No boilerplate, no maintenance burden.
Link your customer’s SportsStack account
Use Truto’s frontend SDK to connect your customer’s SportsStack account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call SportsStack
Truto’s Proxy API is a 1-to-1 mapping of the SportsStack API. You call us, we call SportsStack, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate SportsStack’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about SportsStack on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication to SportsStack work through Truto?
Truto manages SportsStack API credentials on behalf of your tenants. Your end users connect once through Truto's connection flow, and Truto handles credential storage, refresh, and injection on every request so your team never touches raw keys.
Can we receive real-time updates instead of polling?
Yes. SportsStack supports webhooks via the create webhook endpoint, which you can use through Truto to receive event scoreboard, play, and odds changes. This is the recommended pattern for live betting and in-game UIs.
How do we reconcile our internal player and team IDs with SportsStack?
Use the global identities, global identity players, and mappings endpoints to align your internal IDs with SportsStack's common_model_id. This gives you a stable cross-provider, cross-league identifier for every entity.
What data do we get back when settling a bet?
The grader odd and settlement endpoints return win/loss/push status, settlement_confidence, consensus_value, action recommendations (settle vs. hold), and reliability provider counts, so you can decide whether to auto-payout or route to manual review.
Can we monitor whether SportsStack data is complete before relying on it?
Yes. The data health endpoint exposes coverage percentages and missing relationship metadata per entity, which you can use to gate automated workflows or trigger fallback behavior when coverage drops.
Which sportsbooks are supported for odds and parlay pricing?
SportsStack normalizes odds across major sportsbooks and supports dynamic Same-Game Parlay pricing against books including DraftKings and FanDuel via the create parlay odd endpoint. Exact book availability depends on market and event.
From the Blog
SportsStack integration guides
Deep dives, architecture guides, and practical tutorials for building SportsStack integrations.
SportsStack
Get SportsStack integrated into your app
Our team understands what it takes to make a SportsStack integration successful. A short, crisp 30 minute call with folks who understand the problem.