Discover playable browser experiences and manage creator-owned game uploads on Arcade.fun.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Register a new experience and get its manage key. Returns game, key and the first version id. The key is shown only here and controls the listing forever — save it. This creates a draft; upload_build is what sends it for review.
Reviewer contact address. Players never see it.
Confirm you agree to the arcade.fun terms and community guidelines.
What the experience is called, 2 to 60 characters.
The creator name players see, 2 to 30 characters.
How people interact. At least one.
Confirm the experience is yours to share, including its art, music and code.
Solana address that receives this listing's creator trading fees. Every public listing launches with its own coin.
How to take part: the controls and how to begin.
'sdk' if the entry page calls arcade.ready(), otherwise 'web'. Detected from the build too.
Shape on screen. Empty fills the screen.
Devices actually tested. Mobile requires touch, voice or camera among inputs.
One line for the cabinet.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http arcade-fun https://arcade.fun/mcp
Register a new experience and get its manage key. Returns game, key and the first version id. The key is shown only here and controls the listing forever — save it. This creates a draft; upload_build is what sends it for review.
| Argument | Type | Description |
|---|---|---|
| how | string | How to take part: the controls and how to begin. |
| kind | string | 'sdk' if the entry page calls arcade.ready(), otherwise 'web'. Detected from the build too. |
| email* | string | Reviewer contact address. Players never see it. |
| terms* | boolean | Confirm you agree to the arcade.fun terms and community guidelines. |
| title* | string | What the experience is called, 2 to 60 characters. |
| aspect | string | Shape on screen. Empty fills the screen. |
| author* | string | The creator name players see, 2 to 30 characters. |
| inputs* | array | How people interact. At least one. |
| rights* | boolean | Confirm the experience is yours to share, including its art, music and code. |
| wallet* | string | Solana address that receives this listing's creator trading fees. Every public listing launches with its own coin. |
| devices | array | Devices actually tested. Mobile requires touch, voice or camera among inputs. |
| tagline | string | One line for the cabinet. |
{
"type": "object",
"required": [
"title",
"author",
"email",
"wallet",
"inputs",
"rights",
"terms"
],
"properties": {
"how": {
"type": "string",
"maxLength": 1200,
"description": "How to take part: the controls and how to begin."
},
"kind": {
"enum": [
"web",
"sdk"
],
"type": "string",
"description": "'sdk' if the entry page calls arcade.ready(), otherwise 'web'. Detected from the build too."
},
"email": {
"type": "string",
"maxLength": 254,
"description": "Reviewer contact address. Players never see it."
},
"terms": {
"type": "boolean",
"description": "Confirm you agree to the arcade.fun terms and community guidelines."
},
"title": {
"type": "string",
"maxLength": 60,
"description": "What the experience is called, 2 to 60 characters."
},
"aspect": {
"enum": [
"",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16"
],
"type": "string",
"description": "Shape on screen. Empty fills the screen."
},
"author": {
"type": "string",
"maxLength": 30,
"description": "The creator name players see, 2 to 30 characters."
},
"inputs": {
"type": "array",
"items": {
"enum": [
"voice",
"camera",
"keyboard",
"mouse",
"touch",
"gamepad"
],
"type": "string"
},
"description": "How people interact. At least one."
},
"rights": {
"type": "boolean",
"description": "Confirm the experience is yours to share, including its art, music and code."
},
"wallet": {
"type": "string",
"maxLength": 44,
"description": "Solana address that receives this listing's creator trading fees. Every public listing launches with its own coin."
},
"devices": {
"type": "array",
"items": {
"enum": [
"mobile",
"desktop"
],
"type": "string"
},
"description": "Devices actually tested. Mobile requires touch, voice or camera among inputs."
},
"tagline": {
"type": "string",
"maxLength": 140,
"description": "One line for the cabinet."
}
},
"additionalProperties": false
}Where an experience stands: its details, its coin plan, any note from the reviewers, and every version with its status.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| game* | string |
{
"type": "object",
"required": [
"game",
"key"
],
"properties": {
"key": {
"type": "string"
},
"game": {
"type": "string"
}
},
"additionalProperties": false
}Every approved experience currently playable on arcade.fun, with the origin games are served from. Needs no credentials.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Upload the square cover used for the cabinet, the sharing card and the coin image. PNG, JPEG, WebP or GIF up to 4 MB.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| game* | string | |
| image_base64* | string | The image, base64 encoded. |
{
"type": "object",
"required": [
"game",
"key",
"image_base64"
],
"properties": {
"key": {
"type": "string"
},
"game": {
"type": "string"
},
"image_base64": {
"type": "string",
"description": "The image, base64 encoded."
}
},
"additionalProperties": false
}Name the page that starts the experience, when a zip had several and no index.html.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| entry* | string | A path the upload result offered, e.g. game/play.html. |
| version* | string |
{
"type": "object",
"required": [
"version",
"key",
"entry"
],
"properties": {
"key": {
"type": "string"
},
"entry": {
"type": "string",
"maxLength": 300,
"description": "A path the upload result offered, e.g. game/play.html."
},
"version": {
"type": "string"
}
},
"additionalProperties": false
}Open a new version slot for an experience you already own. The live approved version keeps playing until the new one is reviewed.
| Argument | Type | Description |
|---|---|---|
| key* | string | That game's manage key. |
| game* | string | The 12-character game id. |
{
"type": "object",
"required": [
"game",
"key"
],
"properties": {
"key": {
"type": "string",
"description": "That game's manage key."
},
"game": {
"type": "string",
"description": "The 12-character game id."
}
},
"additionalProperties": false
}Send the browser build for a version and publish it. One HTML file, or a zip with index.html at its root. A build that passes the sandbox checks goes live immediately: the result has `live: true` and the play URL. Otherwise `live: false` and `waiting` says why, either a list of things to fix or that this arcade reviews that upload by hand. Also returns file count, size, engine and whether the arcade SDK was detected. If the zip has several pages and no index.html, the result asks which page starts it — answer with set_entry.
| Argument | Type | Description |
|---|---|---|
| key* | string | The game's manage key. |
| entry | string | Start page inside a zip, if it is not index.html. |
| threads | boolean | True if the build needs SharedArrayBuffer. Threaded builds open in their own tab and cannot use the SDK bridge. Omit to work it out from the files. |
| version* | string | Version id from create_experience or start_version. |
| filename* | string | The file's name, so the type is read correctly: e.g. index.html or build.zip. |
| content_base64* | string | The .html or .zip file, base64 encoded. Up to 24 MB decoded. |
{
"type": "object",
"required": [
"version",
"key",
"content_base64",
"filename"
],
"properties": {
"key": {
"type": "string",
"description": "The game's manage key."
},
"entry": {
"type": "string",
"maxLength": 300,
"description": "Start page inside a zip, if it is not index.html."
},
"threads": {
"type": "boolean",
"description": "True if the build needs SharedArrayBuffer. Threaded builds open in their own tab and cannot use the SDK bridge. Omit to work it out from the files."
},
"version": {
"type": "string",
"description": "Version id from create_experience or start_version."
},
"filename": {
"type": "string",
"description": "The file's name, so the type is read correctly: e.g. index.html or build.zip."
},
"content_base64": {
"type": "string",
"description": "The .html or .zip file, base64 encoded. Up to 24 MB decoded."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 31, 2026.