Skip to main content
Glama
Nanparam

livefpl-mcp

by Nanparam

LiveFPL MCP Server

An MCP server that exposes Fantasy Premier League player price rise/fall predictions from LiveFPL.

The data is served from LiveFPL's public JSON host (https://livefpl.us) — the same endpoints the website itself loads. No account, API key, or authentication is required.

Data source (reverse-engineered)

The https://www.livefpl.net/prices page loads its price-prediction table from:

Endpoint

Purpose

GET https://livefpl.us/api/prices.json

Per-player price-change progress & predictions

GET https://livefpl.us/top_transfers.json

Most common transfer pairs (in/out)

GET https://livefpl.us/version.json

Gameweek / countdown metadata

GET https://plan.livefpl.net/leagues/{id}

League live-score table (server-rendered HTML, parsed)

The league page is server-rendered HTML (no JSON API) — the live gameweek standings are baked into the page, so the server fetches and parses that HTML.

prices.json fields

Keyed by player id. For each player:

  • progress — current progress toward a price change, as a fraction of the threshold. Positive ⇒ rising, negative ⇒ falling. +1.0 means a rise is due; -1.0 means a fall is due. Shown on the site as the "Now" column.

  • progress_tonight — predicted progress by the next change cutoff. Shown as the "Prediction" column. This is what the tools sort on.

  • per_hour — rate of change of progress per hour ("Per hr" column).

  • cost, name, team, type (GK/DEF/MID/FW).

Related MCP server: fpl-mcp

Tools

Tool

Description

livefpl_price_risers

Players most likely to rise, sorted by predicted progress. Filters: limit, position, team, threshold.

livefpl_price_fallers

Players most likely to fall. Same filters.

livefpl_player_prediction

Price prediction for a specific player by name (partial match).

livefpl_top_transfers

Most common transfer pairs (player in/out) driving price changes.

livefpl_price_status

Metadata for the current price-change window / gameweek.

livefpl_transfer_trend_graph

Transfer trend as a node-link graph image (PNG) — circle size = volume, arrows out → in. Params: top_n, color_by ("direction" for net in/out, or "position" for GK/DEF/MID/FW colours).

livefpl_transfer_trend_by_position

2×2 grid image (PNG) with one transfer-trend graph per position (GK, DEF, MID, FW). Param: top_n (default 40).

livefpl_transfer_trend_data

Same transfer-trend data as JSON (per-player net + pair edges, incl. position/team/cost). Param: top_n.

livefpl_league_live_score

Live gameweek standings for a classic league. Params: league_id, limit. Returns rank (+movement), team/manager, live GW score, total, captain/vice, chip, FT, team value, players played.

The transfer-trend graph is derived client-side from top_transfers.json (the same way the LiveFPL page builds its bubble chart): per-player net = transfers in − transfers out, node size = total volume, edges = transfer pairs (out → in).

Each player result includes progress_now_pct, prediction_pct, per_hour_pct, direction (rise/fall/stable) and predicted_new_cost.

Install

cd livefpl-mcp
uv sync

Run

uv run livefpl-mcp

The server speaks MCP over stdio.

Claude Desktop / MCP client config

Add to your MCP client configuration (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "livefpl": {
      "command": "uv",
      "args": ["--directory", "C:\\path-to-mcp\\livefpl-mcp", "run", "livefpl-mcp"]
    }
  }
}

Example prompts

  • "Which FPL defenders are about to rise in price?"

  • "Show me the top 10 price fallers tonight."

  • "What's the price prediction for Haaland?"

  • "What are the most popular transfers right now?"

  • "Show the live scores for league 230412."

  • "Who's winning gameweek in my league 230412 right now?"

Notes

  • Predictions are LiveFPL's, not the official FPL algorithm; accuracy is best on single gameweeks (LiveFPL notes double-gameweek rules are less certain).

  • Data is fetched live on each tool call.

License

MIT

Available Tools

9 tools
livefpl_league_live_scoreA

Get the LIVE gameweek standings for an FPL classic league.

