Skip to main content
Glama

Calligraphy EDA MCP Server

Run Pre-Flight CAD Doctor & Instant Tier Quote

calligraphy_preflight_audit
Read-onlyIdempotent

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?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description's job is added context, and it delivers: deterministic pricing, concrete tier anchors ($149 vibe_micro through $1,495+ route_3d), and the +35% rush / +50% ECO modifiers. It also implicitly discloses that remote HTTP calls have no filesystem access, since the user must read local files and pass contents. It does not describe latency, failure modes, or what the audit report contains beyond 'readiness'.

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

Conciseness3/5

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

The core purpose is front-loaded, but the body is a single over-stuffed sentence with stacked parentheticals, SKU jargon, and marketing phrasing ('vibe_micro', 'route_3d', 'Enclave Rush'). The mode information is valuable yet would be far easier to scan as two short bullets.

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?

With nine optional parameters, no output schema, and no required fields, the definition should clarify the zero-argument behavior and what the audit returns; it only implies a quote is produced and never states the default path when nothing is supplied. Pricing behavior is well covered, but the 'CAD Doctor' verification output and the interplay of filename with pcb_text/upload_b64 are underspecified.

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

Parameters4/5

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

Schema coverage is 78%, so the baseline is 3, and the description adds real meaning on top: which sample_id values exist, which file extensions go in pcb_text vs upload_b64, and why project_path only works for local stdio. The pricing modifiers tied to rush_delivery and include_eco_pass are also explained in business terms. It adds little for customer_email beyond what the schema already states.

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?

The description names a concrete verb+resource pair: inspect a .kicad_pcb/.zip bundle, verify outline/pad readiness, and return a deterministic NRE-anchored price quote. It also enumerates the supported input families (atopile/tscircuit/Altium/Allegro), which makes the scope unambiguous. It never differentiates itself from nearby tools like audit_pcb_dfm_rules or analyze_kicad_pcb, so it stops 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is spelled out through two named modes with the exact parameter to supply in each: sample_id for the zero-file demo, pcb_text+filename or upload_b64 for a user board. It does not say when NOT to use it or which sibling to pick instead (e.g. DFM-only auditing vs full compile), so alternatives are left implicit.

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.

Resources