Skip to main content
Glama
i-am-david-weinstein

ESPN Fantasy MCP Server

ESPN Fantasy MCP Server

Tests PyPI Python License: MIT

MCP (Model Context Protocol) server providing access to ESPN Fantasy Baseball data, for use with Claude Code and other MCP clients.

Features

  • Read league settings, standings, and team information

  • View rosters with player details and lineup positions

  • Look up players by name with fuzzy matching

  • Browse and add free agents, submit waiver claims

  • Modify lineups

  • Propose, accept, decline, and cancel trades

Related MCP server: MLB V3 Scores MCP Server

Quick Start

1. Get ESPN Cookies

To access private leagues, you need ESPN authentication cookies:

  1. Log in to ESPN Fantasy Baseball

  2. Open browser DevTools → Application → Cookies → https://fantasy.espn.com

  3. Copy espn_s2 (long string) and SWID (format: {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX})

2. Add to Claude Code

claude mcp add --scope user --transport stdio espn-fantasy \
  --env ESPN_S2=your_espn_s2_cookie \
  --env ESPN_SWID={your_espn_swid_cookie} \
  --env ESPN_LEAGUE_ID=your_league_id \
  --env ESPN_TEAM_ID=your_team_id \
  --env ESPN_SEASON_YEAR=2026 \
  -- uvx espn-fantasy-mcp

Keep the curly braces in the SWID value. uvx handles installation automatically — no separate install step needed.

3. Verify

Restart Claude Code or run /mcp and confirm "espn-fantasy" appears in the server list. Then try: "Show me my fantasy baseball league settings"

Documentation

Local Development

git clone https://github.com/i-am-david-weinstein/espn-fantasy-mcp.git
cd espn-fantasy-mcp
pip install -e ".[dev]"
pytest

To use a local install with Claude Code, replace the uvx ... portion of the claude mcp add command with python3 -m espn_fantasy_mcp.

Contributing

Contributions welcome — open an issue or submit a pull request.

License

MIT

Acknowledgments

Available Tools

16 tools
accept_tradeA

Accept a pending trade offer from another team. Uses a confirmation pattern: first call (confirm=false) previews the acceptance, second call (confirm=true) executes it. You need the transaction ID from the trade proposal.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoIf false (default), returns a preview. If true, accepts the trade.
team_idNoYour team ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)
transaction_idNoTransaction ID of the trade proposal to accept
scoring_period_idNoScoring period for the transaction (defaults to current)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses the preview vs. execution behavior but does not describe what the preview returns, whether the action is reversible, or what side effects occur (e.g., player movement). Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with clear, front-loaded purpose. Efficient, though the first sentence could incorporate the pattern hint to reduce redundancy. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters and an output schema, the description adequately covers the core usage. It mentions the key parameter (transaction_id) and the two-step process. Could enhance by clarifying the preview output or default settings, but sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description reiterates the need for transaction_id and the confirm pattern, which is already in the schema. No additional semantic value beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'Accept a pending trade offer from another team', which is a specific verb+resource. It distinguishes from sibling tools like decline_trade, propose_trade, cancel_trade by focusing on acceptance and the confirmation pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains the two-step confirmation pattern (preview then execute) and that you need a transaction_id. It implies when to use (have a pending trade) but does not explicitly state when not to use or alternatives like cancel_trade.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_free_agentA

Add a free agent to your team, optionally dropping a player. Uses a confirmation pattern: first call (confirm=false) previews the changes, second call (confirm=true) executes them. If your roster is full, you must specify a player to drop.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoIf false (default), returns a preview of transaction. If true, executes the add/drop transaction.
team_idNoTeam ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)
add_player_idNoESPN player ID to add
drop_player_idNoESPN player ID to drop (required if roster is full)
scoring_period_idNoScoring period (week) for transaction (defaults to current period)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully carries the burden of behavioral disclosure. It discloses the destructive nature (adding/dropping players) and the two-step confirmation pattern (preview then execute). It also explains the condition when drop is mandatory. It does not mention permissions or reversibility, which are minor gaps given the clarity of the confirm pattern.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences (55 words), all essential. It front-loads the purpose, then explains the confirmation pattern, then addresses the roster condition. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, confirmation pattern) and presence of an output schema (not shown), the description covers core functionality, flow, and a key condition. It does not mention error handling or rate limits, but with no annotations and a good schema, it provides sufficient context for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining the confirm pattern (preview vs execute) and the condition for drop_player_id (required if roster full). It also implicitly clarifies that add_player_id and drop_player_id are ESPN player IDs, which is context not explicitly in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Add a free agent to your team, optionally dropping a player.' It distinguishes from siblings like drop_player (which only drops) and claim_waiver (different process) by explicitly mentioning the optional drop and confirmation pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool: for adding a free agent with optional drop, and specifies the two-step confirmation pattern. It also notes the condition when drop_player_id is required (roster full). However, it does not explicitly contrast with sibling tools like drop_player or claim_waiver, so usage context is clear but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_tradeA

