Skip to main content
Glama

Gamealia MCP server

Publish your web game on Gamealia from your AI coding assistant, and keep 60–70% of the ad revenue (100% from the players you bring), with no exclusivity.

Tell Claude Code, Cursor, Codex, VS Code, Gemini CLI, Windsurf, Cline, Zed or Claude Desktop:

Publish this game on Gamealia. It's in ./my-game.

The server analyzes the project, integrates the Gamealia SDK (or swaps Poki / CrazyGames calls through the compatibility layers), builds it, tests it in a real browser on desktop and mobile, writes the listing and the cover, uploads the build and submits it for review after you confirm. You approve one sign-in in your browser. A person reviews every version before it goes live.

Works with any engine that exports to the web: plain HTML5 and JavaScript, Phaser, PixiJS, three.js, Unity WebGL, Godot, GameMaker, Construct.

Install

Node.js 22 or newer.

# Claude Code
claude mcp add gamealia -- npx -y gamealia-mcp

Any other MCP client (stdio):

{
  "mcpServers": {
    "gamealia": { "command": "npx", "args": ["-y", "gamealia-mcp"] }
  }
}

The local autotest, preview and cover tools also use playwright-core with a headless Chromium (npx playwright-core install chromium).

Ready-made skills and configs for each assistant: gamealia.app/developers.

Related MCP server: Unity-MCP

Tools

Tool

What it does

gamealia_analyze_project

Detects the engine, the build and what the game needs

gamealia_integrate_sdk

Adds the SDK and lifecycle calls, or migrates Poki / CrazyGames calls

gamealia_run_autotest

Runs the game in a headless browser, desktop and mobile, with screenshots

gamealia_create_game

Creates the game page: title, description, controls, cover, translations

gamealia_upload_version

Uploads the build and submits it for review

gamealia_get_status

Review state and live version

gamealia_get_earnings

Estimated and confirmed earnings

gamealia_playtest

Plays the game in a browser and reports what it sees

Full reference: Publish with AI.

The deal for developers

  • 60% of your game's ad revenue; launch partners (first game live by December 31, 2026) get 70% on all their games until June 30, 2027.

  • 100% of the ads seen by players who arrive through your own link.

  • Monthly payouts once your balance passes USD 50: PayPal, Payoneer, Wise or Mercado Pago.

  • No exclusivity: keep your game on Poki, CrazyGames, itch.io or your own site.

More: gamealia.app/developers · Revenue and payouts · Migrate from Poki · Migrate from CrazyGames

Contact

hello@gamealia.app

Available Tools

26 tools
gamealia_accountsDeveloper accountsA
Idempotent

Lists or switches the user's Gamealia developer accounts (their own and studios they joined). API keys are bound to one account and every other tool acts on the active one, so when the user has several, confirm the right one before creating or publishing games. action "list" (read-only) returns each account (id, name, individual/business, role: owner, admin, developer or finance), which is active and pending invites. action "switch" makes another account active with a stored key, or starts a device login bound to it (show the URL and code, then call gamealia_login with wait:true).

NameRequiredDescriptionDefault
actionYeslist: show the accounts (changes nothing); switch: make the given account active
accountNoRequired for switch: the account id or display name, as shown by action list

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by explaining that API keys are bound to a single account and that all other tools implicitly operate on whichever account is active — the key operational consequence an agent must know. It also discloses the switch side effect, including the device-login branch (show the URL and code, then call gamealia_login with wait:true) and that list changes nothing, which complements rather than contradicts the supplied hints.

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?

Three sentences, front-loaded with the resource and scope, then the operational constraint, then per-action detail. Dense but readable; the role enumeration ("owner, admin, developer or finance") is arguably more detail than an agent needs to pick the tool.

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

Completeness5/5

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

For a two-action tool with no output schema, this covers the identity/auth model, the side effect of switch, the follow-up call required after a device login, and the data returned by list. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Every parameter is already documented at 100% coverage, so the schema baseline is 3. The description earns one more point by describing the outcome of each action — what list returns (id, name, individual/business, role, active flag, pending invites) and what switch does with a stored key versus a device login — rather than restating the enum.

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

Purpose4/5

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

"Lists or switches the user's Gamealia developer accounts" is a specific verb+resource pair, and the parenthetical "their own and studios they joined" narrows the scope. It also establishes the distinguishing fact that every other tool acts on the active account, which implicitly separates it from gamealia_login and gamealia_whoami, though those siblings are never named.

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

Usage Guidelines4/5

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

Gives a concrete decision rule for the 'before' case: when the user has several accounts, confirm the right one before creating or publishing games. The list-vs-switch split is spelled out. It stops short of naming alternatives or saying when this tool is not appropriate.

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

gamealia_analyze_projectAnalyze a game projectA
Read-only

Inspects a local game folder (read-only, runs nothing, no login): engine (HTML5 + framework, Unity WebGL, Godot web, GameMaker, Construct), build command, output dir and entry html; existing CrazyGames/Poki SDK usage; policy problems (external ads, trackers, purchase UI, own login) with exact files and lines; localStorage keys; size; and the microphone/camera permissions to declare in the listing when the build calls getUserMedia. Call it first on an existing game (gamealia_create_project when there is none); the result names the next step, usually gamealia_integrate_sdk.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)

Output Schema

NameRequiredDescription
dirYes
nextYes
sdksYes
engineYes
policyYes
warningsYes
entryHtmlYes
outputDirYes
sizeBytesYes
permissionsYes
buildCommandYes
outputExistsYes
localStorageKeysYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the bar is lower; the description still adds meaningful context by stating 'runs nothing, no login' and that the result names the next step. It doesn't detail output structure, but that is covered by the output schema.

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?

Front-loaded with the core action before the enumerated detection list, and every item conveys a distinct capability. It is dense and long for a single sentence, but no clause is wasted.

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

Completeness5/5

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

Given a single fully-documented parameter and an existing output schema, the description covers everything an agent needs: what it inspects, that it is safe, when to call it, and what comes next.

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

Parameters3/5

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

Only one parameter and schema description coverage is 100%, so the schema already fully documents 'dir'. The description adds no further meaning about path resolution or edge cases, so baseline 3 applies.

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?

States a specific verb ('Inspects') and resource ('a local game folder') and then enumerates exactly what it detects: engine, build command, output dir, entry html, SDK usage, policy problems, storage keys, size, and permissions. This is precise enough to distinguish it from sibling tools like gamealia_check_integration or gamealia_build.

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?

Explicitly says 'Call it first on an existing game', gives the alternative for the no-game case (gamealia_create_project), and names the typical follow-up (gamealia_integrate_sdk). Both the when-to-use and the sibling routing are covered.

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

gamealia_buildBuild the projectA
Idempotent

Runs the project's detected build command locally (e.g. npm run build; may take minutes, sends progress notifications) and returns the output folder and the last lines of the log, or an error with the end of the build log on failure. With no build step it runs nothing and returns the folder to upload. Usually optional: gamealia_run_autotest, gamealia_preview and gamealia_upload_version build first by themselves; use it to debug a failing build.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say it is not read-only, is idempotent and non-destructive; the description adds duration ('may take minutes'), progress notifications, the return payload (output folder plus last log lines), the failure mode (error with end of the build log), and the no-build-step no-op. That is substantial context beyond the structured fields.

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?

Two sentences, front-loaded with the action and outcome, and no filler. The first sentence is long with stacked parentheticals, which slightly hurts scannability, but every clause carries information.

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?

With no output schema, the description correctly carries the return-value burden (folder plus log tail, error text on failure) and covers timing and notifications. It does not mention what build artifacts or files are written to disk, a minor gap for a mutating tool with destructiveHint=false.

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

Parameters3/5

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

There is only one parameter, dir, and schema coverage is 100% with its own description of absolute vs. relative paths. The description adds nothing about the parameter, so this sits at the baseline.

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?

