{"ok":true,"site":{"host":"captainclaw.netlify.app","url":"https://captainclaw.netlify.app/?room=k4kunf","type":"live","desc":"A gaming platform with a store, library, friends and party sessions, exposing 14 WebMCP tools so a browser agent can find a game everyone owns, create a party and send the invitations.","tools":[{"name":"get_online_friends","kind":"answer","impl":"imperative","description":"List the player's friends with online status and what each is playing right now. Call this first for any request involving 'us', 'we', or named friends, to confirm who is actually available before recommending anything.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"get_my_library","kind":"answer","impl":"imperative","description":"List the games the signed-in player owns, with playtime, completion state, install state and last played date. The starting set for both solo picks and group matching.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"onlyUnfinished":{"type":"boolean","description":"If true, only include games not yet completed — includes games already in progress."},"onlyUnplayed":{"type":"boolean","description":"If true, only include games never started at all (zero playtime). Use this for 'never started' / 'still in my backlog', not onlyUnfinished."},"onlyInstalled":{"type":"boolean","description":"If true, only include installed games."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"get_friend_libraries","kind":"answer","impl":"imperative","description":"List which games each named friend owns and which they have completed. Pass every friend at once. Returns ownership and completion only — call get_game_details for player counts and session length.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"friendIds":{"type":"array","items":{"type":"string"},"description":"Friend user ids, from get_online_friends."}},"required":["friendIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"search_games","kind":"answer","impl":"imperative","description":"Search and filter the catalog by text, genre, supported player count, co-op support and typical session length. Prefer this over reading the page when you need games matching hard constraints like 'supports 4' or 'under 75 minutes'. Does not know who owns what — intersect with the library tools. This only reads the catalog and does NOT change what the player sees: once you have picked what to recommend, call show_games with those ids so the player is looking at the games you are describing.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search against title and genre."},"genres":{"type":"array","items":{"type":"string"}},"minPlayers":{"type":"number","description":"Minimum player count the game must support, e.g. 4 for 'supports 4 players'."},"coop":{"type":"boolean","description":"If true, only games with a co-op mode."},"maxSessionMinutes":{"type":"number","description":"Session budget in minutes. A game fits when its shortest session is within the budget and its longest overruns it by no more than 30% — so a 45-70 min game fits a 60 min budget, a 60-120 min game does not."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"get_game_details","kind":"answer","impl":"imperative","description":"Full detail for one or more games: genres, player counts, co-op modes, typical session length, description, and which of the player's friends own it. Use after narrowing candidates, to compare them precisely.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"gameIds":{"type":"array","items":{"type":"string"}}},"required":["gameIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"get_current_view","kind":"answer","impl":"imperative","description":"Describe what the player is looking at right now: the current page, the filters they set by hand, and the games visible on screen — or, on a game page, which game is in focus. Call this whenever the request refers to the screen — 'these', 'this list', 'this game', 'what I'm looking at' — instead of searching the catalog from scratch.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"apply_filters","kind":"act","impl":"imperative","description":"Set the filters on the player's screen, changing which games they see. Works from any page: if they are not on a page with filters, this moves them to the Store first. Use it when your answer is a filter — a genre, a player count, a session budget. When your answer is a specific set of games you picked by reasoning, use show_games instead.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search against title and genre."},"genres":{"type":"array","items":{"type":"string"}},"minPlayers":{"type":"number"},"coop":{"type":"boolean"},"maxSessionMinutes":{"type":"number","description":"Session budget in minutes. A game fits when its shortest session is within the budget and its longest overruns it by no more than 30%."},"onlyUnfinished":{"type":"boolean","description":"Library only: hide games already completed."},"onlyUnplayed":{"type":"boolean","description":"Library only: show only games never started."},"onlyInstalled":{"type":"boolean","description":"Library only: show only installed games."},"clear":{"type":"boolean","description":"If true, ignore every other field and clear all filters."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"show_games","kind":"act","impl":"imperative","description":"Put an exact set of games on the player's screen. This is how you show a shortlist you arrived at by reasoning — the games everyone owns, the ones that fit tonight — when no combination of filters would select exactly those games. Call it once you have decided, so the player is looking at the same games you are describing to them. Works from any page and will move the player to the Store if needed. On the Library it can only show games the player owns.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"gameIds":{"type":"array","items":{"type":"string"},"description":"The game ids to display, from search_games, get_my_library or get_game_details."}},"required":["gameIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"open_game","kind":"act","impl":"imperative","description":"Navigate the player's screen to a game's page. Call this once you have chosen a single recommendation, so the player is looking at the game you are describing. Works from any page.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"gameId":{"type":"string"}},"required":["gameId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"create_party","kind":"act","impl":"imperative","description":"Create a play session for a chosen game with the signed-in player as host. Call only after the player has agreed to a specific game.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"gameId":{"type":"string"}},"required":["gameId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"invite_friends","kind":"transact","impl":"imperative","description":"Invite one or more friends to the current party. Invitations appear immediately in each friend's own browser session; they must respond before the session can launch.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"friendIds":{"type":"array","items":{"type":"string"}}},"required":["friendIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"get_party_status","kind":"answer","impl":"imperative","description":"Read the current party: the game, each member's state (invited / accepted / declined), and whether the session is ready to launch. Poll after inviting to see who has responded.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]},{"name":"launch_session","kind":"act","impl":"imperative","description":"Start the play session. Requires every invited member to have responded — anyone who declined is left behind rather than blocking the launch. This is the final player-facing action — confirm with the player before calling it.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/?room=k4kunf","pages":["/?room=k4kunf","/","/store","/library","/friends","/party"]}],"category":"Media & Personal","favicon":"/favicons/captainclaw.netlify.app.svg","apiSurface":"spec","toolCount":13}}