Cancel a pending trade proposal you sent. Uses a confirmation pattern: first call (confirm=false) previews the cancellation, second call (confirm=true) executes it. You need the transaction ID from the original trade proposal.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoIf false (default), returns a preview. If true, cancels the trade proposal.
team_idNoYour team ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)
transaction_idNoTransaction ID from the original trade proposal
scoring_period_idNoScoring period for the transaction (defaults to current)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior; explains preview/execute mechanism but doesn't mention destructive nature or rate limits. Adequate but not rich beyond what's needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, confirmation pattern, and required transaction ID; output schema exists for return values. Minor omission: doesn't mention that team_id may be needed, but it's optional in schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions; description adds confirmation pattern context but doesn't significantly enhance parameter meaning beyond schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States 'Cancel a pending trade proposal you sent' with specific verb and resource; clearly distinguishable from sibling tools like propose_trade, accept_trade, decline_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes confirmation pattern (preview then execute) and mentions need for transaction ID; provides clear context, though no explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_waiverA

Cancel a pending waiver claim. Uses a confirmation pattern: first call (confirm=false) previews the cancellation, second call (confirm=true) executes it. You need the transaction ID from the original waiver claim to cancel it.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoIf false (default), returns a preview of cancellation. If true, executes the waiver claim cancellation.
team_idNoTeam ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)
transaction_idNoTransaction ID from the original waiver claim response
scoring_period_idNoScoring period (week) for transaction (defaults to current period)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses the two-step confirmation pattern to prevent accidental cancellation. It does not detail permissions or irreversible effects, but the preview step mitigates risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three sentences: first states purpose, then explains usage pattern, then mentions prerequisite. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, usage pattern, and required inputs. With an output schema present, return values are handled separately. It sufficiently prepares an agent for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds value beyond the 100% schema coverage by explaining the role of confirm and emphasizing the need for transaction_id. This contextualizes the parameters effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Cancel a pending waiver claim' with a specific verb and resource. It distinguishes from siblings like claim_waiver and cancel_trade by focusing on waiver claims.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the confirmation pattern and the prerequisite of having a transaction ID. It provides clear context on how to use the tool but does not explicitly exclude alternatives or state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

claim_waiverA

Submit a waiver claim with optional FAAB bid. Uses a confirmation pattern: first call (confirm=false) previews the changes, second call (confirm=true) executes them. Waiver claims are processed during waiver periods and have a pending status until processed. If your roster is full, you must specify a player to drop.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoIf false (default), returns a preview of waiver claim. If true, executes the waiver claim.
team_idNoTeam ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
bid_amountNoFAAB bid amount (defaults to 0 for free waiver claim)
season_yearNoSeason year (defaults to current year)
add_player_idNoESPN player ID to claim off waivers
drop_player_idNoESPN player ID to drop (required if roster is full)
scoring_period_idNoScoring period (week) for transaction (defaults to current period)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the confirmation pattern, pending status, processing during waiver periods, and the requirement to drop a player if roster is full. It does not mention idempotency, rate limits, or error conditions, but covers key behavioral aspects adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the main action. Every sentence serves a purpose: action, confirmation pattern, processing details, roster condition. No redundancy or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no annotations, and an output schema, the description covers key behaviors (confirmation, pending, roster full). It does not explain return values or error conditions, but is sufficiently complete for a waiver claim tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds context beyond schema by explaining the confirmation pattern, default bid of 0, and when drop_player_id is required. This provides meaningful guidance for parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description begins with 'Submit a waiver claim with optional FAAB bid', providing a specific verb+resource. It clearly differentiates from sibling tools like add_free_agent (immediate vs. waiver processing) and drop_player (drop only) by explaining the waiver process and pending status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains when to use the tool (waiver claims), the confirmation pattern (preview then execute), and a condition (roster full requires drop). It implicitly distinguishes from add_free_agent by mentioning waiver periods, but does not explicitly state when not to use it or compare to all alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decline_tradeA

