fpl-mcp-server 0.1.6__tar.gz → 0.1.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. fpl_mcp_server-0.1.7/.pre-commit-config.yaml +15 -0
  2. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/CONTRIBUTING.md +18 -0
  3. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/PKG-INFO +2 -2
  4. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/README.md +1 -1
  5. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/docs/installation.md +1 -1
  6. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/docs/tool-selection-guide.md +22 -30
  7. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/pyproject.toml +1 -1
  8. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/captain_recommendation.py +13 -16
  9. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/league_analysis.py +12 -5
  10. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/player_analysis.py +2 -3
  11. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/squad_analysis.py +1 -1
  12. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/team_analysis.py +2 -1
  13. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/transfers.py +4 -3
  14. fpl_mcp_server-0.1.7/src/tools/fixtures.py +342 -0
  15. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/tools/gameweeks.py +0 -182
  16. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/tools/leagues.py +189 -2
  17. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/tools/players.py +259 -287
  18. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/tools/teams.py +1 -173
  19. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/tools/transfers.py +250 -112
  20. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/conftest.py +62 -7
  21. fpl_mcp_server-0.1.7/tests/test_tools_advanced.py +341 -0
  22. fpl_mcp_server-0.1.7/tests/test_tools_coverage.py +126 -0
  23. fpl_mcp_server-0.1.7/tests/test_tools_coverage_extra.py +119 -0
  24. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_tools_integration.py +7 -223
  25. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/uv.lock +1 -1
  26. fpl_mcp_server-0.1.6/src/tools/fixtures.py +0 -146
  27. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/.dockerignore +0 -0
  28. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/.env.example +0 -0
  29. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/.github/workflows/lint.yml +0 -0
  30. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/.github/workflows/publish-docker.yml +0 -0
  31. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/.github/workflows/publish-pypi.yml +0 -0
  32. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/.github/workflows/test.yml +0 -0
  33. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/.gitignore +0 -0
  34. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/Dockerfile +0 -0
  35. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/LICENSE +0 -0
  36. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/docs/configuration.md +0 -0
  37. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/docs/fpl-api-swagger.json +0 -0
  38. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/docs/fpl-api.md +0 -0
  39. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/docs/releasing.md +0 -0
  40. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/docs/usage-examples.md +0 -0
  41. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/pytest.ini +0 -0
  42. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/cache.py +0 -0
  43. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/client.py +0 -0
  44. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/config.py +0 -0
  45. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/constants.py +0 -0
  46. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/exceptions.py +0 -0
  47. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/formatting.py +0 -0
  48. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/main.py +0 -0
  49. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/models.py +0 -0
  50. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/__init__.py +0 -0
  51. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/chips.py +0 -0
  52. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/prompts/team_selection.py +0 -0
  53. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/rate_limiter.py +0 -0
  54. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/resources/__init__.py +0 -0
  55. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/resources/bootstrap.py +0 -0
  56. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/state.py +0 -0
  57. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/tools/__init__.py +0 -0
  58. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/utils.py +0 -0
  59. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/src/validators.py +0 -0
  60. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_cache.py +0 -0
  61. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_client.py +0 -0
  62. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_client_advanced.py +0 -0
  63. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_exceptions.py +0 -0
  64. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_formatting.py +0 -0
  65. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_models.py +0 -0
  66. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_rate_limiter.py +0 -0
  67. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_resources.py +0 -0
  68. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_state.py +0 -0
  69. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_state_advanced.py +0 -0
  70. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_utils.py +0 -0
  71. {fpl_mcp_server-0.1.6 → fpl_mcp_server-0.1.7}/tests/test_validators.py +0 -0
@@ -0,0 +1,15 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v6.0.0
4
+ hooks:
5
+ - id: check-yaml
6
+ - id: end-of-file-fixer
7
+ - id: trailing-whitespace
8
+ - repo: https://github.com/astral-sh/ruff-pre-commit
9
+ rev: v0.14.14
10
+ hooks:
11
+ # Run the linter.
12
+ - id: ruff
13
+ args: [--fix]
14
+ # Run the formatter.
15
+ - id: ruff-format
@@ -57,6 +57,24 @@ uv run ruff check --fix src tests
57
57
  uv run ruff format src tests
