Skip to main content
Glama

Create a game

create_application
Destructive

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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "title": "<title>",
      "engine": "<engine>"
    },
    "name": "create_application"
  }
}

Input Schema

NameRequiredDescriptionDefault
agentNoYourself: the coding agent filling this in (claude-app is the Claude chat or desktop app). none when the developer wrote the game without an agent, and then leave model and modelId out. Nobody checks the answer.
modelNoThe model you run on.
titleYesThe game’s title in English — Latin letters, digits, spaces and punctuation, up to 120 characters. Shown to players and moderators as-is.
engineYesThe engine the game was built with; js is plain JavaScript without one.
modelIdNoThe exact model you run on, as your runtime reports it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. If it is not in your context, look it up in your environment (Codex: turn_context.model in your session file, found by CODEX_THREAD_ID under ~/.codex/sessions); if you cannot find it, ask the developer. Do not leave it out unless agent is none. 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / modelId / description
      Previous value: -"The exact model you run on, as your runtime reports 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."New value: +"The exact model you run on, as your runtime reports it, e.g. claude-opus-5-5 or anthropic/claude-opus-5.5. If it is not in your context, look it up in your environment (Codex: turn_context.model in your session file, found by CODEX_THREAD_ID under ~/.codex/sessions); if you cannot find it, ask the developer. Do not leave it out unless agent is none. 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. Changed4 schema fields changed
    • changedInput schema / properties / agent / description
      Previous value: -"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)"New value: +"Yourself: the coding agent filling this in (claude-app is the Claude chat or desktop app). none when the developer wrote the game without an agent, and then leave model and modelId out. Nobody checks the answer."
    • changedInput schema / properties / engine / description
      Previous value: -"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)"New value: +"The engine the game was built with; js is plain JavaScript without one."
    • changedInput schema / properties / model / description
      Previous value: -"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)"New value: +"The model you run on."
    • changedInput schema / properties / modelId / description
      Previous 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."New value: +"The exact model you run on, as your runtime reports 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."
  3. Changed1 schema field changed
    • changedInput schema / properties / modelId / description
      Previous 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."
  4. Changed1 schema field changed
    • addedInput schema / properties / modelId
      Added 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"
      +}
  5. Changed4 schema fields changed
    • changedInput schema / properties / agent / description
      Previous value: -"The coding agent the game was made with: claude-code (Claude Code), codex (Codex), cursor (Cursor), kimi-code (Kimi Code Agent), grok-build (Grok Build), workbuddy (WorkBuddy), other (Other), none (No AI agent)"New value: +"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)"
    • changedInput schema / properties / agent / enum
      Previous value: -[
      -  "claude-code",
      -  "codex",
      -  "cursor",
      -  "kimi-code",
      -  "grok-build",
      -  "workbuddy",
      -  "other",
      -  "none"
      -]New value: +[
      +  "claude-code",
      +  "codex",
      +  "cursor",
      +  "antigravity",
      +  "opencode",
      +  "gemini-cli",
      +  "kimi-code",
      +  "grok-build",
      +  "workbuddy",
      +  "zcode",
      +  "claude-app",
      +  "chatgpt",
      +  "other",
      +  "none"
      +]
    • changedInput schema / properties / model / description
      Previous value: -"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), grok (Grok), kimi (Kimi), other (Other)"New value: +"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)"
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "claude-fable",
      -  "claude-opus",
      -  "claude-sonnet",
      -  "claude-haiku",
      -  "openai-astra",
      -  "openai-sol",
      -  "openai-luna",
      -  "openai-terra",
      -  "grok",
      -  "kimi",
      -  "other"
      -]New value: +[
      +  "claude-fable",
      +  "claude-opus",
      +  "claude-sonnet",
      +  "claude-haiku",
      +  "openai-astra",
      +  "openai-sol",
      +  "openai-luna",
      +  "openai-terra",
      +  "gemini-pro",
      +  "gemini-flash",
      +  "grok",
      +  "kimi",
      +  "qwen",
      +  "deepseek",
      +  "glm",
      +  "other"
      +]
  6. Changed4 schema fields changed
    • changedInput schema / properties / agent / description
      Previous value: -"The coding agent the game was made with: claude-code (Claude Code), codex (Codex), cursor (Cursor), other (another agent), none (no agent, written by hand)"New value: +"The coding agent the game was made with: claude-code (Claude Code), codex (Codex), cursor (Cursor), kimi-code (Kimi Code Agent), grok-build (Grok Build), workbuddy (WorkBuddy), other (Other), none (No AI agent)"
    • changedInput schema / properties / agent / enum
      Previous value: -[
      -  "claude-code",
      -  "codex",
      -  "cursor",
      -  "other",
      -  "none"
      -]New value: +[
      +  "claude-code",
      +  "codex",
      +  "cursor",
      +  "kimi-code",
      +  "grok-build",
      +  "workbuddy",
      +  "other",
      +  "none"
      +]
    • changedInput schema / properties / model / description
      Previous value: -"The model family behind that agent: claude (Claude), gpt (GPT), gemini (Gemini), other (another model)"New value: +"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), grok (Grok), kimi (Kimi), other (Other)"
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "claude",
      -  "gpt",
      -  "gemini",
      -  "other"
      -]New value: +[
      +  "claude-fable",
      +  "claude-opus",
      +  "claude-sonnet",
      +  "claude-haiku",
      +  "openai-astra",
      +  "openai-sol",
      +  "openai-luna",
      +  "openai-terra",
      +  "grok",
      +  "kimi",
      +  "other"
      +]
  7. Changed2 schema fields changed
    • addedInput schema / properties / agent
      Added value: +{
      +  "description": "The coding agent the game was made with: claude-code (Claude Code), codex (Codex), cursor (Cursor), other (another agent), none (no agent, written by hand)",
      +  "enum": [
      +    "claude-code",
      +    "codex",
      +    "cursor",
      +    "other",
      +    "none"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / model
      Added value: +{
      +  "description": "The model family behind that agent: claude (Claude), gpt (GPT), gemini (Gemini), other (another model)",
      +  "enum": [
      +    "claude",
      +    "gpt",
      +    "gemini",
      +    "other"
      +  ],
      +  "type": "string"
      +}
  8. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the description is not obligated to restate safety. It does add real context beyond them: the object is created in draft (not live) and titles are non-unique, which explains why retries can silently duplicate and ties directly to the non-idempotent hint.

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

Conciseness5/5

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

Three short sentences, each doing distinct work: what is created, what comes back, and how to recover from an ambiguous failure. The action and its return value are front-loaded, with no filler.

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

Completeness4/5

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

For a five-parameter creation tool with no output schema, the description covers the essential unknowns: the draft state and the returned id. The remaining gaps (auth requirements, what to do after creation, e.g. form/checklist steps) are minor and partly covered by siblings.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including agent, model, and modelId is already documented in the schema. The description adds no parameter-level meaning of its own, which is the baseline case when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Create a draft game') and pins the created state as a draft, which distinguishes it from update/publish siblings. It also names the return value ('its `id`') so the agent knows this is the entry point other tools depend on.

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

Usage Guidelines4/5

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

Gives an explicit recovery rule: if a call failed without a clear answer, check list_applications before creating again. That is concrete when-to-use-this-instead guidance. It does not say when not to create (e.g. when a game already exists and should be edited via update_application_form), which keeps it from a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources