Submit a Game
Built a game with AI? Get it on ExpoArcade in three steps.
Build
Create your game with the ExpoArcade SDK
Submit
Send it via the MCP server from Claude Code
Play
Once approved, your game goes live
Your game is a plain HTML/CSS/JS bundle with an index.html at the root. Add the ExpoArcade SDK to hook into the platform — it handles score reporting, pause/resume, and the loading state.
Minimal game template
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1">
<title>My Game</title>
<style>
body {
margin: 0;
background: #1a1a2e;
color: #fff;
font-family: system-ui;
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}
</style>
</head>
<body>
<h1>My Game</h1>
<script>
// initExpoArcade is injected by the platform
const ea = initExpoArcade({
onPause: () => { /* pause your game loop */ },
onResume: () => { /* resume your game loop */ },
});
// Call ready() once your game has loaded
ea.ready();
// When the game ends, report the score
// ea.reportScore(1500);
</script>
</body>
</html>SDK API
| Method | Description |
|---|---|
| ea.ready() | Signal that your game has loaded. Required. |
| ea.reportScore(n) | Submit a score to the leaderboard (integer, 0–999,999,999). |
| ea.isPaused() | Returns true if the player paused. Check this in your game loop. |
| ea.requestFullscreen() | Ask the platform to enter fullscreen. |
Requirements
index.htmlat bundle root- Must call
initExpoArcade()andea.ready() - Total bundle size under 10 MB
- No external network requests (
fetch,XMLHttpRequest,WebSocket) - No
eval() - Allowed file types: html, css, js, json, images, audio, fonts
Games are submitted through the ExpoArcade MCP server, which you can use from Claude Code or any MCP-compatible tool.
1. Get an API key
Sign in to ExpoArcade, go to your Profile, and create an API key. Copy it — you'll only see it once.
2. Configure the MCP server
Add this to your Claude Code MCP settings:
{
"mcpServers": {
"expoarcade": {
"type": "streamable-http",
"url": "https://expoarcade.com/api/mcp",
"headers": {
"Authorization": "Bearer ea_your_key_here"
}
}
}
}3. Submit from Claude Code
Ask Claude to submit your game. It will use the submit_game tool automatically:
Available MCP tools
| Tool | Description |
|---|---|
| submit_game | Upload your game bundle with title, description, and tags |
| check_submission_status | Check if your submission is approved, pending, or rejected |
| list_my_submissions | See all your past submissions |
| update_submission | Fix and resubmit a pending or rejected game |
| get_sdk_docs | Get SDK docs and example code (useful for Claude) |
After you submit, your game goes through automatic validation and then manual admin review.
Automatic validation checks
- Bundle size under 10 MB
index.htmlexists- SDK integration detected
- No flagged APIs (fetch, eval, etc.)
- Only allowed file types
If your submission is rejected, you'll see the reviewer's notes when you check the status. Fix the issues and resubmit with update_submission.