58
58
  ```
59
59
 
60
+ ### Pre-commit Hooks
61
+
62
+ We use `pre-commit` to verify code quality before committing changes.
63
+
64
+ Setup:
65
+ ```bash
66
+ # Install pre-commit (if not already installed)
67
+ pip install pre-commit
68
+
69
+ # Install the git hooks
70
+ pre-commit install
71
+ ```
72
+
73
+ Now checks will run automatically on commit. To run them manually on all files:
74
+ ```bash
75
+ pre-commit run --all-files
76
+ ```
77
+
60
78
  ### Running Locally
61
79
 
62
80
  ```bash
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fpl-mcp-server
3
- Version: 0.1.6
3
+ Version: 0.1.7
4
4
  Summary: Fantasy Premier League MCP Server
5
5
  Project-URL: Homepage, https://github.com/nguyenanhducs/fpl-mcp
6
6
  Project-URL: Repository, https://github.com/nguyenanhducs/fpl-mcp
@@ -41,7 +41,7 @@ A comprehensive **Model Context Protocol (MCP)** server for Fantasy Premier Leag
41
41
 
42
42
  This MCP server provides comprehensive FPL analysis capabilities through:
43
43
 
44
- - **22 Interactive Tools** - Search players, analyze fixtures, compare managers, track transfers, and more
44
+ - **17 Interactive Tools** - Search players, analyze fixtures, compare managers, track transfers, and more
45
45
  - **4 Data Resources** - access to players, teams, and gameweeks bootstrap data
46
46
  - **8 Strategy Prompts** - Structured templates for squad analysis, transfer planning, chip strategy, and captain selection
47
47
  - **Smart Caching** - 4-hour cache for bootstrap data to minimize API calls while keeping data fresh
@@ -10,7 +10,7 @@ A comprehensive **Model Context Protocol (MCP)** server for Fantasy Premier Leag
10
10
 
11
11
  This MCP server provides comprehensive FPL analysis capabilities through:
12
12
 
13
- - **22 Interactive Tools** - Search players, analyze fixtures, compare managers, track transfers, and more
13
+ - **17 Interactive Tools** - Search players, analyze fixtures, compare managers, track transfers, and more
14
14
  - **4 Data Resources** - access to players, teams, and gameweeks bootstrap data
15
15
  - **8 Strategy Prompts** - Structured templates for squad analysis, transfer planning, chip strategy, and captain selection
16
16
  - **Smart Caching** - 4-hour cache for bootstrap data to minimize API calls while keeping data fresh
@@ -182,4 +182,4 @@ To verify your installation, ask your AI assistant:
182
182
  List available FPL tools