States a specific verb and resource ('Runs the project's detected build command locally') plus the outcome returned (output folder and log tail). It also handles the edge case where no build step exists, and names the siblings it overlaps with, so the agent can tell it apart from gamealia_run_autotest, gamealia_preview and gamealia_upload_version.

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?

Explicitly states that it is 'usually optional' because the autotest, preview and upload tools build first by themselves, then gives the one condition that selects it: debugging a failing build. This is exactly the when-to-use vs. when-not-to-use routing an agent needs.

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

gamealia_check_integrationLint the SDK integration and policiesA
Read-only

Fast static lint of a local project's source or build (read-only, no browser, no login): SDK loaded and called, loadingStop/gameplayStart present, portal language used (locale/localeChange), no external ads/trackers/miners, no purchase UI, no own login, build security rules, sizes. Use it after gamealia_integrate_sdk and before the slower gamealia_run_autotest. Returns ok plus each check as pass/warn/fail with a message (how to fix it) and file:line.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)
backendHostsNoYour own servers the game may call, as in the listing, e.g. ["mp.example.com", "*.example.com"]; other external hosts are flagged

Output Schema

NameRequiredDescription
okYes
nextYes
checksYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with "no browser, no login". It also adds real behavioral context about severity levels (pass/warn/fail), fix messages, and file:line output, and notes it is a static (non-executing) check. However, with an output schema present, restating the return shape is largely duplicative, so the net addition beyond structured data is moderate.

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?

Front-loaded with the core action and the read-only/no-login constraints, then the check list, then timing, then return shape. Dense but well ordered; the long enumeration of checks is justified because it defines scope, though the sentence is heavy.

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

Completeness5/5

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

For a two-parameter read-only lint tool, the description covers purpose, scope, sequencing relative to siblings, and severity semantics, while annotations carry the safety profile and the output schema carries the return structure. Nothing an agent needs in order to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (dir, backendHosts) are fully documented in the schema, so the baseline is 3. The description does not explain dir resolution or how backendHosts changes which hosts are flagged; that detail lives only in the schema.

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?

States a specific verb and resource ("Fast static lint of a local project's source or build") and then enumerates exactly what is checked: SDK load/call, loadingStop/gameplayStart, locale handling, no external ads/trackers, no purchase UI, build security, sizes. That enumeration makes it unmistakable next to siblings like gamealia_analyze_project or gamealia_run_autotest.

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?

Gives explicit workflow placement: after gamealia_integrate_sdk and before the slower gamealia_run_autotest, with the speed tradeoff stated ("slower"). An agent knows both the trigger point and which sibling to defer to when a full run is needed.

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

gamealia_create_gameCreate the game listingA

Creates a new game listing in the active developer account (needs login; not idempotent: a taken slug fails): slug, title/description/controls in es and en, tags, orientation, multiplayer, ads on/off, backend hosts, permissions; optionally uploads a cover and thumbnail (make them with gamealia_generate_cover). The game stays a draft, not public, until a version is approved. Call it once per game, after gamealia_run_autotest passes; to change an existing listing use gamealia_update_listing. Returns the game (id, slug, status); next gamealia_upload_version.

NameRequiredDescriptionDefault
slugYesURL slug and game host (<slug>.gamealia.app): a-z, 0-9 and -, 3-40 chars, starting and ending with a letter or digit, not reserved (www, api, cdn, ...); fixed once live
tagsYesTags, three kinds in one array: 1-6 categories (genres: what kind of game), up to 8 mechanics (how it plays: match-3, merge, physics, tower-defense…) and attributes (multiplayer, mobile…). Players browse and search by all three.
textsNoDeveloper-written listing text for one or many locales in one call, e.g. {fr:{title, description, controls}, de:{...}}. Limits (trimmed): title 2-60, description 20-2000 or "", controls <= 500 or "". Only the fields given change; {} approves that locale's machine translation as is; null removes the locale. These texts always win over machine translation. Read the current texts and their status with gamealia_get_status {texts:true}.
titleYes2-60 characters. Prefer {es, en}; a plain string is used for both languages
controlsNo0-500 characters. Prefer {es, en}; a plain string is used for both languages
coverPathNoCover image file (PNG/JPEG/WebP, >= 1200x630, ~1.91:1, <= 2 MB)
isolationNocoop-coep only for builds that need SharedArrayBuffer (threads)
thumbPathNoThumbnail file (square, >= 512x512, <= 2 MB)
adsEnabledNoShow Gamealia ads in this game (revenue share)
descriptionYes20-2000 characters. Prefer {es, en}; a plain string is used for both languages
multiplayerNoPlayers per room, or null for single player
orientationNoScreen orientation the game needs; landscape or portrait shows mobile players a rotate-device hint (default any)
permissionsNoBrowser permissions the game needs (microphone/camera), each with a justification; [] removes them. Replaces the current list and its justification (stored in the listing; the reviewer sees it). gamealia_analyze_project suggests them when the build calls getUserMedia. A change takes effect only when a version tested with it is approved (manual review): upload and submit a new version afterwards.
backendHostsNoYour own servers the game talks to, e.g. mp.example.com or *.example.com

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare non-readonly, non-idempotent, non-destructive, open-world, but the description adds concrete substance beyond them: login is required, a taken slug fails (matching non-idempotent), cover/thumbnail uploads are side effects, and the game remains a draft and non-public until a version is approved. It even discloses the return shape (id, slug, status).

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?

Front-loaded with the action and the critical non-idempotent/login caveats, and the sibling references are placed usefully. It is a dense semicolon-chained paragraph, though, so the field list reads as a run-on rather than a scannable structure.

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

Completeness5/5

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

For a 14-parameter, mutation-heavy tool with nested locales and no output schema, the description covers prerequisites, side effects, draft visibility, return values, and follow-up steps. Nothing an agent needs in order to call it correctly is missing.

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

Parameters4/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. The description still adds value by summarizing the es/en title/description/controls, tags, orientation, multiplayer, ads, backend hosts, permissions, and the optional cover/thumbnail paths, giving an agent a coherent overview before it opens each parameter.

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?

States a specific verb and resource ('Creates a new game listing in the active developer account') and immediately lists the fields it owns. It differentiates itself from gamealia_update_listing, which it names explicitly for the update case.

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?

Explicit sequencing: call once per game, after gamealia_run_autotest passes, and use gamealia_update_listing for existing listings. It also names gamealia_generate_cover for producing the optional images and points to gamealia_upload_version as the next step, leaving little to inference.

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

gamealia_create_projectCreate a new gameA

Scaffolds a new minimal game, already integrated with the Gamealia SDK, into an empty or new folder (local files only, no login). Use it when there is no game yet, instead of gamealia_analyze_project + gamealia_integrate_sdk. Never overwrites: fails if the folder has any file. Returns the files written. Templates: vanilla (Canvas game in plain JavaScript; no build step, upload the folder as is.); phaser (Phaser 3 + Vite; npm install && npm run build -> dist/.); pixi (PixiJS 8 + Vite; npm install && npm run build -> dist/.); multiplayer (Room example (publish, invite link, join) with a BroadcastChannel stand-in for your server; no build step.)

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)
titleYesGame title written into the scaffold, 1-60 characters
templateNoStarter template id (default vanilla: plain JavaScript, no build step); see the list in the descriptionvanilla

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the safety profile (not read-only, not destructive, not idempotent, closed-world); the description adds what they cannot: writes to local disk only, requires no login, aborts on a non-empty folder, and returns the written files. The per-template build semantics (no build step vs. `npm install && npm run build` -> dist/) are behavioral detail an agent needs before scaffolding.

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?

Purpose and the alternative-routing sentence are front-loaded, and every following sentence adds a distinct fact (local-only, overwrite guard, return value, template table). The nested parentheticals in the template list are dense and occasionally run-on, costing a point on readability but not on substance.

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

Completeness5/5

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

For a three-parameter scaffolding tool with no output schema, the description still covers return content ("Returns the files written"), auth posture, failure mode, and post-scaffold build steps per template. Nothing an agent needs in order to call it correctly or interpret the result is missing.

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

Parameters4/5

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

Schema coverage is 100% and already documents dir, title bounds, and the template enum with a default, so the baseline is 3. The description earns an extra point by explaining the consequences of each template choice (plain JS vs. Vite build output vs. BroadcastChannel multiplayer stand-in), which the enum list alone does not convey.

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?

"Scaffolds a new minimal game, already integrated with the Gamealia SDK, into an empty or new folder" gives a specific verb, artifact, and target, and the "local files only, no login" clause separates it from the account-bound siblings. The explicit contrast with gamealia_analyze_project + gamealia_integrate_sdk makes it distinguishable without opening either schema.

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?

States the trigger condition ("when there is no game yet") and names the two-step alternative it replaces, which is exactly the routing decision an agent faces. The guard "Never overwrites: fails if the folder has any file" tells the agent when the call will not succeed, which is a usage constraint, not just a behavior.

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

gamealia_generate_coverGenerate cover and thumbnailA
Destructive

Makes a 1200x630 cover and a 512x512 thumbnail from a gameplay screenshot (e.g. desktop-input.png from gamealia_run_autotest): center-cropped with the title on a gradient. Writes cover and thumb files to outDir (refuses to replace existing ones unless overwrite:true) and returns their paths plus the cover as an image. Without game it is local only; with game (needs login) it also uploads both to that listing, replacing its current images. Otherwise pass the files to gamealia_create_game or gamealia_update_listing.

