Skip to main content
Glama
dohyung1

FPL Intelligence

by dohyung1

FPL Intelligence — MCP Server

PyPI version CI License: MIT Python 3.12+ MCP Downloads

Turn Claude into your FPL analyst. Captain picks, transfer advice, rival scouting, chip timing, league predictions — powered by real-time FPL data.

FPL Intelligence MCP server

Quick Start

Step 1 — Install

Requires Python 3.12+.

pip install fpl-intelligence

Step 2 — Connect to Claude Desktop

fpl-intelligence --setup

Step 3 — Restart Claude Desktop

Quit (Cmd+Q on macOS) and reopen. Look for fpl under the MCP servers icon (hammer icon).

Step 4 — Ask Claude anything about FPL

"Analyze my FPL team 5456980 — who should I captain, who should I transfer in, and when should I use my chips?"

That's it. Bank balance, free transfers, and chips are all auto-detected from your team ID.

Where's my team ID?

Go to fantasy.premierleague.com → click Points → grab the number from the URL:

https://fantasy.premierleague.com/entry/YOUR_TEAM_ID/event/30

Your league ID is in the mini-league URL:

https://fantasy.premierleague.com/leagues/YOUR_LEAGUE_ID/standings/c

Related MCP server: fpl-strategy-mcp

12 Tools

Tool

What it does

fpl_manager_hub

Full personalized analysis — captain, transfers, differentials, fixtures, price risks

captain_pick

Top 5 captain picks scored by form, xG, fixtures, and ICT index

transfer_suggestions

Who to bring in and ship out based on your squad and budget

player_comparison

Head-to-head compare 2-4 players across every metric

is_hit_worth_it

Should you take a -4? Projects net points over N gameweeks

chip_strategy

Optimal gameweek for each chip — factors in DGW predictions

differential_finder

Hidden gems outperforming their ownership

fixture_outlook

Teams ranked by upcoming fixture difficulty

price_predictions

Who's rising and falling tonight

live_points

Live score, projected bonus, auto-sub scenarios

rival_tracker

Spy on mini-league rivals — differentials, weaknesses, predicted moves

league_analyzer

Win probabilities for your league — who's the favourite and why

squad_scout

Deep scout using FPL's hidden data — ep_next, set pieces, suspension risks

Example Prompts

"Give me the full breakdown on team 5456980 — captain, transfers, everything"

"I have 2 free transfers and 1.5m in the bank. Who should I bring in?"

"Salah vs Palmer vs Saka — who's the best pick for the next 5 gameweeks?"

"I want to bring in Haaland for a -4. Is it worth the hit?"

"I still have my bench boost and triple captain. When should I use them?"

"Find me some differentials under 3% ownership that are actually returning points"

"It's 60 minutes into the games — how's my team doing? Any auto-subs?"

"Show me everything about mini-league 1189955 — who's going to win?"

"How do I beat my rivals in league 1189955? I'm team 5456980"

"Which players are about to drop in price tonight? I need to sell before the deadline"

"Scout my squad — who's nailed, who's at risk of rotation, any suspension danger?"

How It Works

FPL Intelligence connects to the official FPL API — the same free, public data that powers the FPL website. All data is real-time. See the full FPL API reference on Postman for endpoint documentation.

The server runs locally on your machine and talks to Claude Desktop via MCP. No API keys, no accounts, no data leaves your machine except FPL API calls.

Install from Source

git clone https://github.com/dohyung1/x402-fpl-api.git
cd x402-fpl-api
uv sync

Then use the full absolute path to uv and the repo in your Claude Desktop config:

{
  "mcpServers": {
    "fpl": {
      "command": "/full/path/to/uv",
      "args": ["run", "--directory", "/full/path/to/x402-fpl-api", "mcp_server.py"]
    }
  }
}

Find your uv path with which uv (e.g. /Users/you/.cargo/bin/uv).

Troubleshooting

The FPL API blocks requests that don't look like they come from a browser.

Test if the API is reachable:

curl -s -o /dev/null -w "%{http_code}" \
  -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)" \
  https://fantasy.premierleague.com/api/bootstrap-static/

Returns 200? The API works — the issue is likely Claude Desktop's sandbox (see below). Returns 403? Your network is blocking it.

