Skip to main content
Glama

Lint Project File

lint_project_file
Read-onlyIdempotent

Checks a .xojo_code or .xojo_window file for errors like unbalanced #tag pairs and warnings such as unescaped Default values or out-of-order blocks so you can fix them before reverting.

Instructions

Checks a .xojo_code or .xojo_window file on disk for mistakes the IDE reports badly or not at all. Errors are unbalanced #tag/#tag End pairs, which break the file. Warnings are a constant Default value with characters left unescaped, which can silently truncate it, and things Xojo loads but resolves on its own terms: blocks out of order or after #tag ViewBehavior, and a Flags value that disagrees with the visibility keyword, where the warning says which visibility Xojo will use. Run it after editing a project file directly and before revert_project. Returns 'No issues found' or a count and one 'error|warning: line : ' per finding; findings, errors included, are a normal result, and only a file it cannot read or one of another type fails the call. It reads the file only and needs no IDE.

Input Schema

NameRequiredDescriptionDefault
pathYesAbsolute path to the .xojo_code or .xojo_window file; get_project_info gives the project directory

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv3.7.1
    • changedInput schema / properties / path / description
      Previous value: -"Absolute path to the .xojo_code or .xojo_window file"New value: +"Absolute path to the .xojo_code or .xojo_window file; get_project_info gives the project directory"
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

With annotations already declaring readOnly/idempotent/non-destructive/closed-world, the description still adds real value: it defines the error and warning classes, states that findings—errors included—are a normal result rather than a failure, and clarifies that only an unreadable or wrong-type file fails the call. That failure-mode disclosure is exactly the context annotations cannot convey.

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

Conciseness4/5

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

Purpose is front-loaded and every sentence carries information, but the warnings sentence is a long run-on ('and things Xojo loads but resolves on its own terms: blocks out of order or after #tag ViewBehavior, and a Flags value...') that could be split or tightened for faster scanning.

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

Completeness5/5

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

No output schema exists, and the description compensates fully by describing the return format ('No issues found' or a count plus one 'error|warning: line <n>: <message>' per finding) and the failure conditions. Nothing needed to call and interpret it correctly is missing.

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

Parameters3/5

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

Only one parameter, and schema description coverage is 100%, with the schema already telling the agent to use get_project_info for the project directory. The description adds no syntax or format detail beyond saying the target is a file on disk, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (checks a .xojo_code or .xojo_window file on disk) and scopes it as catching what the IDE reports badly or not at all, which distinguishes it from the sibling analyze_project. An agent can tell what it does and on what artifact 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.

Usage Guidelines5/5

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

Explicitly says when to run it ('after editing a project file directly and before revert_project'), naming a sibling in the workflow sequence. The 'reads the file only and needs no IDE' clause also tells the agent this is an offline check, complementing the live-IDE siblings.

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