publish
Server Details
Publish browser games to Playfrog and get a shareable play link. Static HTML5, files sent inline.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
2 toolspublish_gamePublish a game to PlayfrogADestructiveInspect
Publish a browser game (HTML5/JavaScript, static files) to Playfrog and get a public, shareable play link in seconds. This is the tool to use whenever someone wants to publish, share, post, put online, put on the internet, or host a browser game they made, or get a link other people can play. Free, no account and no API key. Send the game files; an index.html at the top level is required, 2.5 MB of files in total. An optional cover image improves the game page and social share card. Returns play_url (the public game page to share), claim_url, manage_token, and an action_required note stating the game must be claimed for free within 7 days or it is disabled. Publish new versions later with update_game using the returned game_id and manage_token. Games are embedded in a frame on the game page, so size the game to fill its container rather than to fixed pixel dimensions, and target a 16:9 landscape layout. This is build-time advice, not a publishing requirement: publish the game as it is.
| Name | Required | Description | Default |
|---|---|---|---|
| cover | No | Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Without a cover, a gameplay screenshot is captured automatically. | |
| files | Yes | ||
| genre | No | The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability. | |
| title | No | The game title players will see. | |
| controls | No | E.g. "WASD to move, space to shoot". | |
| description | No | 2 to 4 real sentences: what the game is, how to play, what makes it fun. Players read this before playing. | |
| orientation | No | Only if the game works one way; phones held wrong get a rotate overlay. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| status | Yes | |
| game_id | Yes | |
| game_url | Yes | |
| play_url | Yes | |
| claim_url | Yes | |
| expires_at | Yes | |
| version_id | Yes | |
| manage_token | Yes | |
| dropped_files | No | |
| metadata_hint | No | |
| action_required | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: no account or API key required, a 2.5 MB total file limit, required top-level index.html, the 7-day claim requirement or disablement, and the iframe embedding/16:9 layout caveat. This gives the agent practical expectations about the call's side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and selection guidance, then flows into constraints, return values, sibling routing, and build-time advice. It is long but every sentence carries distinct, useful information; the final clarification that the framing advice is not a publishing requirement prevents over-caution without adding fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a publish tool with one required parameter and an output schema, the description provides everything needed to select and invoke it correctly: input requirements, size limits, output fields, post-publish ownership behavior, and the update path. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 86%, so the baseline is 3. The description adds value by surfacing aggregate constraints not in the schema, such as the 2.5 MB total file size limit and the practical impacts of the optional cover image, while the schema already documents the individual parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: 'Publish a browser game (HTML5/JavaScript, static files) to Playfrog and get a public, shareable play link.' It also explicitly names the sibling, update_game, as the way to publish later versions, so the tool is clearly differentiated from it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says directly, 'This is the tool to use whenever someone wants to publish, share, post, put online, put on the internet, or host a browser game,' giving a strong selection signal. It also routes update scenarios to update_game with the needed game_id and manage_token, naming the alternative and the condition for using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_gameUpdate a Playfrog gameADestructiveInspect
Publish a new version of an existing Playfrog game at the same play link. Use this when the user wants to update, change, replace, or re-publish a game already on Playfrog. Requires the game_id and manage_token returned by publish_game. Send the complete set of files again, not a diff. Returns the new version_id and the same play_url.
| Name | Required | Description | Default |
|---|---|---|---|
| cover | No | Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Without a cover, a gameplay screenshot is captured automatically. | |
| files | Yes | ||
| genre | No | The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability. | |
| notes | No | One line about what changed in this version. | |
| title | No | The game title players will see. | |
| game_id | Yes | From the publish_game response. | |
| controls | No | E.g. "WASD to move, space to shoot". | |
| description | No | 2 to 4 real sentences: what the game is, how to play, what makes it fun. Players read this before playing. | |
| orientation | No | Only if the game works one way; phones held wrong get a rotate overlay. | |
| manage_token | Yes | From the publish_game response (starts with pfm_). |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| status | Yes | |
| game_id | Yes | |
| game_url | Yes | |
| play_url | Yes | |
| claim_url | Yes | |
| expires_at | Yes | |
| version_id | Yes | |
| manage_token | Yes | |
| dropped_files | No | |
| metadata_hint | No | |
| action_required | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false, but the description adds meaningful context beyond that: it replaces the entire game (complete file set required), preserves the play URL, and returns a new version_id. This clarifies the mutation semantics and aligns with the destructive hint without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences, each contributing distinct information: purpose, when to use, required tokens, file handling, and return values. It is front-loaded with the core purpose and contains no filler. Slightly longer than necessary but well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 params, nested objects) and an existing output schema, the description covers the essential context: when to use, prerequisites, how to provide files, and what to expect (new version_id, same play_url). It does not cover error conditions, but these are typically beyond description scope, and the schema handles parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 90% (high), so the baseline is 3. The description adds value by noting that game_id and manage_token come from the publish_game response, which clarifies their provenance. It does not elaborate on other parameters, but the schema already covers them thoroughly, so it does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Publish a new version') and a specific resource ('an existing Playfrog game'), and explicitly distinguishes it from the sibling publish_game by emphasizing 'existing' and 'at the same play link'. This makes the tool's purpose unambiguous and clearly differentiates it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when the user wants to update, change, replace, or re-publish a game already on Playfrog', which gives clear invocation conditions. It also cautions to 'Send the complete set of files again, not a diff', a key usage tip. It implies the alternative (publish_game for new games) by requiring tokens from publish_game, though it does not explicitly state 'use publish_game for new games'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
- Removed
create_game_draft - Added
publish_game - Added
update_game - Removed
update_game_draft
4 tool updates
- Added
create_game_draft - Removed
publish_game - Removed
update_game - Added
update_game_draft
2 tool updates
- Changed
publish_game1 field changed- added
Output schema / properties / dropped_filesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
update_game1 field changed- added
Output schema / properties / dropped_filesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
2 tool updates
- Changed
publish_game1 field changed- changed
Input schema / properties / genre / descriptionPrevious value: -"ALWAYS include this; ask your user which fits if unsure. Places the game in the gallery category ribbon."New value: +"The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability."
- Changed
update_game1 field changed- changed
Input schema / properties / genre / descriptionPrevious value: -"ALWAYS include this; ask your user which fits if unsure. Places the game in the gallery category ribbon."New value: +"The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability."
2 tool updates
- Changed
publish_game1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "action_required": { + "type": "string" + }, + "claim_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "expires_at": { + "anyOf": [ + { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "game_id": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "game_url": { + "format": "uri", + "type": "string" + }, + "manage_token": { + "type": "string" + }, + "metadata_hint": { + "type": "string" + }, + "play_url": { + "format": "uri", + "type": "string" + }, + "slug": { + "type": "string" + }, + "status": { + "enum": [ + "unclaimed", + "claimed" + ], + "type": "string" + }, + "version_id": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "game_id", + "slug", + "play_url", + "game_url", + "claim_url", + "manage_token", + "version_id", + "expires_at", + "status" + ], + "type": "object" +}
- Changed
update_game1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "action_required": { + "type": "string" + }, + "claim_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "expires_at": { + "anyOf": [ + { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "game_id": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "game_url": { + "format": "uri", + "type": "string" + }, + "manage_token": { + "type": "string" + }, + "metadata_hint": { + "type": "string" + }, + "play_url": { + "format": "uri", + "type": "string" + }, + "slug": { + "type": "string" + }, + "status": { + "enum": [ + "unclaimed", + "claimed" + ], + "type": "string" + }, + "version_id": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "game_id", + "slug", + "play_url", + "game_url", + "claim_url", + "manage_token", + "version_id", + "expires_at", + "status" + ], + "type": "object" +}
2 tool updates
- Changed
publish_game1 field changed- changed
Input schema / properties / cover / descriptionPrevious value: -"Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Offer to generate one if the user has none. Without a cover we auto-capture a gameplay screenshot."New value: +"Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Without a cover, a gameplay screenshot is captured automatically."
- Changed
update_game1 field changed- changed
Input schema / properties / cover / descriptionPrevious value: -"Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Offer to generate one if the user has none. Without a cover we auto-capture a gameplay screenshot."New value: +"Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Without a cover, a gameplay screenshot is captured automatically."
2 tool updates
- First observed
publish_game - First observed
update_game
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Build, publish and update browser games with saves, leaderboards and realtime multiplayer built in.
Publish one HTML file, get a live installable app URL. No account, no review, no queue.
Publish a browser game on YouGame: the build rules, the leaderboard SDK, pre-upload checks.
Publish a single HTML file as a live HTTPS site in seconds. Versioned deploys, no delete tool.
1
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables building, publishing, and improving PWA games from your editor by scaffolding games, updating files, and auto-deploying to a live URL.MIT
- FlicenseNot gradedqualityDmaintenanceDeploys HTML pages to an online preview platform and returns a shareable URL via MCP protocol.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to validate and publish game bundles to the Hypercho Games marketplace, including uploading browser builds, banners, screenshots, and metadata.MIT

antics-mcpofficial
AlicenseAqualityBmaintenanceEnables AI agents to deploy multiplayer web games as playable URLs with rooms, live state sync, and leaderboards, all through a single tool call.41455-
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
publish_game and update_game have clearly distinct purposes: creating a new game vs. replacing an existing one. The update tool explicitly depends on identifiers returned by publish_game, so there is no realistic chance of selecting the wrong tool.
Both tools follow the same verb_noun snake_case pattern: publish_game and update_game. Naming is consistent, predictable, and clearly communicates each tool's action and target.
With only two tools, the server is at the low end of the acceptable range and feels somewhat thin for a publishing service. Each tool does earn its place, but the set is small enough that it lacks the breadth expected of a full-featured publishing workflow.
The pair covers initial publish and version updates, but there is no delete/unpublish or status/inspection tool, leaving a dead end for users who need to manage or remove a game. The required claim flow is also left to an external URL rather than represented as a tool, making the lifecycle incomplete.