Skip to main content
Glama
tlo1216

espn-fantasy-mcp

by tlo1216

Add Free Agent

add_free_agent

Add an unclaimed free agent to your ESPN fantasy roster, optionally dropping a player in the same transaction. Use for direct adds, not waiver claims.

Instructions

Add an unclaimed free agent (not a waiver-wire player — use waiver_claim for those), optionally dropping another player in the same move.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sportNoffl (football), fba (basketball), or flb (baseball). Defaults to ESPN_SPORT.ffl
seasonNoSeason year. Defaults to ESPN_SEASON.
dry_runNoDefault true: validates and reports what would be sent without sending it. Set false to actually execute (still a no-op if WRITES_ENABLED=false in .env).
team_idNo
league_idNoESPN league id. Defaults to ESPN_LEAGUE_ID.123456
add_player_idYes
drop_player_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
sentNo
dryRunYes
responseNo
wouldSendNo
verificationNo
blockedReasonNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already convey that this is a non-read-only, non-destructive operation, so the safety profile is covered. The description adds useful context about targeting unclaimed free agents and optionally dropping another player, but it does not go deeper into side effects or transaction behavior. The dry-run behavior is documented in the schema, so the description does not repeat it.

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 front-loaded sentence that states the action, the exception, the sibling tool to use instead, and the optional drop behavior. There is no filler or redundant restating of the tool name.

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 an output schema present and schema documentation for dry_run, sport, season, and league_id, the agent has most of what it needs. The description routes the agent to the correct sibling and clarifies add/drop semantics. The remaining gap is the ambiguous team_id parameter, but required add_player_id and defaults make invocation feasible.

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 57%, so the schema handles sport, season, dry_run, and league_id. The description helps clarify drop_player_id with 'optionally dropping another player,' and add_player_id is inferable from the tool's purpose. However, team_id remains undocumented in both schema and description, leaving an ambiguity for the agent.

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 names a specific action ('Add') and resource ('unclaimed free agent'), and explicitly distinguishes it from waiver-wire players by pointing to waiver_claim. It also discloses the optional drop behavior, which clearly differentiates it from sibling tools.

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

Usage Guidelines5/5

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

It explicitly states when NOT to use this tool ('not a waiver-wire player') and names the alternative ('use waiver_claim for those'). This gives the agent a clear decision rule without needing to inspect other tool definitions.

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