Skip to main content
Glama

Declare Intent

declare_intent
Destructive

Record the functional invariants a part must keep satisfying, so they can be re-checked after every edit. Declare watertightness, airflow paths, or required faces as a persistent contract in the model.

Instructions

Record the functional invariants a part must keep satisfying, so they can be re-checked after every edit (see verify_intent). Persists in the .FCStd as a JSON property bag (AD_Intent); one contract per part — re-declaring replaces.

handle: the part. contract: a dict with any of these (declare at least one): watertight (bool) require check_shape's watertight_solid verdict. airtight_path (dict) {inlet, outlet, min_aperture_mm2?}; each port is a face tag / 'FaceN' / int / declared role-or-name. required_faces (list) face tags / 'FaceN' / declared role-or-names that must still resolve (catches a deleted/drifted face).

Returns {handle, contract} — the stored contract.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
handleYes
contractYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark this as destructive (destructiveHint=true), and the description adds value by specifying the exact destructive behavior: 'one contract per part — re-declaring replaces.' It also discloses the persistence mechanism (JSON property bag AD_Intent in the .FCStd), which is useful behavioral context beyond the annotation.

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

Conciseness5/5

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

The description is moderately long but every sentence earns its place: it states purpose, persistence, replacement semantics, and a compact but complete contract schema breakdown. The use of code-fenced parameter details makes it scannable and well-structured. There is no redundant or promotional language.

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 tool with complex nested contract input and no output schema, the description covers the return value ('Returns {handle, contract}'), the storage location, replacement behavior, and references to related tools (check_shape, verify_intent) that supply necessary context. An agent can invoke it confidently without needing further clarification.

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?

With schema_description_coverage at 0%, the description fully compensates by detailing both parameters: 'handle' is identified as the part, and 'contract' is explained as a dict with specific recognized keys (watertight, airtight_path, required_faces), their types, and the constraint to declare at least one. This far exceeds what the bare input schema provides.

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 action ('Record the functional invariants'), the target resource ('a part'), and the purpose ('so they can be re-checked after every edit'). It also distinguishes itself from verify_intent by explicitly linking the recorded invariants to that companion tool. This is a clear, differentiated purpose statement.

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?

The description establishes a clear workflow context: invariants are recorded so they can be re-checked after every edit, with a direct pointer to verify_intent. It also clarifies the overwrite behavior ('re-declaring replaces'), which guides when to call it again. However, it does not explicitly name alternative tools or say when not to use it, so it lacks an explicit exclusion.

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