Skip to main content
Glama

assert_spec

Read-only

Validate a 3D model against declared size, position, ratio, gap, contact, symmetry, inside, ground, clean, budget, and connected checks in one call, returning pass/fail with actual numbers and fixes.

Instructions

Write what the model must be, run all checks in one call, get pass or fail with the real numbers. State your expectations before you look at the result, then fix only the failures. Each check is a dict with "type" and optional "label". Types and fields: size {object, axis x|y|z, equals+tol | min | max, with_children?} world size in metres. position {object, axis, which min|max|center, equals+tol | min | max} world coordinate. ratio {a, b, axis, min | max | equals+tol} size of a divided by size of b (head vs body proportions). gap {a, b, min | max | equals+tol} distance between two meshes (0 if they overlap). contact {a, b, state touching|intersecting|apart|connected, max_depth?} 'connected' is touching or overlapping. symmetry {objects, axis, at?, tolerance?, max_unmatched_share?} mirror match of all vertices. inside {object, container, margin?} bounding box inside another's. on_ground {object, z?, tol?} lowest point of the object and its children. clean {object, ignore?} no open holes, loose parts, zero faces, inward normals. budget {names?, max_tris?, max_objects?, max_materials?, max_draw_calls?}. connected {names?, ground_z?} no floating groups. A failure shows 'actual', 'expected' and a 'fix' tool. A bad check or a missing object is reported as an 'error' and the rest still run.

Input Schema

NameRequiredDescriptionDefault
checksYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: a failure returns 'actual', 'expected' and a 'fix' tool, and a bad check or missing object is reported as an 'error' while the remaining checks still run. Error-isolation and response shape are disclosed; rate/permission behavior is not applicable here.

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-loaded with the purpose and workflow in the first two sentences, followed by a dense but necessary reference list of check types. Every line documents a distinct check, so the length is earned, though the block is heavy enough that some structure loss is unavoidable.

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, so the description must explain return values, and it does: pass or fail with real numbers, failure objects containing actual/expected/fix, and error reporting for invalid checks or missing objects. For a single-parameter, high-complexity validation tool this is complete.

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 coverage is 0% and the schema is a generic array of open objects, so the description carries the full burden. It does so thoroughly, documenting every check type with its fields, units (world size in metres, distance, max_depth, margin, tolerance, max_unmatched_share), and semantics such as 'connected' meaning touching or overlapping and gap being 0 on overlap.

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+resource: it runs a set of declarative assertions against the model and returns pass/fail with actual numbers. The enumeration of check types (size, position, ratio, gap, contact, symmetry, inside, on_ground, clean, budget, connected) makes it unmistakable against siblings like check_mesh, check_symmetry, check_contacts, and check_game_ready, which each cover a subset.

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?

Gives clear workflow guidance: state expectations before looking at the result, then fix only the failures, and use one call for all checks. That implicitly routes the agent here instead of the single-purpose check_* siblings, but it never explicitly names an alternative or an exclusion condition, so it falls short of a 5.

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