Skip to main content
Glama

project_validate

Read-only

Detect broken Godot project references after moving, renaming, or deleting files. Finds missing scenes, resources, autoloads, main scene, and stale UIDs before runtime.

Instructions

Find references that no longer resolve, project-wide: scene and resource dependencies pointing at moved or deleted files, missing autoload scripts, and a missing main scene. Returns: broken references with the file that holds each, plus stale UIDs (Godot falls back to the text path and warns). WHEN TO CALL: after moving, renaming or deleting files. Nothing else reports these until the reference is loaded at runtime. Uses the engine's own resolution: a reference whose UID still resolves is not broken. Script preload()/extends paths are compile errors - gdscript_diagnostics reports them. Requires a Godot binary; runs no project code.

Input Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.2.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and openWorldHint=false; the description adds substantial context beyond that, including the resolution rule ('a reference whose UID still resolves is not broken'), stale-UID fallback behavior with a runtime warning, the Godot-binary prerequisite, and that it runs no project code.

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

Conciseness4/5

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

Front-loads purpose, then return contents, then the when-to-call trigger, then edge cases. It is dense with seven-plus clauses, but each sentence carries distinct information; only the tight packing keeps it from a 5.

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

Completeness5/5

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

With no output schema, the description covers what is returned (broken references plus the file holding each, and stale UIDs). Annotations cover the safety profile, and the zero-param surface leaves no gaps for an agent calling it correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly implies a whole-project scan with no filtering arguments, and there is nothing further to document.

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 with scope ('Find references that no longer resolve, project-wide') and enumerates the failure classes it targets (scene/resource deps, missing autoloads, missing main scene). It explicitly distinguishes itself from gdscript_diagnostics for compile-error paths, so an agent can tell it apart from siblings without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('WHEN TO CALL: after moving, renaming or deleting files') and notes that nothing else surfaces these until runtime. It also routes overlapping cases to the alternative tool: preload()/extends compile errors go to gdscript_diagnostics.

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