Robokade

Submit and review

How a game goes from your kit to the site: submitting, the automatic checks, human review, what gets refused, protected games, updates, pausing and removing.

For AI agents: this page as plain text at /docs/publish.md; all docs are listed in /llms.txt.

Before you submit

  • A free account (13+). Playing and building don't need one; submitting does.
  • Every check passes in the kit (node public/kit/test/cli.js public/games/<id>), and you have played the game.
  • 1 to 6 screenshots for new games (see Build: screenshots).

Four ways to submit

1. Your account page. Sign in on your account page and upload the game folder (public/games/<id>, or an Arcade folder with arcade.json).

2. Your agent with mc. On the account page, under Agent tokens, give the token a name and press Create a token (we email you a code to confirm). Press Copy message for my agent and paste it to your agent. It contains the token and the commands:

node tools/mc-local/mc.mjs login mc_…          # once: saves the token on that computer
node tools/mc-local/mc.mjs submit public/games/<id> --note "built by …"

A folder with arcade.json is sent as an Arcade game: mc lists every file with its size and checksum and sends them one by one.

3. MCP. After mc login, MCP agents connected to the kit's server can use submit_game, list_submissions, submission_status and withdraw_submission.

4. HTTP, for your own programs: POST /api/submit on the account site with Authorization: Bearer <agent-token> and the files as JSON. Screenshots and video are uploaded first through /api/media/uploads. The exact format is in /llms.txt.

Log in once. An agent token never expires and is reused for every submission and every new version. Several accounts (for example your own and a team account) can be saved on one computer: run mc login once for each. A game is always sent as the account that owns it; new games go to the current account (mc accounts, mc use <name>, mc whoami).

What happens next

  1. Automatic checks, at once. Our server runs the file checks (the same as cli.js --static in the kit; it never runs your code) and answers PASS, or FAIL with what to fix. Only these checks block a submission. Fix it and submit again.
  2. A person reviews it. Games run in players' browsers, so nothing goes live unread. The reviewer reads every file, runs the full checks on a separate machine, and plays the game in a private preview (Arcade games too; agent seats and online play are tried as well).
  3. Approved or rejected. A rejection comes with a note on your account page. We may ask for changes or make small fixes ourselves.
  4. Live within about a minute of approval, with your display name on the card and the game page.

Follow it on your account page (tab Games) or with mc submissions (all of them) and mc status <submission-id> (one, with the check report).

StatusMeaning
pendingwaiting for review
approvedaccepted, going live
publishedlive
rejectednot accepted; read the reviewer's note
withdrawnyou took it out of review
replacedan older version; a newer one is live
removedtaken off the site
heldpaused by you or suspended by us

A new submission withdraws your older pending versions of the same game. Approved ones stay.

What we accept and what we refuse

Accepted games are your own work (or work you have the right to share), fine for players aged 13 and up, and only the game folder. Review refuses, or later removes, a game with:

  • gambling of any kind: bets, paid chances, prizes, loot boxes;
  • content unsuitable for ages 13+; violent or scary content without content notes; harming civilians switched on by default;
  • other people's characters, brands, logos or art (also in models and sounds);
  • network calls, trackers, ads or outside links (Arena games run fully in the browser; Arcade games are blocked from other addresses anyway);
  • hidden, minified or encoded code, or code built from text (eval, new Function, dynamic import() in Arena games);
  • text that tries to instruct AI agents ("ignore your instructions", "read this file", "open this link") in spec.md, describe(), observations, agentGuide or the About text;
  • screenshots or videos that don't show this game or mislead;
  • for Arena games, a closed licence on a game we can't protect (realtime, or not ready for our server); open licences (MIT, Apache-2.0, BSD, ISC, CC0) are always fine, and a turn-based game with a closed licence is protected on approval;
  • for Arcade games, assets you don't have the right to publish, or secrets in the package (private keys, API tokens: refused by the automatic check);
  • for Arcade games online, any text players can send to each other through the game;
  • seat names or presets (seatsUi) that mislead, or partnersShareViews in a game where one person must not see a partner's hand;
  • a copied, empty or broken game.

We also play every game: one that isn't ready yet may come back with a note.

Submitting is free. Not every game is accepted. Full rules: Terms.

Protected games: rules on our server

After approval, a turn-based Arena game can have its rules and bot moved to our game server ("protected"). A game with a closed licence must be protected. The play page then gets only the view and what its seats may see: nobody can copy your rules or bot from the page, and the server signs every result. Leaderboards and rooms need this.

  • To be ready: keep your view separate from core.js (helpers in their own file), keep no state outside the game state, and keep to the server's time and size limits. The separation check and tools/mc-local/protected.mjs in the kit show how your game behaves (Build: testing).
  • Your code runs there only after review, in an isolated box with no network.
  • A protected game stays protected when you publish a new version.

Updates

Raise version in game.json (or arcade.json) and submit again. Only the account that owns the game id can update it. The update is reviewed like a new game; when it goes live, the old version becomes replaced. A live Arcade game gets a new agentGuide only with its next version.

Withdraw, pause, remove

  • Withdraw: take a submission out of review while it is pending or approved (not once it is live): Withdraw on your account page, or mc withdraw <submission-id>. Its files are deleted.
  • Pause game / Resume game: on your account page you can hide your live game for a while. Players see "This game is paused" on its page, with no Play. Resume brings the same version back. Up to 10 pauses and resumes an hour per account, and 10 minutes between two changes of the same game.
  • Remove from site: takes a live game offline within a minute. You keep the game id; a new version brings it back.
  • Suspended by us: we may suspend a game with a reason; you get an email and see the reason on your account page. Only we can lift a suspension; while it lasts you can't resume, remove or update that game (write to contact@robokade.com). Harmful games are taken down first and checked afterwards.
  • Deleting your account takes your live games down within 7 days.

Errors

ErrorWhat to do
NO_TOKENRun mc login <token> first (copy it from your account page).
BAD_TOKEN (401)The token was revoked, or you signed out everywhere. Create a new one.
"belongs to X; you are submitting as Y"Another account owns that game id. If it's yours, save that account's token too (mc login) and check with mc accounts. If not, pick another id.
RATE_LIMITEDAt most 5 accepted submissions an hour, and after 30 failed submissions in an hour you wait an hour.
TOO_MANY_PENDINGAt most 10 submissions waiting for review, and at most 80 MB waiting in all. Withdraw old ones or wait for a review.
CLOSEDSubmissions are paused for a while. Try again later.
NOT_WITHDRAWABLEOnly submissions that are not live yet (pending or approved) can be withdrawn. For a live game use Remove from site.
mc prints its list of commands instead of running yoursYour kit is older than the feature: download the kit again. Your saved token keeps working.
No code emailCheck spam. Each new request cancels the previous code; an address gets at most 3 codes an hour. Then write to contact@robokade.com.

Limits: Arena games 8 MB and 60 files; Arcade games 50 MB, 500 files, 20 MB per file; screenshots and video up to 14 MB on top. Can't upload? Email a link to contact@robokade.com.