Playgama MCP - Publish & Manage HTML5 Games
Server Details
Publish in seconds, get the audience, start monetization, get all analytics — without leaving your agent.
Playgama MCP is a remote MCP server for game developers. Point Codex, Claude Code, Cursor or VS Code at it and your agent works inside your Playgama developer cabinet: it creates a game and fills in the form, uploads a build and polls until the engine analysis is done, uploads covers in the exact sizes the form requires, edits the in-app catalog and leaderboards, gets a QA Tool link, and publishes a sandbox — a public link anyone can play, with no moderation step. It can also bring the first players to that sandbox through Playgama DSP, with the first run per game free.
22 tools, 11 of them read-only; every write is annotated as destructive so your client asks first. Submitting to moderation, deleting and payouts are deliberately left out: the agent prepares everything, a human presses the button.
Authentication is OAuth 2.1 with dynamic client registration — there is no token to copy. The client opens a browser on first use, and connected agents are listed and revocable in the cabinet.
After the link is live the game takes its first players from the Playgama network, and Playgama DSP can send more the same day (beta). Once it clears the session threshold you can switch on advertising — Playgama Ad serves rewarded, interstitial and banner formats through one JS SDK (access by request). Playgama Wrap turns the same game into a standalone site on your own domain with player accounts, in-game purchases and indexable SEO pages (early access), and Playgama Bridge SDK gives one API for ads, leaderboards, payments and platform SDKs when you publish across platforms. Playtime, retention and revenue reports are in the developer dashboard, and payouts start at 100 USD.
Product page: https://playgama.com/mcp/ Docs: https://wiki.playgama.com/playgama/mcp Tools reference: https://wiki.playgama.com/playgama/mcp/tools Connected agents: https://developer.playgama.com/mcp
- Status
- Healthy
- Uptime
- 99.5% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 36 tools
Most tools target clearly distinct resources and actions, and the descriptions explicitly differentiate related reads such as archive upload, archive status, submission state, and sandbox state. However, several lifecycle/status tools (get_archive_status, get_submission_state, get_launch_steps, get_publications, get_sandbox_state) partially overlap around publication readiness, and the four telemetry tools require careful attention to avoid misselection.
All tool names use snake_case with a predictable verb_noun pattern (get_*, list_*, create_*, update_*, start_*, confirm_*, publish_*, send_*, replace_*). Action verbs are used consistently across resources, and there is no mixing of naming conventions.
With 36 tools, the surface is heavy for the server's purpose and exceeds the typical 25+ threshold where granular tools start to feel excessive. Many reads are highly specialized and could be consolidated or gated behind fewer discovery endpoints, even though the domain is complex.
The core game-publishing lifecycle is well covered: create/update games, upload archives and covers, check build status, publish to sandbox or catalog, manage leaderboards and in-app products, run traffic campaigns, and read telemetry/moderation state. Minor gaps remain, notably no delete operations for applications or leaderboards and no tool for submitting to moderation, which is described as human-only.
Available Tools
36 toolsapply_referral_codeAccept a referral invitationADestructiveInspect
Apply a developer-provided referral code or invitation URL to this organization before its first-ever Sandbox publication. Never invent a code. One inviter per organization; the attribution cannot be changed and self-invitations are refused. Grants one traffic welcome bonus without starting a campaign. Repeating the same invitation returns ALREADY_APPLIED and the same bonus, including after a lost answer. A different invitation cannot replace it. Read get_referral_program to recover state after an uncertain result.
| Name | Required | Description | Default |
|---|---|---|---|
| codeOrUrl | Yes | The referral code or full invitation URL supplied by the developer. Use it before the organization’s first Sandbox publication. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: one inviter per organization, immutable attribution, self-invitations refused, ALREADY_APPLIED retry semantics, bonus granted without starting a campaign, and a different invitation cannot replace an existing one. The retry-safe description sits in mild tension with idempotentHint=false, but the annotation's effect-based meaning (a second call with a different code is refused) is not directly contradicted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and timing constraint, and every subsequent sentence carries a distinct behavioral fact (immutability, retry behavior, recovery). It is dense and semicolon-heavy, but there is no filler to remove.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter irreversible mutation with no output schema, the description covers the eligibility window, the idempotent retry outcome, the ALREADY_APPLIED signal, the side effect (traffic welcome bonus, no campaign), and the state-recovery tool. An agent has enough to call it and to handle an ambiguous result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, so the schema already carries the syntax and length constraints. The description reinforces that the value must be developer-supplied and used before first publication, but adds no format or URL-parsing detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (apply) and resource (referral code or invitation URL) and names the exact target (this organization before its first-ever Sandbox publication). It is clearly distinguishable from the sibling get_referral_program, which is presented as the read-side counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions ('before its first-ever Sandbox publication'), an explicit prohibition ('Never invent a code'), and an explicit recovery path ('Read get_referral_program to recover state after an uncertain result'). The when-to-use and the alternative for the failure case are both stated rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_archive_uploadConfirm an archive uploadADestructiveInspect
Step 3 of 3, after the PUT: adds the archive to the game’s form (earlier archives stay) and queues unpacking and the Bridge SDK analysis. Successful unpacking makes the game files available at a public archive URL for QA; this does not publish the sandbox page or catalog listing. Refused with 409 while nothing is uploaded. Safe to repeat. Answers the get_archive_status view; keep polling that tool.
| Name | Required | Description | Default |
|---|---|---|---|
| archiveId | Yes | Archive id, as answered by start_archive_upload | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the mutation profile (readOnlyHint=false, destructiveHint=true), and the description adds substantial context beyond them: what is queued (unpacking, Bridge SDK analysis), that earlier archives are retained, that files land at a public archive URL for QA, and that it does NOT publish the sandbox page or catalog listing. The only wrinkle is the mild tension between 'Safe to repeat' and idempotentHint=false — retry-safety is not the same as idempotency, but the phrasing could be read either way, so it falls just short of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the sequencing step, and each sentence carries non-redundant information (sequencing, effects, publication scope, error/idempotency, follow-up). Slightly packed, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers the outcome (files available at a public archive URL), the boundary of the side effect (no sandbox page or catalog listing published), the 409 failure mode, retry behavior, and which sibling exposes the resulting state. An agent has everything needed to call this correctly and set expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there with provenance hints ('as answered by start_archive_upload', 'as returned by list_applications'). The description adds no parameter-level information, which is the correct baseline 3 when the schema already does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('adds the archive to the game's form', queuing unpacking and Bridge SDK analysis) and positions itself explicitly as 'Step 3 of 3, after the PUT'. An agent can distinguish it from start_archive_upload (the PUT) and get_archive_status (the polling view) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the sequencing precondition ('after the PUT'), the failure condition ('Refused with 409 while nothing is uploaded'), and routes the agent to the alternative for follow-up ('keep polling get_archive_status'). This is explicit when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_cover_uploadConfirm a cover uploadADestructiveInspect
Step 3 of 3, after the PUT: checks the file (the started format, the exact slot size, a complete image), publishes it and puts it into its slot; replaced names the cover taken out. Refused with 409 while nothing is uploaded, 422 when the file does not fit (the reason is given; start a new upload), 502 when it could not be published (not confirmed). Safe to repeat.
| Name | Required | Description | Default |
|---|---|---|---|
| mediaId | Yes | Media id, as answered by start_cover_upload | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Safe to repeat', which asserts retry/idempotency safety, while annotations declare idempotentHint: false — a direct conflict about what happens on a repeated call. The rest of the disclosure (409/422/502 semantics, the old cover being replaced, non-confirmation on 502) is genuinely useful and consistent with destructiveHint: true, but the retry claim is exactly the property the annotation denies, so an agent cannot trust it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence, front-loaded with the workflow position and the action, then the validation performed, then the failure codes. Nothing is wasted, though the semicolon-chained clauses make it slightly hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still covers the outcome ('publishes it and puts it into its slot', 'replaced' names the removed cover) and the principal error contract. Combined with annotations that already flag the destructive write, an agent has enough to call it correctly, apart from the unresolved retry semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have 100% schema coverage and the schema already says where each id comes from (start_cover_upload, list_applications). The description adds no further meaning to applicationId or mediaId, so the schema does the work; baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (checks, publishes, and slots a cover file) and anchors itself in the upload workflow as 'Step 3 of 3, after the PUT'. It is unmistakable next to start_cover_upload, which begins the sequence, and it names the observable result ('replaced' names the cover taken out).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the prerequisite (must follow the PUT), the failure modes that tell the agent what to do instead (409 when nothing is uploaded, 422 when the file does not fit, with the instruction to 'start a new upload'), and the retry posture ('Safe to repeat'). This is explicit when/when-not guidance rather than an implied use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_applicationCreate a gameADestructiveInspect
Create a draft game. Answers its id, which the other tools take. Titles are not unique: if a call failed without a clear answer, check list_applications before creating again.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | The coding agent the game was made with: claude-code (Claude Code), codex (Codex), cursor (Cursor), antigravity (Google Antigravity), opencode (OpenCode), gemini-cli (Gemini CLI), kimi-code (Kimi Code Agent), grok-build (Grok Build), workbuddy (WorkBuddy), zcode (ZCode), claude-app (Claude app (chat / Desktop)), chatgpt (ChatGPT (chat)), other (Other), none (No AI agent) | |
| model | No | The model behind that agent: claude-fable (Claude Fable), claude-opus (Claude Opus), claude-sonnet (Claude Sonnet), claude-haiku (Claude Haiku), openai-astra (OpenAI Astra), openai-sol (OpenAI Sol), openai-luna (OpenAI Luna), openai-terra (OpenAI Terra), gemini-pro (Gemini Pro), gemini-flash (Gemini Flash), grok (Grok), kimi (Kimi), qwen (Qwen), deepseek (DeepSeek), glm (GLM), other (Other) | |
| title | Yes | The game’s title in English — Latin letters, digits, spaces and punctuation, up to 120 characters. Shown to players and moderators as-is. | |
| engine | Yes | The engine the game was built with: unity (Unity), construct3 (Construct 3), cocos-creator (Cocos Creator), defold (Defold), godot (Godot), gdevelop (GDevelop), game_maker (Game Maker), scratch (Scratch), js (plain JavaScript, no engine) | |
| modelId | No | The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. When the id names a known family, that family is stored as model, over the one sent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly=false, destructiveHint=true and idempotentHint=false; the description adds real context on top by explaining the non-idempotency rationale (non-unique titles mean duplicate retries create duplicates) and by disclosing the created object's state ('draft') and its returned id. It doesn't explain what makes the operation destructive (quota, irreversibility), which would be the remaining useful detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler. The core action and return value come first, and the retry caveat follows, so it is properly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five parameters at full schema coverage, no nested objects, and no output schema — and the description supplies the one thing the missing output schema would have carried, namely that the response yields the id used by sibling tools. Nothing needed to call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with three enum-backed parameters fully documented, so the schema does the heavy lifting and a baseline 3 applies. The description only indirectly touches the `title` parameter (non-unique), adding no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a draft game') and adds the crucial scope qualifier 'draft', which distinguishes it from publish/launch siblings. It also names the returned artifact ('Answers its `id`, which the other tools take'), telling the agent exactly how the result feeds downstream calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule: titles are not unique, so after an ambiguous failure check list_applications before retrying. That is a genuine when-to-use-alternative instruction. It doesn't cover prerequisites (e.g. account/submission state) or when the tool should simply not be called, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_leaderboardCreate a leaderboardADestructiveInspect
Add a leaderboard to a game. id is its Bridge SDK tag: unique within the game and not changeable later. Check list_leaderboards for tags already taken. Deleting a leaderboard is not available.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The tag the game passes to the Playgama Bridge SDK, e.g. top_players. Unique within the game | |
| name | Yes | Human-readable name of the leaderboard, as the console shows it | |
| type | Yes | What a score is: `numeric` for points, `time` for a duration. The ranking direction is `scoreOrder`. | |
| decimals | No | Number of decimal places for scores, 0 to 32767. Default 0. Scores are stored as whole numbers — a fractional score the game submits is rounded — so this does not make fractional scores possible. | |
| scoreOrder | No | `desc` ranks the highest score first, `asc` the lowest — e.g. the fastest time. Default desc. | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, destructive write; the description goes beyond them by disclosing that `id` is immutable after creation and that no delete path exists. It does not describe what happens on a duplicate tag or permission/error behavior, so it is useful but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the two constraints that actually affect the call. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter create tool with full schema coverage and a rich enum-laden schema, the description covers purpose, the immutability constraint, the pre-check requirement, and the absence of a delete counterpart. No output schema exists, so return values need not be described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter descriptions are already rich (enums, defaults, semantics), so the baseline is 3. The description still adds genuinely new information: `id` is not changeable later, which the schema does not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a clear verb+resource ('Add a leaderboard to a game'), immediately distinguishing this from read/update siblings. It does not explicitly contrast with update_leaderboard, the closest sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to a sibling with a condition: 'Check list_leaderboards for tags already taken,' and states a limitation the agent must plan around ('Deleting a leaderboard is not available'). It never states when to choose create vs update_leaderboard, so it stops short of explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_applicationRead an applicationARead-onlyIdempotentInspect
The saved form of one game, with the metadata of its archives and media. No file contents or download links.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so safety behavior is covered. The description adds useful expectations about the response: it contains only metadata, not file contents or download links. This goes beyond annotations by clarifying payload scope, though error and authentication behavior are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The first sentence states the resource and return scope; the second states an important exclusion. Everything included earns its place, and key constraints are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read operation with strong annotations and no output schema, the description sufficiently conveys what result to expect and what it excludes. It could be more complete by naming alternatives or listing return fields, but the definition is usable as-is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter applicationId is fully documented in the schema, including a source hint ('as returned by list_applications'), so schema coverage is 100%. The tool description itself adds no additional parameter detail. At this coverage level, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the output as the saved form of one game and explicitly narrows scope to metadata of archives/media, distinguishing it from file/download tools. It lacks an explicit action verb like 'reads' or 'returns', but the title and 'saved form' make the read intent clear. It does not name siblings like list_applications, but the singular 'one game' is informative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'one game' implies the tool is for retrieving a single existing application rather than listing or creating. 'No file contents or download links' is an explicit when-not condition. The description does not name an alternative tool, but the negative scope is strong enough to prevent misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_archive_qa_tool_linkGet the QA Tool link for an archiveARead-onlyIdempotentInspect
A link that opens an unpacked archive (processing DONE) in the Playgama QA Tool, where a human plays it and submits it to moderation. mode: certification opens the certification page, whose Build Startup section shows why the Bridge SDK did not initialize — get_bridge_sdk_docs has the integration docs; it unlocks nothing. Also answers processing, failedAt and bridgeSdk. Take the link from the answer; never build it.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Optional. `certification` opens the QA Tool’s certification page, whose Build Startup section shows why the Playgama Bridge SDK did not initialize — the link to hand out for an archive with `bridgeSdk: NOT_FOUND`. Leave it out for the ordinary testing page | |
| archiveId | Yes | Archive id, as answered by start_archive_upload | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already communicate readOnly/idempotent/non-destructive behavior. The description adds value beyond that by saying the answer also contains `processing`, `failedAt`, and `bridgeSdk`, that this tool 'unlocks nothing', and by explicitly warning the agent to take the link from the answer rather than build it. This is useful non-obvious behavior, though edge cases and response shape are not fully expanded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: it front-loads the core behavior, then covers the mode variant, related answer fields, and a critical do-not-build instruction. Every clause earns its place; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming returned fields and telling the agent where to find the link. It also states the key precondition (`processing` DONE) and the certification-mode context. It could be more complete about exact output structure or failure behavior, but for a read-only link retrieval it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains `mode`'s certification behavior plus the provenance of `applicationId` and `archiveId`. The main description reinforces the mode semantics but adds no new parameter-level meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description makes the deliverable clear: a Playgama QA Tool link for an unpacked archive, with mode-specific behavior and related fields like `processing`, `failedAt`, and `bridgeSdk`. It is unambiguous about the object being an archive rather than a local game, though it never explicitly names a sibling such as `get_local_game_qa_tool_link`, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete conditional guidance: the default is the ordinary testing page, `mode: certification` is for the Build Startup/certification page when Bridge SDK initialization is the concern, and `get_bridge_sdk_docs` is pointed to for integration docs. It lacks an explicit 'do not use this for status' or 'do not use this for local game links' exclusion, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_archive_statusRead an archive’s statusARead-onlyIdempotentInspect
The state of one archive. state.status: CHECKING while the build check runs, then PASSED, PROBLEM or NOT_CHECKED. Poll until it is no longer CHECKING; on PROBLEM or NOT_CHECKED give the developer state.message word for word — it names what is wrong and what to do — and take state.reason as its code (get_bridge_sdk_docs has the SDK integration docs; get_archive_qa_tool_link with mode: certification shows the startup log). processing: PENDING (unconfirmed or unpacking), DONE (unpacked), FAILED with failedAt: UNPACK and errorMessage (upload a corrected zip). bridgeSdk: whether that same check found the Playgama Bridge SDK in the build — FOUND, NOT_FOUND, or PENDING while it has not answered. analysis: what the check measured — bridgeVersion and bridgeEngine, null when no check has run. Publishing and submitting are decided by state; sandbox traffic also needs bridgeSdk FOUND.
| Name | Required | Description | Default |
|---|---|---|---|
| archiveId | Yes | Archive id, as answered by start_archive_upload | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, yet the description goes well beyond them: it documents the full status state machine, the PENDING/DONE/FAILED processing lifecycle including `failedAt: UNPACK`, the bridgeSdk tri-state, null analysis fields, and the gating rule that publishing/submitting depend on `state` while sandbox traffic also requires `bridgeSdk` FOUND.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph but front-loads the core fact ('The state of one archive') and every sentence carries field-level meaning or an actionable rule. It is long, though, and would read better segmented, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values, and it does so comprehensively: status values, processing states, bridgeSdk states, analysis fields, and how each maps to a developer action. Nothing an agent needs to interpret the response is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema itself, so the baseline is 3. The description adds no additional meaning about archiveId or applicationId beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'The state of one archive,' and immediately enumerates the meaning of `state.status`. The resource noun 'archive' separates it from get_sandbox_state and get_submission_state, though no sibling is named explicitly, which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete operational guidance: 'Poll until it is no longer CHECKING,' and routes the agent to get_bridge_sdk_docs and get_archive_qa_tool_link with a specific mode when status is PROBLEM. No explicit when-not-to-use statement is given, but the polling and remediation conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bridge_sdk_docsRead the Playgama Bridge SDK docsARead-onlyIdempotentInspect
The live Playgama Bridge SDK wiki, for integrating it when an archive answered bridgeSdk: NOT_FOUND or traffic refused with NO_BRIDGE. Without page: the index, one { page, title, required, description? } per page. With page (an id from the index, e.g. "api/storage"): that page’s title, url and markdown, cut to engine’s tabs when the page has tabs and one matches — engineFilter says which tabs existed and which were kept. An unknown page is refused with the list of valid ids. get_game_checklist lists everything the game and its archive must meet, the required Bridge steps included.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page id from the index this tool answers without `page`, e.g. "api/storage" or "api/advertisement/rewarded". A link copied from a wiki page works as-is (with or without `.md`, with or without an anchor — the anchor is ignored; the whole page comes back). Omit to get that index. | |
| engine | No | Engine or binding to keep code samples for, matched against the page’s tab titles (e.g. "Plain JS", "Unity", "Construct 3", "GDevelop", "Godot" — matches both Godot 3.x and 4.x —, "GameMaker", "Defold", "Cocos Creator", "Scratch"). Omit to keep every engine’s tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only/idempotent/no-destructive, and the description goes well beyond them: index shape when `page` is omitted, full page payload (title, url, markdown) when supplied, tab-cutting behavior via `engine`, `engineFilter` reporting, and refusal of unknown ids with valid list. This is rich behavior an agent could not infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and then describes the two calling modes compactly, with every clause carrying information. Dense backtick notation and long compound sentences cost a point on readability but not on waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description fully compensates by describing both return shapes (index entries with page/title/required/description, and page content with url/markdown/engineFilter). Nothing needed to call or interpret the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantics: the dual mode of `page` (index vs. page fetch) and the tab-filtering side effect of `engine` including what `engineFilter` reports. The schema still carries the enumeration/format details, so it is not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read the live Playgama Bridge SDK wiki) plus the precise triggering conditions (archive answered `bridgeSdk: NOT_FOUND`, or traffic refused with `NO_BRIDGE`). An agent can distinguish this docs tool from the game-checklist sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use trigger (Bridge SDK integration after a NOT_FOUND / NO_BRIDGE result) and names the alternative, get_game_checklist, along with what that sibling covers. Routing between the two is left unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_categoriesRead the game categoriesARead-onlyIdempotentInspect
The values update_application_form takes for category, in priority order, and how to choose one. Read it before setting or changing a game’s category. howToChoose is the rule; each of categories has value (what the form takes), label, description, like with examples, and notLike, which names the category those games belong to. The same list the console shows the developer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description adds value by disclosing the response shape: a `howToChoose` rule plus `categories` entries carrying `value`, `label`, `description`, `like`/`examples`, and `notLike`. The 'same list the console shows the developer' note also reassures the agent it is the canonical source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then usage, then output structure. The field enumeration is dense but every clause carries meaning, and there is no filler. Slightly backtick-heavy but appropriate for the domain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully carries the burden of explaining return values, enumerating each returned field and its role, plus the selection rule. An agent has everything needed to call it and interpret the result without opening any other artifact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the description appropriately does not invent any. It does describe the semantics of the `category` field values it returns (priority order, how to choose, what `like`/`notLike` mean), which is useful context even though it is not an input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the `category` values that update_application_form accepts) and frames it precisely as a read of the categories in priority order with selection guidance. It is easy to distinguish from the writer tool it complements (update_application_form) and from other read tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition: 'Read it before setting or changing a game's category', which ties the tool to the mutation flow it supports. It stops short of an explicit exclusion (e.g. when not to call it, or what to do if you already know the value), so it does not reach the full when/when-not/alternative standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_checklistRead the Playgama game checklistARead-onlyIdempotentInspect
What a game and its build archive must meet to go up on Playgama — the required Playgama Bridge steps in order, the build requirements, and tips — read live from the Playgama wiki. Read it before integrating the Bridge SDK and before every start_archive_upload: check the game and the archive against each item and fix what fails before uploading, and tell the developer which items you could not check yourself. Without page: { title, url, markdown, pages } — the checklist and the pages nested under it, { page, title, required, description? } each. With page (an id from pages): that page’s title, url and markdown. A Bridge SDK link inside goes to get_bridge_sdk_docs as its page, as written.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Id of a nested page from `pages` in the answer without `page`. A link copied from the wiki works as-is (with or without `.md`, with or without an anchor — the anchor is ignored). Omit to get the checklist itself. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-open-world status, but the description goes further: it discloses that content is read live from the wiki and precisely describes the return payload shape for both the no-`page` and `page` cases (`{ title, url, markdown, pages }` vs a single page's title/url/markdown). This is rich context with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and slightly run-on, but front-loaded with purpose then workflow then return shape, and every sentence contributes useful information. Minor trimming of redundant phrasing would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description is complete: it explains what the checklist is, when to consult it, what to do with the results, and the exact shape of both return variants. Nothing an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the `page` parameter's id semantics and link-copying tolerance are already documented in the schema, setting a baseline of 3. The description adds value by explaining the output effect of omitting vs supplying `page` and how nested page ids relate to the checklist, pushing it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — reading the Playgama game checklist — and spells out exactly what the resource contains (Bridge steps, build requirements, tips). It is clearly distinguishable from siblings like get_bridge_sdk_docs, which it explicitly routes to for SDK links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit timing: read before integrating the Bridge SDK and before every start_archive_upload. It also prescribes the follow-up action (check each item, fix failures, report items it could not verify), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_telemetry_analyticsRead game telemetry analyticsARead-onlyIdempotentInspect
Compact overview of one game’s preaggregated telemetry: volume, event inventory, sessions, users, duration and freshness. Start here, then call the event, timeseries or session-facts tool only for the question you need to answer. The JSON is dynamic: inspect schema_version, period, freshness, sample sizes and every returned field; unknown fields may be added, and missing or null never means zero. dateFrom and dateTo are inclusive calendar dates and may span at most 31 days. The event inventory defaults to 50 types and is capped at 100. Follow events_page.next_cursor with eventCursor only when more event types are needed for the current question; do not fetch every page preemptively. The tool returns evidence, not a server-generated conclusion. Read get_game_telemetry_guide before instrumenting a game or interpreting this response.
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | Calendar date in YYYY-MM-DD format | |
| dateFrom | Yes | Calendar date in YYYY-MM-DD format | |
| eventLimit | No | Maximum event types in the overview page, from 1 to 100. Default 50 | |
| eventCursor | No | Opaque events_page.next_cursor returned by the preceding overview call | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent profile, but the description adds substantial context beyond them: the 31-day max span, the 50-default/100-capped inventory, cursor-following rules to avoid over-fetching, dynamic JSON with possible unknown fields, and the critical 'missing or null never means zero' semantics. It also flags the response as evidence rather than a conclusion, which is meaningful behavioral framing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and every subsequent sentence carries a distinct constraint rather than filler. It is dense and slightly long, but no sentence is redundant, so it earns most of its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of describing returns and does so concretely (volume, inventory, sessions, users, duration, freshness, plus schema_version/period/sample sizes to inspect). Combined with the pagination and date-range rules, an agent has everything needed to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3, but the description adds real meaning: dateFrom/dateTo are inclusive calendar dates that may span at most 31 days (a constraint absent from the schema), and eventCursor should only be followed when more event types are needed for the current question. This is value beyond the schema, though eventLimit's stated bounds largely duplicate the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('compact overview of one game's preaggregated telemetry') and immediately enumerates what it covers (volume, event inventory, sessions, users, duration, freshness). It explicitly distinguishes itself from the sibling telemetry tools by naming the event, timeseries and session-facts alternatives, so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit entry-point instruction ('Start here') and an explicit exclusion ('call the event, timeseries or session-facts tool only for the question you need to answer' / 'do not fetch every page preemptively'). It also names a prerequisite guide tool for interpretation, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_telemetry_event_analyticsAnalyze a telemetry event and its fieldsARead-onlyIdempotentInspect
Preaggregated detail for one event. Call without fieldName to discover every top-level custom field and its type, coverage, cardinality and numeric or boolean summary. Call again with one fieldName to obtain its bounded top categorical JSON values and other_event_count. Nested objects and arrays are dynamic JSON values, not a fixed DTO. For performance_sample, use this tool to read the available FPS, frame-time and stutter field summaries for the requested period. Use event names discovered in get_game_telemetry_analytics; do not request raw events.
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | Calendar date in YYYY-MM-DD format | |
| dateFrom | Yes | Calendar date in YYYY-MM-DD format | |
| eventKind | Yes | Telemetry namespace: standard, custom, or system | |
| eventName | Yes | Stable telemetry event name returned by get_game_telemetry_analytics | |
| fieldName | No | Top-level payload field name. Nested JSON remains the value of this field | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real behavior: the omit/pass fieldName dual mode, bounded categorical results with an other_event_count catch-all, and that nested structures come back as dynamic JSON rather than a fixed DTO. It does not say what happens for an unknown fieldName or invalid eventName, so it falls short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each carrying a distinct fact (mode 1, mode 2, data shape caveat, performance_sample special case, upstream source and exclusion). Front-loaded with the primary behavior and free of restatement of the name or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only, non-destructive tool with no output schema and full parameter coverage; the description conveys both call modes, the result shape, and the upstream discovery path, which is enough to invoke it correctly. Minor gaps remain around failure/empty cases and how many categorical values 'bounded' means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds semantics beyond the schema: fieldName is optional and its presence/absence selects two different result shapes, and nested JSON stays inside that field's value. It adds nothing further about eventKind/applicationId beyond what the schema text already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope ('Preaggregated detail for one event') and then says exactly what the tool returns in each mode: field inventory with type/coverage/cardinality/summary, or bounded top categorical values plus other_event_count. An agent can distinguish this from the sibling telemetry tools (session_facts, timeseries, analytics) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit two-step workflow ('Call without fieldName... Call again with one fieldName'), an explicit upstream dependency ('Use event names discovered in get_game_telemetry_analytics'), an explicit exclusion ('do not request raw events'), and a named special case (performance_sample FPS/frame-time/stutter). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_telemetry_guideRead the game telemetry guideARead-onlyIdempotentInspect
Agent-only instructions for instrumenting a Playgama game and interpreting its telemetry. Read before finishing a game: it defines the performance_sample contract, how to choose bounded product progression events, the temporary custom-to-system event migration, privacy rules, and how to drill down through the compact telemetry analytics tools without requesting raw or unnecessarily large datasets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real content disclosure: it names the performance_sample contract, bounded progression events, the custom-to-system event migration, and privacy rules — telling the agent what to expect inside the guide rather than just that it is safe to read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The load-bearing instruction ('Read before finishing a game') sits early, and every listed item maps to a distinct concern. It is a single dense sentence with a long enumerated tail, so it loses a little on scannability but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter guide with no output schema, the description is nearly complete: it covers the trigger condition, the topics contained, and the intended drill-down workflow. A brief note on what is returned (documentation text vs. structured data) would close the last gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing in the description that could or should add parameter meaning. Schema coverage is trivially 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and audience: 'Agent-only instructions for instrumenting a Playgama game and interpreting its telemetry.' It immediately distinguishes itself from the sibling analytics tools by positioning itself as the guide that explains how to use them ('how to drill down through the compact telemetry analytics tools').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Read before finishing a game') and an explicit anti-pattern ('without requesting raw or unnecessarily large datasets'), plus it tells the agent when to consult the analytics siblings. No named alternative is excluded outright, but the routing intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_telemetry_session_factsRead filtered session factsARead-onlyIdempotentInspect
Paginated, preaggregated and pseudonymized session facts for sequence questions such as whether a player found an item before dying or restarted after defeat. At least one of eventName, fieldName, sessionRef or userRef is required. Start with the default 20-session page and fetch another page only when the current question needs it. Facts contain dynamic sanitized JSON in ordered chunks; they are not raw events and must not be treated as a complete user history. Repetitive core_ping and performance_sample events are intentionally excluded: never filter session facts by either name or use this tool for per-session FPS analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum sessions in this page, from 1 to 100. Default 20 | |
| cursor | No | Opaque next-page cursor returned by the preceding call to the same tool | |
| dateTo | Yes | Calendar date in YYYY-MM-DD format | |
| userRef | No | Opaque application-scoped user reference returned by session facts | |
| dateFrom | Yes | Calendar date in YYYY-MM-DD format | |
| eventName | No | Stable telemetry event name returned by get_game_telemetry_analytics | |
| fieldName | No | Top-level payload field name. Nested JSON remains the value of this field | |
| sessionRef | No | Opaque application-scoped session reference returned by session facts | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantive traits: preaggregated and pseudonymized data, dynamic sanitized JSON in ordered chunks, deliberate exclusion of repetitive event types, and the caveat that facts are not a complete user history. None of that is derivable from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tightly packed sentences, front-loaded with the resource and its purpose, then constraints, then exclusions. Every sentence carries a distinct, actionable fact; nothing is restated from the schema or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still characterizes the return payload (sanitized JSON in ordered chunks, paginated, cursor-driven) and warns about its limits as a history source. Combined with the missing-parameter constraint and exclusions, an agent has everything needed to call it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds a genuine cross-parameter constraint absent from the schema: at least one of eventName, fieldName, sessionRef or userRef must be supplied (the schema only marks applicationId/dateFrom/dateTo as required). It also sets the paging expectation ('default 20-session page'), which only partially duplicates the schema's limit default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource ('paginated, preaggregated and pseudonymized session facts') and a concrete query class (sequence questions like item-before-death or restart-after-defeat). It implicitly separates itself from the raw-event sibling by stating 'they are not raw events', so an agent can distinguish it from get_game_telemetry_analytics/timeseries without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use (sequence questions), explicit when-not ('never filter session facts by core_ping or performance_sample', 'not for per-session FPS analysis'), and a pagination policy. It stops short of naming the sibling tool to use instead for those excluded cases, so the alternative is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_telemetry_timeseriesRead a telemetry time seriesARead-onlyIdempotentInspect
Paginated preaggregated 30-minute or daily telemetry counts for trend, release and regression comparisons. Optionally narrow by event namespace and event name. Follow page.next_cursor only while more points are needed for the current conclusion; the response also returns the applied limit. Points describe event volume and coverage, not FPS or other custom-field value distributions. Compare performance values with bounded event-analytics requests instead. This tool never reads or returns raw events.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum time-series points in this page, from 1 to 1000. Default 500 | |
| cursor | No | Opaque next-page cursor returned by the preceding call to the same tool | |
| dateTo | Yes | Calendar date in YYYY-MM-DD format | |
| dateFrom | Yes | Calendar date in YYYY-MM-DD format | |
| eventKind | No | Telemetry namespace: standard, custom, or system | |
| eventName | No | Stable telemetry event name returned by get_game_telemetry_analytics | |
| granularity | No | Time bucket size. Default 1d | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description adds substantial behavioral context: pagination via page.next_cursor, the response returning the applied limit, what the points do and do not represent (volume/coverage, not FPS or custom-field distributions), and that raw events are never read or returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and scope, then caveats. Six sentences is on the longer side, but each adds a distinct constraint (grain, narrowing, pagination discipline, semantic scope, routing, raw-event exclusion).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains what the response contains (points, next_cursor, applied limit), and covers grain, filtering, and boundaries. An agent has everything needed to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 8 params and 3 is the baseline. The description adds meaning beyond the schema by clarifying the granularity options (30-minute vs daily), the event namespace/name narrowing, and the limit/cursor relationship to pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: preaggregated 30-minute or daily telemetry counts. It differentiates from siblings by scoping to volume/coverage trends and explicitly pointing performance-value comparison to event-analytics requests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context (trend, release, regression comparisons) and narrowing options, plus a pagination-following rule and a routing hint away from performance queries. The alternative is described generically as 'bounded event-analytics requests' rather than naming the specific sibling tool, so routing is slightly less than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_launch_stepsRead the launch stepsARead-onlyIdempotentInspect
The developer’s path for the game, in order: archive, bridge, covers, form, sandbox, share, traffic — judged by the latest archive (archiveId). Each step: state (TODO, IN_PROGRESS, DONE, FAILED, BLOCKED, UNKNOWN, PARTIAL, OUTDATED, AVAILABLE, WAITING, CABINET), reason, required, nextTools, blockedBy and askDeveloper. current is the first required step still holding the path, null when none is. UNKNOWN is neither done nor not done: call again. CABINET: what is left is the developer’s, in the console. Traffic prefers an available referral bonus (source REFERRAL, bonusId), which requires no sharing. Otherwise source SHARE needs public post links. Reuse the returned bonusId when retrying. Any completed traffic campaign closes this step; further bonuses do not reopen it.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description adds substantial behavior beyond them: the full state enum, the semantics of 'current' and of UNKNOWN ('call again'), the meaning of CABINET, and the special traffic-step resolution and bonusId reuse rules. These are meaningful operational details not derivable from structured fields, though return-value formatting is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core definition (ordered path, judged by latest archive) before the field list and edge cases. The traffic paragraph is dense and long relative to the rest, but each clause carries real semantic weight, so it remains reasonably economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex state-machine tool with no output schema, and the description compensates well: it enumerates the step fields, explains `current`, resolves the UNKNOWN and CABINET cases, and details the traffic step's two paths. Enough is present to interpret the result, with only minor gaps in describing overall response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (applicationId) and schema description coverage is 100%, so the schema already documents it fully. The description references the archive (archiveId) and bonusId, but bonusId is a return field, not a parameter, so it adds little parameter-level meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb+resource: it returns 'the developer's path for the game, in order' with an explicit ordered list of steps (archive, bridge, covers, form, sandbox, share, traffic). That is clear and specific. It does not, however, name or differentiate itself from plausible siblings like get_submission_state, get_game_checklist, or get_sandbox_state, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one conditional usage rule — 'UNKNOWN is neither done nor not done: call again' — and explains how the traffic step resolves (prefer an available referral bonus, else SHARE needs public links). But it never says when to call this versus the many sibling status tools (get_submission_state, get_game_checklist, get_sandbox_state), so the when-to-use guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_local_game_qa_tool_linkGet a QA Tool link for a locally served gameARead-onlyIdempotentInspect
A link that opens the Playgama QA Tool on a game you serve yourself (e.g. on localhost), to play it in the Bridge SDK harness before uploading. Leave sessionId out for a fresh environment; reuse one to keep saved state. Take the link from the answer; never build it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Absolute http(s) URL of the game’s index page, e.g. http://localhost:5503/ | |
| sessionId | No | Letters, digits, - and _ (up to 64). Default: the current timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavior beyond those: sessionId omission creates a fresh environment, reusing it preserves state, and the agent must take the link from the answer rather than constructing it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: what the link is for, how sessionId changes behavior, and a caution not to build the link manually. The core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter read-only tool, the description fully covers purpose, parameter semantics, and expected output behavior ('Take the link from the answer'). No output schema exists, but the description compensates by telling the agent exactly what to extract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters, so the baseline is 3. The description adds meaning beyond the schema by explaining the behavioral difference between omitting and reusing sessionId, which is not captured in the parameter's 'Default: current timestamp' text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific deliverable ('a link that opens the Playgama QA Tool'), a clear target ('a game you serve yourself, e.g. on localhost'), and a clear use case ('before uploading'). This distinguishes it from the sibling get_archive_qa_tool_link, which would target archived games.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool: for locally served games being tested in the Bridge SDK harness before upload. It does not explicitly name the alternative for already-uploaded or archived games, so it lacks an explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publicationsRead the game’s publicationsARead-onlyIdempotentInspect
The game’s latest publication on each destination, newest first. A destination is absent while it has no publication on record — before its first, and also when it was last published before these records were kept — so an absent one does not mean never published: what each destination serves is get_application activeArchives. platform is PLAYGAMA_SANDBOX — the sandbox, published by publish_sandbox — or PLAYGAMA — the catalog, published by send_playgama_catalog_update or from the console. Each has id, releaseId, archive (null only once that archive is gone), startedAt, updatedAt and status — IN_PROGRESS while its archive is built and published, PUBLISHED once its build went live, FAILED when it never did, with no reason given — and retryAfterSeconds, the wait before reading again while IN_PROGRESS, null otherwise. What the sandbox serves now is always get_sandbox_state site.revision. A publish_sandbox with no answer may still land after any read, so never tell the developer it did not: compare the PLAYGAMA_SANDBOX publication with the one read before the call — a new releaseId naming this archive is a publication of this archive, that request’s or another’s: follow it; otherwise the outcome is unknown: say so — another publish is a new request, on a new yes.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior, but the description adds substantial semantics beyond them: return fields, status transitions, retryAfterSeconds, and the meaning of an absent destination. It also warns that a publish_sandbox with no answer may still land later and explains how to detect that outcome. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and much of the detail is justified because there is no output schema. However, the prose is extremely dense, with nested em-dash clauses and a final sentence that is difficult to parse. Some context, such as publisher ownership details, could be trimmed or separated without losing essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return-value burden, and it does: it explains publication fields, statuses, retry behavior, ordering, and caveats about absent destinations. It also connects the result to related tools and post-publish verification. Given the annotations and complete schema coverage, the definition is contextually complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single applicationId parameter. The description does not mention applicationId or add any syntax or format detail beyond the schema. With the schema doing all parameter work, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence identifies the resource and scope: latest publication per destination, newest first. It also distinguishes the tool from siblings like get_application activeArchives and get_sandbox_state. However, it states the content as a noun phrase rather than with a clear verb, and relies on the jargon term 'destination' without immediate definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to get_application activeArchives for what a destination serves and to get_sandbox_state site.revision for the sandbox's current state. It also explains how to compare a PLAYGAMA_SANDBOX publication before and after publish_sandbox. A crisp 'use this when' statement is still absent, leaving the core invocation context implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_referral_programRead the referral invitation and bonusesARead-onlyIdempotentInspect
Read the current organization’s stable invitation code/link, eligibility, aggregate invitation counts and available traffic bonuses. There is no enrollment step. Every organization member can read the invitation; share the returned invitation.url. Each accepted invitation grants the invited organization a traffic welcome bonus; its first successful Sandbox publication grants the inviter another traffic bonus. These are not cash or guaranteed player counts. An existing organization can accept an invitation until its first-ever Sandbox publication. To use a bonus, choose a game, read get_sandbox_traffic, ask the developer, and call start_sandbox_traffic with bonusId instead of postUrls. Merely reading or applying a code does not start traffic.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral context: the bonus grant lifecycle (invited org gets a welcome bonus; inviter gets another on first successful Sandbox publication), that bonuses are traffic not cash, and that merely reading or applying a code does not start traffic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first sentence, with mechanics following. Nearly every sentence adds decision-relevant detail, though the bonus-application walkthrough is somewhat long relative to a no-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema available, the description carries the burden of describing returns and does so (invitation.url, counts, bonuses), plus eligibility rules and the downstream start_sandbox_traffic workflow. An agent has everything needed to call it and act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter surface to document; baseline is 4. The description instead describes an output field (invitation.url) and the bonusId consumed by a sibling tool, which is useful but not parameter semantics per se.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb (Read) and enumerates the exact resource contents: stable invitation code/link, eligibility, aggregate invitation counts, and available traffic bonuses. It is clearly distinguishable from the sibling apply_referral_code, which mutates state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the tool is read-only sharing ('share the returned invitation.url'), explicitly notes there is no enrollment step, and routes the agent to alternatives: read get_sandbox_traffic, then call start_sandbox_traffic with bonusId instead of postUrls. The eligibility boundary (accept until first-ever Sandbox publication) tells the agent when the program still applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sandbox_stateRead the sandbox stateARead-onlyIdempotentInspect
The game’s sandbox — a public page anyone with the link can play: site (link, status, live revision), or null if never published — a sandbox Playgama blocked is shown with status BLOCKED even then; what is live now is always site.revision, and how a publish request went is get_publications. With archiveId it adds publish: allowed, reason, message and the refusal’s own fields (failedAt, details, emptySlots, limit/used/resetsAt) — the refusal publish_sandbox would give, in the same words — changeStatus (CHANGED: this archive or the form differs from the live revision; UNCHANGED: they match, and a publish still builds and publishes them again as a new revision; UNKNOWN: cannot tell; none of them refuses) and archiveChanged.
| Name | Required | Description | Default |
|---|---|---|---|
| archiveId | No | Optional. When given, the answer also says whether publishing this archive would be refused and whether it differs from the live revision | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds real behavioral context: null when never published, BLOCKED masking, revision semantics, and changeStatus values (CHANGED/UNCHANGED/UNKNOWN) with the note that none of them refuse. It does not describe pagination or error behavior, keeping it short of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single run-on sentence stitched together with em-dashes and parentheticals, so the most important fact (what is returned) is not front-loaded and parsing takes effort. It is not bloated with filler, but the structure is poor for an agent scanning for the key behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the heavy lifting by enumerating the returned fields and edge cases (null, BLOCKED, revision, publish refusal, changeStatus), which is close to sufficient for a two-parameter read tool. The only gap is the unstated default when `archiveId` is omitted beyond the implied `site`-only response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes beyond the schema by spelling out what `archiveId` unlocks — the `publish` block (`allowed`, `reason`, `message`, refusal fields), `changeStatus`, and `archiveChanged`. This gives the agent meaning the raw schema field text does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (the game's sandbox page), its live state (`site.revision`), and what the optional `archiveId` adds, so an agent can tell it apart from get_publications and publish_sandbox. However, the core verb is implicit — it never plainly says 'reads' or 'returns' the sandbox state at the start, relying on the title, and the answer is buried in a dense dash-clause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent elsewhere for one case ('how a publish request went is get_publications') and notes the refusal text matches publish_sandbox, but it never states explicitly when to call this tool versus get_submission_state or get_publications. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sandbox_trafficRead the sandbox traffic stateARead-onlyIdempotentInspect
Read campaign eligibility, bonus offers and existing traffic runs for this game. This read does not launch a campaign or spend a traffic bonus. verdict and offer describe the separate share bonus. referralOffer describes additional referral traffic: use its bonusId when available; no public posts are required. A referral bonus is independent of share limits but shares the active-campaign capacity. verdict.reason when not allowed: DSP_DISABLED, NO_SITE (publish first), BLOCKED, NO_COVERS (upload covers, publish again), ANALYSIS_PENDING (ask again shortly), NO_BRIDGE (Bridge SDK not detected; get_bridge_sdk_docs has the integration docs), RUN_IN_PROGRESS, PAYMENT_REQUIRED (share bonus used; paid traffic is in the console), ORG_LIMIT (three share bonuses per organization, lifetime; legacy free runs do not count). offer: FREE or PAID, available (the free bonus only), remainingFreeRuns, durationDays (one free boost), budgetUsd (per post, internal accounting — present a free boost without a dollar amount). current: the run in progress (PENDING, then RUNNING); runs: newest first, with status, failureReason and postUrls. After a start, find the returned run.id in runs and poll until it leaves PENDING.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description goes well beyond them: it explains that a referral bonus is independent of share limits but shares active-campaign capacity, enumerates verdict.reason states with remediation (publish first, upload covers, ask again shortly), and describes the PENDING→RUNNING polling lifecycle. This is substantive behavioral context an agent cannot 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the key non-mutation boundary before the dense field/enum detail. The middle is a long run-on covering many fields, but given there is no output schema each clause carries information, so it is verbose without being wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values, and it does: verdict/offer/referralOffer semantics, remainingFreeRuns, durationDays, budgetUsd accounting caution, and current/runs shapes with status and failureReason. Nothing essential for correct interpretation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single applicationId parameter with 100% schema description coverage ('as returned by list_applications'), so the schema carries the semantics. The description adds nothing about the parameter itself, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (campaign eligibility, bonus offers, existing traffic runs for this game), and explicitly bounds scope with 'This read does not launch a campaign or spend a traffic bonus,' cleanly separating it from start_sandbox_traffic. An agent can distinguish it from get_sandbox_share and get_sandbox_state from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for the read and routes the agent to get_bridge_sdk_docs when NO_BRIDGE is returned, and tells the agent to poll runs after a start. It does not explicitly name when to prefer get_sandbox_share or get_sandbox_state over this tool, so the sibling boundary is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_submission_stateRead the submission stateARead-onlyIdempotentInspect
Whether the game can be submitted to moderation now and, if not, why — the first rule the submit itself would refuse with. reason, in that order: ORGANIZATION_BANNED, MODERATION_UNAVAILABLE (the game cannot go to moderation, catalogAvailable is false: publish it to the sandbox), missing certification, a cooldown after a failed moderation, the state of the build being submitted (ARCHIVE_PENDING, ARCHIVE_FAILED, ARCHIVE_CHECKING while its check is still running, or the archive’s own reason code — get_archive_status explains it), ARCHIVE_NOT_BUILDABLE (the build has no Bridge version or Bridge config to build with: integrate the Bridge SDK and upload it again), FORM_INCOMPLETE (details names the fields to fill, the title included), COVERS_INCOMPLETE (not all three covers are in place: upload the ones emptySlots names), or nothing changed since the last submit. message is the console’s wording of that refusal: relay it word for word. Name in archiveId the build you are asking about — the one a submit would freeze. While catalogAvailable is false the answer is always MODERATION_UNAVAILABLE, whatever the build: never tell the developer the game can be submitted. A game never submitted to moderation, or one moderation rejected or postponed, whose sandbox is not blocked (get_sandbox_state), opens once its sandbox reaches 100 plays and an average play time of 5 minutes, counted once a day. A game moderation took off, or whose sandbox is blocked, only Playgama can reopen: the sandbox targets do not. A human submits to moderation in the console. With reviewType AUTO the verdict is send_playgama_catalog_update’s: the same reasons, then AUTO_REVIEW_UNAVAILABLE — the game is not live in the Playgama catalog (autoReviewPlatforms is empty), so only moderation can take it.
| Name | Required | Description | Default |
|---|---|---|---|
| archiveId | Yes | The build this answer judges — the archive a submit would name. get_application and get_launch_steps answer the archives of the game; an archive of another game is refused | |
| reviewType | No | Optional. MANUAL (left out): judge a submit to moderation, which a human sends from the console. AUTO: judge send_playgama_catalog_update — an update of the game live in the Playgama catalog without moderation | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/idempotent/non-destructive), so the description carries the behavioral load and does so richly: ordered reason codes, the hard invariant that while catalogAvailable is false the answer is always MODERATION_UNAVAILABLE and the developer must never be told the game is submittable, the 100-plays/5-minute/day-counted unlock rule, and the Playgama-only reopen condition. This is well beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and given the absent output schema much of the reason-code content is necessary. However, it is delivered as one dense paragraph with nested parentheticals, making the enumerated reason codes hard to scan; a structured list would convey the same information with less parsing effort.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must define the response shape, and it does: it accounts for reason, message, archiveId, catalogAvailable, emptySlots and details, and explains the ordering semantics of reason. Combined with the state-machine rules, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds genuine meaning on top by characterizing archiveId as 'the build you are asking about — the one a submit would freeze' and restating reviewType's AUTO/MANUAL split in terms of which downstream operation is being judged. It does not add syntax or constraint detail beyond the schema, but the conceptual framing is useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a precise predicate ('Whether the game can be submitted to moderation now and, if not, why') and frames the return as the first refusal rule a submit would hit. It explicitly names siblings it is not — get_archive_status ('explains it'), get_sandbox_state, and send_playgama_catalog_update — so the agent can separate this read-only verdict tool from its neighbors without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong conditions: MANUAL judges a console-submitted moderation request, AUTO judges send_playgama_catalog_update, and it notes that a human (not this tool) performs the actual submit. It names the alternative tools for adjacent questions, but never states an explicit 'do not call this for X' exclusion, so it falls just short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_applicationsList applicationsARead-onlyIdempotentInspect
Every named game of your organization, newest first: id, title, status and last update. The order is stable, so paging visits each game once. Untitled and deleted games are not listed. There are no filters: match on title or status yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | How many games to skip from the start of the list, for the next page. Default 0 | |
| limit | No | Games per page, 1 to 100. Default 20 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description adds that untitled and deleted games are excluded and that ordering is stable for paging. These are useful behavioral details not derivable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with zero fluff: purpose and fields first, then ordering stability and exclusions, then the no-filters note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters, no output schema, and safety annotations already covering read-only/idempotent behavior, the description fully covers purpose, returned fields, ordering, exclusions, paging behavior, and filtering limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so skip and limit are fully documented there. The description adds only the paging stability hint, which is behavioral rather than parameter-specific; it does not enrich the meaning of the parameters themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) plus resource (named games) with the exact fields returned and ordering ('newest first'), clearly distinguishing from the singular sibling get_application and other list tools like list_leaderboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states there are no filters and instructs the agent to match on title or status itself, implying this tool is for unfiltered, paginated listing. It doesn't name an alternative tool directly, but the context is clear enough for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_in_app_productsList in-app productsARead-onlyIdempotentInspect
The saved in-app catalog of a game and its checksum. Pass the checksum to replace_in_app_products as expectedChecksum.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description doesn't need to repeat those. It adds valuable behavioral context by explaining that the output includes a checksum and that this checksum is intended for use with replace_in_app_products, which goes beyond the annotation metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. The first sentence states the core functionality, and the second provides a critical usage hint about the checksum. It is efficiently front-loaded and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description gives enough to understand the result (catalog and checksum) and how the result integrates with a sibling tool. It could specify the structure of the catalog, but for the intended workflow this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter applicationId already has a clear description referencing list_applications. The tool description adds no additional parameter-level detail, so it relies on the schema, which is sufficient. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool returns the saved in-app catalog and its checksum, which clearly implies a listing operation. It differentiates from the sibling replace_in_app_products by explicitly mentioning the checksum flow. However, the description doesn't use the verb 'list' itself, relying on the title for that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear hint that the checksum should be passed to replace_in_app_products, indicating a common use case. It does not explicitly state when to use this tool vs alternatives, nor does it mention any exclusions or prerequisites beyond the schema's applicationId reference to list_applications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_leaderboardsList leaderboardsARead-onlyIdempotentInspect
The leaderboards of a game. id is the tag the game passes to the Playgama Bridge SDK and the one update_leaderboard takes; rows also carry name, type, scoreOrder, decimals, isActive and read-only score-protection settings.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds useful context about response rows, the read-only nature of score-protection settings, and the semantic meaning of `id`, without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and dense, front-loading the purpose and packing field semantics into one sentence. The opening fragment 'The leaderboards of a game' is slightly awkward but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only list tool, the description covers the output fields and the cross-tool id relationship, and the schema covers the input. It does not explicitly state the return container or pagination, but the 'rows' wording implies a list and nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, applicationId, is fully described in the schema as 'Application (game) id, as returned by list_applications.' The description does not elaborate on this parameter; its `id` explanation refers to a row field, not the input. Baseline 3 applies because schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'List leaderboards' supplies a specific verb, and the description defines the resource as 'the leaderboards of a game.' It also clarifies that `id` is the SDK tag and the identifier consumed by update_leaderboard, which distinguishes this read tool from its update sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a workflow—listing leaderboards gives you the `id` needed for update_leaderboard—but it never explicitly states when to choose this tool over create_leaderboard or update_leaderboard. There are no prerequisites or exclusions, only minimal implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_moderation_commentsRead the moderation correspondenceARead-onlyIdempotentInspect
The moderation correspondence on a game, newest first, grouped by moderation task. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context beyond annotations: 'newest first' and 'grouped by moderation task.' It also reinforces read-only, consistent with annotations. No contradiction, and no critical behavior (e.g., authentication, pagination) is disclosed, but the added ordering/grouping is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that captures purpose, ordering, grouping, and read-only nature without redundant words. It earns its place for a simple read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with strong annotations, the description is sufficient. It specifies scope ('on a game') and output organization ('newest first, grouped by moderation task'). No output schema exists, but the description gives enough context for a correct call. Minor omission: it doesn't describe the returned data structure, but that is acceptable given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the only parameter, applicationId, is already documented as 'Application (game) id, as returned by list_applications.' The tool description adds no parameter-level detail beyond mentioning 'on a game.' Baseline 3 applies because the schema fully covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'Read the moderation correspondence' and description 'The moderation correspondence on a game, newest first, grouped by moderation task. Read-only.' clearly identify a specific verb (read/list), resource (moderation correspondence on a game), and key behaviors. No sibling tool appears to handle moderation correspondence, so it is easily distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to view moderation correspondence for a game) but does not explicitly state when to use it or when not to, nor does it name alternatives. Since there are no sibling moderation tools, ambiguity is low, but explicit guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_sandboxPublish the game to its sandboxADestructiveInspect
Publish this archive to the game’s sandbox — a public page anyone with the link can play, without moderation. Ask the developer first. Before calling, read get_sandbox_state with the same archiveId: its publish says whether this call would be refused, in the same words. A publish needs the build check PASSED (get_archive_status state), Playgama Bridge 2.2.0 or newer in the build, all three covers and a complete form. Answers outcome PENDING: the archive is built, then published, as a rule within minutes; url is the sandbox’s link, revision what is live until then (null before the first publication). Follow the PLAYGAMA_SANDBOX publication of get_publications, waiting its retryAfterSeconds between reads: PUBLISHED — the build is live, hand out url; FAILED — it did not go live and no reason is given: tell the developer, a new publish starts over. Until it is PUBLISHED or FAILED, another publish is refused with 409: wait and call again. Refusals (reason; relay message word for word): ARCHIVE_PENDING — if get_archive_status already says DONE, upload again; MULTIPLAYER — the sandbox has no player accounts: uncheck the flag only if the game plays single-player; PUBLISHED_ON_PLAYGAMA — the game is live in the catalog, its sandbox is closed for good; BLOCKED — Playgama blocked this sandbox, a publish cannot lift it; RATE_LIMITED — 15 publications per rolling hour, repeats included: wait; ORG_QUOTA — wait until resetsAt, do not retry. The rest name what to fix: the build check’s own reasons (get_bridge_sdk_docs has the SDK docs), ARCHIVE_FAILED, BRIDGE_VERSION_OUTDATED, BRIDGE_VERSION_UNKNOWN, FORM_INCOMPLETE (details: the fields to fill, the title included), COVERS_INCOMPLETE (emptySlots).
| Name | Required | Description | Default |
|---|---|---|---|
| archiveId | Yes | Id of an archive of this game that is in its form, unpacked and past its build check (get_archive_status says `processing: DONE` and `state.status: PASSED`), built on Playgama Bridge 2.2.0 or newer (`analysis.bridgeVersion`) | |
| updateNote | No | What a returning player will notice in this build, 80 to 500 characters, 1 to 4 sentences. Not a changelog: pick the one or two changes a player would actually feel (a new level, controls that work differently, a boss that got easier) and say them the way you’d tell a friend who played last week. Skip refactors, build settings and fixes nobody could see. If it fixes something players complained about, say so. Send it when this archive replaces the live one (get_sandbox_state `archiveChanged`); leave it out on a first publication and when a player would notice nothing. It is kept with this publication. Always write it in English, even when you talk to the developer in another language: translate, don’t switch. Write as the developer posting in the game’s chat, not as an announcement: first person, short sentences, contractions, plain words, one or two short paragraphs. Plain text only: no headings, lists, markdown, links, e-mail addresses or hashtags, and one emoji at most. Avoid ad words and AI tells: immersive, dive into, embark, journey, unleash, elevate, seamless, thrilling, "whether you’re…", "not just X but Y", lists of three, em dashes. Don’t open with the game’s title, "Welcome to" or "Hey everyone". Use only what you know from the game and from building it; never invent a backstory, feelings or numbers. Non-Latin letters and links are refused: fix the text or leave it out, and never let it block the rest of the call. | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, openWorld=true, but the description adds far more: exact prerequisites (build check PASSED, Bridge 2.2.0+, three covers, complete form), the async PENDING outcome with url/revision semantics, the 409 on concurrent publish, and a rate limit of 15 publications per rolling hour with quota resetsAt behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical facts are front-loaded: what it does, the public/no-moderation nature, and 'Ask the developer first' lead the text. It is dense and reads as a single long paragraph, but the length is earned by the large refusal-code surface and the async publication flow rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a genuinely complex asynchronous mutation, the description carries the full burden and delivers: it documents the return shape (outcome, url, revision), the polling protocol, every refusal reason and its remediation, and the preconditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and updateNote/archiveId are already exhaustively documented in the schema, so the baseline is 3. The description reinforces the archiveId prerequisites and updateNote timing but adds little that the schema does not already carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (publish) and resource (this archive to the game's sandbox) and immediately qualifies the target as 'a public page anyone with the link can play, without moderation.' This distinguishes it clearly from read-side siblings like get_sandbox_state and get_publications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to ask the developer first, to read get_sandbox_state with the same archiveId beforehand, and to follow get_publications afterward. It names when-not conditions (PUBLISHED_ON_PLAYGAMA, BLOCKED) and routes to get_archive_status and get_bridge_sdk_docs for prerequisites, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_in_app_productsReplace the in-app catalogADestructiveInspect
Replace the whole in-app catalog with products — not a patch: a product you leave out is deleted, and an empty list clears the catalog. Ask the developer before removing products. Read list_in_app_products first and pass its checksum as expectedChecksum; if the catalog changed meanwhile, the call is refused. While in-game purchases are off, a call that leaves them off is refused (IN_GAME_PURCHASES_OFF): turn them on with hasInGamePurchases: true to change the catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| products | Yes | The complete catalog after your change | |
| applicationId | Yes | Application (game) id, as returned by list_applications | |
| expectedChecksum | Yes | The `checksum` list_in_app_products answered — the state this call means to replace | |
| hasInGamePurchases | No | Defaults to whether `products` is non-empty |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by spelling out the concrete consequences: omitted products are deleted, an empty list clears the catalog, and there are two refusal modes (checksum mismatch and IN_GAME_PURCHASES_OFF). This is exactly the operational detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the replacement semantics, then consequences (deletion, clearing), then prerequisites and refusal conditions. Three dense sentences with no filler; every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive four-parameter tool with no output schema, the description covers scope, side effects, prerequisites, and failure modes completely. Nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each field; the description's added value is tying expectedChecksum to the list_in_app_products output and explaining the refusal on mismatch. It reinforces rather than adds new per-parameter syntax, so slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (replace) and resource (the whole in-app catalog), and immediately distinguishes itself from list_in_app_products by emphasizing it is a full replacement, not a patch. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the prerequisite (read list_in_app_products first and pass its checksum), the safety action (ask the developer before removing products), and the alternative path when purchases are off. Names the relevant sibling tool directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_playgama_catalog_updateUpdate the game live in the Playgama catalogADestructiveInspect
Send this archive and the saved form to the Playgama catalog as an update of the game live there, without moderation: once it is published, every catalog player gets it and no moderator checks it first. Write updateNote — what players will notice in this update — every time; a refused note writes nothing: fix it and call again. Call it only on the developer’s explicit yes in this conversation: first tell them the game, the archive and that the game live in the Playgama catalog will be updated for all its players with no moderation; a yes to an earlier update or to a sandbox publish does not count. Before asking, read get_submission_state with this archiveId and reviewType AUTO: it says whether this call would be refused, in the same words. Only a game live in the catalog takes it (autoReviewPlatforms holds PLAYGAMA); a first publication and every other platform go to moderation, which a human submits in the console. Answers outcome PENDING and releaseId: the archive is built, then published. Follow the PLAYGAMA publication of get_publications with that releaseId, waiting its retryAfterSeconds between reads: PUBLISHED — the update is live; FAILED — it never went live, players keep the previous build and no reason is given: tell the developer; the same form may go again, after a new yes. Until it ends, another publication of the game, to the catalog or the sandbox, is refused with 409 PUBLICATION_IN_PROGRESS. Read get_publications before the call. A call with no answer may still go in after any read, so never tell the developer it did not: read get_publications again — a PLAYGAMA publication with a new releaseId naming this archive is an update of this archive, this call’s or another submit’s: follow it. Otherwise the outcome is unknown: say so, and never call again on the old yes — a call sends the form as it is when it goes in, which may have changed since: another call is a new update, after get_submission_state and a new yes. Refusals (reason; relay message word for word): AUTO_REVIEW_UNAVAILABLE — not live in the catalog; NO_CHANGES — the archive and the form are those of the last submit; PUBLICATION_IN_PROGRESS; and every reason get_submission_state names.
| Name | Required | Description | Default |
|---|---|---|---|
| archiveId | Yes | The archive to send: one of this game whose build check PASSED (get_archive_status `state`), the one get_submission_state judged with `reviewType` AUTO. Its form goes with it, as saved | |
| updateNote | Yes | What a returning player will notice in this build, 80 to 500 characters, 1 to 4 sentences. Not a changelog: pick the one or two changes a player would actually feel (a new level, controls that work differently, a boss that got easier) and say them the way you’d tell a friend who played last week. Skip refactors, build settings and fixes nobody could see. If it fixes something players complained about, say so. Required: this update replaces the build every catalog player has now. It is kept with this release. Always write it in English, even when you talk to the developer in another language: translate, don’t switch. Write as the developer posting in the game’s chat, not as an announcement: first person, short sentences, contractions, plain words, one or two short paragraphs. Plain text only: no headings, lists, markdown, links, e-mail addresses or hashtags, and one emoji at most. Avoid ad words and AI tells: immersive, dive into, embark, journey, unleash, elevate, seamless, thrilling, "whether you’re…", "not just X but Y", lists of three, em dashes. Don’t open with the game’s title, "Welcome to" or "Hey everyone". Use only what you know from the game and from building it; never invent a backstory, feelings or numbers. Non-Latin letters and links are refused: fix the text or leave it out, and never let it block the rest of the call. Here the note cannot be left out: fix a refused one and send it again. | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false, and the description adds substantial non-obvious behavior: no moderation before going live to every player, the PENDING/outcome and releaseId return, the PUBLISHED/FAILED terminal states, 409 PUBLICATION_IN_PROGRESS, retryAfterSeconds pacing, the unreliability of a no-answer call, and named refusal reasons with instructions to relay messages verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded, but the body is a dense wall of semicolon-chained clauses, bolded fragments and mid-sentence imperatives that an agent must parse carefully. Nearly every statement carries operational value, so it is not padding, yet the presentation is far from tight and could be restructured for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent publish call with no output schema, the description covers the full lifecycle an agent needs: pre-call reads, acceptance criteria, asynchronous outcome, follow-up polling, terminal states, refusal handling, and retry-on-new-yes semantics. Nothing needed to invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the updateNote schema description is itself extremely detailed, so the schema already carries most parameter meaning. The description reinforces the 'write updateNote every time' requirement and the archive/form coupling, but adds little semantic detail beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb and resource: send an archive plus saved form to the Playgama catalog as an update of the live game. It immediately distinguishes itself from first publication and from the sandbox/second platform paths that go to moderation, so the agent can place it among siblings like publish_sandbox and update_application_form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit gating conditions are given: call only on the developer's explicit yes in this conversation, and a yes to an earlier update or a sandbox publish does not count; read get_submission_state with AUTO and get_publications before calling; only a game live in the catalog with autoReviewPlatforms PLAYGAMA qualifies. Alternatives (first publication, other platforms) are named and routed elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_archive_uploadStart an archive uploadADestructiveInspect
Step 1 of 3 of uploading a build: a zip that meets get_game_checklist — read it and check the build against each item first. Answers uploadUrl and headers: PUT the zip there with exactly those headers within an hour, e.g. curl -T game.zip -H "Content-Type: application/zip" "<uploadUrl>", then call confirm_archive_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the archive as the console will show it. Put the build version in it, e.g. "coin-town-1.4.2" — the form keeps every archive it was given, and the version is how a human tells them apart. A trailing .zip is dropped. | |
| contentSize | Yes | Exact size of the zip in bytes (`wc -c < game.zip`). The upload URL is signed for this length and the storage refuses any other. At most 314572800 bytes. | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/non-idempotent annotations, the description discloses the critical hidden contract: the URL is returned in `uploadUrl`/`headers`, must be PUT to with exactly those headers, and expires in one hour. That signing/expiry behavior is exactly the kind of context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the step number and the checkout gate, then the return values and the curl example. Dense but purposeful; the inline example slightly lengthens it but earns its place by pinning the exact invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with no output schema, the description names the returned fields and the follow-up call, and states the expiry window. For a multi-step mutation tool this is complete enough to invoke correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself explains name, contentSize (signed-length constraint) and applicationId in detail, so the baseline is 3. The description adds only the implicit tie between the zip and contentSize via the checklist/game.zip flow, not new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('start an archive upload') and frames it as 'Step 1 of 3 of uploading a build', which immediately distinguishes it from confirm_archive_upload and start_cover_upload. An agent knows exactly what this tool initiates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite ('read get_game_checklist and check the build against each item first') and an explicit successor ('then call confirm_archive_upload'), plus the deadline ('within an hour'). The when-to-use path is fully prescribed rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_cover_uploadStart a cover uploadADestructiveInspect
Step 1 of 3 of uploading one cover. Answers uploadUrl and headers: PUT the file there with exactly those headers within an hour, e.g. curl -T cover.png -H "Content-Type: image/png" "<uploadUrl>", then call confirm_cover_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| cover | Yes | Which cover slot of the form this fills. Exact sizes: square = 800×800, portrait = 1080×1920, landscape = 1920×1080. A confirmed cover replaces the one already in its slot. | |
| format | Yes | The file’s actual format — it is checked against the bytes on confirm | |
| contentSize | Yes | Exact size of the file in bytes (`wc -c < cover.png`). The upload URL is signed for this length and the storage refuses any other. At most 10485760 bytes. | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint/readOnlyHint annotations, the description discloses that the response contains uploadUrl and headers, that the PUT must happen within an hour with exactly those headers, and that confirmation is a separate later step. It does not spell out that confirmation replaces an existing cover, but the schema covers that and the annotation already flags destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the purpose, output, time constraint, and next step with no filler. The workflow is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateful first-step upload tool, the description gives the response shape, the required action, the validity window, and the follow-up call. With the rich parameter schema and annotations, 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.
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 all four parameters in detail. The description adds a useful curl example but does not materially expand on parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Step 1 of 3 of uploading one cover') and explains what the tool returns (uploadUrl and headers). It clearly distinguishes itself from confirm_cover_upload by naming it as the next step and from archive uploads by the word 'cover'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly positions the tool as the first step in a three-step cover-upload flow and instructs the caller to PUT the file then call confirm_cover_upload. It does not explicitly exclude start_archive_upload, but the 'cover' resource makes the intended context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sandbox_trafficBring traffic to the sandboxADestructiveInspect
Start an ad campaign that sends players to the sandbox page. Send exactly one of bonusId or postUrls. A referral bonusId (from get_referral_program or get_sandbox_traffic) spends that traffic bonus without a social post and without using the separate share allowance. Reuse the same bonusId and applicationId after an uncertain answer. Poll the returned run id; a timeout is not permission to spend another bonus. The separate share traffic bonus: first help the developer post the game (get_sandbox_share has the post and links), then ask the developer to paste the links of their published posts and pass 1–3 of them (different public HTTPS links from any platform) — never invent one. Each accepted link adds one boost unit to the campaign, up to three. One campaign per game, three games per organization for its lifetime; earlier free runs without sharing do not count. No dollar amount. Ask the developer first. Needs covers in the published revision and the Bridge SDK. Answers the PENDING run; poll get_sandbox_traffic for the returned run.id until it leaves PENDING — FAILED carries failureReason. Only a confirmed safe failure makes a referral bonus retryable; an uncertain DSP outcome keeps its reservation. A refusal carries the reason get_sandbox_traffic shows, or SHARE_REQUIRED / INVALID_POST_URL for missing or invalid links; PAYMENT_REQUIRED: paid traffic is in the console. Repeatedly submitting already accepted links reuses the same grant without changing its budget or dates. Add the remaining links later (up to three total) to increase the same campaign budget and extend it to at least three days from submission, including after it has finished. New links wait while a launch/update is PENDING (RUN_IN_PROGRESS). A stale PENDING run is requeued with the same id and saved links.
| Name | Required | Description | Default |
|---|---|---|---|
| bonusId | No | Referral bonus id returned by get_referral_program or get_sandbox_traffic. Send bonusId OR postUrls, never both. A referral bonus requires no social post. Reuse the same bonusId and applicationId after a timeout; never choose a new bonus to retry an unknown outcome. | |
| postUrls | No | 1–3 different public HTTPS post URLs from any platform. The developer must publish the posts first. Each accepted link adds one boost unit to the same campaign, up to three. Send new links now or later, up to three total per game. Already accepted links are not credited again. Each addition extends the same campaign to at least three days from submission. | |
| applicationId | Yes | Application (game) id, as returned by list_applications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only telling the agent this is a non-readonly, non-idempotent, open-world, destructive write, the description discloses the behaviors that actually matter: budget/reservation semantics on uncertain outcomes, the rule that a timeout is not permission to spend another bonus, retryability limited to confirmed safe failures, PENDING-run polling and requeue, and the specific refusal codes (SHARE_REQUIRED, INVALID_POST_URL, PAYMENT_REQUIRED). This is rich context well beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical guidance (one of bonusId/postUrls, reuse after uncertainty) is front-loaded, but the body is a dense wall of run-on sentences with several rules repeated between description and schema (postUrls credits, retry semantics). It is information-dense yet oversized and hard to scan, so it is not appropriately concise even though most sentences carry real meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no output schema, the description covers everything an agent needs: inputs, prerequisites, failure modes, retry/idempotency-safe behavior, error codes, and the polling follow-up via get_sandbox_traffic. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters and the 3-unit cap. The description adds operational meaning to those parameters: reusing the same bonusId/applicationId after an uncertain answer, the 1–3 link range with one boost unit each, and that later link additions extend the same campaign rather than create a new one.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a precise verb and resource (start an ad campaign that sends players to the sandbox page), which is immediately distinguishable from siblings like get_sandbox_traffic (polling) and get_sandbox_share (posting). An agent can tell what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes between the two input modes ('Send exactly one of bonusId or postUrls'), names the source tools for bonusId (get_referral_program, get_sandbox_traffic) and for share links (get_sandbox_share), and states the exclusion that a referral bonus needs no social post. Prerequisite ('ask the developer first', needs covers in published revision and Bridge SDK) is also given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_application_formSave application form fieldsADestructiveInspect
Save form fields of a game. Partial save: a field you leave out keeps its value; enum arrays are replaced whole. Does not submit anything to moderation.
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | Where the game is already published elsewhere, if it is. Moderation uses it to confirm the game is authentic; an empty string clears it. | |
| agent | No | The coding agent the game was made with: claude-code (Claude Code), codex (Codex), cursor (Cursor), antigravity (Google Antigravity), opencode (OpenCode), gemini-cli (Gemini CLI), kimi-code (Kimi Code Agent), grok-build (Grok Build), workbuddy (WorkBuddy), zcode (ZCode), claude-app (Claude app (chat / Desktop)), chatgpt (ChatGPT (chat)), other (Other), none (No AI agent) | |
| model | No | The model behind that agent: claude-fable (Claude Fable), claude-opus (Claude Opus), claude-sonnet (Claude Sonnet), claude-haiku (Claude Haiku), openai-astra (OpenAI Astra), openai-sol (OpenAI Sol), openai-luna (OpenAI Luna), openai-terra (OpenAI Terra), gemini-pro (Gemini Pro), gemini-flash (Gemini Flash), grok (Grok), kimi (Kimi), qwen (Qwen), deepseek (DeepSeek), glm (GLM), other (Other) | |
| story | No | The developer’s note to players about the game, 150 to 900 characters, 2 to 6 sentences. One plain line on what the game is, then one or two real things from making it: where the idea came from, a mechanic that took a few tries, something that surprised you, what got cut. Not a store description: no selling, no feature lists, don’t repeat `description`. End with a concrete question a player can answer after one round (is the third level too mean?), not "let me know what you think". Optional, but it is what gets players talking: write it before the game’s first sandbox publication and whenever get_application shows `story` empty; rewrite it only when the game itself changed. Always write it in English, even when you talk to the developer in another language: translate, don’t switch. Write as the developer posting in the game’s chat, not as an announcement: first person, short sentences, contractions, plain words, one or two short paragraphs. Plain text only: no headings, lists, markdown, links, e-mail addresses or hashtags, and one emoji at most. Avoid ad words and AI tells: immersive, dive into, embark, journey, unleash, elevate, seamless, thrilling, "whether you’re…", "not just X but Y", lists of three, em dashes. Don’t open with the game’s title, "Welcome to" or "Hey everyone". Use only what you know from the game and from building it; never invent a backstory, feelings or numbers. Non-Latin letters and links are refused: fix the text or leave it out, and never let it block the rest of the call. | |
| title | No | The game’s title in English — Latin letters, digits, spaces and punctuation, up to 120 characters. Shown to players and moderators as-is. | |
| engine | No | The engine the game was built with: unity (Unity), construct3 (Construct 3), cocos-creator (Cocos Creator), defold (Defold), godot (Godot), gdevelop (GDevelop), game_maker (Game Maker), scratch (Scratch), js (plain JavaScript, no engine) | |
| social | No | The game has social sharing or social interactions. | |
| modelId | No | The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. When the id names a known family, that family is stored as model, over the one sent. | |
| category | No | The game’s category, by its core mechanic — what the player spends most of the time doing, not its theme. Before setting or changing it, read get_game_categories: what each value means, which games are like it and which are not, and how to choose between two. Never guess from the title. | |
| isVertical | No | The game supports portrait orientation. Submitting a game that supports ANDROID or IOS needs at least one of isHorizontal and isVertical. | |
| description | No | A short description of the game: the main idea, the genre and what makes it unique. Submitting needs at least 100 characters; a shorter draft still saves. | |
| multiplayer | No | The game has multiplayer. Turning it on is refused (403 MODERATION_UNAVAILABLE) while get_submission_state answers `catalogAvailable: false`. Turning it off is always accepted. | |
| isHorizontal | No | The game supports landscape orientation. Submitting a game that supports ANDROID or IOS needs at least one of isHorizontal and isVertical. | |
| leaderboards | No | The game has leaderboards — a feature declared on the form. The leaderboards themselves are configured with list_leaderboards and create_leaderboard. | |
| applicationId | Yes | Application (game) id, as returned by list_applications | |
| howToPlayText | No | The main objectives, how to win and the primary control keys. Submitting needs at least 100 characters; a shorter draft still saves. | |
| supportedDevices | No | The devices the game supports. Replaced whole. Submitting needs at least one. Submitting a game that supports ANDROID or IOS needs at least one of isHorizontal and isVertical. | |
| excludedPlatforms | No | Partner platforms the game must not be distributed on. Replaced whole; an empty list excludes none. | |
| supportedLanguages | No | The languages the game is localized into. Replaced whole. Submitting needs at least one. | |
| distributeEverywhere | No | Playgama may distribute the game on any partner platform where it is not already published. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true and idempotentHint=false; the description adds the non-obvious mechanics behind that — omission preserves the prior value, enum arrays are replaced wholesale, and nothing is sent for moderation. That is real added context an agent could not derive from the annotations. It still says nothing about permissions, error behavior, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the partial-save rule, then the moderation boundary. Every sentence carries information; no filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 20-parameter, high-stakes save tool with no output schema, the description supplies the two things an agent most needs before calling: omission semantics and the fact that this is not a submission. Annotations cover the safety profile and the schema covers each field, so remaining gaps (auth requirements, response shape, failure handling) are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every one of the 20 parameters carries a rich inline description (enums enumerated, length limits, conditional submission rules). The tool description adds no parameter-level detail of its own, so the baseline of 3 applies — the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Save form fields of a game') and immediately scopes it against the submission flow ('Does not submit anything to moderation'). It is clearly distinct from create_application and get_application in intent, though it does not name a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the operating mode ('Partial save: a field you leave out keeps its value') and a scope boundary ('Does not submit anything to moderation'), which tells an agent this is a draft-persistence call rather than a publish/submit step. No alternative tool is named for the read or submit case, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_leaderboardUpdate a leaderboardADestructiveInspect
Change the name, type or score order of a leaderboard; at least one is required. The tag cannot change, and deleting is not available.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable name of the leaderboard, as the console shows it | |
| type | No | What a score is: `numeric` for points, `time` for a duration. The ranking direction is `scoreOrder`. | |
| scoreOrder | No | `desc` ranks the highest score first, `asc` the lowest — e.g. the fastest time. | |
| applicationId | Yes | Application (game) id, as returned by list_applications | |
| leaderboardId | Yes | The leaderboard’s tag — its `id` in list_leaderboards |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false; on top of that the description discloses that at least one field must change, that the tag is immutable, and that no delete path exists. That is useful scope information beyond the annotation flags, though it says nothing about permissions or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loading the mutable fields and the at-least-one requirement before the negative constraints. No wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers the mutable surface and key limits. It could state whether changes are reversible or require specific permissions, but the essentials an agent needs to call it correctly are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a constraint absent from the schema: at least one of name/type/scoreOrder must be supplied, and it clarifies the tag (leaderboardId) is immutable. This meaningfully extends the parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (change/update), the resource (leaderboard), and exactly which fields are mutable (name, type, scoreOrder). It is immediately distinguishable from create_leaderboard and list_leaderboards by naming what is editable rather than created or listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Adds decision-relevant constraints: at least one mutable field is required, the tag cannot change, and deletion is unavailable. It doesn't explicitly name an alternative tool for deletion, but the exclusions clearly scope when this tool applies.
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.
2 tool updates
- Changed
get_submission_state1 field changed- added
Input schema / properties / reviewTypeAdded value: +{ + "description": "Optional. MANUAL (left out): judge a submit to moderation, which a human sends from the console. AUTO: judge send_playgama_catalog_update — an update of the game live in the Playgama catalog without moderation", + "enum": [ + "MANUAL", + "AUTO" + ], + "type": "string" +}
- Added
send_playgama_catalog_update
2 tool updates
- Added
get_game_categories - Changed
update_application_form1 field changed- changed
Input schema / properties / category / descriptionPrevious value: -"The game’s category, by its core mechanic — what the player spends most of the time doing. Theme and setting (zombies, space, animals) don’t decide it; a game built on fear is horror whatever its mechanic. Each value below says what the category is, which games are like it and which are not, with the category those belong to (→). If two fit, check their “Not like”; if both still fit, take the one listed first.\nstrategy (Strategy): The player plans and manages resources, troops or territory; long-term decisions matter more than reflexes. Like: tower defense, real-time strategy, city-building and war strategy, auto-battlers — Bloons TD, Kingdom Rush, Plants vs Zombies, Age of War. Not like: territory capture in .io format (State.io) → .io; a business with customers and income → Management.\nfirst-person-shooter (First-person shooter): The player sees through the character’s eyes and spends almost all the time firing guns. Like: online shooters and first-person arenas in the spirit of Counter-Strike — Krunker, Bullet Force, Venge.io. Not like: a sniper with a scope, top-down or third-person view, archery → Shooting.\nmatching (Matching / Sorting): Items disappear from the board when the player matches identical ones or clears their way out. The goal is to clear the board or put everything in its place. Like: match-3, mahjong, bubble shooter, sorting into tubes, “clear the way” (parking jams, screws) — Candy Crush, Mahjong Solitaire, Zuma, Water Sort, Parking Jam. Not like: identical items merge into a bigger one → Merge; blocks fill lines → Tetris-like; a logic puzzle with a single solution (sudoku, jigsaw) → Puzzle.\nmerge (Merge): Two identical items combine into one of the next level — on a grid, as they fall, or as numbers. Like: merge-2, physics merge, number merge — 2048, Suika Game, Merge Dragons. Not like: match-3 where identical items disappear → Matching / Sorting; tower defense with towers built by merging → Strategy.\ntetris (Tetris-like): The player places blocks on a grid, and a completed line disappears. Whether the blocks fall on their own or are placed by hand doesn’t matter. Like: falling pieces, block puzzles on a grid — Tetris, Block Blast, Wood Block Puzzle, 10x10. Not like: match-3 and “clear the way” → Matching / Sorting; fitting shapes without clearing lines → Puzzle.\nhidden-object (Hidden object): The player searches for items in a detailed picture — from a list or by silhouettes. Like: hidden object, seek and find — June’s Journey. Not like: a story-driven quest where searching is secondary → Adventure; spot the difference → Puzzle.\nragdoll (Ragdoll): The game is built on ragdoll physics: the character is thrown, dropped and broken, usually for maximum damage. Like: dismount games — Stickman Dismount, Turbo Dismount, Mutilate a Doll. Not like: a ragdoll sandbox where damage isn’t the goal (Melon Playground) → Simulation; a duel where the fight is the point → Action.\nrunner (Runner): The character runs on its own, and something grows along the way: a crowd, a number or a weapon. There are upgrades between levels. Like: crowd runners with multiplier gates (×2, +10) — Count Masters, Join Clash, Money Rush. Not like: reflex running where nothing grows (Subway Surfers, Geometry Dash) → Arcade; Roblox-style 3D parkour → Obby.\nbike (Bike): Two-wheelers where balance is everything: leaning, wheelies, riding over obstacles. Like: motocross, trials — Moto X3M, Bike Race. Not like: a motorcycle race where balance doesn’t matter → Driving.\nmanagement (Management): The game revolves around a venue or a business: customers, orders, revenue, upgrades. Like: serving customers against the clock in a café, restaurant or shop; tycoons with passive income — Diner Dash, Supermarket Simulator, My Cafe, Idle Miner Tycoon. Not like: a clicker with no business or buildings → Idle / Clicker; cooking a dish step by step → Simulation; a Roblox-style tycoon → Obby.\nio (.io): Instant join and a quick match in a shared arena where the player grows, eats others or captures territory. Like: snakes, cells, territory capture — Slither.io, Agar.io, Paper.io. Not like: a shooter with “.io” in its name (Venge.io) → First-person shooter or Shooting.\nhorror (Horror): The game is built on fear: monsters, dark locations, the player hides, runs away and survives. A horror game stays in this category whatever its mechanic. Like: escaping a monster, night shifts, scary quests — Five Nights at Freddy’s, Granny, Ice Scream. Not like: a zombie shooter where shooting is the main thing → Shooting.\nobby (Obby): Roblox-style 3D parkour: the player runs and jumps over obstacles to the finish or the top of a tower. Like: obby escapes, towers, “simulators” and tycoons in Roblox style — Tower of Hell, Escape Prison Obby, Speed Run 4. Not like: a 2D platformer or a reflex runner → Arcade; a runner where a crowd grows → Runner.\nshooting (Shooting): Aiming and shooting is the main way to win; the weapon is a gun or a bow. Like: third-person and top-down shooters, archery, sniper games — Sniper 3D, Stickman Archer. Not like: first-person view with constant fire → First-person shooter; auto-shooting at waves of enemies (Vampire Survivors) → Action; Bubble Shooter and Zuma → Matching / Sorting.\nidle (Idle / Clicker): A resource piles up from taps and automatic income, including while the player is away. Like: clickers, evolution clickers — Cookie Clicker, Hamster Kombat, Capybara Clicker. Not like: a business with buildings or a venue with customers → Management.\nsports (Sports): A real sport with its rules, field and score, including simplified arcade versions. Like: soccer, basketball, golf, pool, tennis, bowling, boxing — 8 Ball Pool, Golf Orbit, Basketball Stars. Not like: a brawl without a ring or rules → Action; racing → Driving.\ndrawing (Drawing / Coloring): The main action is drawing or coloring. Like: coloring books, color by number, pixel art, free drawing — Paint by Numbers, Draw Something. Not like: drawing as a way to beat a level (draw a bridge) → Puzzle; makeup and dress-up → Beauty / Dress-up.\nboard (Board games): A classic board game that people know offline too: a board, pieces or dice, turns by the rules. Like: chess, checkers, backgammon, dominoes, ludo, tic-tac-toe. Not like: mahjong → Matching / Sorting; card games → Cards.\npuzzle (Puzzle): A logic problem solved by thinking, not speed. Logic games that have no category of their own also go here. Like: sudoku, jigsaw puzzles, nonograms, connect the dots, spot the difference, memory games — Sudoku, Jigsaw, Minesweeper, Flow Free, Cut the Rope. Not like: items disappear → Matching / Sorting; merge into a bigger one → Merge; fill lines → Tetris-like; word games → Words.\nsimulation (Simulation): The game imitates a real-life process or offers a free sandbox; progress comes through tasks, not high scores or defeating enemies. Like: life sims, farm, doctor and pet sims, step-by-step cooking, physics sandboxes — The Sims, BitLife, Hay Day, Cooking Mama, Melon Playground. Not like: a venue with customers or a business → Management; dress-up and dollhouses (Toca Boca) → Beauty / Dress-up; driving sims → Driving.\ndriving (Driving): The player controls a vehicle and can speed up and brake. Like: racing, drifting, traffic racers, parking, stunts, driving sims, crash tests — Asphalt, Traffic Racer, Truck Simulator. Not like: balancing on two wheels → Bike; the vehicle moves on its own and the player only dodges → Arcade or Runner.\narcade (Arcade): A simple game of reflexes and timing: one-button or swipe controls, short attempts, progress is a high score. Like: platformers, reflex runners, brick breakers, stackers, rhythm games — Flappy Bird, Subway Surfers, Chrome Dino, Geometry Dash, Angry Birds. Not like: a runner where a crowd or a number grows → Runner; Roblox-style 3D parkour → Obby; fighting or shooting as the main action → Action or Shooting.\naction (Action): The main action is fighting enemies: hits, combos, blocks, health bars. Like: fighting games and one-on-one duels, beat ’em ups, surviving waves of enemies with auto-shooting — Vampire Survivors, Brotato, Supreme Duelist. Not like: shooting as the main way to win → Shooting or First-person shooter; boxing in a ring → Sports; the goal is breaking a doll → Ragdoll.\nadventure (Adventure): The game follows a story: locations, dialogue, inventory items; action isn’t the point. Like: quests, point-and-click, visual novels, escape rooms with a story — Cube Escape. Not like: horror → Horror; finding items in a picture → Hidden object; a puzzle room with no story → Puzzle.\nwords (Words): Letters and words are the game’s main material: players build, find, guess or type them. Like: word guessing, crosswords, word search, anagrams — Wordle, Scrabble, Word Search. Not like: questions and answers with no letter play → Quiz.\nquiz (Quiz): The player is asked a question — as text, a picture or a sound — and picks or types the answer. Like: trivia, guess the flag or logo, personality tests — Who Wants to Be a Millionaire, Guess the Flag. Not like: word and letter games → Words.\ncards (Cards): A well-known card game where playing cards are the main element. Like: solitaire, poker, blackjack, durak — Solitaire, Klondike, UNO. Not like: Mahjong Solitaire → Matching / Sorting.\nbeauty-games (Beauty / Dress-up): The player dresses up, does makeup and hair, crafts or decorates — usually following a sample and using a ready-made set. Like: dress-up, makeup, salons, crafts, cake decorating, dollhouses — Dress to Impress, Toca Boca, Avatar World, Hair Salon. Not like: a physics sandbox (Melon Playground) → Simulation; running a restaurant → Management; coloring books → Drawing / Coloring."New value: +"The game’s category, by its core mechanic — what the player spends most of the time doing, not its theme. Before setting or changing it, read get_game_categories: what each value means, which games are like it and which are not, and how to choose between two. Never guess from the title."
1 tool update
- Added
get_publications
1 tool update
- Changed
update_application_form1 field changed- added
Input schema / properties / categoryAdded value: +{ + "description": "The game’s category, by its core mechanic — what the player spends most of the time doing. Theme and setting (zombies, space, animals) don’t decide it; a game built on fear is horror whatever its mechanic. Each value below says what the category is, which games are like it and which are not, with the category those belong to (→). If two fit, check their “Not like”; if both still fit, take the one listed first.\nstrategy (Strategy): The player plans and manages resources, troops or territory; long-term decisions matter more than reflexes. Like: tower defense, real-time strategy, city-building and war strategy, auto-battlers — Bloons TD, Kingdom Rush, Plants vs Zombies, Age of War. Not like: territory capture in .io format (State.io) → .io; a business with customers and income → Management.\nfirst-person-shooter (First-person shooter): The player sees through the character’s eyes and spends almost all the time firing guns. Like: online shooters and first-person arenas in the spirit of Counter-Strike — Krunker, Bullet Force, Venge.io. Not like: a sniper with a scope, top-down or third-person view, archery → Shooting.\nmatching (Matching / Sorting): Items disappear from the board when the player matches identical ones or clears their way out. The goal is to clear the board or put everything in its place. Like: match-3, mahjong, bubble shooter, sorting into tubes, “clear the way” (parking jams, screws) — Candy Crush, Mahjong Solitaire, Zuma, Water Sort, Parking Jam. Not like: identical items merge into a bigger one → Merge; blocks fill lines → Tetris-like; a logic puzzle with a single solution (sudoku, jigsaw) → Puzzle.\nmerge (Merge): Two identical items combine into one of the next level — on a grid, as they fall, or as numbers. Like: merge-2, physics merge, number merge — 2048, Suika Game, Merge Dragons. Not like: match-3 where identical items disappear → Matching / Sorting; tower defense with towers built by merging → Strategy.\ntetris (Tetris-like): The player places blocks on a grid, and a completed line disappears. Whether the blocks fall on their own or are placed by hand doesn’t matter. Like: falling pieces, block puzzles on a grid — Tetris, Block Blast, Wood Block Puzzle, 10x10. Not like: match-3 and “clear the way” → Matching / Sorting; fitting shapes without clearing lines → Puzzle.\nhidden-object (Hidden object): The player searches for items in a detailed picture — from a list or by silhouettes. Like: hidden object, seek and find — June’s Journey. Not like: a story-driven quest where searching is secondary → Adventure; spot the difference → Puzzle.\nragdoll (Ragdoll): The game is built on ragdoll physics: the character is thrown, dropped and broken, usually for maximum damage. Like: dismount games — Stickman Dismount, Turbo Dismount, Mutilate a Doll. Not like: a ragdoll sandbox where damage isn’t the goal (Melon Playground) → Simulation; a duel where the fight is the point → Action.\nrunner (Runner): The character runs on its own, and something grows along the way: a crowd, a number or a weapon. There are upgrades between levels. Like: crowd runners with multiplier gates (×2, +10) — Count Masters, Join Clash, Money Rush. Not like: reflex running where nothing grows (Subway Surfers, Geometry Dash) → Arcade; Roblox-style 3D parkour → Obby.\nbike (Bike): Two-wheelers where balance is everything: leaning, wheelies, riding over obstacles. Like: motocross, trials — Moto X3M, Bike Race. Not like: a motorcycle race where balance doesn’t matter → Driving.\nmanagement (Management): The game revolves around a venue or a business: customers, orders, revenue, upgrades. Like: serving customers against the clock in a café, restaurant or shop; tycoons with passive income — Diner Dash, Supermarket Simulator, My Cafe, Idle Miner Tycoon. Not like: a clicker with no business or buildings → Idle / Clicker; cooking a dish step by step → Simulation; a Roblox-style tycoon → Obby.\nio (.io): Instant join and a quick match in a shared arena where the player grows, eats others or captures territory. Like: snakes, cells, territory capture — Slither.io, Agar.io, Paper.io. Not like: a shooter with “.io” in its name (Venge.io) → First-person shooter or Shooting.\nhorror (Horror): The game is built on fear: monsters, dark locations, the player hides, runs away and survives. A horror game stays in this category whatever its mechanic. Like: escaping a monster, night shifts, scary quests — Five Nights at Freddy’s, Granny, Ice Scream. Not like: a zombie shooter where shooting is the main thing → Shooting.\nobby (Obby): Roblox-style 3D parkour: the player runs and jumps over obstacles to the finish or the top of a tower. Like: obby escapes, towers, “simulators” and tycoons in Roblox style — Tower of Hell, Escape Prison Obby, Speed Run 4. Not like: a 2D platformer or a reflex runner → Arcade; a runner where a crowd grows → Runner.\nshooting (Shooting): Aiming and shooting is the main way to win; the weapon is a gun or a bow. Like: third-person and top-down shooters, archery, sniper games — Sniper 3D, Stickman Archer. Not like: first-person view with constant fire → First-person shooter; auto-shooting at waves of enemies (Vampire Survivors) → Action; Bubble Shooter and Zuma → Matching / Sorting.\nidle (Idle / Clicker): A resource piles up from taps and automatic income, including while the player is away. Like: clickers, evolution clickers — Cookie Clicker, Hamster Kombat, Capybara Clicker. Not like: a business with buildings or a venue with customers → Management.\nsports (Sports): A real sport with its rules, field and score, including simplified arcade versions. Like: soccer, basketball, golf, pool, tennis, bowling, boxing — 8 Ball Pool, Golf Orbit, Basketball Stars. Not like: a brawl without a ring or rules → Action; racing → Driving.\ndrawing (Drawing / Coloring): The main action is drawing or coloring. Like: coloring books, color by number, pixel art, free drawing — Paint by Numbers, Draw Something. Not like: drawing as a way to beat a level (draw a bridge) → Puzzle; makeup and dress-up → Beauty / Dress-up.\nboard (Board games): A classic board game that people know offline too: a board, pieces or dice, turns by the rules. Like: chess, checkers, backgammon, dominoes, ludo, tic-tac-toe. Not like: mahjong → Matching / Sorting; card games → Cards.\npuzzle (Puzzle): A logic problem solved by thinking, not speed. Logic games that have no category of their own also go here. Like: sudoku, jigsaw puzzles, nonograms, connect the dots, spot the difference, memory games — Sudoku, Jigsaw, Minesweeper, Flow Free, Cut the Rope. Not like: items disappear → Matching / Sorting; merge into a bigger one → Merge; fill lines → Tetris-like; word games → Words.\nsimulation (Simulation): The game imitates a real-life process or offers a free sandbox; progress comes through tasks, not high scores or defeating enemies. Like: life sims, farm, doctor and pet sims, step-by-step cooking, physics sandboxes — The Sims, BitLife, Hay Day, Cooking Mama, Melon Playground. Not like: a venue with customers or a business → Management; dress-up and dollhouses (Toca Boca) → Beauty / Dress-up; driving sims → Driving.\ndriving (Driving): The player controls a vehicle and can speed up and brake. Like: racing, drifting, traffic racers, parking, stunts, driving sims, crash tests — Asphalt, Traffic Racer, Truck Simulator. Not like: balancing on two wheels → Bike; the vehicle moves on its own and the player only dodges → Arcade or Runner.\narcade (Arcade): A simple game of reflexes and timing: one-button or swipe controls, short attempts, progress is a high score. Like: platformers, reflex runners, brick breakers, stackers, rhythm games — Flappy Bird, Subway Surfers, Chrome Dino, Geometry Dash, Angry Birds. Not like: a runner where a crowd or a number grows → Runner; Roblox-style 3D parkour → Obby; fighting or shooting as the main action → Action or Shooting.\naction (Action): The main action is fighting enemies: hits, combos, blocks, health bars. Like: fighting games and one-on-one duels, beat ’em ups, surviving waves of enemies with auto-shooting — Vampire Survivors, Brotato, Supreme Duelist. Not like: shooting as the main way to win → Shooting or First-person shooter; boxing in a ring → Sports; the goal is breaking a doll → Ragdoll.\nadventure (Adventure): The game follows a story: locations, dialogue, inventory items; action isn’t the point. Like: quests, point-and-click, visual novels, escape rooms with a story — Cube Escape. Not like: horror → Horror; finding items in a picture → Hidden object; a puzzle room with no story → Puzzle.\nwords (Words): Letters and words are the game’s main material: players build, find, guess or type them. Like: word guessing, crosswords, word search, anagrams — Wordle, Scrabble, Word Search. Not like: questions and answers with no letter play → Quiz.\nquiz (Quiz): The player is asked a question — as text, a picture or a sound — and picks or types the answer. Like: trivia, guess the flag or logo, personality tests — Who Wants to Be a Millionaire, Guess the Flag. Not like: word and letter games → Words.\ncards (Cards): A well-known card game where playing cards are the main element. Like: solitaire, poker, blackjack, durak — Solitaire, Klondike, UNO. Not like: Mahjong Solitaire → Matching / Sorting.\nbeauty-games (Beauty / Dress-up): The player dresses up, does makeup and hair, crafts or decorates — usually following a sample and using a ready-made set. Like: dress-up, makeup, salons, crafts, cake decorating, dollhouses — Dress to Impress, Toca Boca, Avatar World, Hair Salon. Not like: a physics sandbox (Melon Playground) → Simulation; running a restaurant → Management; coloring books → Drawing / Coloring.", + "enum": [ + "strategy", + "first-person-shooter", + "matching", + "merge", + "tetris", + "hidden-object", + "ragdoll", + "runner", + "bike", + "management", + "io", + "horror", + "obby", + "shooting", + "idle", + "sports", + "drawing", + "board", + "puzzle", + "simulation", + "driving", + "arcade", + "action", + "adventure", + "words", + "quiz", + "cards", + "beauty-games" + ], + "type": "string" +}
2 tool updates
- Changed
create_application1 field changed- changed
Input schema / properties / modelId / descriptionPrevious value: -"The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. A game with no model yet gets the family of this id when the id names a known one."New value: +"The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. When the id names a known family, that family is stored as model, over the one sent."
- Changed
update_application_form1 field changed- changed
Input schema / properties / modelId / descriptionPrevious value: -"The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. A game with no model yet gets the family of this id when the id names a known one."New value: +"The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. When the id names a known family, that family is stored as model, over the one sent."
2 tool updates
- Changed
create_application1 field changed- added
Input schema / properties / modelIdAdded value: +{ + "description": "The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. A game with no model yet gets the family of this id when the id names a known one.", + "maxLength": 100, + "type": "string" +}
- Changed
update_application_form1 field changed- added
Input schema / properties / modelIdAdded value: +{ + "description": "The exact model behind that agent, as your runtime names it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. Stored lowercased, without the vendor prefix or a :variant suffix. A game with no model yet gets the family of this id when the id names a known one.", + "maxLength": 100, + "type": "string" +}
1 tool update
- Changed
update_application_form1 field changed- changed
Input schema / properties / multiplayer / descriptionPrevious value: -"The game has multiplayer."New value: +"The game has multiplayer. Turning it on is refused (403 MODERATION_UNAVAILABLE) while get_submission_state answers `catalogAvailable: false`. Turning it off is always accepted."
2 tool updates
- Changed
get_sandbox_state1 field changed- changed
Input schema / properties / archiveId / descriptionPrevious value: -"Optional. When given, the answer also says whether publishing this archive would be refused and whether it would create a new revision"New value: +"Optional. When given, the answer also says whether publishing this archive would be refused and whether it differs from the live revision"
- Changed
publish_sandbox1 field changed- changed
Input schema / properties / updateNote / descriptionPrevious value: -"What a returning player will notice in this build, 80 to 500 characters, 1 to 4 sentences. Not a changelog: pick the one or two changes a player would actually feel (a new level, controls that work differently, a boss that got easier) and say them the way you’d tell a friend who played last week. Skip refactors, build settings and fixes nobody could see. If it fixes something players complained about, say so. Send it when this archive replaces the live one (get_sandbox_state `archiveChanged`); leave it out on a first publication and when a player would notice nothing. It is kept with this publication: UNCHANGED saves nothing, this note included. Always write it in English, even when you talk to the developer in another language: translate, don’t switch. Write as the developer posting in the game’s chat, not as an announcement: first person, short sentences, contractions, plain words, one or two short paragraphs. Plain text only: no headings, lists, markdown, links, e-mail addresses or hashtags, and one emoji at most. Avoid ad words and AI tells: immersive, dive into, embark, journey, unleash, elevate, seamless, thrilling, \"whether you’re…\", \"not just X but Y\", lists of three, em dashes. Don’t open with the game’s title, \"Welcome to\" or \"Hey everyone\". Use only what you know from the game and from building it; never invent a backstory, feelings or numbers. Non-Latin letters and links are refused: fix the text or leave it out, and never let it block the rest of the call."New value: +"What a returning player will notice in this build, 80 to 500 characters, 1 to 4 sentences. Not a changelog: pick the one or two changes a player would actually feel (a new level, controls that work differently, a boss that got easier) and say them the way you’d tell a friend who played last week. Skip refactors, build settings and fixes nobody could see. If it fixes something players complained about, say so. Send it when this archive replaces the live one (get_sandbox_state `archiveChanged`); leave it out on a first publication and when a player would notice nothing. It is kept with this publication. Always write it in English, even when you talk to the developer in another language: translate, don’t switch. Write as the developer posting in the game’s chat, not as an announcement: first person, short sentences, contractions, plain words, one or two short paragraphs. Plain text only: no headings, lists, markdown, links, e-mail addresses or hashtags, and one emoji at most. Avoid ad words and AI tells: immersive, dive into, embark, journey, unleash, elevate, seamless, thrilling, \"whether you’re…\", \"not just X but Y\", lists of three, em dashes. Don’t open with the game’s title, \"Welcome to\" or \"Hey everyone\". Use only what you know from the game and from building it; never invent a backstory, feelings or numbers. Non-Latin letters and links are refused: fix the text or leave it out, and never let it block the rest of the call."
1 tool update
- Changed
get_game_telemetry_analytics2 fields changed- added
Input schema / properties / eventCursorAdded value: +{ + "description": "Opaque events_page.next_cursor returned by the preceding overview call", + "type": "string" +} - added
Input schema / properties / eventLimitAdded value: +{ + "description": "Maximum event types in the overview page, from 1 to 100. Default 50", + "maximum": 100, + "minimum": 1, + "type": "integer" +}
4 tool updates
- Changed
get_game_telemetry_analytics2 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "Opaque next-page cursor returned by the preceding get_game_telemetry_analytics call", - "type": "string" -} - removed
Input schema / properties / limitRemoved value: -{ - "description": "Maximum event buckets in this page, from 1 to 1000. Default 500", - "maximum": 1000, - "minimum": 1, - "type": "integer" -}
- Added
get_game_telemetry_event_analytics - Added
get_game_telemetry_session_facts - Added
get_game_telemetry_timeseries
2 tool updates
- Changed
publish_sandbox1 field changed- added
Input schema / properties / updateNoteAdded value: +{ + "description": "What a returning player will notice in this build, 80 to 500 characters, 1 to 4 sentences. Not a changelog: pick the one or two changes a player would actually feel (a new level, controls that work differently, a boss that got easier) and say them the way you’d tell a friend who played last week. Skip refactors, build settings and fixes nobody could see. If it fixes something players complained about, say so. Send it when this archive replaces the live one (get_sandbox_state `archiveChanged`); leave it out on a first publication and when a player would notice nothing. It is kept with this publication: UNCHANGED saves nothing, this note included. Always write it in English, even when you talk to the developer in another language: translate, don’t switch. Write as the developer posting in the game’s chat, not as an announcement: first person, short sentences, contractions, plain words, one or two short paragraphs. Plain text only: no headings, lists, markdown, links, e-mail addresses or hashtags, and one emoji at most. Avoid ad words and AI tells: immersive, dive into, embark, journey, unleash, elevate, seamless, thrilling, \"whether you’re…\", \"not just X but Y\", lists of three, em dashes. Don’t open with the game’s title, \"Welcome to\" or \"Hey everyone\". Use only what you know from the game and from building it; never invent a backstory, feelings or numbers. Non-Latin letters and links are refused: fix the text or leave it out, and never let it block the rest of the call.", + "maxLength": 500, + "minLength": 80, + "type": "string" +}
- Changed
update_application_form1 field changed- added
Input schema / properties / storyAdded value: +{ + "description": "The developer’s note to players about the game, 150 to 900 characters, 2 to 6 sentences. One plain line on what the game is, then one or two real things from making it: where the idea came from, a mechanic that took a few tries, something that surprised you, what got cut. Not a store description: no selling, no feature lists, don’t repeat `description`. End with a concrete question a player can answer after one round (is the third level too mean?), not \"let me know what you think\". Optional, but it is what gets players talking: write it before the game’s first sandbox publication and whenever get_application shows `story` empty; rewrite it only when the game itself changed. Always write it in English, even when you talk to the developer in another language: translate, don’t switch. Write as the developer posting in the game’s chat, not as an announcement: first person, short sentences, contractions, plain words, one or two short paragraphs. Plain text only: no headings, lists, markdown, links, e-mail addresses or hashtags, and one emoji at most. Avoid ad words and AI tells: immersive, dive into, embark, journey, unleash, elevate, seamless, thrilling, \"whether you’re…\", \"not just X but Y\", lists of three, em dashes. Don’t open with the game’s title, \"Welcome to\" or \"Hey everyone\". Use only what you know from the game and from building it; never invent a backstory, feelings or numbers. Non-Latin letters and links are refused: fix the text or leave it out, and never let it block the rest of the call.", + "maxLength": 900, + "minLength": 150, + "type": "string" +}
3 tool updates
- Changed
create_leaderboard1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Human-readable name of the leaderboard, as the cabinet shows it"New value: +"Human-readable name of the leaderboard, as the console shows it"
- Changed
start_archive_upload1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Name of the archive as the cabinet will show it. Put the build version in it, e.g. \"coin-town-1.4.2\" — the form keeps every archive it was given, and the version is how a human tells them apart. A trailing .zip is dropped."New value: +"Name of the archive as the console will show it. Put the build version in it, e.g. \"coin-town-1.4.2\" — the form keeps every archive it was given, and the version is how a human tells them apart. A trailing .zip is dropped."
- Changed
update_leaderboard1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Human-readable name of the leaderboard, as the cabinet shows it"New value: +"Human-readable name of the leaderboard, as the console shows it"
2 tool updates
- Added
get_game_telemetry_analytics - Added
get_game_telemetry_guide
Publisher details
- Operator
- Playgama · Publisher source
- Operator website
- https://playgama.com/ · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://wiki.playgama.com/playgama/mcp · Publisher source
- Trust center
- Not available
- Restrictions
- A free Playgama developer account is required and sign-up is open to anyone; there is no paid plan, no admin approval and no regional limit. Authentication is OAuth 2.1 with dynamic client registration, so no custom OAuth app has to be created. A connected agent reaches only the games of the account's own organization. Submitting a game to moderation, deleting, rolling a game back and payouts are deliberately not exposed and stay human actions in the cabinet. · Publisher source
Related MCP Connectors
Your agent needs live data — a competitor's traffic, who to contact there, what people are saying, what Google and ChatGPT answer about you, a company's filings. Normally that is six vendor accounts, six sets of keys and six SDKs. This is one URL. **What you can ask for** • "How much traffic does stripe.com get, where does it come from, and who competes for the same keywords?" • "Find 20 Series-B fintech companies in Germany and the heads of marketing there, with emails." • "Does ChatGPT mention our brand when someone asks for the best CRM — and what does it cite?" • "What is X saying about $NVDA today, and what did the stock actually do?" • "Search the web for this, then scrape the three best pages into markdown." **How to use it** Point any MCP client at https://mcp.aisa.one/mcp and sign in with OAuth — there is no key to create or paste. Then just ask: the agent calls search to find the right operation and use to run it. **Why this rather than the source** 26 sources behind one account and one bill — DataForSEO, Semrush, Ahrefs, Similarweb, Apollo, X/Twitter, Instagram, Reddit, Pinterest, YouTube, Tavily, Exa, Perplexity, Firecrawl, CoinGecko, Kalshi, Polymarket, AgentMail and more, 580+ operations. tools/list returns five tools, not 580, so the introduction does not eat your context window. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** One slice at a time: https://mcp.aisa.one/seo/mcp · /finance/mcp · /social/mcp · /search/mcp · /sales/mcp · /mail/mcp · /gtm/mcp, or a single provider like /twitter-api/mcp. Same account, fewer tools listed, and search still reaches everything. Full list at https://mcp.aisa.one/servers
Your agent needs app-store data — what an app looks like on the App Store and Google Play, what reviewers say, and what ranks for a search in a given country. **What you can ask for** • "What does this app's store listing look like, and how is it rated?" • "Pull recent reviews for this app and group the complaints." • "What apps rank for this search term in Japan?" • "List the top apps in this category on both stores." • "Compare this app's listing on iOS and Android." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-apps/mcp and sign in with OAuth — there is no key to create or paste. 37 tools: Apple App Store and Google Play app info, app lists, category listings, reviews and store search results, in live and queued forms, with categories, languages and locations for each. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the store listing here, then ask the same agent what the app's website ranks for — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Publish and manage HTML pages and multi-file static websites directly from Claude, ChatGPT, Cursor, Codex, and other AI agents via MCP. Streamable HTTP with OAuth 2.1 browser sign-in — no API key to copy.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to publish games through typed MCP tools, including creating games, uploading builds, defining achievements, attaching media, and publishing without human dashboard interaction.41Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to automate the PlayCanvas Editor directly through its built-in MCP client, covering projects, entities, scripts, assets, scenes, builds and version control. Agents can also launch the running app to capture screenshots, read logs, inspect live state and simulate input, verifying that scenes actually work.MIT
- AlicenseNot gradedqualityAmaintenanceAI-native open-source 2D game engine whose MCP server exposes every editor operation to coding agents as typed commands, so an agent can build, run, and verify a game inside the editor. It runs locally on macOS, Windows, and Linux with no cloud service or API key.55MIT
- FlicenseNot gradedqualityAmaintenanceLets AI agents drive the PlayCanvas Editor directly—creating and editing entities, scripts, assets, templates, animations, scenes, builds, and version control—and then launch the project to verify it actually runs. It also covers project management, viewport control, runtime input, logs, and screenshots, with the MCP client built into the Editor so no browser extension is needed.-
Glama MCP Gateway
Add one secure layer between your agents and this server.