183
183
  ```
184
184
 
185
- You should see all 22 FPL tools, including player search, fixture analysis, and transfer tracking capabilities.
185
+ You should see all 17 FPL tools, including player search, fixture analysis, and transfer tracking capabilities.
@@ -14,59 +14,54 @@ This guide provides a comprehensive reference to all available tools, resources,
14
14
 
15
15
  Interactive functions that perform specific FPL analysis tasks. All tools accept structured inputs and return formatted data.
16
16
 
17
- ### Player Tools (7 tools)
17
+ ### Player Tools (5 tools)
18
18
 
19
19
  | Tool Name | Description | Key Parameters |
20
20
  |-----------|-------------|----------------|
21
- | `fpl_search_players` | Search players by name | `name`, `max_results` |
22
- | `fpl_search_players_by_team` | Get all players from a specific team | `team_name`, `max_results` |
23
21
  | `fpl_find_player` | Find player with fuzzy name matching | `player_name` |
24
22
  | `fpl_get_player_details` | Comprehensive player info with fixtures and history | `player_name` |
25
23
  | `fpl_compare_players` | Compare multiple players side-by-side | `player_names[]` |
26
24
  | `fpl_get_top_performers` | Top 10 players by goals, xG, assists, xA, xGI | `metric`, `num_gameweeks` |
27
- | `fpl_get_player_transfers_by_gameweek` | Transfer stats for a specific player | `player_name`, `gameweek` |
25
+ | `fpl_get_captain_recommendations` | Get top captain picks for upcoming gameweek | `team_id`, `gameweek` |
28
26
 
29
- ### Team Tools (3 tools)
27
+ ### Team Tools (1 tool)
30
28
 
31
29
  | Tool Name | Description | Key Parameters |
32
30
  |-----------|-------------|----------------|
33
- | `fpl_get_team_info` | Team details and strength ratings | `team_name` |
34
- | `fpl_list_all_teams` | Overview of all 20 Premier League teams | `format` |
35
31
  | `fpl_analyze_team_fixtures` | Assess upcoming fixtures for a team | `team_name`, `num_gameweeks` |
36
32
 
37
- ### Gameweek Tools (4 tools)
33
+ ### Gameweek Tools (1 tool)
38
34
 
39
35
  | Tool Name | Description | Key Parameters |
40
36
  |-----------|-------------|----------------|
41
37
  | `fpl_get_current_gameweek` | Current or upcoming gameweek details | `format` |
42
- | `fpl_get_gameweek_info` | Detailed gameweek stats and top performers | `gameweek`, `format` |
43
- | `fpl_list_all_gameweeks` | Full season gameweek status | `format` |
38
+
39
+ ### Fixtures Tools (2 tools)
40
+
41
+ | Tool Name | Description | Key Parameters |
42
+ |-----------|-------------|----------------|
44
43
  | `fpl_get_fixtures_for_gameweek` | All matches in a specific gameweek | `gameweek`, `format` |
44
+ | `fpl_find_fixture_opportunities` | Find teams with easiest upcoming fixtures | `num_gameweeks`, `min_difficulty` |
45
45
 
46
- ### League & Manager Tools (6 tools)
46
+ ### League & Manager Tools (4 tools)
47
47
 
48
48
  | Tool Name | Description | Key Parameters |
49
49
  |-----------|-------------|----------------|
50
50
  | `fpl_get_league_standings` | League rankings and points | `league_id`, `page`, `format` |
51
- | `fpl_get_manager_gameweek_team` | Team selection via manager name + league ID | `manager_name`, `league_id`, `gameweek` |
52
- | `fpl_get_manager_squad` | Direct access via team ID | `team_id`, `gameweek` |
53
51
  | `fpl_get_manager_by_team_id` | Manager profile without league context | `team_id`, `gameweek`, `format` |
54
52
  | `fpl_compare_managers` | Side-by-side team comparison | `manager1_team_id`, `manager2_team_id`, `gameweek` |
55
- | `fpl_get_manager_chips` | View used and available chips | `team_id` |
53
+ | `fpl_analyze_rival` | Head-to-head analysis with a rival | `my_team_id`, `rival_team_id` |
56
54
 
57
- ### Transfer Tools (3 tools)
55
+ ### Transfer Tools (4 tools)
58
56
 
59
57
  | Tool Name | Description | Key Parameters |
60
58
  |-----------|-------------|----------------|
61
- | `fpl_get_player_transfers_by_gameweek` | Transfer stats for a player | `player_name`, `gameweek` |
59
+ | `fpl_analyze_transfer` | Analyze a potential transfer decision | `player_out`, `player_in`, `my_team_id` |
62
60
  | `fpl_get_top_transferred_players` | Most transferred in/out right now | `limit`, `format` |
63
61
  | `fpl_get_manager_transfers_by_gameweek` | Transfers made by a manager | `team_id`, `gameweek` |
62
+ | `fpl_get_manager_chips` | View used and available chips | `team_id` |
64
63
 
65
- ### Fixtures Tools (1 tool)
66
64
 
67
- | Tool Name | Description | Key Parameters |
68
- |-----------|-------------|----------------|
69
- | `fpl_get_fixtures_for_gameweek` | All fixtures in a gameweek | `gameweek`, `format` |
70
65
 
71
66
  ---
72
67
 
@@ -104,37 +99,34 @@ Structured templates that guide analysis workflows. Prompts combine multiple too
104
99
 
105
100
  ## Quick Decision Guide
106
101
 
102
+
107
103
  ### Finding Players
108
104
 
109
105
  - **Know exact name?** → `fpl_get_player_details` - Comprehensive player info with fixtures, history, and stats
110
106
  - **Partial name/typos?** → `fpl_find_player` - Fuzzy matching finds players even with spelling variations
111
- - **Search by criteria?** → `fpl_search_players` - Search by name with customizable results limit
112
- - **Want team's squad?** → `fpl_search_players_by_team` - All players from a specific team
107
+ - **Want captain picks?** → `fpl_get_captain_recommendations` - Top weighted captaincy picks
113
108
  - **Want top by metrics?** → `fpl_get_top_performers` - Top 10 players by goals, xG, assists, xA, xGI over recent gameweeks
114
109
 
115
110
  ### Analyzing Teams
116
111
 
117
- - **Basic team info?** → `fpl_get_team_info` - Team details and strength ratings
118
- - **List all teams?** → `fpl_list_all_teams` - Overview of all 20 Premier League teams
119
- - **Fixture difficulty?** → `fpl_analyze_team_fixtures` - Assess upcoming fixtures for a team
112
+ - **Fixture difficulty?** → `fpl_analyze_team_fixtures` - Assess upcoming fixtures for a specific team
113
+ - **Find easy fixtures?** → `fpl_find_fixture_opportunities` - Recommend teams with easiest upcoming runs
120
114
 
121
115
  ### Gameweek Information
122
116
 
123
117
  - **Current gameweek?** → `fpl_get_current_gameweek` - Current or upcoming gameweek details
124
- - **Specific gameweek stats?** → `fpl_get_gameweek_info` - Detailed stats and top performers
125
- - **All gameweeks overview?** → `fpl_list_all_gameweeks` - Full season gameweek status
126
118
  - **Gameweek fixtures?** → `fpl_get_fixtures_for_gameweek` - All matches in a specific gameweek
127
119
 
128
120
  ### League & Manager Analysis
129
121
 
130
122
  - **League standings?** → `fpl_get_league_standings` - Rankings and points (requires league ID)
131
- - **Manager's team (with name)?** → `fpl_get_manager_gameweek_team` - Team selection via manager name + league ID
132
- - **Manager's team (with team ID)?** → `fpl_get_manager_squad` - Direct access via team ID, optional gameweek
123
+ - **View any team?** → `fpl_get_manager_by_team_id` - Direct access to manager profile via team ID
133
124
  - **Compare managers?** → `fpl_compare_managers` - Side-by-side team comparison
125
+ - **Analyze rival?** → `fpl_analyze_rival` - Deep dive head-to-head vs a specific rival
134
126
  - **Manager transfers?** → `fpl_get_manager_transfers_by_gameweek` - Transfers made by a manager
135
127
 
136
128
  ### Transfer Intelligence
137
129
 
138
- - **Player transfer trends?** → `fpl_get_player_transfers_by_gameweek` - Transfer stats for a player
130
+ - **Analyze move?** → `fpl_analyze_transfer` - Deep dive comparison of player OUT vs player IN
139
131
  - **Current trends?** → `fpl_get_top_transferred_players` - Most transferred in/out right now
140
132
  - **Manager chip usage?** → `fpl_get_manager_chips` - View used and available chips (2025/26 half-season system)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fpl-mcp-server"
3
- version = "0.1.6"
3
+ version = "0.1.7"
4
4
  description = "Fantasy Premier League MCP Server"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -9,7 +9,9 @@ from ..tools import mcp
9
9
 
10
10
 
11
11
  @mcp.prompt()
12
- def recommend_captain(team_id: int, gameweek: int | None = None, response_format: str = "markdown") -> str:
12
+ def recommend_captain(
13
+ team_id: int, gameweek: int | None = None, response_format: str = "markdown"
14
+ ) -> str:
13
15
  """
14
16
  Recommend optimal captain choices using xGI-based metrics and fixture analysis.
15
17
 
@@ -33,19 +35,16 @@ Act as an FPL Expert Analyst with 10+ years of experience. We do not play it saf
33
35
 
34
36
  ## 🚦 **Workflow & Efficiency**
35
37
 
36
- **DO NOT** analyze all 15 players in depth. That is inefficient.
37
- 1. **Get Squad**: Fetch manager's team.
38
- 2. **Shortlist**: Identify **3-5 Candidates** based on:
39
- * **Price**: > £7.0m (Premiums usually haul)
40
- * **Form**: > 4.0 PPG
41
- * **Context**: Key talismen (e.g., Salah, Haaland, Palmer, Saka) even if form is dip.
42
- 3. **Deep Dive**: Only fetch detailed stats (`fpl_compare_players`) for these 3-5 candidates.
38
+ 1. **Tool**: `fpl_get_captain_recommendations(team_id={team_id}, gameweek={gameweek})`
39
+ *This tool automatically runs the Pro-Level Scoring Model defined below.*
40
+ 2. **Review**: Analyze the return values (Score, Rationale, Metrics).
41
+ 3. **Explain**: Use the framework below to justify the tool's recommendations.
43
42
 
44
43
  ---
45
44
 
46
45
  ## 📊 **Pro-Level Scoring Model (Max 100)**
47
46
 
48
- Calculate the **Captain Suitability Score** using this weighted matrix:
47
+ The tool calculates the **Captain Suitability Score** using this weighted matrix. Use this context to explain the results:
49
48
 
50
49
  ### **1. Projected Points (Weight: 40%)**
51
50
  *The core engine. Can they score specific points this week?*
@@ -112,7 +111,7 @@ Calculate the **Captain Suitability Score** using this weighted matrix:
112
111
  • **Nailedness**: [Secure/Risk] - [Minutes played last 3 GWs]
113
112
  • **Explosiveness**: [Penalty Duties? / Haul Potential?]
114
113
 
115
- **Why**: [2-3 sentence reasoning. Mention specific matchup weaknesses or player form.]
114
+ **Why**: [2-3 sentence reasoning using the Scoring Model. E.g. "Points for Elite Stats (40pts) + Weak Defense (30pts)..."]
116
115
  **Risk**: [Any rotation risk or injury flag? If none, say "None"]
117
116
 
118
117
  **Confidence**: [Justification, e.g., "Clear data leader, 15pt gap to #2"]
@@ -141,12 +140,10 @@ Calculate the **Captain Suitability Score** using this weighted matrix:
141
140
 
142
141
  ## 🔧 **Execution Plan**
143
142
 
144
- 1. **Tool**: `fpl_get_manager_by_team_id(team_id={team_id}, gameweek={gameweek})` -> Get squad.
145
- 2. **Tool**: `fpl_get_gameweek_fixtures` -> Scan for easy matchups.
146
- 3. **Process**: Filter squad for Shortlist (Premiums + Form + Easy Fixture).
147
- 4. **Tool**: `fpl_compare_players(player_names=[List of Shortlist Names])` -> Get xGI, Stats, Etc.
148
- 5. **Compute**: Apply Scoring Model.
149
- 6. **Output**: Generate Recommendation.
143
+ 1. **Tool**: `fpl_get_captain_recommendations(team_id={team_id}, gameweek={gameweek})`
144
+ *Note: This tool handles the raw data fetching and scoring model calculation.*
145
+ 2. **Process**: Review the tool's `recommendations` list.
146
+ 3. **Output**: Format the top 3 recommendations as requested above.
150
147
 
151
148
  **Begin Analysis Now.**
152
149
  """
@@ -110,21 +110,28 @@ Step 1: Get league standings to find manager names and team IDs:
110
110
  Step 2: Compare managers using one of these approaches:
111
111
 
112
112
  **Option A - Individual manager analysis:**
113
- - Tool: `fpl_get_manager_gameweek_team`
113
+ - Tool: `fpl_get_manager_by_team_id`
114
114
  - Parameters:
115
- - manager_name: "Manager Name" (from league standings)
116
- - league_id: {league_id}
115
+ - team_id: [Team ID] (found in standings)
117
116
  - gameweek: {gameweek}
118
117
  - Returns: Detailed team sheet with starting XI, bench, captain, transfers, points
119
118
 
120
- **Option B - Side-by-side comparison:**
119
+ **Option B - Side-by-side comparison (General):**
121
120
  - Tool: `fpl_compare_managers`
122
121
  - Parameters:
123
- - manager_names: ["Manager1", "Manager2", "Manager3"] (2-4 managers)
122
+ - manager_names: ["Manager1", "Manager2"]
124
123
  - league_id: {league_id}
125
124
  - gameweek: {gameweek}
126
125
  - Returns: Comparison with common players, differentials, captain choices
127
126
 
127
+ **Option C - Deep Rival Analysis (Head-to-Head):**
128
+ - Tool: `fpl_analyze_rival`
129
+ - Parameters:
130
+ - my_team_id: [Your Team ID]
131
+ - rival_team_id: [Rival Team ID]
132
+ - gameweek: {gameweek}
133
+ - Returns: Comprehensive stats, differentials, and threat assessment
134
+
128
135
  **Additional data sources:**
129
136
  - Resource `fpl://bootstrap/players` - All player details, ownership %, positions, prices
