Claude Code
One command connects it. Sign in through the browser, or hand it a key when there is no browser to open.
- Sign-in or Agent Key
- Under a minute
This is the setup we test against most, and the one to pick if you want to read the game code as it is written.
One thing to decide before you run anything: claude mcp add registers the server for the current project only. That is usually what you want. If you would rather have TipTap available in every directory, append --scope user to the command. Without it, claude mcp list in a different repo will not show tiptap — which looks like a broken setup and is not one.
Setup
Add the server
Sign-in (recommended)
claude mcp add --transport http tiptap https://mcp.tiptapgames.com/mcpNothing secret goes on this command line, which is the point: no token ends up in your shell history, your dotfiles, or a screen recording.
Screenshot coming soon
A terminal running the claude mcp add command and printing that the tiptap server was added.
/docs/agents/claude-code/step-1.pngNo key, no header — the sign-in flow supplies the credential. Approve in the browser
The first time Claude Code talks to TipTap, the server tells it authorization is needed and it opens your browser. Sign in, press Approve, and the terminal picks up where it left off. The grant then shows in Create → Agents & access → Connected apps.
If your session is on a remote or headless machine and no browser can open, skip to the Agent Key variant below.
Screenshot coming soon
The TipTap consent screen on tiptapgames.com naming Claude Code, with Approve and Deny buttons.
/docs/agents/claude-code/step-2.pngApprove once. Claude Code stores the grant and refreshes it on its own. Verify before you build anything
claude mcp listYou want
tiptaplisted and connected. For a stronger check, ask Claude in a session to call the tiptap server's ping tool and show exactly what it returns — a successful ping means both the URL and the credential are right, so anything that fails afterwards is about the build rather than the setup.Screenshot coming soon
Terminal output of claude mcp list showing the tiptap server as connected.
/docs/agents/claude-code/step-3.pngtiptap should be listed and connected. Give it the prompt
Start a session and paste this. Claude Code creates its own build session and works through to submission.
Starter prompt
You are building a game for TipTap Games, a vertical feed of instantly playable web games. You will do it through TipTap's MCP server, which is connected to this session as `tiptap`. The game I want: a one-thumb arcade game of your choosing — pick something simple you can finish well Build it end to end, autonomously: 1. Call create_build_session with a title and a one-paragraph brief for that game. Use the session_id it returns for every call after this one. 2. Call get_game_specification, then get_sdk_documentation. Read both before you write any code — the SDK is how the game reports score and handles pause, resume, and the leaderboard, and none of it can be guessed. 3. Call list_categories so you can set a real category at submit. Unknown slugs are dropped silently. Browse list_cookbook_recipes for proven patterns — the recipes are written so that following one produces a game that validates. 4. Write ONE self-contained .html file: - Inline every byte of CSS and JavaScript. No external scripts, styles, or fonts. - No network at runtime — fetch, XMLHttpRequest, and WebSocket are blocked by CSP. - No cookies and no localStorage; the game runs on an opaque sandbox origin and they throw. - Assets as data: or blob: URLs only. 5 MB maximum. - Portrait-first: it is played inside a phone-shaped frame in a vertical feed. 5. Declare the achievements with set_game_achievements before you validate, so validation can cross-check them against the code. 6. Call upload_game_draft with the HTML, then validate_game_draft. Fix every issue with severity "error" and validate again — read each issue's suggestedFix. Warnings are advisory. 7. Set a cover with set_game_thumbnail: a raster data URL (PNG, JPEG, WebP, or GIF) of 512 KB or less. SVG is rejected, so rasterize first. 8. Call submit_game once validation returns passed: true, then get_build_status to confirm it reached the review queue. Do not put an API key or any credential in the game file — the validator blocks any upload containing one, and game HTML is public to every player. Do not declare the game complete until validate_game_draft returns passed: true. submit_game sends the game for review. It is not live until a human moderator approves it, so tell me "submitted for review", never "published". Tell me every tool call you make and what it returned. If a tool fails, show me the full error including its `code` and `guidance` fields rather than working around it.To specify the game rather than letting it choose, type your idea into the starter prompt card on /create and copy the version it writes. The session itself is always opened by the agent, on its first tool call.
Headless, CI, or no browser
Sign-in needs a browser once. Where there is not one — a build box, a container, a remote session you cannot forward — mint an Agent Key in Create → Agents & access and pass it as a header instead. Replace ttg_agent_YOUR_KEY_HERE with the token you minted.
Agent Key (headless)
claude mcp add --transport http tiptap https://mcp.tiptapgames.com/mcp \
--header "Authorization: Bearer ttg_agent_YOUR_KEY_HERE"The key is shown once, when you mint it, and never again — copy it then. It goes in your secret store, not in a repo. If one leaks, revoke it in settings and mint another; revocation takes effect on the connection's next request. Use one or the other, never both: a request carrying two different credentials is rejected rather than one being silently preferred.
If something goes wrong
claude mcp list does not mention tiptap at all
Check which directory you are in. Without --scope user, the server is registered for the project you added it in and is invisible everywhere else. Either cd back to that project or add it again with the flag.
claude mcp list shows it as failed
Remove it with claude mcp remove tiptap and add it again. That clears a half-finished authorization, which is the usual cause.
401 or “unauthorized”
On the key variant, the token is not arriving or is malformed. Check the header value is Bearer followed by the token, that the token was pasted whole, and that it has not been revoked. Do not paste the key into a bug report or a screenshot to check it.
The tools work but validation fails with PLATFORM_UNAVAILABLE
That is us, not you — the MCP service could not reach the platform to validate the draft. Nothing is lost; the session is still there and the agent can validate again in a few minutes.
What happens next
Once your agent is connected, this is the whole path from prompt to feed.
Your agent opens a build session
It does this itself, on its first tool call — there is no session to create on the website first. Everything it does afterwards is attached to that session and shows up under your account.
You watch it work
The session page shows a live activity feed — spec read, draft uploaded, validation run, cover set. It is built from the server's own audit trail, not from what the agent reports, so it shows what actually happened.
The validation loop runs
The agent uploads a draft and validates it. Failing the first time is normal and healthy: the validator returns specific errors, the agent repairs them and validates again until it passes.
The game is submitted for review
Only once validation passes. Submitting puts the game in the moderation queue under your account, tagged as agent-built.
A human moderator approves it
Then — and only then — it goes live in the feed. You keep full ownership, and you can take it down whenever you like.
No agent can put a game in the feed on its own. The tool it calls is submit_game, and it reaches a review queue. If your agent tells you the game is “published”, it is getting ahead of itself — the real status is on your games.

