Skip to main content
Glama

Vibe-Coding Hardware & Autonomous PCB Physical Synthesis MCP Server

calligraphy_preflight_audit

Inspect a .kicad_pcb file or .zip project bundle (including atopile/tscircuit/Altium/Allegro builds), verify outline/pad readiness, and return a deterministic 3-Lever NRE-anchored price quote ($149 vibe_micro for <=150 pads up to $1,495+ route_3d). Mode A (Zero-File Demo): Pass sample_id='2l_rp2040' (or '2l_stickhub', '4l_carrier'). Mode B (User's Local Board over Remote HTTP): Read the user's local .kicad_pcb, .dsn, .ato, or .tsx file and pass its contents in pcb_text + filename (or upload_b64 for .PcbDoc/.zip).

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "calligraphy_preflight_audit"
  }
}

Input Schema

NameRequiredDescriptionDefault
filenameNoboard.kicad_pcb
pcb_textNoRaw CAD file contents (.kicad_pcb, .dsn, .ato, .tsx, .xml) for remote HTTP MCP calls
sample_idNoOptional built-in sample board ID ('2l_rp2040', '2l_stickhub', '4l_carrier')
upload_b64NoBase64-encoded CAD file or .zip bundle for remote HTTP MCP calls
project_pathNoLocal stdio CLI path or built-in sample ID ('2l_rp2040', '2l_stickhub', '4l_carrier'). For remote HTTP MCP, read local files and pass 'pcb_text' or 'upload_b64' instead.
requested_skuNoroute_3d
rush_deliveryNo+35% Instant <45m Enclave Rush Turnaround
customer_emailNoEngineer email for 30-day ECO license matchingagent@customer.io
include_eco_passNo+50% 30-Day Unlimited ECO Re-Spin Pass

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description is the only behavioral source, and it does real work: it discloses that output is a deterministic NRE-anchored quote, anchors the price range ($149 for vibe_micro at <=150 pads up to $1,495+ for route_3d), and explicitly frames the operation as inspection/verification rather than mutation. Gaps remain around whether uploaded CAD content is stored or forwarded to a remote service, and whether the call has any side effects or cost.

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 core action and price promise before the two modes, and each sentence carries information the schema does not. It is dense and parenthetical-heavy in places (format lists, price anchors), but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no annotations and no output schema, the definition should describe the shape of the returned quote (tiers, line items, readiness verdict) and the data-handling expectations for a user's local board. It covers input modes thoroughly but leaves the return value and file-upload implications unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 78%, just under the threshold where the schema alone would carry the parameter burden, and the description adds real meaning for sample_id, pcb_text+filename, upload_b64, and project_path by tying each to a call mode. However, it only prices 2 of the 7 requested_sku enum values and says nothing about rush_delivery or include_eco_pass beyond what the schema descriptions already state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names specific verbs (inspect, verify, return a price quote) against a specific resource (a .kicad_pcb file or project bundle) and enumerates the accepted source formats. It is distinguishable from siblings like calligraphy_compile_board or calligraphy_route_pcb by the audit-plus-quote scope, though it never names an alternative explicitly.

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 Mode A vs Mode B split is genuine when-to-use guidance: pass sample_id for a zero-file demo, or supply pcb_text+filename / upload_b64 when working from the user's local board over remote HTTP. What is missing is any exclusion or routing advice toward the sibling tools, so the agent must infer that compile/route are separate steps.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.