Claude Desktop sandbox: Claude Desktop may prompt you to approve network access to fantasy.premierleague.com. If you dismissed this, restart Claude Desktop and watch for the prompt. Check logs at ~/Library/Logs/Claude/ (macOS).

VPN / corporate network: Some networks block *.premierleague.com. Try disconnecting from VPN or switching to a personal network.

FPL API downtime: The API goes down around deadline time and between seasons (June-July). Test in your browser: fantasy.premierleague.com/api/bootstrap-static/

First try re-running the auto-setup:

fpl-intelligence --setup

If that doesn't work, set it up manually:

Step 1 — Find the binary:

find ~ -name "fpl-intelligence" -type f 2>/dev/null

Step 2 — Use the full path in your config:

{
  "mcpServers": {
    "fpl": {
      "command": "/full/path/to/fpl-intelligence"
    }
  }
}

Step 3 — Make sure you're editing the right config file:

# macOS — open the file directly
open ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Windows
notepad %APPDATA%\Claude\claude_desktop_config.json

Step 4 — Fully quit and reopen Claude Desktop (Cmd+Q on macOS, not just close the window).

Still not working? Check Claude Desktop's logs for errors:

  • macOS: ~/Library/Logs/Claude/

  • Windows: %APPDATA%\Claude\logs\

Python version error: Requires Python 3.12+. Check with python3 --version.

Use your FPL team ID (a number like 5456980), not your username. Find it at fantasy.premierleague.comPoints → check the URL.

Open an issue with your OS, Python version, the error message, and the output of the curl test above.

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT

Available Tools

13 tools
captain_pickA
Get top 5 captain recommendations for a given FPL gameweek.

USE THIS WHEN the user asks: "Who should I captain?", "Best captain this week?",
"Captain Salah or Haaland?", or any captain-related question.

Each pick is scored by xG/90, xA/90, form, points per game, home advantage,
fixture difficulty, ICT index, bonus rate, penalty duties, and minutes certainty.
Includes human-readable reasoning for each recommendation.

Args:
    gameweek: Gameweek number (1-38). Defaults to next gameweek if not specified.
ParametersJSON Schema
NameRequiredDescriptionDefault
gameweekNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of disclosing behavior. It lists scoring factors (xG/90, xA/90, etc.) and mentions reasoning. However, it does not state whether the tool is read-only, if it has side effects, or any limitations like data freshness or API dependencies.

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 7 sentences, front-loaded with purpose and usage examples. It is efficient but includes a docstring-style Args section that could be integrated. Still, it avoids unnecessary details.

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 simplicity (1 non-required parameter, no output schema), the description provides essential context: what it does, when to use it, and how scoring works. It could mention that results are read-only, but that is implied.

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 has 0% description coverage, but the description adds meaning: 'Gameweek number (1-38). Defaults to next gameweek if not specified.' This clarifies the range and default behavior beyond the schema's type and nullability.

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 purpose: 'Get top 5 captain recommendations for a given FPL gameweek.' It uses a specific verb ('Get') and resource ('top 5 captain recommendations') and distinguishes from sibling tools like squad_scout and transfer_suggestions by focusing on captaincy.

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 instructs 'USE THIS WHEN...' with example queries like 'Who should I captain?' and 'Best captain this week?' It covers the typical use cases but does not provide explicit when-not-to-use or alternative tool names.

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

chip_strategyA
Recommend when to use each remaining FPL chip for maximum impact.

USE THIS WHEN the user asks: "When should I use my bench boost?", "Best week for
triple captain?", "Chip strategy?", "When to free hit?", "Should I wildcard?".

Auto-detects which chips are still available (handles mid-season reset after GW19).
Scans the next 10 gameweeks and scores each for every unused chip.

