{
  "name": "Gamelude",
  "description": "Countdowns to upcoming video game releases on PC, PlayStation, Xbox and Nintendo Switch.",
  "transport": {
    "type": "webmcp",
    "surface": "document.modelContext"
  },
  "remote_mcp_server": "/mcp",
  "tools": [
    {
      "name": "gamelude_search_games",
      "title": "Search upcoming games",
      "description": "Search Gamelude's catalogue of upcoming game releases by keyword and platform. Returns a summary of each game with its release date and days remaining; use gamelude_get_game for the full record.",
      "access": "public",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text search over titles."
          },
          "platform": {
            "type": "string",
            "enum": [
              "all",
              "pc",
              "playstation",
              "xbox",
              "switch",
              "console"
            ],
            "description": "Platform filter. 'all' means no filter."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "How many games to return (default 10)."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of games to skip, for paging."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      }
    },
    {
      "name": "gamelude_get_game",
      "title": "Get one game",
      "description": "Get the complete Gamelude record for one game by id, including description, developer, features, screenshots, trailer and its release countdown.",
      "access": "public",
      "inputSchema": {
        "type": "object",
        "properties": {
          "game_id": {
            "type": "integer",
            "description": "The game's Gamelude id."
          }
        },
        "required": [
          "game_id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      }
    },
    {
      "name": "gamelude_countdown",
      "title": "Release countdown",
      "description": "Work out how long until a game launches. Pass exactly one of game_id or release_date, never both: game_id looks the date up in the catalogue, release_date (YYYY-MM-DD) computes the countdown for any date.",
      "access": "public",
      "inputSchema": {
        "type": "object",
        "properties": {
          "game_id": {
            "type": "integer",
            "description": "A Gamelude game id. Omit when passing release_date."
          },
          "release_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "A release date as YYYY-MM-DD. Omit when passing game_id."
          }
        },
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 1
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "gamelude_get_session",
      "title": "Who is signed in",
      "description": "Report who is signed in to Gamelude in this browser and whether they are an admin. Favourite tools appear only when signed in, and admin tools only for admins — this explains which are available. There is deliberately no login tool: the person must sign in through the page themselves.",
      "access": "public",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "gamelude_current_view",
      "title": "What the page is showing",
      "description": "Report which Gamelude page the person is currently looking at and how many games are on screen, so answers can be grounded in what they can actually see.",
      "access": "public",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "gamelude_navigate",
      "title": "Open a Gamelude page",
      "description": "Move the Gamelude page the person is viewing: open a game, filter the catalogue by platform, run a search, or go to a section. With route 'admin', admin_section picks the panel in the admin sidebar (overview, analytics, members, catalog, keys, support). Changes what is on their screen.",
      "access": "public",
      "inputSchema": {
        "type": "object",
        "properties": {
          "route": {
            "type": "string",
            "enum": [
              "home",
              "games",
              "game",
              "favourites",
              "profile",
              "settings",
              "login",
              "register",
              "admin"
            ],
            "description": "Which page to open."
          },
          "game_id": {
            "type": "integer",
            "description": "Required when route is 'game'."
          },
          "platform": {
            "type": "string",
            "enum": [
              "all",
              "pc",
              "playstation",
              "xbox",
              "switch",
              "console"
            ],
            "description": "Platform filter, with route 'games'."
          },
          "query": {
            "type": "string",
            "description": "Search text, with route 'games'."
          },
          "admin_section": {
            "type": "string",
            "enum": [
              "overview",
              "analytics",
              "members",
              "catalog",
              "keys",
              "support"
            ],
            "description": "Which admin section to open, with route 'admin'. Defaults to overview."
          }
        },
        "required": [
          "route"
        ]
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "gamelude_update_profile",
      "title": "Update your profile",
      "description": "Update the signed-in person's own display name and bio. Does not change anyone else's profile, and cannot change a password or role.",
      "access": "signed_in",
      "inputSchema": {
        "type": "object",
        "properties": {
          "display_name": {
            "type": "string",
            "description": "Shown across Gamelude, up to 60 characters."
          },
          "bio": {
            "type": "string",
            "description": "A short line about them, up to 400 characters."
          }
        }
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "gamelude_list_favourites",
      "title": "List favourites",
      "description": "List the games the signed-in person has starred as favourites, with each one's release countdown.",
      "access": "signed_in",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      }
    },
    {
      "name": "gamelude_add_favourite",
      "title": "Star a game",
      "description": "Add a game to the signed-in person's favourites. Doing this twice is harmless.",
      "access": "signed_in",
      "inputSchema": {
        "type": "object",
        "properties": {
          "game_id": {
            "type": "integer",
            "description": "The game's Gamelude id."
          }
        },
        "required": [
          "game_id"
        ]
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "gamelude_remove_favourite",
      "title": "Unstar a game",
      "description": "Remove a game from the signed-in person's favourites.",
      "access": "signed_in",
      "inputSchema": {
        "type": "object",
        "properties": {
          "game_id": {
            "type": "integer",
            "description": "The game's Gamelude id."
          }
        },
        "required": [
          "game_id"
        ]
      },
      "annotations": {
        "readOnlyHint": false
      }
    }
  ]
}