Fetches the live league table from https://plan.livefpl.net/leagues/{id} — the same live-updating standings shown on LiveFPL, including provisional (in-progress) gameweek scores before bonus points and ranks are finalised.

Args: league_id: The FPL classic-league id (the number in the league URL, e.g. 230412). limit: Maximum number of managers to return, ordered by current rank (default 25).

Returns: JSON with the league title, gameweek, and standings. Each manager row has: rank, rank_change (movement vs last GW), team_name, manager_name, entry_id, overall_rank, captain, vice_captain, players_to_play, gw_score (live), total_score, free_transfers, team_value, players_played (e.g. "11/12") and active_chip.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
league_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/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 discloses that data is live and provisional (before bonus/ranks finalised), and details the return structure. It does not mention potential failure modes (e.g., private leagues, rate limits) or error handling, but the main behavioral traits are transparent.

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 well-structured: the purpose leads, followed by a behavior paragraph, then Args and Returns sections. Every sentence adds value—the URL root, live/provisional nature, and detailed return fields. No redundancy or filler. It is appropriately sized for the tool's complexity.

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?

The description is complete for an agent to call the tool correctly. It specifies the source, the provisional nature of scores, and a full enumeration of the returned fields (rank, rank_change, team_name, etc.). The presence of an output schema is corroborated by the detailed Returns section, so no critical information is missing.

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%, so the description fully compensates. It explains league_id as 'the number in the league URL, e.g. 230412' and limit as 'Maximum number of managers to return, ordered by current rank (default 25).' This adds concrete meaning beyond the bare schema titles and types.

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 a specific verb ('Get') and resource ('LIVE gameweek standings for an FPL classic league'), immediately distinguishing it from sibling tools about price risers/fallers, transfers, and predictions. It also names the external source URL, leaving no ambiguity about the function.

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 clearly defines what the tool does and its context (live league standings), but it does not explicitly mention when to use this tool over others or when not to use it. However, the sibling tool names are sufficiently distinct that an agent can infer the appropriate usage without explicit routing guidance.

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

livefpl_player_predictionA

Get the price-change prediction for a specific FPL player by name.

Args: name: Full or partial player name (case-insensitive, e.g. "Haaland", "Calafiori", "salah").

Returns: JSON with the matching player's prediction, or all matches if the name is ambiguous, or an error if no player matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It covers major behaviors: accepts partial/case-insensitive names, returns JSON with matching predictions, returns all matches if ambiguous, and raises an error if no match. It also clarifies that the output is a prediction, not an actual price change. Minor omissions like rate limits or authentication are not critical for a simple query tool.

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: a one-sentence purpose followed by Args and Returns sections. Every sentence adds value—there's no filler. The most important information (the function) is front-loaded, and the format is easy to parse.

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

Completeness4/5

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

For a simple one-parameter tool, the description is largely complete. It covers the input, the return behavior (matches, ambiguity, errors), and examples. Since an output schema exists, it doesn't need to detail the JSON structure. It could mention potential rate limiting or authentication, but these are not essential for basic usage, so a 4 is appropriate.

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%, so the description must fully explain the parameter. It does so effectively: 'name: Full or partial player name (case-insensitive, e.g. "Haaland", "Calafiori", "salah")' provides clear semantics, examples, and the flexibility of partial matches. This is strong compensation for the missing schema description.

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: 'Get the price-change prediction for a specific FPL player by name.' It specifies the verb (get), resource (price-change prediction), and unique context (by player name), effectively distinguishing it from sibling tools like livefpl_price_risers or livefpl_top_transfers that address different queries.

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

Usage Guidelines3/5

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

Usage is implied rather than explicit: the description indicates you'd use this when you need a specific player's price prediction, but it doesn't contrast with alternatives or state when not to use it. There's no 'use this for X, otherwise use Y' guidance, so the agent must infer when this is the right tool among the listed siblings.

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

livefpl_price_fallersA

List FPL players most likely to FALL in price, sorted by predicted progress.