Decline a trade offer from another team. Uses a confirmation pattern: first call (confirm=false) previews the decline, second call (confirm=true) executes it.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoOptional reason for declining
confirmNoIf false (default), returns a preview. If true, declines the trade.
team_idNoYour team ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)
transaction_idNoTransaction ID of the trade proposal to decline
scoring_period_idNoScoring period for the transaction (defaults to current)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description effectively discloses the two-step confirmation behavior. Could be improved by noting that the action is irreversible after confirmation, but the preview pattern is well explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences covering purpose and usage pattern without any fluff. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and parameters are well-documented in the schema, the description is sufficiently complete. The confirmation pattern is a key behavioral detail not captured elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters with descriptions (100% coverage), so the description adds no additional meaning beyond confirming the confirm parameter's role. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly specifies the action (decline) and resource (trade offer). Distinguishes from siblings like accept_trade and cancel_trade by focusing on declining incoming offers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the confirmation pattern (preview vs execute) and that it's for trade offers from another team. Does not explicitly list when not to use or name siblings as alternatives, but the context provides sufficient clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drop_playerA

Drop a player from your team. Uses a confirmation pattern: first call (confirm=false) previews the changes, second call (confirm=true) executes them.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoIf false (default), returns a preview of transaction. If true, executes the drop transaction.
team_idNoTeam ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
player_idNoESPN player ID to drop
season_yearNoSeason year (defaults to current year)
scoring_period_idNoScoring period (week) for transaction (defaults to current period)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It reveals the confirmation pattern and that the tool is a mutation. It does not detail side effects (e.g., whether the player becomes a free agent or goes to waivers) but the preview mechanism adds safety context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficient and front-loaded with the core purpose. Every word is necessary and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 optional parameters and an output schema, the description adequately covers the key behavior (confirmation pattern). It could mention that the preview response structure is provided by the output schema, but the current text is sufficient for understanding the workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add extra parameter semantics beyond what the schema provides (e.g., confirm, team_id, etc.). It does not explain how parameters interact beyond the confirmation flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool drops a player from the team and distinguishes the confirmation pattern. The verb 'drop' and resource 'player from your team' are specific, differentiating it from sibling tools like add_free_agent or claim_waiver.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the tool uses a two-step confirmation pattern (preview then execute). While it does not explicitly list when not to use or alternatives, the guidance for using confirm=false first and confirm=true second is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_free_agentsA

Get list of available free agents on the waiver wire.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoNumber of players to return (default: 50)
positionNoFilter by position (C, 1B, 2B, SS, 3B, OF, SP, RP, P)
league_idNoESPN League ID
season_yearNoSeason year (defaults to current year)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only states 'get list' without mentioning pagination, ordering, or any other behavior. This leaves the agent uncertain about what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no wasted words. However, some additional context could be provided without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with an output schema (presumably documenting return structure), the description is adequate. It covers the core functionality but lacks details like default sorting or behavior if no parameters are provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters are described in the input schema (100% coverage). The description adds no extra meaning beyond what the schema already provides, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a list of free agents on the waiver wire, using a specific verb and resource. It effectively distinguishes from sibling tools like add_free_agent or drop_player.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. Usage is implied as 'when you need to see available free agents', but no context or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_league_settingsB

Get league configuration including scoring categories, roster settings, and league rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
league_idNoESPN League ID (found in league URL)
season_yearNoSeason year (defaults to current year if not specified)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description must carry behavioral transparency. It only states the tool gets configuration, but discloses no behavioral traits like idempotency, rate limits, or side effects. Since it is a read operation, these are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with verb front-loaded. No unnecessary words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has output schema, so return values need not be described. Two parameters with defaults and clear schema descriptions. However, without annotations, behavioral cues like idempotency or read-only nature would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so schema already documents league_id and season_year. Description adds no additional meaning to parameters beyond summarizing output. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Get' and resource 'league configuration', listing examples like scoring categories, roster settings, and league rules. It clearly conveys purpose and distinguishes from sibling tools like get_team or get_standings, though does not explicitly differentiate from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage context by stating it retrieves league settings, but does not provide explicit when-to-use, when-not-to-use, or alternatives. For example, it could mention that this is for overall league info rather than team-specific data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pending_transactionsA

