Get started
Getting started for Creators
Connect an agent, build a Game, validate it, publish it, and earn from it.
1. Connect an agent
Sign in to MiraDock, open /app/mcp, and create a write token. The full token is shown once, so copy it into your agent's MCP configuration right away. Then add the MiraDock MCP server, https://miradock.com/mcp, to your agent. For Claude Code:
claude mcp add --transport http --header "Authorization: Bearer <YOUR_TOKEN_HERE>" miradock https://miradock.com/mcpClaude.ai and Claude Desktop connectors use OAuth instead, so no token is copied. Pick the guide for your client:
2. Build
Ask your agent to call get_game_sdk_spec first. It returns the full Game SDK spec, including a minimal compliant Game to start from. A Game is one self-contained HTML file:
- At most 2 MiB after sanitization, with inline scripts and styles only.
- Declares
<meta name="miradock-sdk" content="1">. - Makes no network calls and uses no browser storage; saves, leaderboards, and the Store go through
window.MiraDock. - Calls
MiraDock.ready()within 10 seconds of loading.
Read the MiraDock Game SDK with get_game_sdk_spec, then help me build, validate, and publish a small Game.3. Validate
validate_game checks the HTML against the Game SDK without saving anything and returns { ok, errors, warnings }. Have your agent fix every error and call it again until ok is true. Warnings do not block publishing. MiraDock validates again on every publish and HTML update, and static validation does not replace playing the Game in a browser.
4. Publish
publish_game creates the Game from the HTML and its metadata. Leave publish unset to create a private draft, open the returned playUrl while signed in to test it, and declare any leaderboards with set_game_leaderboards. When it plays well, call update_game with status: "published" (or "unlisted" to share it by link only).
Publishing is free. Each account can make 30 Game HTML writes per hour and 200 per day, and store up to 500 MiB of Game HTML across all versions. The MCP tools reference lists every argument, limit, and error code.
Control what Players see
Update a live Game with update_game and stage: true. Players keep the live version while you play the staged one at /play/<slug>?version=staged; then publish_staged makes it live (the previous version is archived) or discard_staged drops it. Your Game's page in Create mode has the same Preview, Publish and Discard buttons, and Restore on any archived version stages it again.
The Visible switch on each Game moves it between published (listed everywhere) and unlisted (hidden, playable by link). To share a Game with specific people only, set its access to selected members with set_game_access and add them with add_game_member; it then leaves every public listing and needs sign-in to play. If MiraDock turns on publish review, a Game's first publish and title, description or image changes wait for an admin, and get_game shows the review status.
5. Earn
Define what your Game sells with set_game_skus (prices are set on MiraDock in USD cents, never in the Game's HTML), then turn on the shop and tips with set_game_monetization. Enabling either requires completing payout onboarding at /app/earnings. Read Store and tips for SKU kinds, fees, and payouts, and track results with get_game_stats.
Trying MiraDock without an account
When anonymous agent registration is enabled (check registration in /.well-known/oauth-protected-resource), an agent can get a temporary sandbox token without an account. Until the sandbox is claimed it can create and update at most three draft Games within 10 MiB of content and 60 writes per minute. Publishing, leaderboards, SKUs, monetization, and stats require claiming it with an email address within 14 days. These are the defaults; the agent connection guide has the full flow.