Args: limit: Maximum number of players to return (default 20). position: Optional position filter: GK, DEF, MID or FW. team: Optional team-name filter (case-insensitive substring, e.g. "Arsenal"). threshold: Minimum magnitude of predicted downward progress (0-1) for a player to count as a faller candidate. Default 0.5. Use 1.0 to only show players predicted to actually drop price tonight.

Returns: JSON array of players with progress_now_pct, prediction_pct, per_hour_pct and predicted_new_cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNo
limitNo
positionNo
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains the return format ('JSON array of players with progress_now_pct, prediction_pct, per_hour_pct and predicted_new_cost') and the meaning of the threshold parameter, including the use of 1.0 to indicate actual price drops. This gives the agent a good model of what the tool does and what to expect, though it omits any mention of data freshness or rate limits, which are minor for a list operation.

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 well-structured with an Args/Returns format, making it scannable. It is not overly verbose; every sentence serves a purpose. The purpose statement is front-loaded, and parameter details are concise but complete. It could be slightly tighter, but the structure is effective and clear.

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

Completeness4/5

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

Given the tool's moderate complexity (4 parameters, all optional) and the presence of an output schema, the description covers the essentials: purpose, parameter semantics, and return format. It does not describe sorting direction explicitly (though 'sorted by predicted progress' implies descending), nor does it mention edge cases like empty results. These are minor gaps. Overall, the description provides sufficient context for an agent to call 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?

Schema coverage is 0%, so the description must fully compensate. It does so admirably: each of the four parameters (limit, position, team, threshold) is explained with its type, default value, and behavioral effect. For threshold, it even provides a concrete example ('Use 1.0 to only show players predicted to actually drop price tonight'). This adds substantial meaning beyond the bare schema and is essential for correct invocation.

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: 'List FPL players most likely to FALL in price, sorted by predicted progress.' It uses a specific verb ('List'), a specific resource ('FPL players'), and explicitly scopes to fallers, distinguishing it from the sibling livefpl_price_risers. The sorting mention adds useful precision.

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

Usage Guidelines2/5

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

The description provides parameter usage guidance (e.g., threshold semantics) but does not explicitly state when to use this tool versus alternatives. There is no mention of livefpl_price_risers or other siblings, nor any conditions that would make this tool the preferred choice. The agent must infer selectivity from the name alone, which is insufficient for a potential decision between fallers and risers.

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

livefpl_price_risersA

List FPL players most likely to RISE in price, sorted by predicted progress.

Args: limit: Maximum number of players to return (default 20). position: Optional position filter: GK, DEF, MID or FW. team: Optional team-name filter (case-insensitive substring, e.g. "Arsenal"). threshold: Minimum predicted progress (0-1 fraction of the change threshold) for a player to count as a riser candidate. Default 0.5. Use 1.0 to only show players predicted to actually change price tonight.

Returns: JSON array of players with progress_now_pct, prediction_pct, per_hour_pct and predicted_new_cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNo
limitNo
positionNo
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It explains the output format (JSON array with specific fields), clarifies the meaning of the threshold parameter (default 0.5, 1.0 for actual price change tonight), and implies a read-only operation by saying 'List'. It does not mention pagination or rate limits, but the core behavior is transparent.

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 purpose is front-loaded in the first sentence, followed by a clear Args section and a brief Returns section. The docstring is a bit verbose but each sentence earns its place; there is no fluff or redundancy. The structure is logical and scannable.

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 that all parameters are optional and the tool is a filtered list, the description covers everything needed to call it correctly: the purpose, parameter semantics with examples, threshold behavior, and the exact output fields. Even though an output schema exists, the description still elaborates on the return values, leaving no ambiguity for the agent.

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%, so the description must compensate. It thoroughly explains each parameter: limit (max number of players), position (GK, DEF, MID, FW), team (case-insensitive substring), and threshold (minimum progress fraction with the practical example of using 1.0). This adds substantial meaning beyond the raw schema, making the tool easy to call correctly.

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 starts with a specific verb ('List') and resource ('FPL players most likely to RISE in price'), and differentiates from the sibling tool livefpl_price_fallers by capitalizing 'RISE'. An agent can easily tell that this tool is for risers, not fallers, without checking the schema.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like livefpl_price_fallers or livefpl_player_prediction. It implies usage through the 'RISE' keyword and the threshold explanation, but gives no context about typical use cases (e.g., pre-deadline to spot target rises). No explicit when-not-to-use or alternative routing is provided.

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