Args:
    team_id: FPL team ID (the number in your FPL URL).
ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description fully bears the burden of disclosure. It details auto-detection of available chips, handling of mid-season resets, and scanning the next 10 gameweeks for scoring—transparency beyond a basic 'recommend' statement.

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 extremely concise: three sentences plus example usage. It front-loads the core purpose, then immediately provides usage guidance and parameter info without any redundant or filler content.

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 moderate complexity (auto-detection, scoring over 10 weeks), the description covers the main behavioral aspects and usage context. However, it lacks details on the output format or any edge cases, which would be beneficial but not critical.

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 only defines team_id as an integer with no description. The tool description adds semantic value by explaining 'team_id: FPL team ID (the number in your FPL URL),' which clarifies how to obtain and use the parameter.

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 explicitly states 'Recommend when to use each remaining FPL chip for maximum impact,' providing a clear verb+resource purpose. This tool is distinct from siblings like captain_pick or fixture_outlook, as no other tool covers chip strategy.

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 includes a 'USE THIS WHEN' section with example user queries, making the usage context very clear. However, it does not explicitly mention when not to use this tool or name alternative siblings, which prevents a top score.

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

differential_finderA
Find underowned FPL players who are outperforming their ownership percentage.

USE THIS WHEN the user asks: "Find me a differential", "Who are the hidden gems?",
"Low-owned players performing well?", or wants to climb the rankings with unique picks.

Args:
    max_ownership_pct: Only include players owned by fewer than this percentage. Default 10%.
    gameweek: Gameweek number (1-38). Defaults to next gameweek if not specified.
ParametersJSON Schema
NameRequiredDescriptionDefault
max_ownership_pctNo
gameweekNo

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, and the description does not explicitly state the tool is read-only or non-destructive, though it is implied by the query nature.

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, front-loaded with usage guidance, and contains no unnecessary 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?

Covers purpose, parameters, and usage, but missing explicit return value description; acceptable as it is a finding tool.

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

Parameters5/5

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

Both parameters are described with defaults and usage context within the description, fully compensating for the 0% schema description coverage.

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 finds underowned FPL players outperforming ownership, distinguishing it from sibling tools like captain_pick or transfer_suggestions.

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?

Provides explicit USE THIS WHEN examples and default values, but could be improved by specifying when not to use it.

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

fixture_outlookA
Rank all 20 Premier League teams by upcoming fixture difficulty.

USE THIS WHEN the user asks: "Who has easy fixtures?", "Which teams to target?",
"Best defenders to buy for the next 5 weeks?", or any fixture-planning question.

Args:
    gameweeks_ahead: How many gameweeks to look ahead (1-10). Default 5.
    position: Filter players by position: GKP, DEF, MID, or FWD. Optional.
ParametersJSON Schema
NameRequiredDescriptionDefault
gameweeks_aheadNo
positionNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It states the tool ranks teams by fixture difficulty, which is the core behavior, but does not disclose any additional traits such as data freshness, ranking methodology, or side effects. This is adequate but minimal.

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 extremely concise, with one sentence for the main purpose, a usage guideline section, and clear parameter descriptions. It is front-loaded with the key information and contains no unnecessary 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 the simplicity of the tool (2 parameters, no output schema), the description covers the main functionality and usage context well. It lacks details on the ranking method or output format, but for a straightforward ranking tool, it is mostly complete.

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 schema has 0% parameter description coverage, so the description adds essential meaning. It explains gameweeks_ahead as a range of 1-10 with default 5, and position as a filter with values GKP, DEF, MID, or FWD. This compensates well for the lack of 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?

The description clearly states the tool's function: 'Rank all 20 Premier League teams by upcoming fixture difficulty.' This is a specific verb+resource combination that distinguishes it from sibling tools like captain_pick or chip_strategy, which focus on different aspects of FPL.

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 provides explicit usage guidance by stating 'USE THIS WHEN the user asks: ...' and listing example queries. This gives clear context for when to invoke the tool, though it does not explicitly mention when not to use it or name alternative tools.

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

fpl_manager_hubA
Complete FPL intelligence report for a manager's team. THIS IS THE BEST STARTING POINT.

USE THIS FIRST when the user provides their team ID or asks for a full analysis.
It auto-detects bank balance, free transfers, chips, and squad — then runs ALL
analyses in parallel: captain pick, transfers, fixtures, differentials, price risks,
and squad health.

The user only needs to provide their team ID (the number in their FPL URL:
fantasy.premierleague.com/entry/TEAM_ID/event/...).