Get waiver claims and trade proposals for a team, including all statuses (PENDING, EXECUTED, CANCELED). Each entry includes its status field. For trades, returns both sent and received proposals.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoTeam ID (1-based index). If omitted, returns all pending transactions league-wide.
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. States return includes all statuses and trade directions, but does not explicitly state read-only nature or authentication requirements. Adequate for a non-destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no unnecessary words. Each sentence serves a purpose: first defines scope and content, second clarifies trade specifics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present and only 3 optional params, description covers what is returned (waivers, trades, statuses, both sides). Sufficient for agent to understand usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 3 parameters with descriptions, and description adds context: team_id omitted returns league-wide, league_id defaults to configured league, season_year defaults to current year. Adds value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description specifies verb 'get', resource 'pending transactions' (waiver claims and trade proposals), and includes status categories. Clearly distinguishes from action-oriented siblings like claim_waiver, propose_trade, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Purpose is clear for viewing pending transactions, but no explicit when-to-use vs alternatives. Implicit differentiation from sibling tools that perform actions (add, drop, propose). Could mention that to see detailed info, but not required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_player_infoA

Look up a player by name and get detailed information including stats, position, team, and roster status. Supports fuzzy matching for misspelled names.

ParametersJSON Schema
NameRequiredDescriptionDefault
league_idNoESPN League ID
player_nameYesPlayer's full name (e.g., 'Shohei Ohtani', 'Aaron Judge')
season_yearNoSeason year (defaults to current year)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description describes the read behavior and fuzzy matching. It is clear that no modifications occur, but explicitly stating read-only would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the action and key details. Every sentence adds necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and three parameters are fully described, the description sufficiently covers the tool's purpose and behavior. It mentions fuzzy matching and the type of data returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% parameter descriptions. The description adds value by noting fuzzy matching, which is not in the schema. This enhances understanding beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool looks up a player by name and returns detailed information (stats, position, team, roster status). It also highlights fuzzy matching, distinguishing it from sibling tools that query teams or rosters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies using the tool when you have a player name and need details, but it does not explicitly specify when to use this tool versus alternatives like get_roster or get_free_agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rosterB

Get current roster for a team with player details and lineup positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoTeam ID (1-based index)
league_idNoESPN League ID
season_yearNoSeason year (defaults to current year)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description does not disclose that this is a read-only, non-destructive operation. Minimal behavioral context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Efficiently conveys the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple read tool with output schema. But lacks mention of read-only nature or any behavioral cautions. Could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for each parameter. Tool description adds no extra meaning beyond what is already in the schema, so baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it gets current roster with player details and lineup positions. It distinguishes from siblings like modify_lineup and get_team, but doesn't explicitly differentiate from get_free_agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_team for team info, modify_lineup for lineup changes). Does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_standingsA

Get current league standings with team records and rankings.

ParametersJSON Schema
NameRequiredDescriptionDefault
league_idNoESPN League ID
season_yearNoSeason year (defaults to current year)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention that the operation is read-only, safe, or any performance implications. The phrase 'current' hints at default behavior but lacks explicit safety cues.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It front-loads the core purpose and includes relevant details about the output (records and rankings).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description adequately informs about the return content (team records and rankings). No required parameters simplifies usage. It is complete for a straightforward list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters documented. The description adds the word 'current', which implies the season_year defaults to the current year, providing marginal value beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'current league standings', specifying that it includes 'team records and rankings'. This distinguishes it from sibling tools like get_team (individual team info) and get_league_settings (league configuration).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing standings but lacks explicit guidance on when to use this tool versus alternatives like get_team or get_league_settings. No exclusions or context about prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_teamB

Get detailed information about a specific team.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoTeam ID (1-based index)
league_idNoESPN League ID
season_yearNoSeason year (defaults to current year)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It only says 'detailed information' without specifying what that includes, authentication needs, or rate limits. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundancy. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, explanation of return values is not required. However, the description could hint at the breadth of information returned (e.g., roster, standings) to better set expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description adds no additional meaning beyond the schema, so baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'get' and the resource 'team' with specification 'detailed information'. It distinguishes from sibling tools like get_roster and get_standings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites or context, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

