TipTap Games
All clients

Replit

Add TipTap as an MCP server in your Repl's Integrations pane, then let the Replit Agent build.

  • Sign-in, with a key fallback
  • Two to five minutes

Try the sign-in path first. Replit's pane can register itself with servers that support it, which means no key exists at any point — nothing to copy, nothing to paste, nothing to leak. What the pane offers varies by plan and workspace, so if the fields you see do not match, the header fallback is right below and works everywhere.

Setup — sign-in path

  1. Open the Integrations pane and add an MCP server

    Pick the HTTP transport — it may be labelled Streamable HTTP or remote. Not stdio, and not an SSE-only option.

    In your Repl: Integrations → add an MCP server.
  2. Enter the URL and leave every auth field empty

    Server URL

    https://mcp.tiptapgames.com/mcp

    Empty is deliberate here. TipTap answers the first call by saying authorization is needed, and a client that understands that goes and gets it. Filling in a credential field stops that from ever happening.

    URL only. Empty credential fields are what starts the sign-in flow.
  3. Approve the connection

    Your browser is sent to a consent screen on tiptapgames.com. Sign in if you are not already and press Approve; the browser returns to Replit, which finishes connecting and starts listing tools.

    The screen will label the client an Unverified app, and say it registered itself and chose its own name. That is expected for a client that self-registers, and it is telling you where the name came from rather than accusing Replit of anything. Check the address bar says tiptapgames.com and that you started this yourself a moment ago, then approve.

    Check the address bar says tiptapgames.com before you approve.
  4. Prove it works before building anything

    Ask the Replit Agent

    Call the tiptap MCP server's `ping` tool and show me exactly what it returns.

    You should get back a line saying the service is reachable and your credential is valid. If ping fails, stop and fix the connection — the table below says what each failure means. A build started on a broken connection just wastes agent time.

    Once ping passes, hand it the prompt:

    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 name the game yourself, type your idea into the starter prompt card on /create and copy the version it writes. Either way the agent opens the session on its first tool call — there is no session to create here first.

    A successful ping means the URL and the credential are both right.

Fallback — an Agent Key in a custom header

Use this if the pane has no sign-in flow, or the sign-in path stalls. It is fully supported and verified working — just less pleasant, because you handle a token.

  1. 1.Mint a key in Create → Agents & access, labelled so you recognise it later. Copy it immediately — it is shown once and cannot be retrieved afterwards.
  2. 2.In the Replit MCP form, keep the same URL and transport, then add a custom header:
Create → Agents & access → Mint key. Never screenshot the token itself.
Header nameX-TTG-Agent-Key
Header valuettg_agent_YOUR_KEY_HERE

The value is the token exactly as minted — no Bearer prefix. Replit configures static tokens as user-defined headers and may not offer a literal Authorization field at all, which is exactly why this second header name exists. If your pane does give you an Authorization field, use that instead with the value Bearer <token>.

Set one auth header, not both. A request carrying an Authorization header and X-TTG-Agent-Key with different values is rejected outright rather than one being silently preferred — which is the kind of failure you would otherwise spend an hour on.

What each failure means

Replit's pane differs between plans, so this is the full list of what can go wrong and which half of the setup owns it.

What you seeWhat it meansWhat to do
The pane has no HTTP or remote MCP option at allYour Replit workspace only supports local MCP servers, so neither path can reach us.Use the handoff route: ask the agent for the finished HTML file and upload it yourself.
Connecting with no credentials just reports an errorThe pane is not acting on our authorization challenge — it has no sign-in support.Use the Agent Key header below.
You never reach a TipTap consent screenThe redirect to tiptapgames.com is not being followed.Use the Agent Key header below.
You approve, but Replit never finishes connectingIts callback did not round-trip.Remove the server and add it again. If it repeats, use the Agent Key header.
Too many requests, or a 429, while connectingRepeated attempts hit the registration rate limit, which is five per hour per address.Wait — it clears within the hour. Do not keep retrying, it only pushes the reset out.
401, unauthorized, or invalid credentialThe key is not arriving, or arriving malformed.Check the header name is exact, the token is raw with no Bearer prefix, only one auth header is set, and the key has not been revoked.
403 once the credential is workingWrong hostname. Only the address on this page is accepted for tool calls.Re-enter the URL exactly as shown above, ending in /mcp.
406, or a complaint about Accept headersThe client is not offering both JSON and event-stream responses. That is a client limitation we cannot work around.Use the handoff route and upload the file yourself.
It connects, but lists no toolsProtocol negotiation did not complete.Remove and re-add the server. If it still lists nothing, use the handoff route.
Tool output is cut off mid-documentThe pane truncated a long result — the SDK documentation is the one that trips this.Tell the agent to call get_sdk_documentation with a section argument and read it in parts.
PLATFORM_UNAVAILABLE when it validatesOur platform was unreachable from the MCP service. Nothing to do with Replit or your key.Nothing is lost — have the agent validate again in a few minutes.
It asks you to approve again every time you reconnectThe client is not storing its refresh token.Harmless, just repetitive. Approving again is safe.

Wherever a row says to use the handoff route: ask the agent for one self-contained HTML file and paste it at /create/upload. Same validator, same review queue.

Never paste an Agent Key into a Repl, a report, or a game file. The validator rejects any upload containing one, but that is a backstop rather than permission — if a key is exposed, revoke it in Create → Agents & access and mint another.

What happens next

Once your agent is connected, this is the whole path from prompt to feed.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.