livefpl_price_statusA

Get metadata about the current FPL price-change window.

Returns: JSON with the LiveFPL site version/gameweek generation info. Useful to confirm which gameweek the predictions apply to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It transparently states that the tool returns a JSON object with version and gameweek info, implying a read-only, side-effect-free operation. This is adequate behavioral disclosure for a metadata endpoint, though it doesn't explicitly confirm non-mutation.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary action and followed by the return type and use case. No wasted words, and the structure is easy to scan.

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?

The tool is simple (no parameters) and an output schema exists, so the description need not detail the JSON structure. It covers the essential information: what it does, what it returns, and why an agent would use it. Nothing critical is missing for correct invocation.

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

Parameters4/5

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

The tool has zero parameters, so per calibration guidelines the baseline is 4. There is nothing to describe beyond what the schema already shows (an empty object). The description appropriately focuses on the return value instead.

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 'Get[s] metadata about the current FPL price-change window' and specifies the return content (site version/gameweek generation info). This is a distinct resource and verb that separates it from sibling tools like livefpl_price_risers or livefpl_player_prediction, which focus on specific prediction 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?

It provides a concrete use case: 'Useful to confirm which gameweek the predictions apply to.' This gives clear context for when to call it. It doesn't explicitly mention when not to use it or name alternatives, but the guidance is sufficient for a simple status/metadata endpoint.

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

livefpl_top_transfersA

List the most common FPL transfers (player in / player out pairs).

These transfer volumes drive the price changes surfaced by the other tools.

Args: limit: Maximum number of transfer pairs to return (default 20).

Returns: JSON array of {player_in, player_out, count, share_pct} sorted by volume.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the return format (JSON array of objects) and sorting by volume, but does not mention any constraints like rate limits, authentication, data freshness, or operational side effects. As a read-only operation, there is no destructive behavior, but the description still lacks important behavioral context beyond the basic listing.

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 compact and well-structured: a one-line summary, a brief contextual sentence, and explicit Args/Returns sections. Every sentence adds value—no redundancy or filler—making it easy for an agent to parse quickly.

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

Completeness4/5

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

For a simple one-parameter tool with an output schema, the description covers the operation, parameter meaning, and return format. The context about driving price changes helps an agent understand its role among siblings. The main gap is lack of usage guidance, but that is not required for completeness of the tool's own invocation.

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

Parameters4/5

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

The schema provides the 'limit' parameter with a default but no description. The description's Args section explicitly states 'Maximum number of transfer pairs to return (default 20)', adding meaning beyond the schema. This is particularly valuable given schema description coverage is 0%, so the description compensates well.

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

Purpose4/5

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

The description clearly states the tool lists the most common FPL transfers as player in/out pairs, using a specific verb ('List') and resource ('transfer pairs'). It does not explicitly compare itself to sibling tools like price risers/fallers, but the action is distinct and unambiguous.

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

Usage Guidelines3/5

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

The description notes that 'These transfer volumes drive the price changes surfaced by the other tools', implying a relationship to siblings, but gives no explicit when-to-use guidance or alternatives. An agent must infer when this tool is appropriate versus the other transfer-related tools.

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

livefpl_transfer_trend_by_positionA

Render transfer-trend graphs split by position as a 2x2 grid IMAGE (PNG).

Produces one node-link chart per position — Goalkeepers (GK), Defenders (DEF), Midfielders (MID) and Forwards (FW) — showing the transfer flow within each position. Circle size = total transfer volume, colour = net direction (green = net in, red = net out), arrows point out → in.

Args: top_n: Number of highest-volume transfer pairs to consider (default 40). A larger value than the single-graph tool is recommended so each position panel has enough players.