NameRequiredDescriptionDefault
gameNoUpload them to this game's listing
titleYesGame title drawn on the images, 1-60 characters
outDirNoWhere to write cover/thumb (default: the screenshot's folder)
overwriteNoReplace existing cover/thumb files in outDir
screenshotYesPNG/JPEG/WebP screenshot path

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint/openWorldHint) by naming exactly what gets written, that existing cover/thumb files are refused unless overwrite:true, that uploads replace the listing's current images, and that the game path requires login. It also discloses the return payload: file paths plus the cover as an image.

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?

Three sentences, each load-bearing, with the core action front-loaded before side effects and routing. Dense nested parentheticals (e.g. the screenshot example and the overwrite caveat) slightly slow scanning but carry genuine information.

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

Completeness5/5

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

With no output schema, the description supplies the return shape itself (paths plus cover image), plus overwrite semantics, login requirement, and upload side effects. Nothing an agent needs to invoke this safely and correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, and the description adds real meaning: an example screenshot value tied to gamealia_run_autotest, the outDir default behavior, and the consequence of overwrite:true. It stops short of clarifying formats or constraints on title beyond what the schema states.

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?

States a specific verb and concrete outputs: makes a 1200x630 cover and 512x512 thumbnail from a gameplay screenshot, center-cropped with the title on a gradient. It also names the downstream siblings (gamealia_create_game, gamealia_update_listing), so an agent can place it precisely in the workflow.

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?

Explicitly branches usage: omit `game` for local-only generation, pass `game` (requires login) to also upload and replace listing images, and otherwise hand the resulting files to gamealia_create_game or gamealia_update_listing. When-to-use, when-not, and alternatives are all present.

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

gamealia_get_earningsEarningsA
Read-only

Returns the active developer account's earnings (read-only, needs login; a role-forbidden error means the user's role cannot see finances): balance, then per month the estimated and confirmed amounts, adjustments and revenue share %, and the payouts made (date, amount, method). Amounts are USD; structured values are in micro-dollars (balanceMicros). Account-wide, not per game; for plays and ad impressions per game use gamealia_get_stats.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds the substantive behavior: authentication requirement, meaning of the role-forbidden failure, and the exact shape of the returned data (balance, per-month estimated/confirmed amounts, adjustments, revenue share %, payouts with date/amount/method). The unit disclosure (USD, micro-dollars via balanceMicros) is real behavioral context the annotations cannot carry.

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?

Front-loaded with purpose and safety/auth context, then the return shape, then the sibling redirect. It is a single dense run-on with heavy parenthetical enumeration, which costs a little readability but every clause (units, scope, error meaning) earns its place.

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

Completeness5/5

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

There is no output schema, so the description carries the burden of describing return values and does so concretely, down to units and the balanceMicros field. Combined with the auth and error semantics, nothing an agent needs in order to call it correctly or interpret a failure is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline applies. It does not waste space re-explaining an empty input schema.

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?

States a specific verb and resource ("Returns the active developer account's earnings") plus explicit scope: account-wide, not per game. It names the sibling gamealia_get_stats and the data that belongs there (plays, ad impressions), so an agent can distinguish the two without opening either schema.

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?

Explicitly routes the agent: use this tool for account finances, use gamealia_get_stats for per-game plays and impressions. It also gives prerequisites ("needs login") and an error-interpretation rule ("a role-forbidden error means the user's role cannot see finances"), which covers the when-not case.

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

gamealia_get_statsGame statsA
Read-only

Returns one game's daily stats for the last N days plus totals (read-only, needs login): plays, players, playtime in seconds, mobile/desktop split, ad requests and ad impressions. Use it to see how a live game performs; for money use gamealia_get_earnings, for review state gamealia_get_status.

NameRequiredDescriptionDefault
daysNoHow many days back to include, 1-365 (default 30)
gameYesGame slug or id, from gamealia_list_games (a game of the active account)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description only needs to add context; it does so by stating the login prerequisite, which is an auth requirement not present in the annotations. It stops short of noting rate limits, whether 'totals' cover the full lifetime or just the window, or how days interacts with the returned granularity.

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?

Two sentences: a dense front-loaded payload description followed by routing guidance. The metric enumeration earns its place and includes the useful unit note (playtime in seconds), though the list is long enough that a reader must parse past it to reach the tool-selection sentence.

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?

With no output schema, the description must carry the return contents, and it does by listing the metric families. For a simple two-parameter read tool that is largely sufficient; remaining gaps are minor, such as whether totals span the requested window or the full history and whether data is bucketed per day as the name implies.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents both game (slug or id, from gamealia_list_games, active account) and days (1-365, default 30) with bounds. The description only echoes 'last N days' and 'one game's', adding no format or constraint detail beyond structured fields, so the baseline of 3 applies.

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?

