Skip to main content
Glama

lint_blueprint_graph

Read-onlyIdempotent

Detect compile-clean Blueprint graph bugs that appear only in play: eclipsed interface events, shadowed overrides, unreachable exec nodes, and missing returns.

Instructions

Read-only lint of a Blueprint's graphs for four authoring bugs that COMPILE CLEAN and only show up in play: eclipsed_interface_event and custom_event_shadowing_override (a node that looks like an override and is not, so the base contract never runs), unreachable_exec_node (a node no exec chain reaches from any entry) and function_exit_without_return (a live exec path that falls off the end of a value-returning function, so the caller silently gets false/0/None). Scans ALL ubergraph + function + macro graphs by default. HONESTY LIMIT: findings:[] is NOT a clean bill of health -- by deliberate design it never flags a merely unconnected exec output, so a Branch or Is Valid with dangling outputs can pass; check linked_to yourself with get_graph_nodes (compact=false) or get_node_pin_info.

Returns: { findings: [ { kind, node_id, node_title, graph_name, why, fix_hint, pin? } ] } -- kind is one of eclipsed_interface_event, custom_event_shadowing_override, unreachable_exec_node, function_exit_without_return (this one also reports the offending exec pin in "pin"); "why" carries a best-effort pointer at the likely upstream break. No counters and no coverage flags: an empty array only means these four rules found nothing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
graph_nameNoOptional single graph to analyze; when omitted, scans ALL ubergraph (event) pages + function graphs + macro graphs owned by this Blueprint. Interface-override graphs are NOT in that default set -- name one explicitly to lint it.
blueprint_nameNoName (or full object path) of the Blueprint to analyze.
blueprint_pathNoAlias of `blueprint_name` (same value, same meaning). Accepted because sibling tools spell this parameter differently; prefer `blueprint_name`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.4/5.0
Behavior5/5

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

While annotations already cover read-only, idempotent, and non-destructive behavior, the description adds substantial context beyond them: it discloses the default scan scope (all ubergraph, function, and macro graphs; interface-override graphs excluded unless named), a deliberate honesty limit (it never flags merely unconnected exec outputs, so findings:[] is not a clean bill of health), and explains the returned findings structure. This is rich behavioral disclosure not present in structured fields.

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 front-loaded with purpose and organizes information logically (purpose, bug definitions, default scope, honesty limit, returns). Every sentence provides useful detail, though the bug-definition and honesty-limit passages are lengthy and could be tightened slightly without losing meaning.

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?

For a complex lint tool with three parameters, no output schema, and four distinct bug rules, the description is complete: it covers purpose, default scope, a critical honesty limit, and the shape of the return value. The only minor omission is clarification that a blueprint identifier should be supplied, but the schema does not mark it required either, so the description is sufficient for correct invocation.

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%, and the schema already documents graph_name's default scan behavior and the blueprint_name/blueprint_path alias relationship. The description largely repeats these details (e.g., 'Scans ALL ubergraph + function + macro graphs by default') without adding new parameter meaning. Baseline 3 applies 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?

The description states a specific verb (lint) and resource (a Blueprint's graphs), then enumerates the four bug kinds it detects and explicitly distinguishes its scope from compile-time checks: bugs that 'COMPILE CLEAN and only show up in play'. An agent can immediately tell this apart from sibling tools like check_blueprint_errors or validate_blueprint.

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?

It gives clear context for when to use it (finding four specific play-only authoring bugs) and names alternative tools (get_graph_nodes with compact=false, get_node_pin_info) for checking a related but unflagged condition. However, it does not explicitly state when to prefer this over other blueprint validation siblings or provide when-not exclusions.

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

Deploy Server

Other Tools