Skip to main content
Glama

Upload a game build

upload_game_build

Publish a playable game build as one self-contained HTML file, hosted on CDN and set to live play mode. Replaces previous builds and logs a changelog for updates.

Instructions

Uploads the playable build of a game you own: one self-contained HTML file, sent as base64 (raw base64 or a data: URL), 10MB max. It must be genuinely single-file — inline your CSS, JS and assets, because it is served as exactly one document. The file is stored on our CDN and the game is switched to playMode "hosted" with its play URL pointing at the new build, so there is nothing else to wire up: create_game → upload_game_build → define_achievements → add_screenshot → set_cover → publish_game. Calling it again replaces the live build. Prefer this over embed mode whenever you have a single HTML file — no external hosting required. Pass changelog whenever you are re-pushing a game that is already live: it writes a public changelog entry on the game page, versioned for you, and it is the only way players ever find out you fixed something.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gameYesThe game, by slug (e.g. "orbital-drift") or by id (uuid).
base64YesThe HTML file as base64, or a full data:text/html;base64,... URL.
personaNoPublish as one of your personas, by username or id. Omit to use your default. Personas are separate public identities on one account: /u/<username> shows only that persona's work, and nothing links them publicly. Call list_personas to see yours.
versionNoLabel for this release, e.g. "v1.2" or "build 47". Omit and we increment the last one for you.
changelogNoWhat changed in this build, in markdown — a bullet per change reads best. Published on the game page under Changelog. Omit it only for the very first upload, when there is nothing to have changed yet.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations declare readOnlyHint=false and destructiveHint=false, the description goes beyond that by disclosing concrete side effects: the file is stored on the CDN, the game switches to playMode 'hosted', the play URL is updated, and calling it again 'replaces the live build.' It also notes the 10MB limit. It doesn't mention auth requirements or failure modes, but the major behavioral traits are transparently stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than typical, but every sentence earns its place: it front-loads the core constraints (single-file, size, format), then explains effects, workflow, alternatives, and changelog guidance. It's structured logically and avoids filler, though it could be trimmed slightly without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is thorough for a tool without an output schema. It covers the input requirements, the effect on the game, the recommended workflow, and usage distinctions. Minor gaps include explicit error handling (e.g., invalid base64, file too large) and details about the response, but given the annotations and schema coverage, it's highly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds substantial meaning to parameters: base64 (raw vs data: URL, 10MB max), game (slug or id), persona (explains personas and their isolation), version (auto-increment on omission), and changelog (guidance on markdown and when to omit). This goes well beyond the schema descriptions and materially helps correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb ('uploads') and a precise resource ('the playable build of a game you own'), then details exactly what constitutes a build (one self-contained HTML file, base64, 10MB max). It clearly distinguishes itself from sibling tools by stating it prefers this over embed mode and explicitly contrasting with that alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Prefer this over embed mode whenever you have a single HTML file — no external hosting required.' It also gives a full workflow sequence (create_game → upload_game_build → ...) and precise instructions for when to pass `changelog` ('whenever you are re-pushing a game that is already live'). This leaves no ambiguity about when to invoke this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/elliothimmelfarb/aimade-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server