States a specific verb and resource (returns one game's daily stats plus totals), enumerates the metric families returned (plays, players, playtime, device split, ad requests/impressions), and explicitly names the scope of a single game over the last N days. It is clearly distinguishable from siblings like gamealia_get_earnings and gamealia_get_status, which it names directly.

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?

Gives an explicit use case ("see how a live game performs") and routes the agent away with named alternatives and their conditions: money -> gamealia_get_earnings, review state -> gamealia_get_status. An agent can pick between the three without opening any schema.

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

gamealia_get_statusGame and version statusA
Read-only

Shows where one game stands (read-only, needs login): listing status (draft, live, unlisted, banned), the live version, requested vs live permissions, the latest version's state, its server autotest report, the reviewer's reject reasons with how to fix each, and the previous versions' states. Use it after uploading or submitting, and to read a rejection. texts:true instead returns the listing text of every supported locale with its status (developer-written, machine-translated, missing), the source text to translate from and the field limits.

NameRequiredDescriptionDefault
gameYesGame slug or id, from gamealia_list_games (a game of the active account)
textsNoInclude the per-locale listing texts, their status and the limits

Output Schema

NameRequiredDescription
gameYes
nextYes
latestYes
versionsYes
listingTextsNo

TDQS

A4.3/5.0
Behavior4/5

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

Read-only is already covered by readOnlyHint, but the description adds genuinely new behavioral facts beyond the annotations: login is required, and the returned status is enumerated as one of draft/live/unlisted/banned so the agent knows the value space. It does not discuss rate limits or pagination, but those are minor for a single-game read.

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?

Two sentences, front-loaded with the core purpose before the mode-switching clause, and every enumerated item is a real field the caller gets back. The first sentence is long and list-heavy, which costs a little scanability, but nothing is padding.

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?

For a 2-parameter read tool with a full output schema, the description covers purpose, auth requirement, timing, and the alternate mode's contents. Since the output schema documents return shape, omitting return-value format details is fine; only the absence of sibling comparisons keeps it from being fully complete.

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

Parameters4/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, and the description earns the extra point by expanding the meaning of the texts flag well past the schema: it returns per-locale listing text statuses (developer-written, machine-translated, missing), the source text to translate from, and the field limits. That tells the agent what the flag actually activates, not just that it includes texts.

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 opens with a precise verb+resource ("Shows where one game stands") and then enumerates exactly what is reported: listing status, live version, requested vs live permissions, latest version state, autotest report, reject reasons, previous version states. That enumeration clearly separates it from siblings like gamealia_list_versions (version list only) and gamealia_list_games (game list only).

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

Usage Guidelines4/5

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

"Use it after uploading or submitting, and to read a rejection" gives concrete triggering moments, and the "texts:true instead returns..." clause explains when to switch modes. It stops short of naming explicit alternatives to avoid (e.g. list_versions for a bare version list) or stating exclusions, so it is clear context but not full when/when-not routing.

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

gamealia_install_agent_kitRegister Gamealia in coding agentsA
DestructiveIdempotent

One-time setup, not part of publishing: registers this MCP server and installs the Gamealia skills/rules in coding agents (claude-code, claude-desktop, codex, gemini, cursor, vscode, windsurf, cline, zed, opencode, agents-md). Dry run by default (write:true applies); returns the planned file changes plus copy-paste snippets (claude mcp add, Codex TOML, Cursor/VS Code install links). Project scope writes agent config files into dir (.mcp.json, .claude/skills, .cursor/, .vscode/, .codex/, AGENTS.md/GEMINI.md blocks, ...); global scope edits the user's own agent configs (~/.claude.json, ~/.codex/config.toml, Claude Desktop, ...). Merges idempotently, backs up every changed file first and leaves unparsable files alone; gamealia agents uninstall reverts it.

NameRequiredDescriptionDefault
dirNoProject folder for project scope (default: the server's working directory)
scopeNoproject (default): config files inside dir; without targets sets up Claude Code, Cursor and VS Code plus the agents detected. global: the user's own agent configs; without targets only the detected agentsproject
writeNoApply the changes (default false: dry run, nothing is written)
targetsNoAgents to set up, e.g. ["claude-code", "cursor"] (default: depends on scope, see scope)
serverPathNoPath of the gamealia-mcp.mjs the agents should run (default: this running server's bundle)

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the supplied annotations (destructiveHint=true, idempotentHint=true) by disclosing that dry run is the default, that every changed file is backed up first, that unparsable files are left alone, that merges are idempotent, and that `gamealia agents uninstall` reverts the whole thing. It also names the exact files and directories touched per scope, which is the kind of detail annotations cannot convey.

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 key framing — one-time setup, dry run by default, returns snippets — is front-loaded in the first two sentences, and the remaining parenthetical lists earn most of their space by naming concrete config paths. It is dense and slightly over-long, with the agent-name enumeration and file lists bordering on clutter.

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

Completeness5/5

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

With no output schema, the description still explains the return value (planned file changes plus copy-paste snippets like `claude mcp add`, Codex TOML, and install links). It also covers safety (backups, unparsable files untouched), reversibility, and per-scope effects, which is everything an agent needs before invoking a destructive write tool with zero required parameters.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description adds value by spelling out the practical consequences of scope ('project writes .mcp.json, .claude/skills, .cursor/ ...; global edits ~/.claude.json, ~/.codex/config.toml, Claude Desktop') and by pairing write:true with 'applies'. That said, much of the scope and write semantics is already stated in the schema property descriptions, so it is reinforcement rather than entirely new meaning.

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?

States a specific verb and resource ('registers this MCP server and installs the Gamealia skills/rules in coding agents') plus an explicit scope exclusion ('One-time setup, not part of publishing'). This clearly separates it from the publishing siblings and from gamealia_integrate_sdk, which targets SDK code rather than agent configs.

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

Usage Guidelines4/5

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

Frames the situation ('One-time setup, not part of publishing') and explains the dry-run-by-default workflow with write:true as the apply switch. It does not explicitly name a sibling to use instead, such as gamealia_integrate_sdk for SDK work, so a small inference is left to the agent.

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

gamealia_integrate_sdkIntegrate the Gamealia SDKA
DestructiveIdempotent

Patches a local project to use the Gamealia SDK, after gamealia_analyze_project: adds the SDK script tag (or import) and a lifecycle adapter, swaps CrazyGames/Poki SDKs for the Gamealia shims, adds the Unity .jslib / Godot addon. Deterministic and idempotent. Dry run by default (returns a unified diff, changes nothing); write:true edits the project's files. Returns TODOs (file:line) for the calls only you can place: gameplayStart/Stop, happyTime and ad breaks; then run gamealia_check_integration.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)
writeNoApply the patch (default: dry run, diff only)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds real substance beyond them: the default is a non-mutating dry run returning a unified diff, write:true is the mutating path, the operation is deterministic and idempotent, and it returns file:line TODOs. It could go further on what exactly is overwritten in pre-existing project files, which matters given destructiveHint=true.

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?

Front-loaded with the action and prerequisite, then conditions, then return values, then the next step — a logical order with no filler. It is a dense semicolon-chained paragraph, though, and the TODO/next-tool information could be split for faster scanning.

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

Completeness5/5

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

There is no output schema, so the description carries the return contract: a unified diff in dry-run mode and file:line TODOs for hand-placed calls. Combined with the prerequisite, the write switch, and the follow-up tool, an agent has everything needed to call this correctly and interpret the result.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are already documented, including write's default-false dry-run meaning. The description restates the dry-run vs write:true distinction but adds no new syntax, path rules, or edge-case behavior for `dir` (e.g. what happens if it isn't a recognized project). Baseline 3 applies when the schema carries the weight.

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?

States a specific verb and resource ("Patches a local project to use the Gamealia SDK") and immediately scopes it relative to siblings: it runs after gamealia_analyze_project and before gamealia_check_integration. It also enumerates the concrete edits (script tag/import, lifecycle adapter, SDK swaps, Unity .jslib / Godot addon), so an agent can distinguish it from analyze/check tools without reading the schema.

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?

Gives explicit sequencing ("after gamealia_analyze_project", "then run gamealia_check_integration") and explains the mode split: dry run by default, write:true to actually edit. The division of labor is spelled out — the tool places the plumbing, while gameplayStart/Stop, happyTime and ad breaks are left as TODOs for the agent.

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

gamealia_list_gamesList my gamesA
Read-only

Lists every game of the active developer account (read-only, needs login): slug, title, status (draft, live, unlisted, banned), live version id and cover/thumbnail URLs. Use it to find the slug the other tools take, or to check that a game exists before gamealia_create_game; for one game's versions and review state use gamealia_get_status.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description only adds 'needs login', which is genuinely useful context beyond the annotations. It also discloses that all games are returned with no filtering/pagination, but says nothing about error behavior or what happens with an expired session.

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

Conciseness5/5

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

Front-loaded with the core action and account scope, then the returned fields, then usage routing; every clause carries information an agent needs. No filler, no restatement of the title.

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?

With no output schema, the description correctly compensates by enumerating the return fields, and it flags the login prerequisite. Only minor gaps remain (no mention of ordering, empty-account behavior, or pagination limits) for what is otherwise a simple zero-parameter read tool.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies. The description does not waste space inventing parameter detail, instead spending its words on scope and return values.

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?

States a specific verb and resource ('Lists every game of the active developer account') and immediately enumerates the returned fields (slug, title, status, live version id, cover/thumbnail URLs), so the agent knows exactly what it gets. It is clearly distinguishable from siblings like gamealia_get_status and gamealia_list_versions, which the description explicitly delegates to.

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?

Gives two concrete when-to-use cases ('find the slug the other tools take', 'check that a game exists before gamealia_create_game') and names the alternative for a different need ('for one game's versions and review state use gamealia_get_status'). This is explicit routing, not implied guidance.

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

gamealia_list_versionsList versionsA
Read-only

Lists all versions of one game, newest first (read-only, needs login): number, state (uploading, testing, tested, test_failed, awaiting_review, approved, rejected, archived, ...), which one is live, release notes, size, autotest status, reject reasons with fixes and dates. For the latest version's full autotest report and the next step use gamealia_get_status.

NameRequiredDescriptionDefault
gameYesGame slug or id, from gamealia_list_games (a game of the active account)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description adds genuinely new context: login is required, results are ordered newest-first, and the state vocabulary (uploading, testing, tested, awaiting_review, approved, rejected, archived) is disclosed. It stops short of covering pagination or behavior when the game slug is invalid, which keeps it below a 5.

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?

Two sentences, front-loaded with the core action and ordering, then the routing hint. The long parenthetical field list is dense but each item describes a returned attribute an agent would otherwise have to discover by calling; only the trailing "..." in the state list is slightly loose.

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?

With no output schema, the description correctly takes on the burden of describing return contents, and it does so thoroughly, including auth and ordering. Minor gaps remain around result volume/pagination and error cases for an unknown game, which matter for a list tool.

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

Parameters3/5

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

Schema coverage is 100% and the single `game` parameter already documents that it accepts a slug or id from gamealia_list_games. The description adds no syntax or format detail beyond that, so this sits at the baseline where the schema does the work.

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?

States a specific verb and resource ("Lists all versions of one game") plus ordering ("newest first") and enumerates exactly what each entry contains (number, state, live flag, release notes, size, autotest status, reject reasons). It also names the sibling it is not (gamealia_get_status), so an agent can separate the two without opening either schema.

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?

Gives an explicit routing rule: use this for the version list, but use gamealia_get_status for the latest version's full autotest report and the next step. It also states the prerequisite ("needs login"), so an agent knows when the call is even viable.

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

gamealia_loginLog in to GamealiaA

Logs in to Gamealia with a device code; call it first, since every tool that talks to Gamealia needs it. Returns a URL and a code at once for the user to open and approve (Google, or email and password; creates the developer profile if needed), then polls in the background and stores the API key in ~/.config/gamealia/credentials.json (mode 600). Call again with wait:true to wait for the approval (up to 50 s per call; repeat while still pending). When already logged in it only returns the username, unless force:true.

NameRequiredDescriptionDefault
waitNoWait up to 50 s for the user to approve a login started earlier
forceNoStart a new login even when already logged in (cancels a pending one)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description goes far beyond that by disclosing the out-of-band approval flow (URL plus code, Google or email/password), profile auto-creation, background polling, and a concrete side effect with location and permissions (API key written to ~/.config/gamealia/credentials.json, mode 600). It also bounds each wait call at 50 s and explains the repeat-while-pending loop, which an agent needs to avoid misreading a pending response as failure.

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?

Front-loaded with the ordering constraint and mechanism, and every clause carries information (flow, file side effect, timeout, idempotency, override). It is a dense run of parentheticals in one paragraph; breaking the wait/force behavior into a separate sentence would improve scannability without losing content.

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

Completeness5/5

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

There is no output schema, so the description carries the return-value burden and does: URL and code on first call, username when already authenticated, pending state implied by the wait loop. Combined with the disclosed credential file side effect and the 50 s bound, an agent has everything needed to call and interpret this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds operational meaning the schema does not: wait is a polling loop with a ~50 s ceiling per call that must be repeated, and force discards an in-flight login. That is behavior beyond the terse schema strings, though neither parameter's interaction with the logged-in shortcut is spelled out in full.

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?

States a specific verb and resource ("logs in to Gamealia") plus the mechanism (device code), and immediately distinguishes its role from all siblings: "call it first, since every tool that talks to Gamealia needs it." An agent can place this tool relative to gamealia_whoami, gamealia_logout, and the rest without opening any schema.

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?

Gives explicit when-to-use (before any Gamealia call), explicit follow-up behavior ("call again with wait:true ... repeat while still pending"), explicit override conditions ("unless force:true"), and the already-logged-in case. Alternatives and exclusions are both named rather than inferred.

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

gamealia_logoutLog outA
DestructiveIdempotent

Logs out on this machine: deletes the local credentials file (every stored account key) and cancels a pending login. Local only, the key is not revoked on the server; safe to repeat. If GAMEALIA_API_KEY is set in the environment, calls stay authenticated with it. To change account, use gamealia_accounts instead.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations flag destructiveHint=true and idempotentHint=true, but the description goes well beyond them by naming exactly what is destroyed (the local credentials file, every stored account key), what is not (the server-side key is not revoked), and the interaction with GAMEALIA_API_KEY keeping calls authenticated. That is precisely the context an agent needs before a destructive call.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and its effect, then the server-side caveat, then the environment-variable nuance and the alternative. No filler or repetition.

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

Completeness5/5

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

For a zero-parameter, no-output-schema tool, the description covers the destructive effect, recoverability posture (key not revoked), idempotency, environment interaction, and the alternative tool. Nothing material to calling it correctly is missing.

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

Parameters4/5

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

The tool takes no parameters, so the schema imposes nothing to explain and the description correctly spends no words on inputs. It uses the space instead for behavioral caveats, which is the right allocation.

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?

States a specific verb and scope ("Logs out on this machine") and immediately specifies the mechanism: deleting the local credentials file and cancelling a pending login. Explicitly says it is local only, which distinguishes it from any server-side session concept and from siblings like gamealia_login.

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

Usage Guidelines4/5

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

Gives a concrete routing rule: "To change account, use gamealia_accounts instead," naming the alternative and the condition that selects it. Also clarifies that repeating is safe. It stops short of stating when logging out is unnecessary or undesirable, so it is clear rather than exhaustive.

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

gamealia_playtestStart a playtest (you play)A

Starts the game (built first unless build:false) in headless Chromium inside the autotest harness so you can play it yourself, e.g. to check gameplay the automatic gamealia_run_autotest cannot judge. Returns a session id plus the first screenshot. Then call gamealia_playtest_act with one action at a time (click x,y | key | drag | wait) and end with gamealia_playtest_stop for the verdict. Up to 40 actions per session and 2 sessions at once; idle sessions close after a few minutes. Local, no login.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)
buildNoRun the build command first when the project has one (default true)
profileNodesktop: 1280x720 with mouse (default); mobile: 390x844 with touch, clicks become tapsdesktop

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare it is a non-read-only, non-open-world, non-idempotent operation, but add nothing about constraints. The description supplies the real operational facts: an implicit build step (unless build:false), a returned session id plus first screenshot, a 40-action cap per session, 2 concurrent sessions, idle auto-close after a few minutes, and no login required.

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 key fact (starts the game for manual play) is front-loaded and every sentence carries information: purpose, workflow, limits, environment. It is densely packed with parentheticals and semicolon chains, which costs a little readability but no sentence is wasted.

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

Completeness5/5

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

For a session-starting tool with no output schema, the description covers what an agent needs: what is returned, which siblings continue the workflow, hard limits, session lifetime, and that no auth is involved. Nothing required to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains dir, build, and the desktop/mobile profile enum; baseline is 3. The description adds only one detail beyond the schema — that the build runs first unless build:false — and says nothing about profile differences (viewport/touch behavior) that would help an agent choose.

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?

States a specific verb and resource ("Starts the game ... in headless Chromium inside the autotest harness so you can play it yourself") and explicitly distinguishes it from the sibling gamealia_run_autotest by naming the case it can't cover ("gameplay the automatic gamealia_run_autotest cannot judge"). An agent can tell it apart from gamealia_preview and gamealia_run_autotest without opening any schema.

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?

Gives the when-to-use condition (manual gameplay judgment the autotest can't make) and the full lifecycle: call gamealia_playtest_act one action at a time, then gamealia_playtest_stop for the verdict. It also names the action vocabulary (click x,y | key | drag | wait), removing ambiguity about what happens next.

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

gamealia_playtest_actPlaytest actionA

Performs one action (click, key, drag or wait) in a session started by gamealia_playtest; actions of one session run one at a time, in order. Returns the new screenshot, the step number and steps left, the SDK calls since the last step, new console errors, ad requests and how much the frame changed (0% often means the input did nothing). Fails if the session ended or expired; when steps run out, call gamealia_playtest_stop.

NameRequiredDescriptionDefault
actionYesOne action: {type:"click",x,y} | {type:"key",key,holdMs?} | {type:"drag",from:{x,y},to:{x,y}} | {type:"wait",ms}; coordinates in viewport pixels
sessionIdYesSession id returned by gamealia_playtest

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: annotations only say it is a non-readonly, non-idempotent, non-destructive write, while the description discloses exactly what comes back (new screenshot, step number, steps left, SDK calls since last step, new console errors, ad requests, frame-change percentage), the serialization constraint, and the expiry failure mode. The heuristic that '0% often means the input did nothing' is genuinely useful diagnostic context an agent could not get from structured fields.

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?

Front-loaded with the verb and scope, then sequencing, then return payload, then failure/next-step — a logical order with no filler. The return-value sentence is a long comma-separated list, but since there is no output schema each item earns its place; only minor tightening (e.g. grouping the telemetry fields) is possible.

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

Completeness5/5

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

For a two-parameter interaction tool with no output schema, the description supplies the missing return-value contract, the failure modes, the concurrency/ordering model, and the follow-up tool. Nothing an agent needs in order to call this correctly, or to interpret the result, is absent.

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

Parameters3/5

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

Schema description coverage is 100% and the description's action list ({type:...} variants) only restates what the oneOf branches and the action property description already document. No additional meaning such as coordinate origin conventions, key semantics, or sessionId lifecycle is added beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Performs one action ... in a session started by gamealia_playtest') and enumerates the four action kinds (click, key, drag, wait). It also positions itself relative to siblings by naming the session-starting tool and the stop tool, so an agent can distinguish start, act, and stop without opening any schema.

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?

Gives explicit sequencing rules ('actions of one session run one at a time, in order'), an explicit failure condition ('fails if the session ended or expired'), and an explicit hand-off ('when steps run out, call gamealia_playtest_stop'). Both the when-to-use and the when-to-stop alternatives are stated rather than inferred.

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

gamealia_playtest_stopStop a playtestA

Ends a session started by gamealia_playtest (waits for its pending action, then closes the browser page; the session id stops working) and returns the summary: verdict pass/warn/fail with a message, steps and how many got a response, whether gameplay started, happy times, ad requests and ads shown, console errors and whether it crashed. Call it when done playing, so the session does not hold a browser until it expires.

NameRequiredDescriptionDefault
sessionIdYesSession id returned by gamealia_playtest

Output Schema

NameRequiredDescription
nextYes
stepsYes
errorsYes
crashedYes
messageYes
verdictYes
adsShownYes
adRequestsYes
happyTimesYes
gameplayStartedYes
respondingStepsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare it is not read-only, not idempotent, and not destructive; the description adds substantive context beyond that — it waits for a pending action before closing the browser page, invalidates the session id, and terminates the browser. That invalidation detail is exactly the kind of consequence an agent needs before calling it, though it does not discuss failure behavior if the session is already gone.

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?

Purpose is front-loaded in the first clause, side effects follow in parentheses, and the call-to-action closes the text. The enumerated return-summary list is somewhat redundant given an output schema exists and makes the first sentence long, but no sentence is filler.

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

Completeness5/5

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

For a single-parameter session-termination tool this covers the full picture: what it terminates, the sequencing behavior, the post-condition (session id dead), and when to invoke it. Return values are also sketched, so even without consulting the output schema an agent knows what comes back.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is documented as "Session id returned by gamealia_playtest", so the schema already carries the semantics. The description only indirectly reinforces this by noting the id stops working afterwards; baseline 3 applies when the schema does the work.

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?

States a specific verb and resource ("Ends a session started by gamealia_playtest") and explicitly names the sibling that creates the session, so an agent can pair playtest/playtest_stop without inspecting schemas. The parenthetical side effects and return summary further pin down what the tool is.

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

Usage Guidelines4/5

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

"Call it when done playing, so the session does not hold a browser until it expires" gives a clear trigger plus the reason, and the opening clause ties it to sessions created by gamealia_playtest. No explicit when-not guidance is needed since no sibling competes for this job, but the exclusion case is left implicit.

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

gamealia_previewPreview in a portal replicaA
Idempotent

Serves the build (built first unless build:false) inside a local replica of the Gamealia game page (the real portal frame plus mock ads) on 127.0.0.1 and returns the page URL and the bare game URL for the user (or you) to open. No login, nothing is uploaded. It keeps running until stop:true or the MCP server exits; calling it again for the same folder restarts it. For automated checks use gamealia_run_autotest; to play it yourself, gamealia_playtest.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)
stopNoStop the preview of this folder instead of starting one
buildNoRun the build command first when the project has one (default true)
titleNoTitle shown on the replica page (default: the build's index.html <title>, else "Preview")

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, it discloses the default build side effect, local 127.0.0.1 hosting, mock ads, absence of login or uploads, and the returned URLs. It also clearly documents the preview's persistent lifecycle, shutdown conditions, and same-folder restart behavior.

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

Conciseness5/5

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

The description front-loads the core action and outputs, then covers privacy, lifecycle, and alternatives in three dense but readable sentences. Nearly every clause supplies actionable information, with minimal redundancy.

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

Completeness5/5

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

For a stateful local preview server with an optional build step, the description covers the essential setup, outputs, privacy characteristics, persistence, stopping, restarting, and alternative workflows. Although there is no output schema, the two returned URLs are explicitly identified.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds operational meaning by connecting dir to same-folder restart behavior and explaining the effects of build:false and stop:true. It does not add anything about title beyond the schema, so this is strong rather than exhaustive parameter supplementation.

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 precisely states that the tool builds if needed, serves the project in a local Gamealia portal replica, and returns both the replica page URL and bare game URL. It distinguishes the tool from gamealia_run_autotest and gamealia_playtest by their respective purposes.

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?

It gives explicit routing guidance: use gamealia_run_autotest for automated checks and gamealia_playtest to play interactively. It also explains when to use build:false and stop:true, and what happens when the tool is called again for the same folder.

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

gamealia_run_autotestRun the autotest locallyA
Idempotent

Builds (unless build:false) and runs the full Gamealia autotest locally in headless Chromium, desktop 1280x720 and mobile 390x844, the same checks as the server: SDK lifecycle, blank screen, input response, ads (mock), console errors, static security analysis. Run it before gamealia_upload_version, which repeats it on the server. No login; writes screenshots and report.json to a temp folder; takes a while (progress notifications). Returns pass/warn/fail, the failed checks with fixes, the screenshot paths and key screenshots as images.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)
buildNoRun the build command first when the project has one (default true)
imagesNoHow many screenshots to return as images, 0-6 (default 3); all paths are listed anyway
backendHostsNoYour own servers the game may call, as in the listing, e.g. ["mp.example.com"]; other external hosts are flagged

Output Schema

NameRequiredDescription
nextYes
statusYes
problemsYes
outputDirYes
reportPathYes
screenshotsYes
failedRequiredYes

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: file side effects ('writes screenshots and report.json to a temp folder'), a duration warning with progress notifications ('takes a while'), a no-login auth note, and the shape of the result (pass/warn/fail plus failed checks with fixes). The write-to-temp-folder detail is consistent with readOnlyHint=false and non-destructive, and the no-progress-fast caveat is exactly the kind of operational context annotations cannot convey.

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?

Front-loaded with the action and scope, and every clause carries information: checks, viewports, ordering advice, side effects, duration, return shape. It is a single dense run-on paragraph heavy with parentheticals and semicolons, which costs a bit of scannability, but there is no filler to cut.

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

Completeness5/5

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

For a multi-step local test runner with four params, an output schema and annotations, the description covers the prerequisites (none/login), side effects, latency, and result interpretation that an agent needs to call it correctly, and it correctly does not re-document the return schema in detail. Nothing material is left to inference.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (dir, build, images, backendHosts) are already documented at the schema level, which sets the baseline at 3. The description reinforces only one of them ('unless build:false') and alludes to images via 'key screenshots as images', adding no syntax or edge-case meaning beyond the schema.

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?

States a specific verb+resource ('Builds ... and runs the full Gamealia autotest locally') plus scope detail that separates it from siblings: headless Chromium, desktop 1280x720 and mobile 390x844, and the enumerated check list (SDK lifecycle, blank screen, input response, ads, console errors, static security analysis). An agent can distinguish it from gamealia_build, gamealia_check_integration and gamealia_upload_version without opening any schema.

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

Usage Guidelines4/5

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

Explicitly routes ordering: 'Run it before gamealia_upload_version, which repeats it on the server,' which both names the alternative and explains the redundancy, plus 'No login' tells the agent no auth step is needed first. It stops short of stating when NOT to run it (e.g. skip after a successful local run) or pointing to gamealia_build/check_integration for partial checks, so it is strong but not fully exhaustive.

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

gamealia_submit_for_reviewSubmit for reviewA

Submits a game's newest version that passed the server autotest (state tested) for manual review by Gamealia, with release notes. Call it only after the user has confirmed they want to submit this version, and after gamealia_upload_version (skip it if that ran with submit:true). Needs login; fails if no version is tested, or if newly requested permissions lack a justification. Returns the version, normally awaiting_review; if permissions changed since its autotest the server re-tests it first. Then check gamealia_get_status later.

NameRequiredDescriptionDefault
gameYesGame slug or id, from gamealia_list_games (a game of the active account)
notesNoRelease notes for the reviewer, up to 2000 characters (default empty)

TDQS

A4.6/5.0
Behavior5/5

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

It discloses critical behavioral traits beyond the annotations, including failure conditions (no version tested, missing permission justification), operational prerequisites (needs login), and dynamic server responses (re-testing if permissions changed).

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 highly efficient, packing complex operational logic, prerequisites, and failure modes into a dense but logical paragraph. The structure follows a necessary workflow progression.

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

Completeness5/5

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

Despite lacking an explicit output schema, the description explains what the tool returns (the version, awaiting_review) and outlines the subsequent steps (checking gamealia_get_status). All necessary operational context is present.

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

Parameters3/5

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

While the schema coverage is 100%, the description adds relevant context by specifying that 'notes' are intended for the reviewer, which provides semantic value beyond the raw schema definition.

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 clearly identifies the action (Submits), the resource (game version), and the context (manual review by Gamealia). It differentiates this operation from general version management tools by emphasizing the post-autotest state.

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?

It provides explicit operational constraints, dictating when to call the tool (after user confirmation) and how it relates to other tools (must run after gamealia_upload_version, unless that tool already ran with submit:true).

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

gamealia_update_listingUpdate the game listingA
DestructiveIdempotent

Edits an existing game's listing (needs login): only the fields given change and they replace the current values; coverPath/thumbPath upload a new cover or thumbnail. texts writes developer-authored title/description/controls for one or many locales in one call (validated against the limits; they always win over machine translation): translate the listing yourself (gamealia-translate-listing skill) and save every locale at once. A permissions change only takes effect with the next approved version. Returns the updated game and the permission changes.

NameRequiredDescriptionDefault
gameYesGame slug or id, from gamealia_list_games (a game of the active account)
slugNoNew URL slug and game host (<slug>.gamealia.app), same rules as in gamealia_create_game; fixed once live
tagsNoTags, three kinds in one array: 1-6 categories (genres: what kind of game), up to 8 mechanics (how it plays: match-3, merge, physics, tower-defense…) and attributes (multiplayer, mobile…). Players browse and search by all three.
textsNoDeveloper-written listing text for one or many locales in one call, e.g. {fr:{title, description, controls}, de:{...}}. Limits (trimmed): title 2-60, description 20-2000 or "", controls <= 500 or "". Only the fields given change; {} approves that locale's machine translation as is; null removes the locale. These texts always win over machine translation. Read the current texts and their status with gamealia_get_status {texts:true}.
titleNo2-60 characters. Prefer {es, en}; a plain string is used for both languages
controlsNo0-500 characters. Prefer {es, en}; a plain string is used for both languages
coverPathNoCover image file (PNG/JPEG/WebP, >= 1200x630, ~1.91:1, <= 2 MB)
isolationNocoop-coep only for builds that need SharedArrayBuffer (threads)
thumbPathNoThumbnail file (square, >= 512x512, <= 2 MB)
adsEnabledNoShow Gamealia ads in this game (revenue share)
descriptionNo20-2000 characters. Prefer {es, en}; a plain string is used for both languages
multiplayerNoPlayers per room, or null for single player
orientationNoScreen orientation the game needs; landscape or portrait shows mobile players a rotate-device hint (default any)
permissionsNoBrowser permissions the game needs (microphone/camera), each with a justification; [] removes them. Replaces the current list and its justification (stored in the listing; the reviewer sees it). gamealia_analyze_project suggests them when the build calls getUserMedia. A change takes effect only when a version tested with it is approved (manual review): upload and submit a new version afterwards.
backendHostsNoYour own servers the game talks to, e.g. mp.example.com or *.example.com

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real substance: partial-update semantics (only given fields change), replacement semantics for permissions ('Replaces the current list'), the deferred effect of permission changes pending manual review, and the return payload (updated game plus permission changes). It does not flag irreversibility risks directly (e.g. slug being fixed once live is only in the schema) or failure modes, so it stops short of full disclosure.

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 core action and replace-only-given-fields rule are front-loaded, then media, translation and permission caveats follow in a logical order. It is a dense, multi-clause paragraph that partially restates schema limits and the translate skill, but nearly every sentence carries operational information.

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?

For a 15-parameter mutation tool with nested objects and no output schema, the description covers the essentials: auth requirement, partial-update behavior, media upload intent, multi-locale text handling, permission deferral, and the return values. The missing piece is guidance on precedence between texts and the top-level localized text fields, which an agent needs to avoid conflicting writes.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; the description earns above that by explaining the intent behind coverPath/thumbPath (upload replacements) and the semantics of texts (multi-locale write, {} approves machine translation, null removes a locale, always wins over MT). The notable gap is that it never resolves the relationship between the top-level title/description/controls parameters and the texts object, which is the main ambiguity among 15 parameters.

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 opens with a specific verb+resource ('Edits an existing game's listing') and immediately scopes it: only supplied fields change, they replace current values, and coverPath/thumbPath upload new media. That cleanly separates it from siblings like gamealia_create_game and gamealia_upload_version without needing to name them.

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

Usage Guidelines4/5

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

It states the login prerequisite, routes the agent to gamealia_get_status {texts:true} to read current texts and their status, and points to the translate-listing workflow before saving locales. It also warns that a permissions change only lands with the next approved version, implying the follow-up upload/submit calls. It does not explicitly say when to use this instead of create_game for a new listing, leaving that inference to the reader.

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

gamealia_upload_versionUpload a new versionA

Builds (unless noBuild), zips and uploads the local build as a new version of an existing game (needs login; multipart, retried), then waits for the server autotest and returns the version state and its report. Use it after gamealia_run_autotest passes locally and gamealia_create_game. Each call creates a new version; interrupted uploads that block it are aborted automatically. Can take minutes (progress notifications). submit:true also submits it for review when the autotest passes: only after the user confirmed; otherwise use gamealia_submit_for_review later.

NameRequiredDescriptionDefault
dirYesProject folder (absolute, or relative to the server's working directory)
gameYesGame slug or id, from gamealia_list_games (a game of the active account)
notesNoRelease notes for this version, up to 2000 characters (shown to the reviewer)
submitNoAlso submit for review if the server autotest passes (only after the user confirms)
noBuildNoSkip the build command and upload the current output folder as is (default false: build first)
waitForPreviousNoIf a previous version is still being tested, wait for it instead of failing

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=false, openWorldHint=true), the description discloses login requirement, multipart/retry behavior, automatic abort of blocking interrupted uploads, server-side autotest waiting, and long runtime with progress notifications. It also confirms non-idempotence in plain terms ('each call creates a new version'), which is the practical consequence of the idempotentHint annotation.

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 core action and its prerequisite come first, followed by side effects, runtime expectation, and the submit branch — a sensible order with no filler sentences. It is dense and somewhat long for a single paragraph, but every sentence carries operational information.

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

Completeness5/5

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

For a multi-minute, mutating, network-and-build pipeline tool with no output schema, the description covers what is produced (version state and autotest report), auth needs, failure/abort handling, and duration/progress signaling. An agent has everything needed to call it safely and set expectations for latency and side effects.

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

Parameters3/5

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

Schema coverage is 100% and every parameter is already documented in the schema, including the noBuild default and the submit confirmation caveat, so the description adds little parameter-specific meaning. It does weave submit and noBuild into the workflow narrative (submission gated on autotest pass), but waitForPrevious and notes are not elaborated beyond the schema, keeping this at the baseline for full coverage.

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 uses a concrete verb chain (builds, zips, uploads) against a specific resource (a new version of an existing game) and explicitly names the siblings it is not: gamealia_create_game (must come first) and gamealia_submit_for_review (the alternative to submit:true). An agent can distinguish it from build, run_autotest, and submit_for_review without opening any schema.

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?

It states the prerequisite sequence explicitly ('Use it after gamealia_run_autotest passes locally and gamealia_create_game') and gives a conditional branch with an alternative ('submit:true ... only after the user confirmed; otherwise use gamealia_submit_for_review later'). When-to-use, when-not, and the sibling to use instead are all present.

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

gamealia_whoamiWho am IA
Read-only

Shows who is signed in: user id and username, whether a developer profile exists, the active developer account with the user's role, the API URL and where the key came from (environment or credentials file; never the key itself). Read-only. Use it to confirm the login before creating or publishing games; to list or switch accounts use gamealia_accounts. Fails with a hint to call gamealia_login when not logged in.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantial behavior: the exact identity fields surfaced, that the API key is never returned (only its source: environment or credentials file), and that the call fails with a hint pointing at gamealia_login when unauthenticated. The one restatement of "read-only" is minor against the added security and error-path context.

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?

Front-loaded with the result contents, then scope, then the alternative, then the failure mode — a sensible order with no filler sentences. The parenthetical field list is dense but every item is informative, so it is length justified by content rather than padding.

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

Completeness5/5

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

There is no output schema, and the description compensates by enumerating what is returned, so an agent knows what to expect from the response. It also covers the unauthenticated failure case and the key-handling boundary, leaving no material gap for a simple identity-check tool.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is an empty object at 100% coverage. Baseline for a no-parameter tool applies, with no parameter-level meaning to add.

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?

States a specific verb and resource ("Shows who is signed in") and enumerates the returned fields: user id, username, developer profile existence, active developer account with role, API URL, and key origin. It also explicitly separates itself from the neighboring account tool ("to list or switch accounts use gamealia_accounts"), so an agent can distinguish it from siblings without opening a schema.

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?

Gives an explicit when-to-use ("confirm the login before creating or publishing games"), names the alternative for a related need (gamealia_accounts for listing or switching), and names the recovery path (gamealia_login) when the call fails. When, when-not, and alternative are all present.

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.

  1. 18 tool updatesv0.1.18
    • Changedgamealia_accounts2 fields changed
      • changedInput schema / properties / account / description
        Previous value: -"switch: the account id or name"New value: +"Required for switch: the account id or display name, as shown by action list"
      • changedInput schema / properties / action / description
        Previous value: -"list the accounts, or switch the active one"New value: +"list: show the accounts (changes nothing); switch: make the given account active"
    • Changedgamealia_check_integration1 field changed
      • changedInput schema / properties / backendHosts / description
        Previous value: -"Your own servers (as in the listing)"New value: +"Your own servers the game may call, as in the listing, e.g. [\"mp.example.com\", \"*.example.com\"]; other external hosts are flagged"
    • Changedgamealia_create_game1 field changed
      • addedInput schema / properties / orientation / description
        Added value: +"Screen orientation the game needs; landscape or portrait shows mobile players a rotate-device hint (default any)"
    • Changedgamealia_create_project2 fields changed
      • addedInput schema / properties / template / description
        Added value: +"Starter template id (default vanilla: plain JavaScript, no build step); see the list in the description"
      • changedInput schema / properties / title / description
        Previous value: -"Game title"New value: +"Game title written into the scaffold, 1-60 characters"
    • Changedgamealia_docs_search2 fields changed
      • addedInput schema / properties / query / description
        Added value: +"Free-text search words, e.g. \"rewarded ad\", \"localeChange\" or a failed autotest check id"
      • changedInput schema / properties / read / description
        Previous value: -"Include the full markdown of the best match"New value: +"Also return the full markdown of the best match (default false)"
    • Changedgamealia_generate_cover1 field changed
      • addedInput schema / properties / title / description
        Added value: +"Game title drawn on the images, 1-60 characters"
    • Changedgamealia_get_stats2 fields changed
      • addedInput schema / properties / days / description
        Added value: +"How many days back to include, 1-365 (default 30)"
      • changedInput schema / properties / game / description
        Previous value: -"Game slug or id"New value: +"Game slug or id, from gamealia_list_games (a game of the active account)"
    • Changedgamealia_get_status1 field changed
      • changedInput schema / properties / game / description
        Previous value: -"Game slug or id"New value: +"Game slug or id, from gamealia_list_games (a game of the active account)"
    • Changedgamealia_install_agent_kit4 fields changed
      • addedInput schema / properties / scope / description
        Added value: +"project (default): config files inside dir; without targets sets up Claude Code, Cursor and VS Code plus the agents detected. global: the user's own agent configs; without targets only the detected agents"
      • changedInput schema / properties / serverPath / description
        Previous value: -"Path of gamealia-mcp.mjs to register (default: the running bundle)"New value: +"Path of the gamealia-mcp.mjs the agents should run (default: this running server's bundle)"
      • changedInput schema / properties / targets / description
        Previous value: -"Agents to set up (default: the ones detected)"New value: +"Agents to set up, e.g. [\"claude-code\", \"cursor\"] (default: depends on scope, see scope)"
      • changedInput schema / properties / write / description
        Previous value: -"Apply the changes (default: dry run)"New value: +"Apply the changes (default false: dry run, nothing is written)"
    • Changedgamealia_list_versions1 field changed
      • changedInput schema / properties / game / description
        Previous value: -"Game slug or id"New value: +"Game slug or id, from gamealia_list_games (a game of the active account)"
    • Changedgamealia_playtest1 field changed
      • addedInput schema / properties / profile / description
        Added value: +"desktop: 1280x720 with mouse (default); mobile: 390x844 with touch, clicks become taps"
    • Changedgamealia_playtest_act2 fields changed
      • addedInput schema / properties / action / description
        Added value: +"One action: {type:\"click\",x,y} | {type:\"key\",key,holdMs?} | {type:\"drag\",from:{x,y},to:{x,y}} | {type:\"wait\",ms}; coordinates in viewport pixels"
      • addedInput schema / properties / sessionId / description
        Added value: +"Session id returned by gamealia_playtest"
    • Changedgamealia_playtest_stop1 field changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Session id returned by gamealia_playtest"
    • Changedgamealia_preview2 fields changed
      • changedInput schema / properties / stop / description
        Previous value: -"Stop the preview of this folder"New value: +"Stop the preview of this folder instead of starting one"
      • addedInput schema / properties / title / description
        Added value: +"Title shown on the replica page (default: the build's index.html <title>, else \"Preview\")"
    • Changedgamealia_run_autotest2 fields changed
      • changedInput schema / properties / backendHosts / description
        Previous value: -"Your own servers (as in the listing)"New value: +"Your own servers the game may call, as in the listing, e.g. [\"mp.example.com\"]; other external hosts are flagged"
      • changedInput schema / properties / images / description
        Previous value: -"How many screenshots to return as images (default 3)"New value: +"How many screenshots to return as images, 0-6 (default 3); all paths are listed anyway"
    • Changedgamealia_submit_for_review2 fields changed
      • changedInput schema / properties / game / description
        Previous value: -"Game slug or id"New value: +"Game slug or id, from gamealia_list_games (a game of the active account)"
      • addedInput schema / properties / notes / description
        Added value: +"Release notes for the reviewer, up to 2000 characters (default empty)"
    • Changedgamealia_update_listing3 fields changed
      • changedInput schema / properties / game / description
        Previous value: -"Game slug or id"New value: +"Game slug or id, from gamealia_list_games (a game of the active account)"
      • addedInput schema / properties / orientation / description
        Added value: +"Screen orientation the game needs; landscape or portrait shows mobile players a rotate-device hint (default any)"
      • addedInput schema / properties / slug / description
        Added value: +"New URL slug and game host (<slug>.gamealia.app), same rules as in gamealia_create_game; fixed once live"
    • Changedgamealia_upload_version4 fields changed
      • changedInput schema / properties / dir / description
        Previous value: -"Project folder"New value: +"Project folder (absolute, or relative to the server's working directory)"
      • changedInput schema / properties / game / description
        Previous value: -"Game slug or id"New value: +"Game slug or id, from gamealia_list_games (a game of the active account)"
      • addedInput schema / properties / noBuild / description
        Added value: +"Skip the build command and upload the current output folder as is (default false: build first)"
      • changedInput schema / properties / notes / description
        Previous value: -"Release notes"New value: +"Release notes for this version, up to 2000 characters (shown to the reviewer)"
  2. 26 tool updatesv0.1.17
    • First observedgamealia_accounts
    • First observedgamealia_analyze_project
    • First observedgamealia_build
    • First observedgamealia_check_integration
    • First observedgamealia_create_game
    • First observedgamealia_create_project
    • First observedgamealia_docs_search
    • First observedgamealia_generate_cover
    • First observedgamealia_get_earnings
    • First observedgamealia_get_stats
    • First observedgamealia_get_status
    • First observedgamealia_install_agent_kit
    • First observedgamealia_integrate_sdk
    • First observedgamealia_list_games
    • First observedgamealia_list_versions
    • First observedgamealia_login
    • First observedgamealia_logout
    • First observedgamealia_playtest
    • First observedgamealia_playtest_act
    • First observedgamealia_playtest_stop
    • First observedgamealia_preview
    • First observedgamealia_run_autotest
    • First observedgamealia_submit_for_review
    • First observedgamealia_update_listing
    • First observedgamealia_upload_version
    • First observedgamealia_whoami

TDQS

A4.2/5.0

Scored across 26 tools

Disambiguation4/5

Tools cluster into clear phases (local dev, account, listing, publishing, analytics) and descriptions explicitly cross-reference the right sibling, e.g. preview vs playtest vs run_autotest. A few pairs still brush against each other — analyze_project vs check_integration (both static inspection), get_status vs list_versions (both report version state) — but the descriptions disambiguate with 'use X for Y, Z for W' guidance.

Naming Consistency4/5

Every tool is snake_case with a uniform gamealia_ prefix and most follow verb_noun (create_game, upload_version, list_versions, get_stats). Minor deviations exist: bare-domain names like gamealia_accounts, gamealia_whoami, gamealia_build, plus a playtest_/playtest_act/playtest_stop sub-family that breaks strict verb_noun but is internally readable.

Tool Count4/5

26 tools is slightly heavy, but the surface maps a genuinely multi-stage pipeline (analyze → integrate → check → autotest → playtest → listing → upload → submit → stats), so nearly every tool has a distinct job. Only playtest/playtest_act/playtest_stop and the autotest trio inflate the count for a single function.

Completeness3/5

Happy-path lifecycle is well covered from SDK integration through review and earnings, but lifecycle dead ends remain: no delete/archive/unpublish for games or versions, no accept/decline for the pending invites that gamealia_accounts surfaces, and no way to see a single game's full listing text/edit stats beyond what get_status texts:true gives. Agents can mostly work around these, but they are real gaps for a publishing platform.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with the Godot game engine, allowing them to launch the editor, run projects, capture debug output, and control project execution.
    14
    166 npm
    6,402
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Seamless automation and intelligent control over your Unity projects. By integrating with the MCP server and client, it allows AI agents or external tools to interact with your Unity environment—creating, modifying, and managing GameObjects, Components, Assets, Scenes, and more.
    4,559
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI coding assistants to access documentation, live API tools, and workflow prompts for integrating a game/app backend service into Godot, Unity, and Unreal Engine projects, including auth, leaderboards, cloud saves, remote config, localization, news, gift codes, feedback, logs, crash reporting, email, and admin dashboard management.
    120
    171 npm
    MIT