Skip to main content
Glama
Nanparam

livefpl-mcp

by Nanparam

LiveFPL MCP Server

LiveFPL의 Fantasy Premier League 선수 가격 상승/하락 예측을 제공하는 MCP 서버입니다.

데이터는 LiveFPL의 공개 JSON 호스트(https://livefpl.us)에서 제공됩니다 — 웹사이트 자체가 로드하는 것과 동일한 엔드포인트입니다. 계정, API 키, 인증이 필요하지 않습니다.

데이터 소스 (리버스 엔지니어링)

https://www.livefpl.net/prices 페이지는 가격 예측 테이블을 다음에서 로드합니다:

엔드포인트

용도

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

선수별 가격 변동 진행도 및 예측

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

가장 흔한 이적 쌍(in/out)

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

게임위크 / 카운트다운 메타데이터

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

리그 라이브 점수 테이블(서버 렌더링 HTML, 파싱됨)

리그 페이지는 서버 렌더링 HTML입니다(JSON API 없음). 라이브 게임위크 순위가 페이지에 포함되어 있으므로 서버는 해당 HTML을 가져와 파싱합니다.

prices.json 필드

플레이어 ID를 키로 사용합니다. 각 플레이어 항목:

  • progress — 가격 변동까지의 현재 진행도로, 임계값 대비 비율입니다. 양수 ⇒ 상승, 음수 ⇒ 하락. +1.0은 상승 예정을, -1.0은 하락 예정을 의미합니다. 사이트에서 “Now” 열로 표시됩니다.

  • progress_tonight — 다음 변동 마감 시점까지의 예상 진행도입니다. “Prediction” 열로 표시되며, 도구가 정렬에 사용하는 값입니다.

  • per_hour — 시간당 진행도 변화율(“Per hr” 열).

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

Related MCP server: fpl-mcp

도구

도구

설명

livefpl_price_risers

가격이 상승할 가능성이 가장 높은 선수. 예상 진행도 기준으로 정렬. 필터: limit, position, team, threshold.

livefpl_price_fallers

가격이 하락할 가능성이 가장 높은 선수. 동일한 필터.

livefpl_player_prediction

name으로 특정 선수의 가격 예측(부분 일치).

livefpl_top_transfers

가격 변동을 유발하는 가장 흔한 이적 쌍(선수 in/out).

livefpl_price_status

현재 가격 변동 기간 / 게임위크 메타데이터.

livefpl_transfer_trend_graph

이적 추세를 **노드-링크 그래프 이미지(PNG)**로 표시 — 원 크기 = 거래량, 화살표 out → in. 매개변수: top_n, color_by(“direction”은 순 in/out, “position”은 GK/DEF/MID/FW 색상).

livefpl_transfer_trend_by_position

포지션(GK, DEF, MID, FW)별 이적 추세 그래프가 포함된 2×2 그리드 이미지(PNG). 매개변수: top_n(기본값 40).

livefpl_transfer_trend_data

동일한 이적 추세 데이터를 JSON으로 제공(선수별 순 변화 + 쌍 엣지, 포지션/팀/비용 포함). 매개변수: top_n.

livefpl_league_live_score

클래식 리그의 라이브 게임위크 순위. 매개변수: league_id, limit. 순위(변동 포함), 팀/매니저, 라이브 GW 점수, 총점, 주장/부주장, 칩, FT, 팀 가치, 출전 선수 수를 반환합니다.

이적 추세 그래프는 top_transfers.json으로부터 클라이언트 측에서 파생됩니다(LiveFPL 페이지가 버블 차트를 만드는 것과 동일한 방식). 선수별 순 변화 = 이적 in − 이적 out, 노드 크기 = 총 거래량, 엣지 = 이적 쌍(out → in).

각 선수 결과에는 progress_now_pct, prediction_pct, per_hour_pct, direction(rise/fall/stable) 및 predicted_new_cost가 포함됩니다.

설치

cd livefpl-mcp
uv sync

실행

uv run livefpl-mcp

서버는 stdio를 통해 MCP로 통신합니다.

Claude Desktop / MCP 클라이언트 설정

MCP 클라이언트 설정(예: claude_desktop_config.json)에 추가하세요:

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

예시 프롬프트

  • “곧 가격이 오를 FPL 수비수는 누구?”

  • “오늘 밤 가격 하락 상위 10명을 보여줘.”

  • “Haaland의 가격 예측은 어떻게 되나요?”

  • “지금 가장 인기 있는 이적은 무엇인가요?”

  • “리그 230412의 라이브 점수를 보여줘.”

  • “지금 내 리그 230412에서 누가 게임위크 1위인가요?”

참고

  • 예측은 LiveFPL의 것이며 공식 FPL 알고리즘이 아닙니다. 단일 게임위크에서 정확도가 가장 높습니다(LiveFPL은 더블 게임위크 규칙이 덜 확실하다고 언급합니다).

  • 데이터는 각 도구 호출 시 실시간으로 가져옵니다.

라이선스

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.

  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

Scored across 9 tools

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    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
    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
  • 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