Args:
    team_id: FPL team ID from the manager's FPL URL.
    gameweeks_ahead: How many gameweeks to look ahead for fixture analysis (1-10). Default 5.
ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes
gameweeks_aheadNo

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description fully discloses that it auto-detects bank balance, free transfers, chips, and squad, and runs all analyses in parallel. It explains the purpose of the 'gameweeks_ahead' parameter. It does not mention side effects or rate limits, but for a read-only FPL tool, this is sufficient.

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 efficient: front-loaded with key emojis and bold text, uses two short paragraphs, and includes arg details. Minor redundancy with ALL CAPS but overall well-structured.

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 as a hub that runs multiple analyses, the description provides adequate context: what it does, when to use it, and parameter details. It does not specify output format, but the scope is clear for a starting point tool.

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

Parameters5/5

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

The description adds significant meaning beyond the schema: it explains how to obtain the team_id from the FPL URL and defines the range for gameweeks_ahead (1-10). Since schema description coverage is 0%, the description fully compensates.

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 'Complete FPL intelligence report for a manager's team' and distinguishes itself from siblings by declaring it 'THE BEST STARTING POINT' and listing the analyses it runs in parallel (captain pick, transfers, etc.), which are sibling tool names.

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?

It explicitly advises to 'USE THIS FIRST when the user provides their team ID or asks for a full analysis', giving clear context for when to use. It does not explicitly list when not to use or name alternatives, but the guidance is strong.

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

is_hit_worth_itA
Analyze whether taking a -4 point hit for a transfer is worth it.

USE THIS WHEN the user asks: "Should I take a hit?", "Is it worth -4 to bring in X?",
"Hit for Haaland worth it?". Use player_comparison first to find player IDs if needed.

Projects expected points for both players over N gameweeks, accounting for
form, fixture difficulty, home/away, and playing chance.

Args:
    player_out_id: FPL element ID of the player being sold (find via transfer_suggestions or player_comparison).
    player_in_id: FPL element ID of the player being bought.
    gameweeks_ahead: How many gameweeks to project over (1-10). Default 5.
ParametersJSON Schema
NameRequiredDescriptionDefault
player_out_idYes
player_in_idYes
gameweeks_aheadNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Mentions projecting points over N gameweeks with factors like form, fixtures, home/away, playing chance, and default 5 gameweeks. Does not disclose limitations or edge cases (e.g., what if player is not owned, or if IDs are invalid).

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?

Description is concise, front-loaded with purpose, followed by usage guidance and parameter explanation. No unnecessary sentences.

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?

No output schema exists, but description fails to mention what the tool returns (e.g., a recommendation string or numeric value). Adequately distinguishes from siblings and explains inputs, but missing output info leaves agent unclear on expected result.

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 0%, but description explains each parameter: player_out_id and player_in_id as FPL element IDs, gameweeks_ahead with range and default. Adds meaning beyond schema's integer type and title.

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 it analyzes whether a -4 point hit for a transfer is worth it, using a specific verb and resource, and distinguishes from sibling tools like transfer_suggestions and player_comparison.

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 says 'USE THIS WHEN' with example queries, and advises using player_comparison first to find IDs. Lacks explicit when-not-to-use or alternative tool suggestions.

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

league_analyzerA
Predict who will win a mini-league based on current form, squad quality, and chips remaining.

USE THIS WHEN the user asks: "Who's going to win my league?", "League predictions",
"Who's the favourite?", "Analyze league standings", "Win probability", or any question
about league-wide chances WITHOUT needing a specific team ID.

Does NOT require the user's team ID — just the league ID. Analyzes the top managers
in the league and calculates win probability for each based on: points gap, squad quality,
chips remaining, recent momentum, team value, and injury concerns.

The league ID is in the mini-league URL: fantasy.premierleague.com/leagues/LEAGUE_ID/standings/c

Args:
    league_id: Mini-league ID from the league URL.
ParametersJSON Schema
NameRequiredDescriptionDefault
league_idYes

TDQS

A4.3/5.0
Behavior3/5

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

The description discloses the factors considered (points gap, squad quality, chips, etc.) and that it doesn't require team ID, but lacks details on output format or any limitations, and there are no annotations to provide additional 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 concise, well-structured with purpose, usage guidance, and args clearly separated. Every sentence contributes meaning without 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?

