← WebMCP Directory

Tool tree

draft-room-webmcp.hungv47.chatgpt.site

Media & PersonalTools verified
Website
A fantasy football squad builder built for agents. Fourteen WebMCP tools share one £100m budget, one rule engine, and one manager's brief with the human interface.
Explore capabilities
    list_available_playersAnswer

    List undrafted players with id, name, position (GK/DF/MF/FW), club, price, projected points, points-per-£m, and a floor/ceiling outlook (p10/p90 season points). Filter by position, club, price band, or a name search; sort by points, price, value, floor, or ceiling. Use the returned id with draft_player, swap_player, or scenario plans.

    View tool JSON
    {
      "name": "list_available_players",
      "kind": "answer",
      "impl": "imperative",
      "description": "List undrafted players with id, name, position (GK/DF/MF/FW), club, price, projected points, points-per-£m, and a floor/ceiling outlook (p10/p90 season points). Filter by position, club, price band, or a name search; sort by points, price, value, floor, or ceiling. Use the returned id with draft_player, swap_player, or scenario plans.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "position": {
            "type": "string",
            "enum": [
              "GK",
              "DF",
              "MF",
              "FW"
            ]
          },
          "team": {
            "type": "string",
            "description": "Club abbreviation, e.g. ARS, LIV, MCI."
          },
          "maxPrice": {
            "type": "number",
            "description": "Only players at or under this price, in £m."
          },
          "minPrice": {
            "type": "number",
            "description": "Only players at or over this price, in £m."
          },
          "search": {
            "type": "string",
            "description": "Case-insensitive substring match on player name or club."
          },
          "sort": {
            "type": "string",
            "enum": [
              "points",
              "price",
              "value",
              "floor",
              "ceiling"
            ],
            "default": "points"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 120,
            "description": "Max players to return (default 40)."
          }
        }
      }
    }
    get_roster_summaryAnswer

    Return the current squad: formation, each slot and who is in it (and whether you or the agent picked them), money spent and remaining, total projected points, and a probability outlook (mean, p10, p90) for the season total. Also lists the formations available to set_formation.

    View tool JSON
    {
      "name": "get_roster_summary",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the current squad: formation, each slot and who is in it (and whether you or the agent picked them), money spent and remaining, total projected points, and a probability outlook (mean, p10, p90) for the season total. Also lists the formations available to set_formation.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    draft_playerAction

    Add an available player to the squad. Slots follow the current formation (GK, DF1-n, MF1-n, FW1-n). If slotId is omitted, the first empty slot for the player's position is used. Fails clearly if the player is already drafted, no slot for their position is open (change formation to make room), or the price exceeds the remaining budget.

    View tool JSON
    {
      "name": "draft_player",
      "kind": "act",
      "impl": "imperative",
      "description": "Add an available player to the squad. Slots follow the current formation (GK, DF1-n, MF1-n, FW1-n). If slotId is omitted, the first empty slot for the player's position is used. Fails clearly if the player is already drafted, no slot for their position is open (change formation to make room), or the price exceeds the remaining budget.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string",
            "description": "Player id from list_available_players (the player's name also works)."
          },
          "slotId": {
            "type": "string",
            "description": "Optional slot id, e.g. GK, DF2, MF1, FW3."
          }
        },
        "required": [
          "playerId"
        ]
      }
    }
    remove_playerAction

    Remove a player from the squad by slot id or player id, freeing their price back into the budget and marking them available again. Players the manager has marked protected (see get_brief) cannot be removed without force=true.

    View tool JSON
    {
      "name": "remove_player",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove a player from the squad by slot id or player id, freeing their price back into the budget and marking them available again. Players the manager has marked protected (see get_brief) cannot be removed without force=true.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string"
          },
          "playerId": {
            "type": "string"
          },
          "force": {
            "type": "boolean",
            "default": false,
            "description": "Override the manager's protection on this player."
          }
        }
      }
    }
    swap_playerAction

    Replace the player in a slot with a different available player of the same position, in one step. Fails if the new player is not eligible for that slot, does not fit under the resulting budget, or the outgoing player is protected by the manager's brief (force=true overrides).

    View tool JSON
    {
      "name": "swap_player",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the player in a slot with a different available player of the same position, in one step. Fails if the new player is not eligible for that slot, does not fit under the resulting budget, or the outgoing player is protected by the manager's brief (force=true overrides).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string"
          },
          "newPlayerId": {
            "type": "string"
          },
          "force": {
            "type": "boolean",
            "default": false,
            "description": "Override the manager's protection on the outgoing player."
          }
        },
        "required": [
          "slotId",
          "newPlayerId"
        ]
      }
    }
    auto_fill_rosterAction

    Fill every empty slot under the remaining budget. strategy 'value' maximises the objective per £m and then spends spare money on the best upgrades; 'stars_and_scrubs' buys the best available for the highest-need slots and fills the rest cheaply. objective picks what is maximised: expected points, a safe floor, or upside. Filled slots are never touched.

    View tool JSON
    {
      "name": "auto_fill_roster",
      "kind": "act",
      "impl": "imperative",
      "description": "Fill every empty slot under the remaining budget. strategy 'value' maximises the objective per £m and then spends spare money on the best upgrades; 'stars_and_scrubs' buys the best available for the highest-need slots and fills the rest cheaply. objective picks what is maximised: expected points, a safe floor, or upside. Filled slots are never touched.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "strategy": {
            "type": "string",
            "enum": [
              "value",
              "stars_and_scrubs"
            ],
            "default": "value"
          },
          "objective": {
            "type": "string",
            "enum": [
              "mean",
              "floor",
              "ceiling"
            ],
            "default": "mean",
            "description": "What to optimise: 'mean' expected points, 'floor' the 10th-percentile season (safe), or 'ceiling' the 90th percentile (upside)."
          }
        }
      }
    }
    set_formationAction

    Agent-only. Re-shape the squad to one of 4-3-3, 4-4-2, 3-5-2, 3-4-3, 5-3-2, 4-5-1, 5-4-1. Drafted players keep their slots' positions and are re-seated within their line. If more players of a position are drafted than the new shape fields, the call fails and names them, unless force=true, which releases the lowest projected surplus back to the pool. The budget is unchanged.

    View tool JSON
    {
      "name": "set_formation",
      "kind": "act",
      "impl": "imperative",
      "description": "Agent-only. Re-shape the squad to one of 4-3-3, 4-4-2, 3-5-2, 3-4-3, 5-3-2, 4-5-1, 5-4-1. Drafted players keep their slots' positions and are re-seated within their line. If more players of a position are drafted than the new shape fields, the call fails and names them, unless force=true, which releases the lowest projected surplus back to the pool. The budget is unchanged.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "formation": {
            "type": "string",
            "enum": [
              "4-3-3",
              "4-4-2",
              "3-5-2",
              "3-4-3",
              "5-3-2",
              "4-5-1",
              "5-4-1"
            ]
          },
          "force": {
            "type": "boolean",
            "default": false,
            "description": "Release surplus players automatically instead of failing."
          }
        },
        "required": [
          "formation"
        ]
      }
    }
    simulate_scenariosAction

    Agent-only, read-only. Evaluate up to six alternative plans side by side without changing the squad. Each plan can switch formation, remove, swap, and add players, then auto-fill what is left. Returns, per plan, the steps taken, money spent and left, projected points, and a probability outlook (mean, sd, p10, p90, and P(total ≥ target) when a target is given), plus the delta against the current squad. Plans that break a rule report which step failed and why.

    View tool JSON
    {
      "name": "simulate_scenarios",
      "kind": "act",
      "impl": "imperative",
      "description": "Agent-only, read-only. Evaluate up to six alternative plans side by side without changing the squad. Each plan can switch formation, remove, swap, and add players, then auto-fill what is left. Returns, per plan, the steps taken, money spent and left, projected points, and a probability outlook (mean, sd, p10, p90, and P(total ≥ target) when a target is given), plus the delta against the current squad. Plans that break a rule report which step failed and why.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "scenarios": {
            "type": "array",
            "description": "One to six plans.",
            "items": {
              "type": "object",
              "description": "An ordered plan. Steps run as: formation, remove, swap, add, fill. Any failing step fails the whole plan.",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "Short name for this scenario, echoed in the result."
                },
                "formation": {
                  "type": "string",
                  "enum": [
                    "4-3-3",
                    "4-4-2",
                    "3-5-2",
                    "3-4-3",
                    "5-3-2",
                    "4-5-1",
                    "5-4-1"
                  ],
                  "description": "Optional formation to switch to first."
                },
                "remove": {
                  "type": "array",
                  "description": "Slot ids or player ids/names to release.",
                  "items": {
                    "type": "string"
                  }
                },
                "swap": {
                  "type": "array",
                  "description": "Replacements to make, each { slotId, newPlayerId }.",
                  "items": {
                    "type": "object",
                    "properties": {
                      "slotId": {
                        "type": "string"
                      },
                      "newPlayerId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slotId",
                      "newPlayerId"
                    ]
                  }
                },
                "add": {
                  "type": "array",
                  "description": "Players to draft, each { playerId, slotId? }.",
                  "items": {
                    "type": "object",
                    "properties": {
                      "playerId": {
                        "type": "string"
                      },
                      "slotId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "playerId"
                    ]
                  }
                },
                "fill": {
                  "type": "object",
                  "description": "Optional: auto-fill whatever is still open, { strategy, objective }.",
                  "properties": {
                    "strategy": {
                      "type": "string",
                      "enum": [
                        "value",
                        "stars_and_scrubs"
                      ],
                      "default": "value"
                    },
                    "objective": {
                      "type": "string",
                      "enum": [
                        "mean",
                        "floor",
                        "ceiling"
                      ],
                      "default": "mean",
                      "description": "What to optimise: 'mean' expected points, 'floor' the 10th-percentile season (safe), or 'ceiling' the 90th percentile (upside)."
                    }
                  }
                }
              }
            }
          },
          "target": {
            "type": "number",
            "description": "Optional season points target to compute P(total ≥ target) for."
          }
        },
        "required": [
          "scenarios"
        ]
      }
    }
    apply_scenarioAction

    Agent-only. Run one plan (formation, removes, swaps, adds, fill) and commit it atomically: either every step lands or nothing changes and the failing step is reported. Use after simulate_scenarios to make a multi-step change in one call.

    View tool JSON
    {
      "name": "apply_scenario",
      "kind": "act",
      "impl": "imperative",
      "description": "Agent-only. Run one plan (formation, removes, swaps, adds, fill) and commit it atomically: either every step lands or nothing changes and the failing step is reported. Use after simulate_scenarios to make a multi-step change in one call.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "scenario": {
            "type": "object",
            "description": "An ordered plan. Steps run as: formation, remove, swap, add, fill. Any failing step fails the whole plan.",
            "properties": {
              "label": {
                "type": "string",
                "description": "Short name for this scenario, echoed in the result."
              },
              "formation": {
                "type": "string",
                "enum": [
                  "4-3-3",
                  "4-4-2",
                  "3-5-2",
                  "3-4-3",
                  "5-3-2",
                  "4-5-1",
                  "5-4-1"
                ],
                "description": "Optional formation to switch to first."
              },
              "remove": {
                "type": "array",
                "description": "Slot ids or player ids/names to release.",
                "items": {
                  "type": "string"
                }
              },
              "swap": {
                "type": "array",
                "description": "Replacements to make, each { slotId, newPlayerId }.",
                "items": {
                  "type": "object",
                  "properties": {
                    "slotId": {
                      "type": "string"
                    },
                    "newPlayerId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "slotId",
                    "newPlayerId"
                  ]
                }
              },
              "add": {
                "type": "array",
                "description": "Players to draft, each { playerId, slotId? }.",
                "items": {
                  "type": "object",
                  "properties": {
                    "playerId": {
                      "type": "string"
                    },
                    "slotId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "playerId"
                  ]
                }
              },
              "fill": {
                "type": "object",
                "description": "Optional: auto-fill whatever is still open, { strategy, objective }.",
                "properties": {
                  "strategy": {
                    "type": "string",
                    "enum": [
                      "value",
                      "stars_and_scrubs"
                    ],
                    "default": "value"
                  },
                  "objective": {
                    "type": "string",
                    "enum": [
                      "mean",
                      "floor",
                      "ceiling"
                    ],
                    "default": "mean",
                    "description": "What to optimise: 'mean' expected points, 'floor' the 10th-percentile season (safe), or 'ceiling' the 90th percentile (upside)."
                  }
                }
              }
            }
          }
        },
        "required": [
          "scenario"
        ]
      }
    }
    project_pointsAction

    Agent-only, read-only. Monte Carlo the current squad's season total (or a hypothetical list of player ids) with rotation risk and club correlation. Returns mean, sd, p10/p50/p90, P(total ≥ target) when a target is given, club stacks that concentrate risk, and each player's contribution with floor and ceiling. Deterministic for a given sample count.

    View tool JSON
    {
      "name": "project_points",
      "kind": "act",
      "impl": "imperative",
      "description": "Agent-only, read-only. Monte Carlo the current squad's season total (or a hypothetical list of player ids) with rotation risk and club correlation. Returns mean, sd, p10/p50/p90, P(total ≥ target) when a target is given, club stacks that concentrate risk, and each player's contribution with floor and ceiling. Deterministic for a given sample count.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "target": {
            "type": "number",
            "description": "Season points target to compute P(total ≥ target) for."
          },
          "playerIds": {
            "type": "array",
            "description": "Optional. Project this list instead of the current squad.",
            "items": {
              "type": "string"
            }
          },
          "samples": {
            "type": "integer",
            "minimum": 500,
            "maximum": 20000,
            "default": 4000
          }
        }
      }
    }
    player_outlookAnswer

    Agent-only, read-only. For one or more players (ids or names), return the probability model behind the projection: mean, sd, p10/p50/p90 season points, start probability (rotation risk), and volatility. Optionally the probability each player scores at least a target. Use to compare a safe pick against a boom-or-bust one.

    View tool JSON
    {
      "name": "player_outlook",
      "kind": "answer",
      "impl": "imperative",
      "description": "Agent-only, read-only. For one or more players (ids or names), return the probability model behind the projection: mean, sd, p10/p50/p90 season points, start probability (rotation risk), and volatility. Optionally the probability each player scores at least a target. Use to compare a safe pick against a boom-or-bust one.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "playerIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "One to twelve player ids or names."
          },
          "target": {
            "type": "number",
            "description": "Optional points target per player."
          }
        },
        "required": [
          "playerIds"
        ]
      }
    }
    find_upgradesAnswer

    Agent-only, read-only. Search every single-swap improvement to the current squad that fits the remaining budget, ranked by gain on the chosen objective (mean, floor, or ceiling). Restrict to one slot or one position, cap the extra spend, and limit the count. Each result gives the outgoing and incoming player, the points gain, the price change, and gain per extra £m.

    View tool JSON
    {
      "name": "find_upgrades",
      "kind": "answer",
      "impl": "imperative",
      "description": "Agent-only, read-only. Search every single-swap improvement to the current squad that fits the remaining budget, ranked by gain on the chosen objective (mean, floor, or ceiling). Restrict to one slot or one position, cap the extra spend, and limit the count. Each result gives the outgoing and incoming player, the points gain, the price change, and gain per extra £m.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "objective": {
            "type": "string",
            "enum": [
              "mean",
              "floor",
              "ceiling"
            ],
            "default": "mean",
            "description": "What to optimise: 'mean' expected points, 'floor' the 10th-percentile season (safe), or 'ceiling' the 90th percentile (upside)."
          },
          "slotId": {
            "type": "string",
            "description": "Only look at this slot."
          },
          "position": {
            "type": "string",
            "enum": [
              "GK",
              "DF",
              "MF",
              "FW"
            ],
            "description": "Only look at slots of this position."
          },
          "maxCost": {
            "type": "number",
            "description": "Max extra spend for one swap, in £m (default: remaining budget)."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "default": 8
          }
        }
      }
    }
    get_briefAnswer

    Read-only. The manager's standing instructions, set by clicking players on the pitch: who wears the captain's armband (points count double) and the vice's, duties (penalties, set pieces), which players are protected from removal or swaps, and free-text notes per player. Read this before making changes so your plan respects it; the same brief is what the manager sees in the console.

    View tool JSON
    {
      "name": "get_brief",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read-only. The manager's standing instructions, set by clicking players on the pitch: who wears the captain's armband (points count double) and the vice's, duties (penalties, set pieces), which players are protected from removal or swaps, and free-text notes per player. Read this before making changes so your plan respects it; the same brief is what the manager sees in the console.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    set_assignmentAction

    Give a drafted player the armband ('captain' doubles their points in every projection; 'vice' inherits it if the captain's season is disrupted; 'none' hands it back), replace their duties (penalties, set_pieces, protected), and/or set a note the manager will see on the card. Only fields you pass change. The manager can edit the same fields by clicking the card.

    View tool JSON
    {
      "name": "set_assignment",
      "kind": "act",
      "impl": "imperative",
      "description": "Give a drafted player the armband ('captain' doubles their points in every projection; 'vice' inherits it if the captain's season is disrupted; 'none' hands it back), replace their duties (penalties, set_pieces, protected), and/or set a note the manager will see on the card. Only fields you pass change. The manager can edit the same fields by clicking the card.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string",
            "description": "Player id or name; must be in the squad."
          },
          "armband": {
            "type": "string",
            "enum": [
              "captain",
              "vice",
              "none"
            ]
          },
          "duties": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "penalties",
                "set_pieces",
                "protected"
              ]
            },
            "description": "Replaces the duty list. Pass [] to clear."
          },
          "note": {
            "type": "string",
            "description": "Up to 280 characters. Pass an empty string to clear."
          }
        },
        "required": [
          "playerId"
        ]
      }
    }