{"ok":true,"site":{"host":"uno.caveallegory.cn","url":"https://uno.caveallegory.cn/","type":"live","desc":"Play Open Mercy free in your browser - the ruthless stacking card game. Real-time multiplayer with friends (2-20 players), vs AI mode, Draw 6, Draw 10, Skip Everyone, Color Roulette, hand swaps,…","tools":[{"name":"how_to_play","kind":"act","impl":"imperative","description":"Return a primer on Open Mercy rules, card types, and basic tactics.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_state","kind":"answer","impl":"imperative","description":"Snapshot of the current game from your seat: your hand, the public table state, whose turn it is, what action is required of you now, and the exact legal moves. Opponent hands are never revealed. Read this before every move.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"wait_for_turn","kind":"act","impl":"imperative","description":"Block until it is your turn or an action is required of you, then return the fresh state. Use this instead of polling. Resolves immediately if you can already act. A long wait never hangs the call: it returns still_waiting:true (with the current state) about every 25s so the transport can breathe — re-issue wait_for_turn to keep waiting; timed_out:true only appears once the full timeout_ms elapses.","inputSchema":{"type":"object","properties":{"timeout_ms":{"type":"number","description":"Max wait in ms (default 60000)."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"start_single_player","kind":"act","impl":"imperative","description":"Start an offline game against the bot, exactly like the in-app vs-bot game: you versus one bot (\"Terminator\"). Deals hands and begins play.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"create_multiplayer_game","kind":"act","impl":"imperative","description":"Create an online room and become the host. Returns the room code to share.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"join_multiplayer_game","kind":"act","impl":"imperative","description":"Join an online room by its 6-character room code.","inputSchema":{"type":"object","properties":{"room_code":{"type":"string"}},"required":["room_code"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"start_multiplayer_game","kind":"act","impl":"imperative","description":"Start the multiplayer game you host. Requires at least 2 players.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"play_card","kind":"act","impl":"imperative","description":"Play a card from your hand by id. For wild cards (EXCEPT a wild Color Roulette, whose color the victim names after the play) you must also pass a color. The move is rejected if it is not in your current legal moves. For a discardAll card you may pass discard_all_dump: the ids of the SAME-COLORED hand cards to discard along with it (any subset; empty list = the discardAll goes out alone; omit it = take every same-colored card). A card you just DREW (required_action play_or_pass_drawn) always goes out alone — discard_all_dump is ignored for it.","inputSchema":{"type":"object","properties":{"card_id":{"type":"string"},"color":{"type":"string","enum":["red","blue","green","yellow"],"description":"Required for wild cards (not wildColorRoulette)."},"discard_all_dump":{"type":"array","items":{"type":"string"},"description":"Same-colored hand card ids to dump along with a discardAll (subset, optional)."}},"required":["card_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"multi_play","kind":"act","impl":"imperative","description":"Play SEVERAL chainable cards from your hand as one chain action (house rule): same value for number cards (0/7 excluded), same type for skip/reverse/skipEveryone, same draw value for draw cards. Pass top_card_id (one of card_ids — the last card in the chain) and, when the chain top is a wild card (not wildColorRoulette), the color. Set use_dragon=true to turn a chain of 4+ number cards into a Dragon: draw up to 24 cards and keep the turn for one more play (winning immediately still wins; no-op if your hand is already at 24). get_state.required_action lists viable chains under options.chains.","inputSchema":{"type":"object","properties":{"card_ids":{"type":"array","items":{"type":"string"},"minItems":2,"description":"Two or more card ids from your hand, in play order."},"top_card_id":{"type":"string","description":"The last card of the chain (its effect color/type resolves)."},"color":{"type":"string","enum":["red","blue","green","yellow"],"description":"Required when the chain top is a wild card (not wildColorRoulette)."},"use_dragon":{"type":"boolean","description":"Dragon skill for 4+ number chains: draw to 24 and keep the turn."}},"required":["card_ids","top_card_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"accept_skip_stack","kind":"act","impl":"imperative","description":"Accept ONE skip token when a skip stack is travelling to you (STACKING_SKIP). Your turn passes; remaining tokens keep travelling. The alternative is to counter with a skip card (or a reverse in 2p) via play_card / multi_play.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"draw_card","kind":"act","impl":"imperative","description":"Draw from the deck. If a draw stack is active you take the penalty; otherwise you draw one card and may play it (only that card) or pass it. Waits for the server snapshot, so the returned state reflects the draw.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"call_uno","kind":"act","impl":"imperative","description":"Call MERCY (the last-card call). Do this when you are about to be left with one card to avoid a penalty.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"swap_hands","kind":"act","impl":"imperative","description":"After playing a number 7 — a mandatory swap — swap your entire hand with the chosen opponent. The swap is MUTUAL: the target takes your whole hand, so both sides see each other's cards. get_state.your_hand reflects the new hand afterwards.","inputSchema":{"type":"object","properties":{"target_player_id":{"type":"string"}},"required":["target_player_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_roulette_color","kind":"act","impl":"imperative","description":"Choose the target color when you are the victim of a wild color roulette.","inputSchema":{"type":"object","properties":{"color":{"type":"string","enum":["red","blue","green","yellow"]}},"required":["color"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"choose_dealer_wild_color","kind":"act","impl":"imperative","description":"House rule: name the opening color when you are the dealer and the first discard is a wild draw (draw6/draw10/wildReverseDraw4). The opening stack then lands on the player facing it.","inputSchema":{"type":"object","properties":{"color":{"type":"string","enum":["red","blue","green","yellow"]}},"required":["color"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"pass_drawn_card","kind":"act","impl":"imperative","description":"Decline the card you just drew and pass your turn (the drawn card stays in your hand).","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"leave_game","kind":"act","impl":"imperative","description":"Leave the current game and return to the lobby.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]}],"category":"Media & Personal","favicon":"/favicons/uno.caveallegory.cn.png","apiSurface":"spec","toolCount":17}}