For a tool with one simple parameter and no output schema, the description covers purpose, usage, and parameter meaning adequately. Missing details on the format of the prediction output, but overall sufficient.

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

Parameters5/5

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

The schema has zero description coverage for the single parameter, but the description fully explains the 'league_id' parameter, including where to find it in the URL, adding significant value beyond the bare 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 explicitly states it predicts mini-league winners based on specific factors, lists example user queries, and implicitly distinguishes from sibling tools by noting it doesn't require a team ID.

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 provides explicit usage triggers like 'USE THIS WHEN the user asks...' and clarifies that no team ID is needed, but does not mention when not to use or suggest alternatives.

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

live_pointsA
Get live points for a specific FPL team during an active gameweek.

USE THIS WHEN the user asks: "How's my team doing?", "Live score?",
"Am I getting any bonus points?", "Any auto-subs?". Only useful during
an active gameweek when matches are being played or have just finished.

Args:
    team_id: FPL team ID (the number in your FPL URL).
ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes

TDQS

A4.5/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 that the tool gets live points, mentions auto-subs and bonus points, and specifies the temporal constraint (active gameweek). This provides good behavioral context beyond just 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?

The description is brief (3 sentences) and well-structured with a clear purpose line, usage section, and parameter definition. Every sentence adds value with no 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 tool's simplicity (1 param, no output schema), the description is fully complete. It covers what the tool does, when to use it, and what the parameter means. No additional context is needed.

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 only parameter team_id is described with its meaning: 'FPL team ID (the number in your FPL URL).' The schema has no description, so the description adds significant value by explaining what the integer represents and how to find it.

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 'Get live points for a specific FPL team during an active gameweek.' It provides specific verb and resource, and gives examples of user queries that trigger its use. It distinguishes itself from sibling tools by focusing on live gameweek data.

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 says 'USE THIS WHEN' with concrete examples like 'How's my team doing?'. It also implies when not to use by stating 'Only useful during an active gameweek'. No explicit alternatives among siblings are listed, but the context is clear.

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

player_comparisonA
Compare 2-4 FPL players head-to-head across all key metrics.

USE THIS WHEN the user asks: "Salah vs Palmer?", "Compare Haaland and Watkins",
"Which midfielder should I pick?", or any player comparison question.

Names are fuzzy-matched — partial names like "Salah" or "Palmer" work fine.
Returns form, xG/90, xA/90, ICT, PPG, cost, ownership, captain score,
upcoming fixtures, transfer momentum, and a verdict.

Args:
    player_names: List of 2-4 player names to compare (e.g., ["Salah", "Palmer", "Saka"]).
    gameweeks_ahead: How many gameweeks of fixtures to include (1-10). Default 5.
ParametersJSON Schema
NameRequiredDescriptionDefault
player_namesYes
gameweeks_aheadNo

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so description carries burden. It mentions fuzzy matching and lists output metrics, but does not disclose error handling for invalid names, rate limits, or side effects. Safe operation is implied but not explicit.

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, front-loaded with purpose, and includes usage, behavioral notes, and parameter details in a single well-structured paragraph with no waste.

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 comparison tool with fuzzy matching and multiple outputs, the description covers purpose, usage, parameters, and output list without an output schema. It is mostly complete, though could mention error cases for invalid inputs.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by detailing player_names as a list of 2-4 names with fuzzy matching, and gameweeks_ahead as fixture count (1-10, default 5), significantly adding value beyond the bare 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 it compares 2-4 FPL players head-to-head across key metrics, using specific verbs like 'Compare' and listing metrics. It distinguishes from siblings by focusing on head-to-head comparison versus other tools like captain_pick or differential_finder.

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 provides usage triggers with examples like 'Salah vs Palmer?' and 'Which midfielder should I pick?', and mentions fuzzy matching. However, it does not explicitly state when not to use it or compare with siblings.

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

price_predictionsA
Predict which FPL players are likely to rise or fall in price tonight.

USE THIS WHEN the user asks: "Who's about to rise in price?", "Should I make my
transfer now before prices change?", "Price change predictions?", or any price-related question.

