Skip to main content
Glama

bg3_lint_stats

Validate a BG3 stat layer offline: detect invalid enum values, unused functor/condition/boost names, broken references to entries like statuses/spells/containers, and unknown action resources before load.

Instructions

Static stats lint for a mod layer, before the game ever loads it: enum values (Cooldown, StatsFunctorContext, RemoveEvents, SpellFlags, TickType...) and functor/condition/boost names that no other layer uses (the engine silently drops what it doesn't know), plus missing referenced entries (statuses, unlocked spells/interrupts, using, containers) and unknown action resources.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
layerYes
limitNo
layersNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose meaningful behavior: the check is static, the engine 'silently drops what it doesn't know' (explaining why the lint matters), and it lists the validation categories. It does not state whether the tool is read-only, whether it can mutate layer files, how findings are reported (errors vs warnings), or any cost/latency characteristics.

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?

A single dense sentence that front-loads the purpose ('Static stats lint for a mod layer') before the parenthetical detail. Every clause adds a distinct validation category, so little is wasted, though the parenthetical enumerations are heavy enough to slow reading.

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

Completeness3/5

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

The existence of an output schema relieves the description of explaining return values, and the enumerated check categories are a genuinely complete account of what is validated. The gap is on the input side: with 0% schema coverage, 3 undocumented parameters, and no annotations, the description leaves the agent without enough to call the tool confidently (e.g., layer vs layers semantics).

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

Parameters2/5

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

Schema description coverage is 0% across 3 parameters, so the description must compensate and does not. 'For a mod layer' loosely gestures at the required 'layer' argument, but the relationship between 'layer' and the optional 'layers' array, and the meaning/effect of 'limit' (default 200), are entirely unexplained in both schema and description.

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

Purpose4/5

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

The description states a specific verb and resource ('Static stats lint for a mod layer') and enumerates exactly what classes of problems it catches (enum values, unused functor/condition/boost names, missing referenced entries, unknown action resources). It is clearly distinguishable in spirit from the sibling bg3_lint_progressions, though it never names that sibling to make the boundary explicit.

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

Usage Guidelines3/5

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

Timing guidance is implied but useful: 'before the game ever loads it' tells the agent this is a pre-load check rather than a runtime test. However, there is no explicit when-to-use/when-not-to-use statement and no routing to bg3_lint_progressions or the bg3_test_* tools, so the agent must infer the alternative.

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