Skip to main content
Glama

merge_assembly

Build a complete assembly from a JSON manifest: create the document, link and place components, recompute, and run all design gates in one deterministic call.

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.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and delivers: idempotency and determinism ('links auto-reload, so re-running picks up updated components'), synchronous gating semantics (verdict consulted, never measured), and the precise failure rule ('A requirement measured as NOT met fails the merge; no verdict is neither passed nor failed'). It also discloses the absence behavior of the performance gate/report block.

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 one-line purpose, then the manifest shape, then gating semantics and the return object in a logical order. Dense but every block earns its place; only minor markdown pressure from the nested manifest pseudo-schema keeps it from a 5.

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 single-parameter coordinator with no output schema and no annotations, the description supplies the manifest contract, precondition dependencies, failure/skip semantics, idempotency guarantee, and the full return shape. An agent could invoke this correctly without reading any other source.

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 declares only an opaque string manifest, so the description must compensate — and it does with a full manifest shape including components, instances, placement forms (array vs position/axis/angle_deg), mate/verify_align, and resolution rules ('files resolve relative to the manifest's directory'). This is stronger than most schemas would provide.

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 statement ('Construct-up an assembly from a manifest JSON') and immediately scopes it as 'the coordinator's one call', which distinguishes it from sibling primitives like add_part, make_assembly, and interference_check. An agent can tell exactly what this tool owns without opening the schema.

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 names related tools for preconditions (publish_interface, declare_performance, verify_performance) and clarifies that mates populate placement rather than requiring explicit positions. It doesn't explicitly say when not to use it versus make_assembly or validate_manifest, so no full exclusion guidance, but the coordinator framing is strong context.

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