Skip to main content
Glama

Project Manage

project_manage

Stop running Godot projects, read or write project.godot settings, and set the main scene to make a project runnable.

Instructions

Project run/stop and project.godot settings.

Resource form: godot://project/info and godot://project/settings — prefer for active-session reads.

Ops: • stop() Stop the running project (game). Takes no params — call as project_manage(op="stop") or with params={}. Idempotent: succeeds with was_running=false if the project isn't running. Do NOT pass extra fields like force or reason inside params — only the registered keys are accepted (here, none). For multi-editor setups, pass session_id as a sibling of op/params, not inside params. • settings_get(key) Read a ProjectSettings key (e.g. "application/config/name"). • settings_set(key, value) Write a ProjectSettings key and persist to project.godot. Refuses the startup-execution keys (autoload/*, editor_plugins/*, application/run/main_scene, editor/run/main_run_args, editor/script/templates_search_path); use set_main_scene / autoload_manage(op="add") for the two that have a validated route. • set_main_scene(path) Set the project's main scene — the scene project_run(mode="main") boots and the engine loads at startup. Writes application/run/main_scene and persists to project.godot. path must be a res:// scene inside the project that already exists and loads as a PackedScene, so a scaffolded project can be made runnable without opening the generic startup-execution surface.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv3.2.5
    • changedInput schema / properties / op / enum
      Previous value: -[
      -  "settings_get",
      -  "settings_set",
      -  "stop"
      -]New value: +[
      +  "set_main_scene",
      +  "settings_get",
      +  "settings_set",
      +  "stop"
      +]
  2. Addedv3.1.4
  3. Removedv3.0.7
  4. First observedv2.9.1

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral disclosure burden and does so thoroughly. It discloses stop() idempotency and the was_running=false success behavior, strict rejection of extra params, configuration-key refusal, persistence to project.godot, and main-scene path validation. This is the kind of operational detail an agent needs before invoking a mutating tool.

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

Conciseness4/5

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

The description is organized, front-loaded, and uses clear headings and call-shape examples. It is somewhat long, but that length is justified by four distinct operations and the need to document validation and parameter restrictions. A few phrases, like the flat-parameter compatibility alias, could be trimmed without much loss.

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 four-operation mutating tool with no annotations, the description is nearly complete: it covers operation semantics, parameter constraints, persistence behavior, and the canonical invocation shape. The presence of an output schema means return values do not need to be documented in prose. It still does not mention prerequisites like whether a project must already be open, or what error behavior an agent should expect on failure.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate, and it does. Every op signature is spelled out: stop() takes no params, settings_get(key), settings_set(key, value), and set_main_scene(path), with notes on where session_id belongs and which keys are rejected. The params field itself is generic in the schema, so this documentation is essential and complete.

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

Purpose5/5

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

The description states a concrete scope: stopping a running project and reading/writing project.godot settings, with each operation listed as verb+target. It explicitly references sibling tools like project_run and autoload_manage, making the boundary between this tool and nearby tools clear. The initial 'run/stop' wording is slightly broader than the actual ops, but the detailed op list immediately resolves that ambiguity.

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?

The description gives useful routing guidance: prefer the resource form for active-session reads, use set_main_scene/autoload_manage for refused keys, and use project_run(mode="main") for running the project. It does not, however, provide a global decision rule for when project_manage should be chosen over project_run or game_manage in general. The exclusions it does provide are concrete and actionable.

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