---
title: "MCP tools"
description: "The supported tools for reading, generating, and polling Fantasy Pundit commentary."
---

> Fantasy Pundit documentation index
> Discover the complete public contract at https://fantasypundit.lol/docs/llms.txt

# MCP tools

## `get_league_commentary`

Read first. This tool checks for the canonical commentary and never starts generation.

| Input | Required | Meaning |
| --- | --- | --- |
| `league` | Yes | Public league ID, FPL league URL, or league name. |
| `gameweek` | No | A completed Gameweek from 1 to 38. Omit it for the latest completed week. |

It can return a completed edition, an in-progress job, `not_generated`, or a request for league selection. A historical Gameweek can be read when it was published, but new generation is available only for the latest completed Gameweek.

## `generate_weekly_commentary`

Create or reuse the canonical written edition for the latest completed Gameweek. Call this only after the user explicitly asks Fantasy Pundit to generate or publish commentary.

| Input | Required | Meaning |
| --- | --- | --- |
| `league` | Yes | Public league ID, FPL league URL, or league name. |

The operation is non-destructive and idempotent: repeated calls for the same league and completed Gameweek reuse the same official job or result. It may consume limited shared generation capacity.

## `get_commentary_result`

Poll the job returned by `generate_weekly_commentary`. It never starts another generation.

| Input | Required | Meaning |
| --- | --- | --- |
| `jobId` | Yes | Weekly commentary job ID returned by the generation tool. |

Continue only while the result is `queued` or `processing`, and respect `pollAfterSeconds` when it is returned. Stop on `completed` or `failed`.

## Completed response shape

The exact response can grow without breaking clients, so clients should rely on the stable fields they use:

```json
{
  "status": "completed",
  "jobId": "…",
  "league": { "id": "314", "name": "Example League" },
  "seasonId": "2026-27",
  "gameweek": 7,
  "commentary": {},
  "share": { "url": "…", "text": "…" },
  "links": { "leagueUrl": "…" }
}
```

Additional fields may be present. Clients should ignore fields they do not understand.
