RackArchitect MCP
🏗️ RackArchitect MCP (@rack-mcp/*)
The Open-Source, Agent-First "Rack-as-Code" Planning, 5-Stage Validation, Parametric 3D-Print (.scad/.stl) & Live 2D/3D CAD Platform for 19-Inch Enterprise Racks, 10-Inch Mini-Racks & 6-Inch Micro-Homelabs
🌐 Launch Live 3D/2D Browser Demo · Quickstart · MCP Client Setup · 3D-Print (.SCAD / .STL) · Add Hardware Blueprint · Complete Handbook (DE)
🎯 Why RackArchitect MCP? (The Three Golden Laws)
Planning a compact 10-inch mini-rack (e.g., DeskPi RackMate T1/T2, Digitus SOHO) or a dense 19-inch homelab with AI agents used to fail for one reason: LLMs hallucinate physical geometry. They forget that a 55 mm Schuko plug on a rear PDU collides with a 182 mm Lenovo ThinkCentre M920q mounted in front, or that two fanless PoE switches stacked together create a thermal hotspot.
RackArchitect MCP solves this with three non-negotiable engineering laws:
LLMs Never Guess Geometry: Every spatial coordinate (
1 U = 44.45 mm), 3D Axis-Aligned Bounding Box (B_chassis+ dynamic plug clearance $\Delta Z_{\text{plug}}$), Catmull-Rom 3D cable spline, PoE budget DAG, and logarithmicdB(A)acoustic sum is computed deterministically in millimeters by@rack-mcp/core-domain.Single Source of Truth (
rack.yaml): Your entire rack state (devices, 3D-printed sub-U carrier slots, child mini-PCs, keystone couplers, cables, VLANs, and IP CIDRs) lives in a single, Git-friendly YAML file.Actionable Self-Correction Feedback: Whenever a placement or cable fails any of the 5 validation stages (26 closed
DiagnosticCodetypes), the engine returns structuredremediation_suggestionsso your AI agent fixes the collision, PoE overload, orCat5ebottleneck autonomously in the very next turn.
Related MCP server: AIDC AI Design Engine
🖼️ Generated CAD Blueprints (100% Deterministic SVG Output)
1. Dual-Row Engineering Elevation & Z-Depth Side Cutaway (elevation.svg)
Includes Equipment Schedule, Front Elevation (X, Y), Horizontally Mirrored Rear Elevation (W_panel - X - width), Cable Callout Lanes, and Right-Hand Z-Depth Cutaway (Z_min to Z_max with Front Glass Door -50 mm and Rear Wall +300 mm clearance checks):
2. 5-Layer Logical Pin-to-Pin Wiring Schematic with VLAN & IP CIDR Badges (wiring-schematic.svg)
🚀 30-Second Quickstart
Option A: Local Node.js (>= 20) & pnpm
# 1. Clone & install
git clone https://github.com/itAlex240/rack-architect-mcp.git
cd rack-architect-mcp
pnpm install
# 2. Build all 6 packages & run the 34 test suites
pnpm build
pnpm test
# 3. Launch the Live 3D/2D Web-Viewer & Sidecar on the 8U 10-Inch Reference Homelab
pnpm startOpen http://127.0.0.1:3100/ in your browser to inspect the 3D Digital Twin, mount devices from the Catalog Drawer, route 3D spline cables, and download .SCAD / .STL / .GLB / .SVG / BOM.md deliverables!
Option B: Docker (Zero Local Dependencies)
docker build -t rack-architect-mcp .
docker run --rm -p 3100:3100 rack-architect-mcp
# Open http://127.0.0.1:3100/Option C: CLI Validation & Headless CAD Export
# Validate any rack.yaml and print the ASCII Elevation Plan + Diagnostics
pnpm validate:demo
# Export elevation.svg, wiring-schematic.svg, BOM.md, rack-scene.glb, and all .scad + .stl 3D-print carriers
pnpm export:demo🤖 Connect Claude Desktop, Cursor, or Antigravity
Add rack_architect_mcp to your claude_desktop_config.json, .cursor/mcp.json, or Antigravity MCP settings:
{
"mcpServers": {
"rack_architect_mcp": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/rack-architect-mcp/packages/cli/dist/bin.js",
"--stdio",
"--port",
"3100",
"--project",
"/ABSOLUTE/PATH/TO/rack-architect-mcp/examples/10inch-homelab/rack.yaml"
]
}
}
}Whenever your AI agent starts the MCP server over stdio, it automatically launches the local WebSocket Sidecar at http://127.0.0.1:3100. Every tool call the AI executes (mount_equipment, connect_cables, modify_equipment, undo_redo) updates your 3D browser view in real time!
🖨️ Parametric 3D-Print Generator (.scad & .stl)
For every modular 3D-printed carrier (category: 'modular-carrier'), @rack-mcp/exporters automatically generates:
Parametric OpenSCAD (
.scad): Customizable wall thickness, EIA-310 oval rack ears (9.5 × 6.5 mm), sub-U device bays (+0.35 mmtolerance for Lenovo ThinkCentre M920q, Ubiquiti UCG-Max, JetKVM), Keystone snap-in clips, side support rails, and rear PSU brick cradles with Velcro slots.Ready-to-Slice Watertight ASCII
.stl: Computed directly in memory via 2D grid subdivision—drop straight into OrcaSlicer, Bambu Studio, or PrusaSlicer!
Pre-generated reference files in examples/10inch-homelab/:
🖥️ Live 3D Digital Twin & 2D CAD Web-Viewer (127.0.0.1:3100)
Interactive Catalog & Cable Patch Builder (
+ Catalog & Cable Builder):Search all 20 hardware blueprints, filter by
10inch/19inch/sub-module, selectTarget U+FRONT/REAR, and mount with 1 click.Patch 3D Catmull-Rom cables between any two ports with optional
VLAN ID(1..4094) andIP CIDR(10.10.20.0/24) annotations.
3D Engineering HUD:
Camera Presets:
Perspective,Front Ortho,Rear Ortho,Left CutawayToggles:
X-Ray Chassis(inspect internal mini-PCs & PSU bricks),Clearance Boxes($\Delta Z_{\text{plug}}$ wireframes),Cable SplinesExplode Z (0..140 mm)slider to separate front and rear assemblies
W3C WebMCP Ready: Automatically registers all 11 tools on
document.modelContextwhen opened in a WebMCP-capable browser.
🛡️ 5-Stage Validation Engine (All 26 Diagnostic Codes)
Stage | Diagnostic Codes | What Is Checked Deterministically? |
1. Bounds & Slots |
| Rack U height, panel width ( |
2. 3D AABB & Doors |
| Millimeter-exact 3D AABB overlap between front and rear equipment including dynamic plug clearances ( |
3. Power & PoE DAG |
| Full electrical DAG from UPS/PDU to switches, external power bricks (Lenovo 135W Slim-Tip), and PoE PSE/PD budgets ( |
4. Cables & Speed |
| Connector compatibility, |
5. Thermal & Acoustic |
| Opposing airflow ( |
📦 Monorepo Architecture (packages/*)
Package | Description |
Pure TypeScript/Zod schemas, 3D coordinate transformer, AABB collision solver, 5-stage validator, and clamped Catmull-Rom 3D spline router (zero Node/DOM dependencies). | |
20 YAML hardware blueprints ( | |
| |
MCP server ( | |
React 19 + Three.js ( | |
Unified |
🤝 Contributing & Adding Hardware Blueprints
Want to add your favorite 10-inch switch, mini-PC, or 3D-printed carrier? You can add a new YAML blueprint in under 2 minutes—see CONTRIBUTING.md!
📄 License
Released under the MIT License.
Available Tools
11 toolsconnect_cablesB
Connect one or more cables between device ports, computing 3D Catmull-Rom routes, commercial length bins, and PoE/power DAG status.
| Name | Required | Description | Default |
|---|---|---|---|
| cables | Yes | List of cable connections to route and validate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries most of the burden. It usefully discloses the side effects the agent may not expect — 3D Catmull-Rom route computation, commercial length-bin selection, and PoE/power DAG validation — which is real value beyond the annotations. However, it says nothing about batch atomicity (does one bad cable abort all?), what errors look like, or whether existing connections are rejected or overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with the core action front-loaded and zero filler. The computed-output clause is informative rather than padding, though 'commercial length bins' is jargon an agent may not parse without domain knowledge.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch mutation with a deeply nested schema and no output schema, the definition covers what it does but omits failure semantics, whether the operation is all-or-nothing, and whether computed route/PoE results are returned or only persisted. Those gaps matter for an agent deciding how to sequence a multi-cable call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested cable object's fields (cable_type enum, vlan_id, ip_cidr, face, preferred_portal_u) are all documented in-schema. The description only conveys the batch nature ('one or more cables') and the port-endpoint model, so it sits at the expected baseline without adding field-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Connect ... cables between device ports') that an agent can immediately distinguish from the sibling disconnect_cables. The trailing clause also states what the tool computes (routes, length bins, PoE/power DAG), which sharpens the purpose beyond a plain write. It stops short of explicitly contrasting with disconnect_cables or validate_rack, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, when-not-to-use, or alternative routing is given. The agent is left to infer that this is the create path versus disconnect_cables for removal and validate_rack for checking, and nothing is said about prerequisites such as whether the equipment must already be mounted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
define_custom_blueprintA
Register and persist a custom hardware blueprint when planning with unlisted equipment.
| Name | Required | Description | Default |
|---|---|---|---|
| blueprint | Yes | Complete hardware catalog blueprint specification. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals a write operation, and the description adds that the blueprint is registered and persisted. However, it does not disclose duplicate-slug behavior, validation requirements, whether existing entries can be overwritten, or other operational side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no wasted words. It leads with the action and resource, then immediately adds the qualifying usage condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is extremely rich and fully documents the blueprint object, so the description need not repeat parameter details. However, for a complex write tool with no output schema, the description is minimal and omits workflow context such as how the registered blueprint becomes available to other tools or how conflicts are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single top-level parameter, blueprint, is documented with 100% schema coverage and extensive nested descriptions. The tool description adds no parameter-specific meaning, so the baseline of 3 is appropriate when the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and resource: 'Register and persist a custom hardware blueprint.' It also scopes it to 'unlisted equipment,' which implicitly separates it from sibling catalog lookup tools, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage condition: use this 'when planning with unlisted equipment.' That tells the agent when this tool is appropriate, but it does not explicitly state what to do for listed equipment or name an alternative such as search_catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_cablesA
Disconnect cables by cable_id or remove all cables attached to a device instance_id.
| Name | Required | Description | Default |
|---|---|---|---|
| cable_ids | No | Specific cable_id values to disconnect. | |
| instance_id | No | Device instance_id whose attached cables should all be disconnected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is not read-only, and the description adds useful scope by clarifying that instance_id causes ALL attached cables to be disconnected, which is a materially destructive bulk operation. However, it does not mention irreversibility, required device state, permissions, or partial-failure behavior for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. Both modes are stated compactly and every phrase contributes to understanding the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core action is clear, but with zero required parameters the description should clarify what happens if both cable_ids and instance_id are omitted or provided together. For a destructive mutation with no output schema and minimal annotations, this leaves an important behavioral gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself describes both cable_ids and instance_id. The description restates their purpose but adds no extra semantics such as precedence when both are provided or behavior when neither is supplied, so it meets the baseline rather than exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Disconnect cables') and clearly covers both operating modes: by cable_id or by device instance_id. It is easy to distinguish from connect_cables, though it does not explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lays out the two usage modes directly: pass specific cable_ids to disconnect individually, or pass an instance_id to remove all attached cables. It gives clear context for selecting an input but does not state exclusions, prerequisites, or whether both parameters may be combined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_deliverablesC
Generate 2D elevation SVG, orthogonal wiring schematic SVG, Markdown BOM, and 3D GLB deliverables.
| Name | Required | Description | Default |
|---|---|---|---|
| formats | No | Deliverable formats to export. | |
| output_dir | No | Optional target directory where deliverable files will be written. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, so the agent knows this is a write operation, but the description adds nothing about what is written to disk, where, whether existing files are overwritten, or what happens if output_dir is omitted. For a file-emitting mutation tool with only a bare readOnlyHint, this leaves the behavioral profile under-disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is efficient. However, the terseness comes at the cost of leaving out two supported formats and any mention of the output directory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-writing tool with no output schema, the description should signal the return shape (e.g. list of written paths) and write/overwrite semantics but does neither. Combined with the incomplete format enumeration, an agent cannot fully anticipate the effect of calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented structurally, giving a baseline of 3. The description lists four of the six format options (omitting carrier-scad and carrier-stl) and says nothing about output_dir, so it adds only partial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (generate/export) and enumerates the resource types produced (elevation SVG, wiring SVG, BOM Markdown, GLB). An agent can tell this is the output-generation step versus sibling tools like validate_rack or get_device_blueprint. It stops short of naming itself as the terminal step in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this versus siblings, or what prerequisites exist (e.g. must a rack be defined/mounted/validated first). The implied position at the end of a design workflow is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_device_blueprintARead-only
Retrieve expanded port coordinates, electrical capabilities, and modular carrier slot layouts for a specific hardware slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Exact hardware catalog blueprint slug to retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe retrieval operation, and the description adds useful scope by naming the returned data categories. However, it does not mention error behavior for an unknown slug, rate limits, or other operational context, so the additional behavioral detail is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant or filler text. It communicates the action, target, and returned data efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one fully described parameter and annotations covering safety, the description is largely complete. Because there is no output schema, it helpfully lists the returned data categories, though it does not describe the exact return structure or error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter is fully documented in the schema as an exact hardware catalog blueprint slug, giving a baseline of 3. The description's 'specific hardware slug' reinforces but does not add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') and resource ('device blueprint') and enumerates the data returned, making the tool's purpose clear. It does not explicitly differentiate from siblings such as search_catalog or define_custom_blueprint, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a specific hardware slug' implies the tool is used when an exact catalog slug is already known, but it gives no explicit when-to-use guidance, exclusions, or alternatives such as using search_catalog first. Usage is therefore only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_rackCDestructive
Initialize rack mechanical standard, U height, rail depth, and enclosure clearances.
| Name | Required | Description | Default |
|---|---|---|---|
| standard | Yes | EIA-310-D or homelab rack width standard. | |
| u_height | Yes | Total usable rack height in U (1U = 44.45mm). | |
| project_name | No | Human-readable project name. | Rack Project |
| rail_depth_mm | Yes | Front-to-rear mounting rail depth in millimeters. | |
| enclosure_type | No | Physical rack enclosure style governing front door clearance checks. | open-frame |
| rear_clearance_mm | No | Clearance in mm behind rear rails. | |
| front_door_clearance_mm | No | Clearance in mm between front rails and door. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, yet the description says nothing about overwriting an existing rack definition, losing previously mounted equipment references, or permission requirements. For a destructive mutation tool, this is a substantial gap; the description adds no behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the key fields front-loaded and no filler. It could be marginally sharper by clarifying that the clearances refer to front/rear door clearances rather than 'enclosure clearances' as an abstraction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 7-parameter destructive initialization tool with no output schema needs to say what state is created or replaced and how it relates to sibling setup tools. The description omits the overwrite consequence, defaults behavior, and ordering relative to mount_equipment, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including enums and defaults) is already documented, establishing a baseline of 3. The description names some fields generically ('U height, rail depth, enclosure clearances') but adds no semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Initialize) and resource (rack) plus the configurable dimensions: standard, U height, rail depth, clearances. It is distinguishable from siblings like mount_equipment and validate_rack, though 'initialize' leaves mild ambiguity about whether it creates persistent rack state or just sets configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to call this versus siblings, and no prerequisites stated. The word 'Initialize' weakly implies a first setup step, but nothing tells the agent it must precede mount_equipment or that re-calling replaces prior configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_equipmentB
Move, rename, or remove an existing mounted device instance and recalculate all 3D cable paths.
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | New mounting face when moving a rackmount device. | |
| action | Yes | Modification operation to apply. | |
| slot_id | No | Target slot_id inside parent_carrier_id when moving a sub-module. | |
| hostname | No | New hostname when renaming a device. | |
| new_face | No | Alias for face when moving a rackmount device. | |
| u_position | No | New 1-indexed U position when moving a rackmount device. | |
| instance_id | Yes | Target mounted device or sub-module instance_id. | |
| new_hostname | No | Alias for hostname when renaming a device. | |
| new_u_position | No | Alias for u_position when moving a rackmount device. | |
| parent_carrier_id | No | Target parent carrier instance_id when moving a sub-module. | |
| remove_connected_cables | No | Whether to automatically disconnect cables attached to a removed device. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the burden of disclosing mutation behavior. It does mention cable-path recalculation, but omits the significant destructive default in the schema (remove_connected_cables=true means attached cables are disconnected on remove), and says nothing about reversibility or required preconditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero filler, with the operation set and the side effect both front-loaded. Nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema, the description is thin: it does not state what is returned, whether the operation is undoable via undo_redo, or that removal disconnects cables by default. An agent could call it correctly on the happy path but could easily trigger unintended cable deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only echoes the action enum values and adds no meaning about parameter interactions, such as which fields apply to which action or how the aliases (new_hostname/face/u_position) relate to their base fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three specific verbs (move, rename, remove) against a specific resource (an existing mounted device instance) and adds the side effect of recalculating 3D cable paths. The word 'existing' implicitly separates it from mount_equipment, though the sibling is not named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb list: use it when a device is already mounted and needs to be repositioned, renamed, or taken out. There is no explicit when-not guidance and no routing to adjacent tools such as disconnect_cables, unmount, or undo_redo.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mount_equipmentA
Mount a device onto a rack unit or into a modular carrier slot and run the 5-stage validation engine.
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | Mounting or port face relative to the rack or chassis. | front |
| slot_id | No | Target slot_id inside parent_carrier_id when mounting a sub-module. | |
| hostname | No | Logical hostname or label for this device instance. | |
| u_position | No | 1-indexed target rack unit when mounting directly onto the rack. | |
| instance_id | Yes | Unique instance identifier for this mounted device. | |
| blueprint_slug | Yes | Hardware catalog blueprint slug to instantiate. | |
| parent_carrier_id | No | Instance ID of the parent modular-carrier when mounting a sub-module. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the bulk of disclosure. Saying it 'runs the 5-stage validation engine' usefully signals the call may be rejected, but it never says what is validated, whether the mount is atomic on partial failure, or what state is left behind after a failed stage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the actions first, then the validation side effect. No padding, though the '5-stage' detail is a teaser that earns its place only if the stages are explained elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description covers what it does and flags that validation runs. What is missing is failure/state behavior and the mutual exclusivity of the two mounting targets, which matters because 7 parameters must be supplied with 100% schema coverage but no cross-parameter guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all 7 parameters are already documented, establishing a baseline of 3. The description only adds the conceptual mapping of 'rack unit' to u_position and 'modular carrier slot' to parent_carrier_id/slot_id, with no conflict rules (e.g., that u_position and slot_id are mutually exclusive targets).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (mount) and resource (device onto a rack unit or carrier slot), plus the two mounting modes. It is clearly distinct from modify_equipment and init_rack, though it never names a sibling to route agents away from an update path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: mount when instantiate-ing a new device from a blueprint, and the choice between rack-unit vs. carrier-slot mounting is hinted at. There is no explicit when-not, no prerequisites (e.g., blueprint/parent carrier must already exist), and no pointer to modify_equipment for changing an existing instance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_catalogCRead-only
Filter hardware blueprints by search query, form factor, category, maximum depth, minimum PoE budget, or slot compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free-text search filter matching manufacturer, model, or slug. | |
| category | No | Primary functional category of the hardware unit. | |
| mount_type | No | Hardware form factor or mounting mechanism filter. | |
| form_factor | No | Hardware form factor or mounting mechanism filter. | |
| max_depth_mm | No | Maximum allowed chassis depth in millimeters. | |
| accepted_slot_type | No | Sub-module slot compatibility token (e.g., "mini-pc-1liter", "standard-keystone"). | |
| min_poe_budget_watts | No | Minimum required PoE power budget in watts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower, yet the description adds almost nothing beyond the filter list. It does not state whether multiple filters combine with AND semantics, whether results are ordered or limited, or what an empty match returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and the filter dimensions after; nothing is redundant or padded. It is efficient, though one additional clause on combination semantics would have earned its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read-only filter tool with fully documented schema and annotations, this is adequate to invoke correctly. Gaps remain on result behavior (ordering, limits, empty results) which the description cannot defer to an output schema that does not exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enum values for category and form_factor, so the schema carries parameter meaning. The description merely re-lists those same fields in prose and adds no filtering semantics (combination logic, units, matching behavior) beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Filter hardware blueprints") and enumerates the filter dimensions, which distinguishes it from get_device_blueprint (single lookup) and define_custom_blueprint (creation). It stops short of explicitly naming a sibling, but the search/filter intent is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given: nothing says whether this must be called before mount_equipment, whether an empty result set is expected, or how this differs from get_device_blueprint. The list of filters implies a search use case but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_redoA
Revert the most recent rack state mutation (undo) or reapply a reverted mutation (redo).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | History traversal direction: undo reverts the previous mutation, redo reapplies it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the single annotation: undo reverts the most recent mutation and redo reapplies a reverted mutation. However, it omits important mutation-related details such as whether the redo history persists, error behavior when nothing exists to undo/redo, or authorization constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that defines both actions without any wasted words. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with full schema coverage and no output schema, the description gives enough for an agent to call it correctly. Minor gaps remain around edge cases and mutation scope, but the core behavior is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'action' parameter already has an enum and a description explaining undo/redo semantics. The description mirrors that information rather than adding format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specific verbs and resource: 'Revert the most recent rack state mutation' for undo and 'reapply a reverted mutation' for redo. It is clear enough to distinguish from sibling tools like mount_equipment or connect_cables, though it doesn't enumerate which rack mutations are covered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the action enum and the phrase 'most recent rack state mutation', but there is no explicit guidance on when to use undo versus redo, prerequisites, or what happens when there is no history. No alternatives are discussed, though none of the listed siblings serve this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_rackBRead-only
Run the full 5-stage deterministic constraint solver, generate an ASCII front/rear elevation plan, and return diagnostics with self-correction remediation suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read operation, and the description does not contradict that. It adds useful context that the solver is deterministic and that the output includes ASCII elevations plus self-correction remediation text, but says nothing about what happens on failure, whether all racks or just the current one are checked, or how large the ASCII output may be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; each clause adds a distinct output (solver run, ASCII plans, diagnostics). The phrase '5-stage deterministic constraint solver' is jargon the agent cannot act on, which is the only wasted bytes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return-value burden, and it partially does by naming diagnostics, remediation suggestions, and ASCII elevations. It leaves unclear what is being validated and whether the ASCII plan appears in the result or is a side effect, which matters for a validation tool the agent is expected to act on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema imposes no semantic burden and the baseline of 4 applies. The description correctly implies a no-argument, state-based invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names three concrete actions — run the constraint solver, generate ASCII front/rear elevation plans, return diagnostics with remediation — which is far more specific than a restatement of the name. The gap is that the object being validated is never stated: with zero parameters it presumably validates the current in-memory rack state, but the agent must infer that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of adjacent siblings like export_deliverables (which also produces deliverables) or init_rack/mount_equipment (which presumably must precede a validation run). The agent has to guess where this fits in the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v0.1.0- First observed
connect_cables - First observed
define_custom_blueprint - First observed
disconnect_cables - First observed
export_deliverables - First observed
get_device_blueprint - First observed
init_rack - First observed
modify_equipment - First observed
mount_equipment - First observed
search_catalog - First observed
undo_redo - First observed
validate_rack
TDQS
Scored across 11 tools
Most tools target a distinct resource+action pair: blueprint retrieval vs. catalog search vs. rack init vs. mount/modify vs. connect/disconnect. The only mild overlaps are mount_equipment vs. modify_equipment (both can reposition a device) and get_device_blueprint vs. search_catalog (both surface hardware info), but the descriptions make the intended split reasonably clear.
Nearly all tools follow a clean verb_noun pattern (get_device_blueprint, init_rack, mount_equipment, connect_cables, validate_rack). The lone deviation is undo_redo, which fuses two verbs into one name, plus minor verb variety (init vs. define), but overall the convention is predictable.
Eleven tools is squarely in the well-scoped range for a rack-design domain, with no redundant tools or obviously trivial filler. Each tool maps to a distinct stage of the workflow: catalog, blueprint, init, mount, wire, validate, export, undo.
The lifecycle is well covered end-to-end: discovery, custom blueprints, physical mounting, cabling, validation, deliverables, and undo/redo. The main gap is a read-only state inspection tool (e.g. get_rack_state / list_mounted_devices) so an agent must infer current contents from validate_rack diagnostics or an export.
Maintenance
Related MCP Connectors
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Find drawer presets and create printer-aware Gridfinity baseplate configurations.
3D printing: printable models, calculators, troubleshooting wiki, build guides, AI 3D + CAD design.
Exact-dimension geometry for AI agents: free STEP/STL files, dimension sheets, mating fit data.
Related MCP Servers
AlicenseAqualityAmaintenanceLocal-first MCP server that lets AI agents design Cisco-style networks and generate L1/L2/L3 topology diagrams, device tables, and AI-ready context files.1812413Apache 2.0- AlicenseAqualityCmaintenanceDeterministic AI data-center design tools for sizing, validation, and conceptual rack/site layouts. Supports NVIDIA Hopper, Blackwell, and Rubin profiles. Calculations require a registered AIDC API key; results preserve warnings, RFIs, and pending validations.33MIT
- AlicenseAqualityAmaintenanceEnables engineers to estimate LLM costs, check GPU VRAM fit, audit MCP configs for security risks, and analyze network device config changes and compliance—all locally, with no account or telemetry.7MIT
- AlicenseAqualityBmaintenanceEnables generating parametric 3D-printable parts from OpenSCAD/CadQuery models, exporting STL/3MF files, running DFM checks, and retrieving Bambu X1 Carbon starting profile notes.8MIT