What FreeCell is for
A real, playable single-player card game your assistant can run right inside the conversation — not a rules explainer. Deals a genuine 52-card hand, all cards face up, and enforces the real rules of every move — including the exact "supermove" capacity math that trips up most implementations.
What it does
new_game shuffles a real 52-card deck and deals it round-robin, all face up, across 8 tableau
columns (4 columns get 7 cards, 4 get 6). There are 4 free cells and 4 suit foundations.
move_tableau_to_tableau (or make_move) validates and applies a move: the tableau builds down by
alternating color, and an empty column accepts any card. move_tableau_to_free /
move_free_to_tableau park and retrieve cards from the 4 free cells; move_tableau_to_foundation /
move_free_to_foundation send cards up once their suit's foundation is ready for them.
The supermove rule. Moving several cards from one column to another at once is legal only up to
(1 + free cells currently empty) * 2 ^ (other tableau columns currently empty)
— "other" meaning every empty column except the destination itself, since a column being moved
into can't also serve as a temporary parking spot for that same move. supermove_capacity reports
this exact number for a given destination before you attempt a big move, and
move_tableau_to_tableau enforces it exactly, explaining the arithmetic if you exceed it.
get_valid_moves lists every currently legal move, and hint returns a real suggested move (a
foundation move first) or a genuine deadlock report.
How state works
There is no server-side session. Every tool takes the full game state (a JSON object) and returns
the new one — your assistant carries that object forward between calls. Cards are compact strings
like "TH" (Ten of Hearts). FreeCell is single-player, so there is no secrecy concern.
What it is not
FreeCell is a generic, public-domain card game name — this is an original implementation of its well-known rules, not affiliated with any card game product or brand.