Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Flaim Fantasy

REMOTE · API.FLAIM.APP · SCANNED SEP 22

Read-only fantasy analysis for ESPN, Yahoo, and Sleeper leagues via MCP

Available components

0 this week 80 Trust /100
Trust breakdown (7 categories)

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 Security78
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
  • HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
  • The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
Schema Quality & AI Usability37
  • 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Fail
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7566 tokens (~504/item across 15 items; 11 tools + 4 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% 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
  • We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the Flaim Fantasy MCP server?

Flaim Fantasy is a hosted endpoint at https://api.flaim.app/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 · api.flaim.app

# add to Claude Code
claude mcp add --transport http app-flaim-mcp 'https://api.flaim.app/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "app-flaim-mcp": {
      "url": "https://api.flaim.app/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "app-flaim-mcp": {
      "type": "http",
      "url": "https://api.flaim.app/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.app-flaim-mcp]
url = "https://api.flaim.app/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-flaim-mcp": {
      "type": "remote",
      "url": "https://api.flaim.app/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add app-flaim-mcp --url 'https://api.flaim.app/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  app-flaim-mcp:
    url: "https://api.flaim.app/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "app-flaim-mcp": {
      "Transport": "http",
      "Url": "https://api.flaim.app/mcp"
    }
  }
}
# add to Vellum
assistant mcp add app-flaim-mcp -t streamable-http -u 'https://api.flaim.app/mcp'
// mcp.json
{
  "mcpServers": {
    "app-flaim-mcp": {
      "type": "http",
      "url": "https://api.flaim.app/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

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.

  • 22 Sept 26 0
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
  • 21 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
    • Schema quality: 6507 → 7566 functional
    • New resource “user-session-widget-v4” functional
    • “get_draft” reworded the description of “season_year” cosmetic
    • “get_free_agents” reworded the description of “season_year” cosmetic
    • “get_league_info” reworded the description of “season_year” cosmetic
    • “get_matchups” reworded the description of “detail” cosmetic
    • “get_matchups” reworded the description of “season_year” cosmetic
    • “get_players” reworded the description of “season_year” cosmetic
    • “get_roster” reworded the description of “season_year” cosmetic
    • “get_standings” reworded the description of “season_year” cosmetic
    • “get_transactions” reworded the description of “season_year” cosmetic
  • 20 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
    • Schema quality: 420 → 464 functional
  • 19 Sept 26 0
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
  • 18 Sept 26 0
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
  • 17 Sept 26 0
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
  • 16 Sept 26 0
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
  • 15 Sept 26 0
    • Tool “get_draft” rewrote its description, which is the text the model reads security
    • Tool “get_free_agents” rewrote its description, which is the text the model reads security
    • Tool “get_league_info” rewrote its description, which is the text the model reads security
    • Tool “get_matchups” rewrote its description, which is the text the model reads security
    • Tool “get_players” rewrote its description, which is the text the model reads security
    • Tool “get_roster” rewrote its description, which is the text the model reads security
    • Tool “get_standings” rewrote its description, which is the text the model reads security
    • Tool “get_transactions” rewrote its description, which is the text the model reads security
Diagnostics

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 22 Sept 2026 · Probed https://api.flaim.app/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=flaim.app CN=WE1,O=Google Trust Services,C=US 25 Aug 2026 23 Nov 2026 ECDSA 256 ECDSA-SHA256 23cc45c8a0b408bb13b7cdcff431b08e
SANs: flaim.app, *.flaim.app
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.flaim.app. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
app. present 23684 8 Verified
flaim.app. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer realm="fantasy-mcp", resource="https://api.flaim.app/mcp", resource_metadata="https://api.flaim.app/.well-known/oauth-protected-resource"

Bearer realm="fantasy-mcp", resource="https://api.flaim.app/mcp", resource_metadata="https://api.flaim.app/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://api.flaim.app/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://api.flaim.app/mcp
Authorisation server https://api.flaim.app

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.flaim.app/mcp Verified 200
http (plaintext) http://api.flaim.app/mcp Inconclusive 405
MCP tools · 11 exposed · ~5,936 tokens

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 →

Tool Tokens
get_ancient_history ~131

Use established session context (call get_user_session only if needed), and use this only when the user is clearly asking about a non-current season or an inactive league. This is the historical branch: it returns past seasons and historical leagues outside the current season view. Use for last season, older seasons, inactive leagues, or historical performance. All-time answers are scoped to seasons present in the response; an absent season may be unavailable even if provider history extends further. thresholdYear is display bucketing, not a retrieval floor. Read-only.

NameTypeReqDescription
platformstringOptional: filter to specific platform
NameTypeReqDescription
oldLeaguesarrayyes
oldSeasonsFromActiveLeaguesobjectyes
successbooleanyes
thresholdYearnumberyes
totalOldLeaguesnumberyes
totalOldSeasonsnumberyes
warningsarray

No examples provided.

get_draft ~563

Use this when the user asks about completed draft results, exact draft-board positions, or current draft-pick ownership for a selected league. Returns a common draft summary and ordered picks with explicit confirmed, projected, or unavailable placement provenance. A historical selecting team is not a current pick owner; current ownership comes only from ownership.picks[].currentOwnerTeamId. ESPN and Yahoo expose confirmed draft results but no current pick-ownership ledger, so their responses carry no ownership block at all; only Sleeper can report current or future pick ownership, and an exact board placement only when Sleeper supplies enough draft-order evidence. An ownership.scope of changed_picks_only lists only picks known to have changed hands and is not a complete pick inventory. selectionInRound is the round slot rendered in a value such as 12.15, while draftColumn is the stable draft-board column; they are not interchangeable. For a completed Sleeper draft, an omitted ownership block means no draft picks changed hands. Use round to return one draft round. Use team_id to return completed selections made by that historical team and ownership rows currently owned by that team. Omit draft_id to use the league's associated draft; draft_id is Sleeper-only and should be passed only when Flaim previously returned a provider draft ID. Omit season_year for the current sport season, or pass the season_year returned by get_user_session for a specific league or past draft. Use established session context (call get_user_session only if needed), then get_league_info for the specified league. For multi-league comparisons, call once per league. Read-only. Current date is 2026-09-22.

NameTypeReqDescription
draft_idstringOptional Sleeper draft ID. Omit to retrieve the league's associated draft; pass only an ID previously returned by Flaim.
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform (e.g., "espn", "yahoo", "sleeper")
roundintegerOptional positive draft round. Returns only completed selections and ownership rows from this round.
season_yearintegerSeason start year. Omit for the current sport season; use the season_year returned by get_user_session for this league or a past draft. Basketball and hockey use the start year of a cross-year season…
sportstringyesSport type (e.g., "football", "baseball")
team_idstringOptional provider team ID. Filters completed selections by historical selecting team and ownership rows by current owner.
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_free_agents ~844

Get players available to acquire in the specified fantasy league, optionally filtered by position. This is fantasy-league availability, not professional-contract status. Pass a requested count exactly from 1 through 100; for more than 100, state the limit and ask the user to narrow the request or accept 100. Prefer the canonical fields: every response carries leagueId, seasonYear, position, count, ordering, capabilities, and ownershipScope; entries carry team (real-life club, null when none) and id (platform player id as a string, when supplied) on every platform, and ESPN entries add acquisitionState ("free_agent", "waivers", or null when the platform cannot determine the subtype) plus waiverClearsAt (ISO time); legacy platform fields remain alongside for compatibility and should not be re-explained. ownershipScope "platform_global" means percentOwned/percentStarted cover all leagues on that platform — never ownership within the selected league. An ESPN-wide started rate is never conditional on the player being rostered. Label every reported percentage as an ESPN-wide roster/start rate or Yahoo-wide market rate. Translate ownership scope silently into that provider-wide wording; never print the ownershipScope key, platform_global enum, or get_free_agents tool name. If capabilities marks rates unavailable, write "[Provider] market ownership rate: not provided"; do not print a missing response field name or null value, call get_players, or offer a lookup. When acquisitionState is null or not present, call rows "available players," never specifically free agents or waivers, and do not promise an immediate add. A returned player is already confirmed available in that league. Yahoo entries may add isKeeper as status, cost, and kept when Yahoo sends it; Yahoo has only been observed returning cost as false, so no numeric keeper cost is available from Yahoo. Use get_roster only when the current request separately asks who owns a player; never offer it after an available-p…

NameTypeReqDescription
countnumberMaximum number of players to return (max: 100). Pass the user-requested number exactly; omit only when no number was requested (default: 25).
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform — "espn", "yahoo", or "sleeper"
positionstringFilter by position (e.g., "QB", "RB", "SP", "C"). Default: ALL
season_yearnumberyesSeason start year — use the season_year returned by get_user_session for this league; only pass an older year when the user explicitly asks about a past season. Basketball and hockey use the start ye…
sportstringyesSport type (e.g., "football", "baseball")
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_league_info ~507

With session context established, call this for the selected active league before the requested standings, matchup, roster, free-agent, player, transaction, or draft tool. A usable successful get_user_session result from earlier in this chat satisfies that prerequisite; do not repeat it just to satisfy this ordering. Skip it only when answering from session data alone or branching to get_ancient_history. This provides the baseline league context for analysis: league name, settings, scoring type, roster configuration, and team/owner context, plus schedule or season-window metadata when the platform provides it. Keeper and draft-format fields are additive and platform-dependent; never assume one provider's fields exist on another. ESPN adds keeperSettings (keeperCount, keeperCountFuture, keeperOrderType, keeperDeadlineDate) and isKeeperLeague when ESPN reports a keeper count, plus per-team keeperPlayerIds and futureKeeperPlayerIds as raw ESPN player IDs with no name resolution. Sleeper adds leagueFormat, whose typeRaw is an undocumented Sleeper convention that must not be read on its own as a redraft, keeper, dynasty, or guillotine signal, plus per-team keepers as raw Sleeper player IDs. Yahoo adds draftType, isAuctionDraft, and canTradeDraftPicks when Yahoo's settings fetch succeeds (omitted, with a warning, when it fails), but exposes no keeper-cost rule. Sleeper futureDraftRounds describes the configured round count for future drafts; use get_draft.draft.rounds for the selected draft's actual round count. When fanning out across multiple leagues, call this once per league. The exact team fields vary by platform but all include ownerName. Use values from get_user_session. Read-only. Current date is 2026-09-22.

NameTypeReqDescription
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform (e.g., "espn", "yahoo", "sleeper")
season_yearnumberyesSeason start year — use the season_year returned by get_user_session for this league; only pass an older year when the user explicitly asks about a past season. Basketball and hockey use the start ye…
sportstringyesSport type (e.g., "football", "baseball")
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_matchups ~441

Get matchups/scoreboard for a specific week or the current week. Some category leagues (Yahoo, and ESPN baseball) additionally return per-category rows and a categoryScore of wins/losses/ties per side; where they do, the side total is a category count or null rather than fantasy points. A null categoryScore, value, or result means the provider did not report it; never infer one. To request compact player scores for one selected matchup, use detail: "players" with an explicit week and team_id; this is currently ESPN football only and only for season_year 2018 or later. Any other platform, sport, or earlier season returns MATCHUP_DETAIL_UNSUPPORTED. Use established session context (call get_user_session only if needed), then get_league_info for the specified league so the model already knows the league's team names, owner/team mapping, and league context before interpreting the matchup. For multi-league comparisons, call once per league. Read-only. Current date is 2026-09-22.

NameTypeReqDescription
detailstringOpt-in compact player detail for one selected ESPN football matchup, season_year 2018 or later only; requires week and team_id.
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform (e.g., "espn", "yahoo", "sleeper")
season_yearnumberyesSeason start year — use the season_year returned by get_user_session for this league; only pass an older year when the user explicitly asks about a past season. Basketball and hockey use the start ye…
sportstringyesSport type (e.g., "football", "baseball")
team_idstringRequired with detail: "players" to select one matchup; do not provide for summary mode.
weekintegerWeek number (optional, must be ≥ 1, defaults to current week)
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_players ~651

Search for player identity by name. Always returns identity fields, but ownership context varies by platform. ESPN and Yahoo return market/global ownership and can also populate league ownership fields when credentials and league context are available. Sleeper always evaluates league ownership against every current roster in the selected league, except during an active draft, when this tool returns an error instead of an answer, since draft picks aren't yet reflected on rosters; if the league, rosters, or users can't be loaded for another reason, the call still succeeds with every league_* field null plus a SLEEPER_OWNERSHIP_UNAVAILABLE warning. Sleeper adds a Sleeper-only league_team_id (the Sleeper roster id, or null); its market/global ownership stays unavailable regardless (ownership_scope="unavailable", market_percent_owned=null) — league_team_id is league ownership, not market data. For a selected active league, use established session context (call get_user_session only if needed), then get_league_info so league-specific ownership and team names can be resolved. League ownership fields: league_status ("ROSTERED" = on a team, "FREE_AGENT" = unrostered in this league, null = ownership could not be resolved, for example because credentials or rosters were unavailable, the player result carried no usable id, or Sleeper rostering was ambiguous), league_team_name (fantasy team name if rostered), league_owner_name (team owner if rostered). FREE_AGENT is an ownership fact from a roster scan, not an acquisition guarantee — it says nothing about waiver state, so never turn it into pickup advice; get_free_agents is what reports players available to acquire. Trust a non-null league_status directly — null team/owner fields alongside FREE_AGENT are expected, not a signal to verify. Fall back to get_roster only when league_status itself is absent or null. Yahoo entries may add isKeeper as status, cost, and kept when Yahoo sends it; Yahoo has only been observed returning co…

NameTypeReqDescription
countnumberMaximum number of players to return (default: 10, max: 25)
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform (e.g., "espn", "yahoo", "sleeper")
positionstringFilter by position (e.g., "QB", "RB", "SP", "C"). Default: ALL
querystringyesPlayer name search string (minimum 2 characters)
season_yearnumberyesSeason start year — use the season_year returned by get_user_session for this league; only pass an older year when the user explicitly asks about a past season. Basketball and hockey use the start ye…
sportstringyesSport type (e.g., "football", "baseball")
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_roster ~722

Get roster details for a specific team, current by default and historical on request. Exact payload varies by platform: ESPN and Yahoo return player entries with lineup/position context, while Sleeper returns starters, bench, reserve, taxi, and record metadata for the selected roster. Keeper fields are additive and platform-dependent; never assume one provider's keeper fields or units exist on another. ESPN adds per-player keeperValue and keeperValueFuture plus one response-level keeperValueUnit of auction_dollars or draft_round, omitted rather than guessed when ESPN's draft type does not determine it; a historical snapshot withholds keeperValueFuture and flags keeperValueFutureAvailable false. Sleeper resolves keepers to player entries on the current roster only, passing the list through as Sleeper sends it; an empty or null list does not show that the league has no keepers. Yahoo entries may add isKeeper as status, cost, and kept when Yahoo sends it; Yahoo has only been observed returning cost as false, so no numeric keeper cost is available from Yahoo. Historical snapshots: pass week for football (all platforms) and Sleeper basketball (matchup week), or as_of_date (YYYY-MM-DD) for ESPN/Yahoo baseball, basketball, and hockey, never both. An invalid selector returns a corrective error naming the right one. Every response includes a snapshot block identifying what was returned (current vs week vs date); historical responses may add limitation flags (acquisitionMetadataAvailable, reserveAndTaxiClassificationAvailable) when provider history omits those details. For "roster during matchup week N" questions in daily sports, ask the user for a specific date rather than guessing. One matchup spans several daily rosters. Use established session context (call get_user_session only if needed), then get_league_info for the specified league so the model already knows the league's team names, owner/team mapping, league settings, and roster context before interpreting this rost…

NameTypeReqDescription
as_of_datestringHistorical calendar-day roster snapshot in YYYY-MM-DD format. ESPN and Yahoo baseball, basketball, and hockey only — football and Sleeper use week. Omit for the current roster; pass at most one of we…
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform (e.g., "espn", "yahoo", "sleeper")
season_yearnumberyesSeason start year — use the season_year returned by get_user_session for this league; only pass an older year when the user explicitly asks about a past season. Basketball and hockey use the start ye…
sportstringyesSport type (e.g., "football", "baseball")
team_idstringTeam ID for the target roster. Recommended for all platforms; required on Yahoo and for historical Sleeper rosters. If omitted, platform behavior varies and may not resolve to the user's team.
weeknumberHistorical weekly roster snapshot (positive integer). Football on all platforms, plus Sleeper basketball (matchup week). Not valid for ESPN/Yahoo daily sports — use as_of_date there. Omit for the cur…
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_standings ~708

Get season standings and outcome snapshot; includes verified season-outcome fields when available. Returns team records, rankings, and points summaries. The rank field is a standings sort position (1 = best): on ESPN it is computed by Flaim from win percentage, with wins as the tie-breaker; on Sleeper it is computed by Flaim from wins, with points for as the tie-breaker; on Yahoo it is passed through from Yahoo's own standings API. It is NOT a verified postseason finish. For verified postseason outcome, use finalRank and championshipWon instead. Also returns seasonPhase (regular_season/playoffs_in_progress/season_complete), seasonComplete, and per-team outcome fields: finalRank, championshipWon, playoffOutcome, outcomeConfidence, madePlayoffs, playoffSeed. Outcome fields are null when not verifiable — do not infer championship from rank or team name. outcomeConfidence is 'explicit' when the platform reports final ranks, or 'derived' when the champion and runner-up were determined from the final winners-bracket matchup (ESPN historical seasons may omit final ranks); 'derived' only ever appears on ESPN — Yahoo always returns null here, and Sleeper returns 'explicit' for any completed season whose winners bracket names a champion, including when the finish came from the bracket rather than from reported placements; a tied championship game is resolved using the league's playoff tie rule (ESPN's default advances the higher seed). Note: playoffOutcome returns 'in_progress' on Sleeper for teams in active playoffs; ESPN and Yahoo return null for that state. ESPN may also include projected-rank fields. Yahoo and Sleeper leagues also return waiverPriority (the team's current waiver-claim priority, 1 = first — this is the live priority, NOT get_transactions' waiver_priority, which is the priority some past claim used) and faabBalance (remaining free-agent budget; 0 means spent out, not unknown; on Sleeper it already reflects FAAB traded between teams, so it can exceed the le…

NameTypeReqDescription
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform (e.g., "espn", "yahoo", "sleeper")
season_yearnumberyesSeason start year — use the season_year returned by get_user_session for this league; only pass an older year when the user explicitly asks about a past season. Basketball and hockey use the start ye…
sportstringyesSport type (e.g., "football", "baseball")
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_transactions ~817

Get recent league transactions including adds, drops, waivers, and completed trades. Use established session context (call get_user_session only if needed), then usually get_league_info so the model already knows the league's team names and owner/team mapping before summarizing activity. Each normalized transaction includes type, status, week (null on Yahoo, and on Sleeper rows that carry no week), and optional team_ids. ESPN and Sleeper rows always include date (YYYY-MM-DD) and timestamp. Yahoo rows include them once Yahoo stamps the transaction: a still-unstamped row is returned without date and timestamp only for type=waiver or type=pending_trade requests, and on every other Yahoo request it is left out and counted in dropped_invalid_timestamp_count. The response contains at most count rows, newest first; if the row count equals count, older transactions inside the window may be missing. Raise count up to 100 before claiming completeness. When presenting results, organize by time period (today, yesterday, this week, older) AND by team within each period so the user can see both when moves happened and what each team did. Week handling is platform-specific: ESPN week always means matchup period, including daily sports where one matchup spans several provider scoring periods; week 0 is ESPN preseason, and omitting week selects the current and previous matchup periods. Sleeper accepts positive matchup weeks starting at 1; omit week for its current and previous week. Yahoo uses a recent 14-day timestamp window and ignores explicit week, except that type=waiver and type=pending_trade return the authenticated user's own pending items with no timestamp window. ESPN serves rows from its structured transaction source (source mTransactions2) with FAAB bid amounts, directional trade_sides, and full trade-lifecycle and failed-bid coverage; trades missing directional detail are filled from the activity feed (source mTransactions2_with_activity_trade_details). If the structur…

NameTypeReqDescription
countnumberMaximum transactions to return (default: 25, max: 100)
league_idstringyesLeague ID (get from get_user_session)
platformstringyesFantasy platform (e.g., "espn", "yahoo", "sleeper")
season_yearnumberyesSeason start year — use the season_year returned by get_user_session for this league; only pass an older year when the user explicitly asks about a past season. Basketball and hockey use the start ye…
sportstringyesSport type (e.g., "football", "baseball")
typestringOptional transaction type filter. Sleeper supports add/drop/trade/waiver. Yahoo supports add/drop/trade plus waiver/pending_trade for the authenticated user's own pending items. ESPN supports every l…
weekintegerOptional public week selector. ESPN accepts matchup period 0 or later (0 = preseason), including baseball, basketball, and hockey; omit it for the current and previous matchup periods. Sleeper accept…
NameTypeReqDescription
dataobjectyesPlatform envelope. Field availability varies by platform (ESPN, Yahoo, Sleeper); absent fields are not provided by that platform.
successbooleanyes

No examples provided.

get_user_session ~396

Use this alone for user-specific connection, league, or account-status questions. For analysis, reuse successful session context already available in this chat instead of calling again. Do not call for Flaim capability, permission, or generic setup how-to questions, and do not call for generic coding, scraping, weather, travel, betting, sports news, or other requests that do not need connected league data. For selected-league analysis, call this only when no usable successful session result is available in this chat. Reuse its league IDs, teams, seasons, and defaults on ordinary follow-ups, including switching to another league already in allLeagues; do not repeat this call merely because a new user message arrived. Reload when the user confirms account, connection, league-list, or default changes, or when the needed session context is missing. A new chat needs its own session lookup. Follow the error guidance if a call fails. Session reuse does not replace fresh roster, score, or player reads when needed. For an explicit refresh request, call refresh_leagues first and then call this tool after success; call it again even if it ran earlier in the chat. Returns the user's full league landscape: allLeagues (all active leagues), defaultLeagues (per-sport defaults), and defaultLeague (populated only when a single league exists or defaultSport matches). For vague singular prompts, use defaultLeague when present; otherwise use the relevant sport entry in defaultLeagues. For explicit plural or comparative prompts (each, all, compare, across leagues/platforms), enumerate every matching league in allLeagues and call the target tool once per league. With session context established, call get_league_info for the selected active league before the requested league-specific data tool. Skip get_league_info only when answering from session data alone or branching to get_ancient_history. season_year always represents the start year of the season. Read-only.

Input schema present but exposes no named parameters.

NameTypeReqDescription
allLeaguesarrayyes
currentDatestringyes
currentSeasonsobjectyes
defaultLeagueyes
defaultLeaguesobjectyes
defaultSportstring|nullyes
instructionsstringyes
leaguesBySportobjectyes
successbooleanyes
timezonestringyes
totalLeaguesFoundnumberyes
warningsarray

No examples provided.

refresh_leagues ~156

Refresh connected fantasy leagues by asking Flaim to rediscover leagues through connected ESPN, Yahoo, and Sleeper accounts. Use only when the user explicitly asks to refresh or after the user presses the widget refresh button. This is non-destructive, but repeated refreshes can update Flaim registry timestamps and provider metadata; it does not change provider lineups or rosters, add or drop players, submit waiver claims or trades, or modify league settings. If this call succeeds, call get_user_session again to show the updated league list. If it fails, follow the error retry guidance and any retry_after value; do not retry in a loop.

NameTypeReqDescription
platformsarrayOptional platforms to refresh. Omit to refresh every connected platform.
NameTypeReqDescription
requestedPlatformsarray
resultsobjectPer-platform refresh outcome keyed by platform name
successbooleanyes

No examples provided.

Common questions

What is the Flaim Fantasy MCP server?

Flaim Fantasy is an MCP server listed in the public MCP registry as app.flaim/mcp. Read-only fantasy analysis for ESPN, Yahoo, and Sleeper leagues via MCP. This page covers its hosted endpoint (https://api.flaim.app/mcp).

Is the Flaim Fantasy MCP server safe to use?

Flaim Fantasy scores 80 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 Flaim Fantasy MCP server expose?

Flaim Fantasy exposes 11 tools: get_user_session, refresh_leagues, get_ancient_history, get_league_info, get_draft, and 6 more. Their descriptions and schemas cost roughly 5,936 tokens of context every time the server is loaded.

Does the Flaim Fantasy MCP server require authentication?

Yes. Flaim Fantasy asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Flaim Fantasy MCP server still maintained?

Flaim Fantasy is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.