Returns: A PNG image with four position panels (GK, DEF, MID, FW).

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that it produces a PNG image, describes visual encoding (circle size = volume, color = net direction, arrows), and explains the output structure (four panels). It stops short of stating side effects or read-only status, but for a render tool that is transparent enough.

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 well-structured: a one-line summary, a clear explanation of the visual output, and a dedicated Args/Returns section. It is front-loaded with the primary purpose and every sentence contributes to understanding the tool, with no filler.

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?

The tool is simple (one optional parameter, no output schema, no annotations) and the description fully covers what an agent needs: the purpose, the output format (PNG image with four panels), and the parameter semantics including a usage hint. Nothing essential is missing.

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 only defines 'top_n' as an integer with default 40, giving no semantic meaning. The description explains it as 'Number of highest-volume transfer pairs to consider' and adds a practical recommendation ('A larger value than the single-graph tool is recommended...'), which adds real value beyond the schema.

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

Purpose5/5

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

The opening sentence states a specific verb ('Render') and a specific resource ('transfer-trend graphs split by position as a 2x2 grid IMAGE'), and the rest details the output format. It clearly differentiates from siblings like livefpl_transfer_trend_graph by emphasizing the position-split aspect.

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 gives clear context: it renders position-specific graphs, and it even references the 'single-graph tool' when recommending a larger top_n. However, it does not explicitly name alternatives or state when NOT to use this tool (e.g., when you need the overall trend), though the positional split is strongly implied.

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

livefpl_transfer_trend_dataA

Get the FPL transfer-trend node-link graph as structured DATA (JSON).

The underlying data behind livefpl_transfer_trend_graph: per-player net transfer trend plus the transfer-pair edges. Use this when you want the numbers rather than an image.

Args: top_n: Number of highest-volume transfer pairs to include (default 20).

Returns: JSON with nodes (id, name, transfers_in, transfers_out, net, total_volume, direction) and edges (source, target, count).

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states this is a data-fetch operation producing JSON and describes the return shape (nodes and edges fields), which effectively signals a read-only behavior. It does not disclose potential caveats such as data freshness, API rate limits, or failure modes, but for a simple data tool whose main behavior is 'return structured data,' the disclosure is adequate.

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 tightly organized: a purpose sentence, a sibling-distinction sentence, a usage directive, and compact Args/Returns blocks. It is front-loaded with the core purpose and every sentence earns its place. Zero filler or redundant restatement of the tool name.

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

Completeness4/5

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

For a low-complexity tool — a single optional parameter, an output schema present, no nested objects — the description is nearly complete. It documents the parameter semantics, the return structure, and the sibling relationship. Minor omissions like top_n bounds or behavior when omitted are trivial against the simplicity of the tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it explains the sole parameter as 'top_n: Number of highest-volume transfer pairs to include (default 20).' This adds real meaning beyond the schema's bare integer type and default, clarifying that the value selects the N highest-volume transfer pairs. Full compensation for the single parameter at 0% coverage justifies a strong score.

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 opens with a specific verb and resource: 'Get the FPL transfer-trend node-link graph as structured DATA (JSON).' It then explicitly distinguishes itself from its sibling livefpl_transfer_trend_graph by declaring it returns 'the underlying data behind' that graph — the numbers rather than the image. This gives an agent an unambiguous, specific purpose that separates it from its close sibling without opening any schema.

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

Usage Guidelines5/5

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

It gives an explicit when-to-use directive: 'Use this when you want the numbers rather than an image,' directly naming the alternative livefpl_transfer_trend_graph. This tells the agent exactly which sibling to choose and under what condition. The selection logic is stated, not left to inference.

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

livefpl_transfer_trend_graphA

Render the FPL transfer trend as a node-link graph IMAGE (PNG).

Mirrors the "Transfer Trends" chart on livefpl.net/prices. Each node is a player; circle size = total transfer volume, and arrows point from the player transferred OUT to the player transferred IN.