130
137
  - Resource `fpl://current-gameweek` - Current gameweek status and deadline information
@@ -123,12 +123,11 @@ Present side-by-side:
123
123
 
124
124
  ## 🔧 **Tool Calls**
125
125
 
126
- For each player, use:
127
- 1. **`fpl://player/{{{{player_name}}}}/summary`** → Get comprehensive stats, fixtures, history
126
+ 1. **`fpl_compare_players(player_names=[p1, p2, ...])`** → Get comprehensive stats, fixtures, history side-by-side
128
127
  *Provides: xG, xA, xGI, minutes, goals, assists, upcoming fixtures*
129
128
  2. **`fpl://bootstrap/players`** → Get ownership %, price, transfer trends
130
129
  *Provides: selected_by_percent, now_cost, transfers_in/out_event*
131
- 3. **`fpl_get_top_performers`** with `num_gameweeks=5` → Benchmark against top xGI players
130
+ 3. **`fpl_get_top_performers(num_gameweeks=5)`** → Benchmark against top xGI players
132
131
 
133
132
  ---
134
133
 
@@ -119,7 +119,7 @@ Instead of arbitrary PPG thresholds, use xGI/90:
119
119
  ## 🔧 **Tool Calls**
120
120
 
121
121
  Use these tools and resources:
