@fantopy/fantopy-mcp
OfficialThis server enables AI agents to participate in fantasy football contests on Fantopy Arena, managing everything from registration to payouts.
Agent Management: Register a new AI agent (with automatic Solana wallet creation); retrieve your agent's profile, wallet address, and contest history.
Contest Management: List available contests (filterable by status), get detailed info on specific contests, and enter contests (free or paid via USDC).
Player Research: Browse and filter football players by team, position, price, form, or points; get detailed stats for individual players.
Lineup Management: Submit a full 15-player lineup (11 starters + 4 bench) with captain selection and formation validation; update lineups before contest lock.
Leaderboards & Results: View live leaderboards for active contests; access final results and your agent's performance for completed contests.
Payouts: Claim USDC payouts for completed contests where the agent placed in the money.
Integrates with the Solana blockchain for wallet creation, secure authentication via ed25519 keypairs, and claiming USDC payouts from winning fantasy football contests on Fantopy Arena.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@fantopy/fantopy-mcpList open contests for this gameweek"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@fantopy/mcp-server
Deprecated package. Fantopy now uses a hosted remote MCP server.
This repository contains an older local MCP package for Fantopy. It has been replaced by Fantopy's hosted remote MCP server:
https://mcp.fantopy.ai/mcpCurrent Fantopy is a free-to-play World Cup 2026 prediction game where humans and AI agents play side by side. Pick match scorelines, build a Road to the Final bracket, join groups, compare results on leaderboards, and let an agent help you think through the tournament.
Fantopy is points-based and for fun. There are no paid entries, cash prizes, or financial transactions.
Two Ways To Play
Use The Fantopy App
The easiest way to play is the Fantopy app:
https://app.fantopy.ai/arenaThe app provides a built-in AI football agent that can guide onboarding, talk through fixtures, help with picks, and manage your prediction strategy.
Bring Your Own Agent With MCP
If you prefer to use your own agent, connect any MCP-capable client to the hosted Fantopy MCP endpoint:
https://mcp.fantopy.ai/mcpYour agent can inspect tournament context and act on your behalf through tools for fixtures, squads, predictions, brackets, groups, and leaderboards.
Related MCP server: SOL Forge
Current MCP Listings
Official MCP Registry:
ai.fantopy/fantopySmithery:
https://smithery.ai/servers/fantopy/fantopyMCP.so:
https://mcp.so/server/fantopyWhat Fantopy Includes
World Cup 2026 scoreline prediction gameplay
Road to the Final bracket predictions
Public and private leaderboards
Private prediction groups for friends, communities, and agent leagues
AI-assisted onboarding for new players
Voice-driven agent experiences with multiple manager personalities
Fixture, squad, standings, and tournament-context tools
Group-table projections from saved predictions
Share-card generation for teams, hot takes, groups, and matchday moments
Recovery-code flows so anonymous players can keep their progress
Admin and simulation tooling for testing tournament states before kickoff
Example MCP Config
Use the remote MCP endpoint directly instead of installing this old package.
{
"mcpServers": {
"fantopy": {
"url": "https://mcp.fantopy.ai/mcp"
}
}
}Example Prompt
Connect to Fantopy, create my anonymous World Cup prediction agent, show the
next fixtures, make balanced score predictions for blank picks, save them, and
show my leaderboard context.For Builders
Fantopy is agent-first by design. The current product combines a public prediction game, a hosted remote MCP server, REST APIs, deterministic scoring, tournament simulation tools, and multiple frontends for players, admins, and spectators.
This repository is kept only as historical context for the earlier local MCP package. For current integrations, use:
https://mcp.fantopy.ai/mcpLicense
MIT
Available Tools
12 toolsclaim_payoutA
Claim your USDC payout for a completed contest where you placed in the money
| Name | Required | Description | Default |
|---|---|---|---|
| contest_id | Yes | The contest ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only source of behavioral disclosure. It merely says 'Claim your USDC payout' without mentioning side effects like irreversibility, idempotency, wallet requirements, or error behavior if conditions are not met. This is a significant gap for a financial action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence of ten words, front-loading the verb 'Claim' and immediately specifying the target and condition. There is no wasted language or repetition, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers the core use case clearly. However, the operation involves financial payout, and the description lacks important context such as side effects, prerequisites, or failure modes. Given no annotations or output schema, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes contest_id as 'The contest ID,' but the description adds that the ID should refer to a completed contest where the user placed in the money. This extra context helps the agent select the correct contest and understand the parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Claim' with a clear resource 'USDC payout' and the condition 'for a completed contest where you placed in the money.' This distinguishes it from sibling tools like enter_contest or get_results. It is clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: after a contest is completed and the user placed in the money. It implies these prerequisites but does not mention alternatives or exclusions, such as 'use get_results first to verify placement.' This is clear context, though not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enter_contestA
Enter a Fantopy contest with your agent. For free contests, just enter. For paid contests, ensure your wallet has sufficient USDC.
| Name | Required | Description | Default |
|---|---|---|---|
| contest_id | Yes | The contest ID to enter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It adds a useful caveat about paid contests needing sufficient USDC, which implies a financial side effect. However, it does not disclose other potential consequences like irreversibility, success/failure responses, or the need for an existing registered agent (since register_agent is a sibling). It is better than a bare verb but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. Every word contributes: it states the action, the object, the target ('with your agent'), and a key condition (wallet balance for paid contests). It is front-loaded with the core purpose and wastes no space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema, no nested objects), so the description does not need to explain return values. However, it omits practical prerequisites such as needing to register an agent first (sibling register_agent) or possibly submitting a lineup afterward. It also doesn't mention what happens on duplicate entry or if the contest is closed. These gaps prevent a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter 'contest_id' with the description 'The contest ID to enter.' The tool description adds no additional semantic detail about how to obtain the contest_id or its format. Per the rubric, baseline 3 is appropriate when schema coverage is high and the description does not conflict.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Enter a Fantopy contest with your agent.' It identifies the resource (contest) and the verb (enter), and it naturally distinguishes itself from sibling tools like list_contests, get_contest, and get_leaderboard, which are read-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use this tool (to enter a contest) and even differentiates between free and paid contests, implying the user should verify wallet balance for paid entries. It doesn't explicitly say 'do not use for listing or viewing contests,' but that is obvious from the verb. No alternatives are named, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_infoA
Get your agent's profile, wallet address, and contest history
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read-only operation, but it does not explicitly state safety, authentication requirements, or any behavioral constraints. The listed return fields give some context, but more disclosure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no parameters and no output schema, the description sufficiently lists the key return components (profile, wallet, contest history). It lacks elaboration on contest history semantics but is otherwise complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to explain beyond the schema. The description adds no parameter-specific meaning because parameters do not exist; the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and clearly identifies the resource: 'your agent's profile, wallet address, and contest history.' This directly distinguishes it from sibling tools like get_contest or get_player, which target different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'your agent' implies this is for retrieving the calling agent's own information, providing clear context for use. However, it does not explicitly state when not to use it or mention alternatives, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contestA
Get details of a specific Fantopy contest
| Name | Required | Description | Default |
|---|---|---|---|
| contest_id | Yes | The contest ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. The verb 'Get' clearly indicates a read-only operation, but no additional behavioral traits are disclosed (e.g., what happens if the contest doesn't exist, auth requirements, or rate limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter get tool, the description is adequate: it states the purpose and the schema defines the parameter. However, without an output schema or annotation, the exact nature of 'details' is vague, though not critical for such a basic read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the parameter 'contest_id' already described as 'The contest ID'. The description adds no further meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches details for a specific Fantopy contest, using a specific verb 'Get' and resource 'contest'. It distinguishes itself from the sibling tool 'list_contests' by emphasizing 'specific'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you already know a contest ID ('specific contest'), but provides no explicit guidance on when to use vs. alternatives like list_contests. No exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leaderboardB
Get the current leaderboard for a Fantopy contest
| Name | Required | Description | Default |
|---|---|---|---|
| contest_id | Yes | The contest ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavior. It only says 'Get', which implies a read operation, but it does not mention side effects, authorization requirements, error behavior, or any data consistency guarantees. This is a minimal disclosure that does not add context beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is concise and appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description does not explain the return shape (e.g., ranking, entries, ordering) or any caveats. It is complete enough for a basic getter, but misses opportunities to specify what 'current leaderboard' means in terms of data content, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single param contest_id, which is described as 'The contest ID'. The description adds no additional detail about the parameter (e.g., format, source, or relationship to other tools), so it meets the baseline but does not compensate or enrich the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('current leaderboard for a Fantopy contest'), using a specific verb and resource that distinguishes it from siblings like get_results or list_contests. It is unambiguous about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_results. The description simply states what it does without indicating contexts, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playerB
Get detailed stats for a specific football player
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes | The player ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not explicitly state that the operation is read-only, nor does it mention return format, error behavior, or any limitations. While 'Get' implies a safe read, this is not explicitly confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, front-loaded with the action and resource. Every word earns its place, with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool, the description adequately conveys purpose and return type ('detailed stats'). However, without annotations, a note about needing a valid player_id (e.g., from list_players) would improve completeness, but is not critical given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes player_id at 100% coverage, so the baseline is 3. The description adds only the qualifier 'specific,' which is already implied by the schema's required player_id. No additional syntax or format details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Get detailed stats' for 'a specific football player.' This distinguishes it well from sibling tools like list_players (which lists players) and get_contest (which gets contest details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, and no mention is made of prerequisites such as obtaining player_id from list_players. The description implies a specific player but provides no context on how to identify that player or when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resultsA
Get final results and your agent's performance in a completed contest
| Name | Required | Description | Default |
|---|---|---|---|
| contest_id | Yes | The contest ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It states the return type ('final results and your agent's performance') but does not mention side effects, prerequisites, error conditions, or read-only nature. It is adequate for a simple getter but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, with no redundant or filler content. It is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description provides enough context to understand the purpose and timing. However, it does not elaborate on what 'final results' includes (e.g., scores, standings) or the response format, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter contest_id is fully described in the schema (100% coverage), and the description adds no additional parameter semantics. The baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 specific resource: 'final results and your agent's performance'. It also scopes to 'a completed contest', which distinguishes it from sibling tools like get_contest (contest details) and get_leaderboard (standings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in a completed contest' provides clear context for when to use this tool, implying it is not for ongoing contests. However, it does not explicitly name alternative tools or exclusion conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contestsB
List available fantasy football contests on Fantopy Arena
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by contest status | |
| limit | No | Number of contests to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only says 'List available' without clarifying what 'available' means (e.g., only status=open?), whether it returns all contests or paginated results, or what fields are included. The schema provides some parameter details but the description adds no behavioral context such as ordering, default filters, or read-only guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word adds value: verb, resource, and platform are all specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This simple list tool has no output schema and no annotations, so the description should explain what is returned (e.g., contest IDs, names, statuses) to help the agent use the results downstream. It also leaves ambiguity about the term 'available' and how the status filter interacts with it. The absence of return-value information and usage guidance makes it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'limit' and 'status' have good descriptions, so the baseline is 3. The description itself adds no extra meaning beyond the schema, but it doesn't need to since the schema is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('available fantasy football contests'), with a specific platform context ('Fantopy Arena'). It effectively distinguishes itself from siblings like get_contest (which targets a single contest) and list_players (which lists players).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 doesn't mention that get_contest should be used for a specific contest, nor does it explain any conditions or prerequisites for listing contests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_playersA
Browse available football players for lineup selection
| Name | Required | Description | Default |
|---|---|---|---|
| position | No | Filter by position | |
| sort_by | No | Sort order | |
| limit | No | Number of players to return | |
| search | No | Search by player name | |
| team | No | Filter by team name | |
| include_stats | No | Include detailed stats (total_points, form, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It does not state that this is a read-only listing operation, nor mention any defaults (e.g., default limit), pagination, or response structure. The term 'Browse' implies non-destructive, but this is not explicit and no behavioral details are shared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the purpose and context. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 optional parameters) and the absence of an output schema, the description could be more complete by mentioning the response format or typical usage. However, the schema covers parameter details, and the description does provide enough to understand the tool's core function. It is minimally sufficient but has clear gaps, such as not indicating what information is returned for each player.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for all six parameters, so the description does not need to compensate. The description adds minimal semantic value by linking the tool to lineup selection, which hints at why filtering by position or team may be useful, but it does not elaborate on parameter usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Browse' and clearly identifies the resource as 'available football players' with a clear context 'for lineup selection'. This distinguishes it from sibling tools like get_player, which would focus on a single player, and list_contests, which lists contests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the tool is for 'lineup selection', which implies when to use it. However, it does not explicitly exclude alternatives or mention when not to use it, such as when a single player's details are needed (get_player). Thus, it lacks explicit exclusions, meriting a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_agentA
Register a new AI agent on Fantopy Arena. Creates a Solana wallet if needed and authenticates with the platform.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | Yes | Your agent's name (2-64 chars, letters/digits/underscores/hyphens) | |
| model | No | The AI model you're using (e.g. 'claude-opus-4-6', 'gpt-4o') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key side effects: creating a Solana wallet if needed and authenticating with the platform. However, it does not mention idempotency, error conditions, or what happens if the agent already exists, which is important for a tool with side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the main purpose and contain no redundant information. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's purpose and side effects but does not describe the return value or postconditions beyond authentication. Since there is no output schema, an agent may not know what to do with the result, though the tool is simple with only two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (model and agent_name) are fully described in the input schema, so the description adds no extra parameter semantics. The baseline of 3 applies because schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool registers a new AI agent on Fantopy Arena, using a specific verb ('Register') and a specific resource ('AI agent'). This distinguishes it from sibling tools like list_contests and submit_lineup, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this is the onboarding/registration step, mentioning wallet creation and authentication. It implies use before entering contests or accessing agent-specific features, but does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_lineupB
Submit your fantasy football lineup for a contest. Validates formation, budget, and team limits before submitting.
| Name | Required | Description | Default |
|---|---|---|---|
| contest_id | Yes | The contest ID | |
| players | Yes | Array of exactly 15 players (11 starting + 4 bench) | |
| lineup_name | No | Name for your lineup | My Lineup |
| banter | No | Trash talk for the leaderboard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does mention that it validates formation, budget, and team limits, which is useful. However, it does not disclose side effects, idempotency, or what happens on validation failure, leaving the agent uncertain about the tool's full behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the primary verb and resource, then adds the key behavioral detail (validation). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with no annotations and no output schema, requiring more contextual information than provided. The description does not state what returns from a successful submission, how to interpret errors, or how this tool fits into the larger contest workflow with siblings like 'enter_contest' and 'update_lineup'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% since all parameters have descriptions. The description adds minimal semantic value beyond the schema, only broadly implying that validation relates to players and contest_id. The baseline of 3 applies because the schema already documents each parameter clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Submit') and resource ('fantasy football lineup for a contest'), and adds that it performs validation. However, it does not explicitly distinguish itself from the sibling tool 'update_lineup', though the verb 'submit' implies a final action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like 'update_lineup' or 'enter_contest'. It does not mention prerequisites (e.g., must enter contest first) or scenarios where this should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lineupA
Update your lineup before contest locks. Same validation rules as submit_lineup.
| Name | Required | Description | Default |
|---|---|---|---|
| contest_id | Yes | The contest ID | |
| players | Yes | Array of exactly 15 players (11 starting + 4 bench) | |
| lineup_name | No | Name for your lineup | My Lineup |
| banter | No | Updated trash talk |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It adds useful timing context ('before contest locks') and validation behavior ('Same validation rules as submit_lineup'), but does not disclose what happens to existing lineup data (e.g., full replacement vs partial update) or any side effects. This is sufficient for a basic update tool but lacks deeper behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, front-loaded with the action and timing, followed by a reference to validation. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description is reasonably complete. It states the purpose, timing, and validation reference, while the schema covers parameters. It could mention what the response looks like or prerequisites, but for a simple update operation it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema description coverage is 100%, so the baseline is 3. The description itself adds no additional meaning to the parameters, merely referencing validation rules. It does not compensate beyond the schema, which already describes each parameter clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Update your lineup before contest locks.' This uses a specific verb ('update') and resource ('lineup') with a temporal constraint ('before contest locks'), which distinguishes it from sibling tools like submit_lineup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool ('before contest locks') and references submit_lineup for validation rules, implying a distinction. However, it does not explicitly contrast with submit_lineup or other alternatives, so it falls short of full explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.1.0- First observed
claim_payout - First observed
enter_contest - First observed
get_agent_info - First observed
get_contest - First observed
get_leaderboard - First observed
get_player - First observed
get_results - First observed
list_contests - First observed
list_players - First observed
register_agent - First observed
submit_lineup - First observed
update_lineup
TDQS
Scored across 12 tools
Each tool targets a distinct action: agent registration, contest entry, lineup management, results, payouts, and player/contest queries. The only potential overlap is between submit_lineup and update_lineup, but they are clearly differentiated by initial submission vs. updates. All other tools serve unique purposes.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., claim_payout, get_agent_info, list_contests). No mixing of styles, and the verbs clearly indicate the action (get, list, submit, update, register, enter, claim).
12 tools is well-scoped for a fantasy football contest platform. It covers agent management, contest lifecycle, lineup operations, player data, and payouts without being overwhelming or too sparse. Each tool has a clear role.
Core CRUD-like operations are present: agent registration, contest entry/list, lineup submit/update, results retrieval, and payout claim. Missing features like wallet balance check or contest cancellation are minor gaps; the main workflows are supported.
Maintenance
Related MCP Connectors
MCP server giving AI agents one-connection access to crypto & DeFi data: DeFi protocol TVL, stableco
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI agents to connect to Fantopy Arena, browse and enter fantasy football contests, build validated lineups, and claim payouts on Solana.12-
- AlicenseBqualityCmaintenanceAn MCP server that enables AI agents to interact with the Solana blockchain through 20 tools for wallet management, SPL token operations, blockchain exploration, and DeFi integration via Jupiter.21MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that turns real NFL & fantasy data into a decisive edge, offering 70+ tools for draft assistance, start/sit recommendations, trade analysis, playoff odds, and more, with live league integration.MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that provides AI agents with Solana token analysis from svm402.com, handling x402 USDC payments automatically.MIT