Args: top_n: Number of highest-volume transfer pairs to include as edges (default 20). Nodes are the players appearing in those pairs. color_by: Node colouring scheme. "direction" (default) colours green = net transfers in, red = net out. "position" colours by playing position (GK/DEF/MID/FW).

Returns: A PNG image of the transfer-trend node-link graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNo
color_byNodirection

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it discloses the return format (PNG), the node-size and arrow-direction semantics, and both color_by behaviors. It does not cover operational traits such as data freshness, network dependency, rate limits, or scale limits on graph rendering, which a no-annotation tool ideally should.

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?

Well-organized: purpose and deliverable first, then chart provenance, then node/edge semantics, then a clean Args/Returns format with defaults. Every sentence earns its place — no filler, and the structure makes the key facts (PNG output, default behavior) easy to scan.

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 a no-annotation, no-output-schema tool with 0% schema coverage, the description covers both parameters fully, the return format, and the visual semantics of the graph. A minor gap is the lack of explicit guidance pointing at the data-only sibling for raw values, but nothing needed to call the tool correctly is missing.

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%, so the description must fully compensate, and it does. top_n is explained with edge/pair semantics and the node implication, and color_by is documented with both options plus their visual meaning (green/red, position classes). This adds substantial meaning beyond the bare integer/string 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?

States a specific verb and resource: 'Render the FPL transfer trend as a node-link graph IMAGE (PNG).' It conveys a concrete deliverable (a graph image) and is clearly distinct from siblings like livefpl_transfer_trend_data (data) and livefpl_transfer_trend_by_position (position-split). The node/arrow semantics further pin down what the tool does.

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

Usage Guidelines3/5

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

Usage context is implied by 'render as image' — the agent can infer it should pick this tool when a visual graph is wanted versus data from livefpl_transfer_trend_data. However, no sibling is named and no explicit when-not-to-use or alternative routing is given, so the guidance is inferred rather than stated.

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. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedlivefpl_league_live_score
    • First observedlivefpl_player_prediction
    • First observedlivefpl_price_fallers
    • First observedlivefpl_price_risers
    • First observedlivefpl_price_status
    • First observedlivefpl_top_transfers
    • First observedlivefpl_transfer_trend_by_position
    • First observedlivefpl_transfer_trend_data
    • First observedlivefpl_transfer_trend_graph

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: risers vs fallers, specific player prediction, transfer pairs, price status, and three transfer-trend variants (graph, by-position grid, raw data) that differ by output format and scope. The league live score tool is completely separate. No two tools could be reasonably confused.

Naming Consistency4/5

All tools share the 'livefpl_' prefix and use descriptive snake_case names that convey the subject (price, player, transfer, league). While the pattern is not a strict verb_noun (e.g., 'price_risers' vs 'player_prediction'), the naming is consistent in style and predictable, with only minor grammatical variation across the set.

Tool Count5/5

Nine tools is well-scoped for an FPL price-and-transfer analysis service. Each tool serves a distinct purpose without redundancy, covering prediction lists, specific queries, transfer trends (in multiple forms), and league standings. The count feels deliberate and not excessive.

Completeness4/5

The tool surface covers the primary domain: price prediction (risers/fallers, specific player), transfer volume (top transfers, trend graphs/data), and live league standings. Minor gaps exist (e.g., no transfer history or individual player ownership data), but the core workflows have no dead ends and agents can achieve the intended tasks without missing operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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
    Not graded
    quality
    B
    maintenance
    Provides read-only access to Sleeper fantasy football leagues, enabling team snapshots, available players, matchups, trade context, and league history through standardized MCP tools.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Fantasy Premier League API, enabling querying of players, teams, fixtures, and your FPL team through any MCP-compatible client.
    -
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server for Fantasy Premier League that allows querying gameweek info, player recommendations, squad management, and executing transfers via FPL's public API with optional cookie authentication.
    4
    27
    1
    ISC
  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server that supplies live context from Sleeper fantasy-football leagues, including rosters, trade analysis, draft picks, and league settings via Sleeper's public API.
    11
    MIT

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/Nanparam/livefpl-mcp'

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