Skip to main content
Glama

Merge Assembly

merge_assembly

Construct an assembly from a manifest JSON: link component files, place instances with mates, recompute, and run validation gates for interference, BOM, and performance requirements.

Instructions

Construct-up an assembly from a manifest JSON (the coordinator's one call): create the doc, link each component by file path, place it, recompute, and run the gates. Component files resolve relative to the manifest's directory; links auto-reload, so re-running picks up updated components (deterministic, idempotent).

manifest shape: { "name": "gearbox", "root": "gearbox.FCStd", "components": {"": {"file": "rel/part.FCStd", "object": ""?, "envelope": {"min":[...],"max":[...]}?}}, "instances": [{"component":"", "name":""?, "placement": [x,y,z] | {position,axis,angle_deg}, "mate": {"child_iface","parent","parent_iface", "verify_align":{"child_iface","parent_iface"}?}?}], "mates": [{"child","parent","child_iface","parent_iface", "verify_align":{...}?}]? }

Placement positions anchors; mate-by-frame positions everything else by aligning published interface frames (see publish_interface).

Any component carrying a PERFORMANCE contract (declare_performance, #226) is gated on it too, with no manifest opt-in: the merge consults the verdict verify_performance last RECORDED on that part and never measures, so it stays synchronous and deterministic. A requirement measured as NOT met fails the merge; a requirement with no verdict yet is neither passed nor failed and rides in report["performance"]["skipped"] — "unverified" is never read as "fine".

Returns {assembly, doc, root, placed, gates:{interference, bom, envelope, interface_align?, typed?, requirements?, mobility?, performance?}, ok, requirements?, mobility?, performance?, children?, library?}. The performance gate and report block are absent entirely when no component declares a contract.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
manifestYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are minimal (not read-only, not destructive), so the description carries the burden—and it does so richly. It discloses that a document is created, components are linked by path, links auto-reload, behavior is deterministic and idempotent, and performance gating consults last-recorded verdicts rather than measuring live. The nuanced 'skipped not fine' semantics are explicitly spelled out.

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 long but front-loaded with the primary action, and every section earns its place: manifest schema, link/recompute behavior, performance gate semantics, and return shape. There is minimal fluff; even the warning 'unverified is never read as fine' is essential behavioral nuance. The structure makes a complex contract digestible.

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?

With no output schema, the description lists the full return object and notes when the performance block is absent. It also documents the manifest format and key behavioral guarantees. An agent has nearly everything needed to select and invoke the tool correctly; only malformed-manifest error handling is not mentioned, which is not essential for invocation.

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?

The schema only provides a required string 'manifest' with zero description coverage. The tool description fully compensates by specifying the entire manifest JSON shape, including components, instances, placements, mates, optional fields, and the performance contract handling. Field semantics such as placement anchoring versus mate-by-frame alignment are explained, making the single parameter unambiguous.

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 opens with a specific verb and resource—'Construct-up an assembly from a manifest JSON'—and then details the exact pipeline (create, link, place, recompute, run gates). It clearly distinguishes merge_assembly from sibling assembly tools like make_assembly or add_part by positioning it as the coordinator's one-call entry point.

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 gives clear context: it is the coordinator's one call, safe to re-run due to idempotency, and automatically gates on performance contracts without opt-in. It does not explicitly name alternative tools or exclusion cases, so it stops short of a 5, but the context is strong enough for an agent to decide when this is appropriate.

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