modify_lineupA

Modify team lineup by moving players between lineup slots. Uses a confirmation pattern: first call (confirm=false) previews the changes, second call (confirm=true) executes them. Can move a single player or swap multiple players in one transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
movesNoList of lineup moves to make, each with player_id, from_slot, and to_slot
confirmNoIf false (default), returns a preview of changes. If true, executes the lineup changes.
team_idNoTeam ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)
scoring_period_idNoScoring period (week) for changes (defaults to current period)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses the two-step confirmation process (preview then execute) and transaction capability, but does not mention potential side effects, restrictions (e.g., roster lock times, player eligibility), or reversibility, which would enhance transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the verb 'Modify', and each sentence delivers a distinct piece of information: purpose, confirmation pattern, and capability. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 optional parameters and a two-phase action, the description explains core behavior but lacks details on the preview output, possible errors, and explicit usage constraints (e.g., when roster is locked). Given the output schema exists, full return documentation is not required, but more context on prerequisites would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context that single or multiple moves can be handled in one transaction, reinforcing the moves parameter behavior and explaining the confirm parameter's role, providing value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool modifies team lineup by moving players between slots and distinguishes from sibling tools like add_free_agent or drop_player which handle roster moves, not lineup configuration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the confirmation pattern and ability to move single or multiple players, but does not explicitly state when not to use this tool compared to alternatives like add_free_agent or drop_player, though the context of lineup changes is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_tradeA

Propose a trade with another team. Uses a confirmation pattern: first call (confirm=false) previews the trade, second call (confirm=true) sends it. Returns a transaction ID that can be used to cancel the proposal.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoOptional message to include with the trade offer
confirmNoIf false (default), returns a preview of the trade. If true, sends the trade proposal.
team_idNoYour team ID (1-based index)
league_idNoESPN League ID (defaults to configured league)
season_yearNoSeason year (defaults to current year)
expiration_daysNoDays until the trade offer expires (default: 7)
send_player_idsNoESPN player IDs you are sending to the other team
receiving_team_idNoThe other team's ID (1-based index)
scoring_period_idNoScoring period for the transaction (defaults to current)
receive_player_idsNoESPN player IDs you want to receive from the other team

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the two-step behavior (preview vs send) and states that it returns a transaction ID for cancellation. Without annotations, this provides essential behavioral context beyond the input schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no extraneous text. Front-loaded with main purpose, followed by the essential workflow detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description adequately covers the high-level workflow and key return value (transaction ID). For a 10-parameter tool with no required params, this is sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning by linking the confirm parameter to the overall workflow (preview vs send) and noting the returned transaction ID. This adds value beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool proposes a trade with another team, with a unique confirmation pattern (preview then send). Distinguishes from siblings like accept_trade, decline_trade, and cancel_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains the confirmation pattern for using the tool: first call with confirm=false for preview, second call with confirm=true to send. Implies the workflow but does not exclude using other trade-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, covering different aspects of fantasy sports management. There is no ambiguity between similar tools like add_free_agent and claim_waiver, as they are differentiated by immediate vs. pending actions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_team, modify_lineup, propose_trade). The naming is predictable and intuitive.

Tool Count5/5

With 16 tools, the server is well-scoped for a fantasy sports platform. The count is sufficient to cover essential operations without being excessive.

Completeness5/5

The tool set provides comprehensive CRUD operations for team, roster, waivers, and trades. All core fantasy sports actions are covered, including lineup modifications, free agent management, waiver claims, and trade proposals.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables interaction with MLB (Major League Baseball) v3 projections through the SportsData.io API, allowing access to baseball statistics and projections through natural language.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP Server that enables interaction with MLB scores and statistics via the SportsData.io MLB V3 Scores API, allowing users to access baseball data through natural language queries.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connect ESPN & Yahoo fantasy leagues to AI assistants via MCP. Read-only tools for rosters, standings, matchups, free agents, and league info across football and baseball.
    17
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Fantrax fantasy baseball that provides tools to read league info, rosters, standings, free agents, and related data.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/i-am-david-weinstein/espn-fantasy-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server