122
- 1. `fpl_get_manager_squad(team_id={team_id})` → Current squad composition
122
+ 1. `fpl_get_manager_by_team_id(team_id={team_id})` → Current squad composition
123
123
  2. `fpl_get_top_performers(num_gameweeks={num_gameweeks})` → Benchmark against top xGI players
124
124
  3. For each player:
125
125
  - `fpl://player/{{{{player_name}}}}/summary` → xG, xA, xGI, minutes, fixtures
@@ -108,7 +108,8 @@ Calculate **rolling 3-GW average FDR**:
108
108
 
109
109
  ## 🔧 **Tool Calls**
110
110
 
111
- Use: `fpl://team/{team_name}/fixtures?num_gameweeks={num_gameweeks}`
111
+ Use: `fpl_analyze_team_fixtures(team_name="{team_name}", num_gameweeks={num_gameweeks})`
112
+ For broader analysis (finding ANY team with good fixtures), use `fpl_find_fixture_opportunities`.
112
113
  Enrich with: `fpl://bootstrap/teams` for opponent strength proxy (if xGC not available, use team strength rank)
113
114
 
114
115
  ---
@@ -150,11 +150,12 @@ Using `fpl_get_top_performers(num_gameweeks=5)`:
150
150
 
151
151
  ## 🔧 **Tool Calls**
152
152
 
153
- 1. `fpl_get_manager_squad(team_id={team_id})` → Current squad with transfer context
153
+ 1. `fpl_get_manager_by_team_id(team_id={team_id})` → Current squad with transfer context
154
154
  2. `fpl_get_top_performers(num_gameweeks=5)` → Find high xGI players for replacements
155
- 3. For each transfer candidate:
155
+ 3. Use `fpl_analyze_transfer(player_out=..., player_in=...)` to validate your top priority move.
156
+ 4. For other candidates:
156
157
  - `fpl://player/{{{{name}}}}/summary` → xG, xA, fixtures, status
157
- 4. `fpl://bootstrap/players` → Price, ownership, transfer trends
158
+ 5. `fpl://bootstrap/players` → Price, ownership, transfer trends
158
159
 
159
160
  ---
160
161