Buy before a rise to gain free team value. Sell before a fall to avoid losing value.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states the tool's purpose (price prediction) and implications for user actions, but it lacks details on how predictions are made, update frequency, data sources, or any limitations. For a prediction tool, more behavioral context would be beneficial.

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 extremely concise (3 sentences). The first sentence states the purpose, the second gives usage triggers, and the third provides actionable advice. Every sentence 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.

Completeness3/5

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

Given the tool has no parameters, no annotations, and no output schema, the description is the sole source of information. It covers purpose and usage adequately but fails to describe the output format or any technical details (e.g., whether results are a list, probabilities, etc.). This leaves the agent with incomplete guidance on how to handle the tool's response.

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 tool has zero parameters, so the description does not need to explain any. Schema coverage is 100%, and the description adds no param-specific info, which is appropriate. Baseline for 0-param tools is 4.

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 predicts which FPL players are likely to rise or fall in price. It uses specific verbs ('predict', 'rise', 'fall') and identifies the resource ('FPL players'). This distinguishes it from sibling tools like transfer_suggestions or squad_scout, which do not focus on price predictions.

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 provides example user queries that should trigger this tool ('Who's about to rise in price?', etc.) and explains the consequence of using it ('Buy before a rise...'), giving clear context. However, it does not mention when not to use the tool or suggest alternatives, which keeps it from a top score.

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

rival_trackerA
Analyze your mini-league rivals and get strategies to beat them.

USE THIS WHEN the user asks: "How do I beat my rivals?", "What's my mini-league looking like?",
"What players do my rivals have?", "Show me my league standings", or any rival/league question.

Compares your squad against nearby rivals, finds differentials (players you have that they don't),
identifies rival weaknesses, predicts their likely next transfers, and suggests counter-strategies.

The user needs their league ID (from the mini-league URL: fantasy.premierleague.com/leagues/LEAGUE_ID/standings/c)
and their team ID.

Args:
    league_id: Mini-league ID from the league URL.
    team_id: Your FPL team ID (the number in your FPL URL).
ParametersJSON Schema
NameRequiredDescriptionDefault
league_idYes
team_idYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden for behavioral transparency. It mentions what the tool does (compare squads, find differentials, identify weaknesses, predict transfers, suggest strategies) but lacks details on side effects, authentication needs, or rate limits. The description is adequate but not thorough.

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 concise, using a clear structure with a usage guideline section and parameter explanations. It avoids unnecessary fluff, though the 'Args:' section could be formatted more cleanly. Overall, it earns its length.

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 (multiple analysis aspects) and lack of output schema, the description covers the main purpose, usage triggers, and parameter details. It does not describe the return format or depth of analysis, but it is sufficient for an AI agent to select and use the tool correctly.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must compensate. It provides clear, actionable guidance for each parameter: league_id is explained with an example URL format, and team_id is described as 'the number in your FPL URL'. This fully explains the parameters beyond the schema titles.

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 purpose: analyzing mini-league rivals and providing strategies. It uses specific verbs ('analyze', 'get strategies') and distinguishes itself from sibling tools like 'league_analyzer' by focusing on rivals and actionable counter-strategies.

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 lists example user queries that trigger this tool, providing clear usage context. It also specifies required inputs (league_id, team_id) and explains where to find them. However, it does not mention when NOT to use it or alternative tools for similar tasks.

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

squad_scoutA
Deep scout report using FPL's hidden data fields most managers don't know about.

USE THIS WHEN the user asks: "Any hidden insights?", "Set piece takers?",
"Suspension risks?", "What does FPL's own data say?", or for a deeper dive
beyond what fpl_manager_hub provides.

Surfaces: blank GW warnings, FPL's expected points (ep_next), set piece duties,
yellow card suspension risks, ICT breakdown, points per million rankings.

Args:
    team_id: FPL team ID (the number in your FPL URL).
ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes

TDQS

A4.8/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 the full burden. It explains the kind of data returned (blank GW warnings, FPL's expected points, ICT breakdown, etc.) but does not mention any side effects, safety, rate limits, or potential errors.

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 and well-structured. It uses a clear opening line, usage guidelines, a bullet list of surfaced insights, and a parameter explanation. Every sentence adds value.

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 tool's complexity and the absence of an output schema, the description comprehensively covers purpose, when to use, what data it surfaces, and the parameter description. It provides enough context for an AI agent to select and invoke correctly.

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

Parameters5/5

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

The only parameter, team_id, has no description in the schema. The description adds meaningful context: 'FPL team ID (the number in your FPL URL)'. This fully compensates for the 0% schema coverage.

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's a 'Deep scout report' using hidden FPL data and lists specific insights (blank GW warnings, expected points, set piece duties, etc.). It differentiates from sibling tools by mentioning it goes beyond what fpl_manager_hub provides.

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?

The description explicitly says 'USE THIS WHEN' and provides example user queries ('Any hidden insights?', 'Set piece takers?', etc.). It also hints at when not to use by contrasting with fpl_manager_hub.

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

transfer_suggestionsA
Get transfer recommendations for a specific FPL team.

USE THIS WHEN the user asks: "Who should I transfer in/out?", "Best transfers this week?",
"How to improve my team?". Prefer fpl_manager_hub for a full analysis instead.

Args:
    team_id: FPL team ID (the number in your FPL URL).
    free_transfers: Number of free transfers available (1 or 2). Default 1.
    bank: Money in the bank in millions (e.g. 1.5 means 1.5m). Default 0.0.
ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes
free_transfersNo
bankNo

TDQS

A4.5/5.0
Behavior3/5

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

No annotations are provided, so description carries full burden. It describes input parameters but does not specify what the output contains (e.g., list of players, expected points, costs). It does not mention read-only nature, permissions, or rate limits. Adequate but lacks detail on return value.

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?

Description is front-loaded with purpose, then usage guidance, then parameter details. Every sentence is informative and necessary. No redundancy or fluff. Length is appropriate for the tool's complexity.

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 there is no output schema, description covers purpose, usage, and parameters well but omits description of the output format (e.g., what recommendations look like). For a tool returning suggestions, this is a notable gap. Otherwise complete for the simple parameter set.

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

Parameters5/5

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

Schema has 0% description coverage, but description compensates fully. It explains team_id as 'the number in your FPL URL', free_transfers as 'Number of free transfers available (1 or 2)' with default, and bank with example 'e.g. 1.5 means 1.5m' and defaults. Provides meaningful context 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 clearly states 'Get transfer recommendations for a specific FPL team' with explicit verb and resource, and gives example user queries. It distinguishes from sibling tool fpl_manager_hub by recommending it for full analysis.

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?

Explicitly states when to use ('USE THIS WHEN the user asks...') and provides specific example queries. Also advises preferring fpl_manager_hub for a full analysis, offering a clear when-not guideline.

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

TDQS

A4.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but fpl_manager_hub subsumes many others like transfer_suggestions and squad_scout, causing some overlap. Descriptions help differentiate, but an agent might initially be confused between the hub and specific tools.

Naming Consistency3/5

All tools use snake_case, but naming patterns vary: some are noun_verb (captain_pick, league_analyzer), others noun_noun (chip_strategy, fixture_outlook) or even a question (is_hit_worth_it). While consistent in casing, the lack of a uniform verb_noun pattern reduces predictability.

Tool Count5/5

13 tools cover the major aspects of FPL management without being excessive. Each tool addresses a specific need, and the count is well-scoped for the domain.

Completeness5/5

The tool set covers nearly all common FPL tasks: captain picks, chips, differentials, fixtures, transfers, hits, leagues, live points, player comparisons, price predictions, rivals, and deep scouting. No significant gaps are apparent.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

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

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to analyze Fantasy Premier League data, providing tools for player search, fixture analysis, manager comparisons, and strategy prompts for transfer planning and lineup selection.
    19
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables Fantasy Premier League squad management with custom tools for player search, fixture outlook, tier classification, hit math, and chip timing, all using public FPL data without requiring login credentials.
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that equips AI assistants with 33 tools for Fantasy Premier League analytics, including fixtures, squad management, live scores, transfers, captaincy, and price movements, using async access to official FPL endpoints with TTL caching.
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides tools and resources to interact with the Fantasy Premier League API, enabling player analysis, fixture insights, and team management through natural language.
    -

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/dohyung1/x402-fpl-api'

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