← WebMCP Directory

Tool tree

transfer-window-sandbox.vercel.app

Media & PersonalTools verified
Website
A WebMCP sandbox where an AI agent runs your transfer window, and the page refuses any deal that breaks Premier League PSR or squad-registration rules.
Explore capabilities
    get_club_stateAnswer

    Financial and squad position of the club you are managing: three-year PSR aggregate, remaining headroom, current-season projection, and squad counts. Call this first — every spending decision depends on the headroom figure.

    View tool JSON
    {
      "name": "get_club_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Financial and squad position of the club you are managing: three-year PSR aggregate, remaining headroom, current-season projection, and squad counts. Call this first — every spending decision depends on the headroom figure.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    list_squadAnswer

    The current squad with full accounting detail per player: wage, remaining contract, annual amortisation charge, and book value. Book value is what you must beat on a sale to book a profit.

    View tool JSON
    {
      "name": "list_squad",
      "kind": "answer",
      "impl": "imperative",
      "description": "The current squad with full accounting detail per player: wage, remaining contract, annual amortisation charge, and book value. Book value is what you must beat on a sale to book a profit.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "position": {
            "type": "string",
            "enum": [
              "GK",
              "DF",
              "MF",
              "FW"
            ],
            "description": "Filter by position."
          },
          "academy_only": {
            "type": "boolean",
            "description": "Only academy graduates (book value zero)."
          }
        }
      }
    }
    search_playersAnswer

    Search the transfer market for players at other clubs. Returns market value, which is the price you would be quoted. Filter before you reason — do not ask for the whole list and sort it yourself.

    View tool JSON
    {
      "name": "search_players",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search the transfer market for players at other clubs. Returns market value, which is the price you would be quoted. Filter before you reason — do not ask for the whole list and sort it yourself.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "position": {
            "type": "string",
            "enum": [
              "GK",
              "DF",
              "MF",
              "FW"
            ]
          },
          "max_value_millions": {
            "type": "number",
            "description": "Upper bound on market value, in £m."
          },
          "max_age": {
            "type": "number"
          },
          "homegrown_only": {
            "type": "boolean",
            "description": "Only homegrown players — useful when the non-homegrown limit is tight."
          },
          "limit": {
            "type": "number",
            "description": "Max results. Defaults to 10."
          }
        }
      }
    }
    get_playerAnswer

    Full detail on one player, including the accounting figures that decide what buying or selling them does to PSR.

    View tool JSON
    {
      "name": "get_player",
      "kind": "answer",
      "impl": "imperative",
      "description": "Full detail on one player, including the accounting figures that decide what buying or selling them does to PSR.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "player_id": {
            "type": "string"
          }
        },
        "required": [
          "player_id"
        ]
      }
    }
    compute_psr_positionAction

    The full PSR calculation for the plan as it currently stands, broken down line by line. Use this to explain *why* a club is where it is, rather than asserting figures.

    View tool JSON
    {
      "name": "compute_psr_position",
      "kind": "act",
      "impl": "imperative",
      "description": "The full PSR calculation for the plan as it currently stands, broken down line by line. Use this to explain *why* a club is where it is, rather than asserting figures.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    check_squad_complianceAnswer

    Registration legality only: 25-man senior squad, maximum 17 non-homegrown, under-21s exempt. Returns every violation, hard and advisory.

    View tool JSON
    {
      "name": "check_squad_compliance",
      "kind": "answer",
      "impl": "imperative",
      "description": "Registration legality only: 25-man senior squad, maximum 17 non-homegrown, under-21s exempt. Returns every violation, hard and advisory.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    evaluate_transferAction

    What-if. Model a signing or a sale WITHOUT adding it to the plan, and get the exact effect on PSR and squad legality. Use this before proposing anything expensive so you can tell the manager the cost before they commit.

    View tool JSON
    {
      "name": "evaluate_transfer",
      "kind": "act",
      "impl": "imperative",
      "description": "What-if. Model a signing or a sale WITHOUT adding it to the plan, and get the exact effect on PSR and squad legality. Use this before proposing anything expensive so you can tell the manager the cost before they commit.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "signing",
              "sale"
            ]
          },
          "player_id": {
            "type": "string"
          },
          "fee_millions": {
            "type": "number",
            "description": "Fee in £m. Defaults to market value."
          },
          "contract_years": {
            "type": "number",
            "description": "Signings only. Defaults to 4."
          },
          "weekly_wage_gbp": {
            "type": "number",
            "description": "Signings only. Defaults to current wage."
          }
        },
        "required": [
          "kind",
          "player_id"
        ]
      }
    }
    rank_sale_candidatesAction

    Rank every squad player by how much selling them at market value would improve the PSR position. The answer is frequently counterintuitive: an expensive recent signing can help more than an academy graduate, because you shed their amortisation and wages as well as booking the fee. Do not guess this — ask.

    View tool JSON
    {
      "name": "rank_sale_candidates",
      "kind": "act",
      "impl": "imperative",
      "description": "Rank every squad player by how much selling them at market value would improve the PSR position. The answer is frequently counterintuitive: an expensive recent signing can help more than an academy graduate, because you shed their amortisation and wages as well as booking the fee. Do not guess this — ask.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "How many to return. Defaults to 8."
          },
          "exclude_position": {
            "type": "string",
            "enum": [
              "GK",
              "DF",
              "MF",
              "FW"
            ],
            "description": "Protect a position you cannot afford to weaken."
          }
        }
      }
    }
    get_planAnswer

    The transfer plan as it stands, with move ids, net spend, and current legality.

    View tool JSON
    {
      "name": "get_plan",
      "kind": "answer",
      "impl": "imperative",
      "description": "The transfer plan as it stands, with move ids, net spend, and current legality.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    propose_signingAction

    Add a signing to the transfer plan. The page REFUSES the move if it would breach PSR or the squad-registration limits, and tells you by exactly how much. To stage a package deal — sign a star, fund it with a sale — pass allow_provisional: true, then balance the books before submitting.

    View tool JSON
    {
      "name": "propose_signing",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a signing to the transfer plan. The page REFUSES the move if it would breach PSR or the squad-registration limits, and tells you by exactly how much. To stage a package deal — sign a star, fund it with a sale — pass allow_provisional: true, then balance the books before submitting.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "player_id": {
            "type": "string"
          },
          "fee_millions": {
            "type": "number",
            "description": "Fee in £m. Defaults to market value."
          },
          "contract_years": {
            "type": "number",
            "description": "Contract length. Longer deals spread the fee, but amortisation caps at 5 years."
          },
          "weekly_wage_gbp": {
            "type": "number"
          },
          "allow_provisional": {
            "type": "boolean",
            "description": "Add the move even if it currently breaches, so it can be balanced by a sale."
          }
        },
        "required": [
          "player_id"
        ]
      }
    }
    propose_saleAction

    Add a sale to the transfer plan. Sales are how you create PSR room: the profit is booked immediately, and you shed the wages and amortisation too.

    View tool JSON
    {
      "name": "propose_sale",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a sale to the transfer plan. Sales are how you create PSR room: the profit is booked immediately, and you shed the wages and amortisation too.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "player_id": {
            "type": "string"
          },
          "fee_millions": {
            "type": "number",
            "description": "Fee in £m. Defaults to market value."
          }
        },
        "required": [
          "player_id"
        ]
      }
    }
    remove_from_planAction

    Undo one planned move by its move_id. Everything in the plan is reversible.

    View tool JSON
    {
      "name": "remove_from_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "Undo one planned move by its move_id. Everything in the plan is reversible.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "move_id": {
            "type": "string"
          }
        },
        "required": [
          "move_id"
        ]
      }
    }
    clear_planAction

    Discard every planned move and start the window again.

    View tool JSON
    {
      "name": "clear_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "Discard every planned move and start the window again.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    submit_windowSensitive Action

    Ask for the transfer window to be submitted. This does NOT submit it. If the plan is illegal the page refuses outright. If it is legal, the page raises a confirmation in the UI and THIS CALL BLOCKS until a human presses a button — expect to wait. It resolves only when the manager confirms or declines. You can never complete this action on the manager’s behalf.

    View tool JSON
    {
      "name": "submit_window",
      "kind": "transact",
      "impl": "imperative",
      "description": "Ask for the transfer window to be submitted. This does NOT submit it. If the plan is illegal the page refuses outright. If it is legal, the page raises a confirmation in the UI and THIS CALL BLOCKS until a human presses a button — expect to wait. It resolves only when the manager confirms or declines. You can never complete this action on the manager’s behalf.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }