Skip to main content
Glama

calligraphy_route_pcb

Route and synthesize a PCB from samples, local files, or uploaded CAD via Calligraphy EDA; check for zero opens/DRC and return payment instructions.

Instructions

Alias for calligraphy_compile_board: synthesize and route a PCB through Calligraphy EDA (0 opens, 0 DRC) and return Stripe, Coinbase Pay (x402), and watch-only USDT/USDC payment instructions. Mode A (Zero-File Demo): Pass sample_id='2l_rp2040' (or '2l_stickhub', '4l_carrier'). Mode B (User's Local Board): Pass a local file path in project_path (stdio mode) or 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_route_pcb"
  }
}

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').
requested_skuNoroute_3d
customer_emailNoagent@customer.io

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose a meaningful side effect that the schema cannot convey: the call returns Stripe, Coinbase Pay (x402), and watch-only USDT/USDC payment instructions, which signals a commerce step. However, it says nothing about whether the job is asynchronous (a separate get_job_status sibling implies it is), whether uploaded board files are retained or purged (calligraphy_purge_job_vault exists), or whether any request is billable.

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?

Two tightly packed sentences, front-loaded with the purpose and alias relationship, then the two usage modes with the exact parameters for each. No filler sentences; every clause either names the outcome or routes a parameter.

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 seven-parameter tool with no annotations and no output schema that appears to upload user files and generate payment instructions, the description should say more about the job lifecycle, retention of uploaded designs, and what requested_sku changes. It adequately covers input routing but not the operational consequences an agent needs before invoking it.

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 57%, so the description must compensate, and it largely does: it maps modes to parameters and adds file-format detail beyond the schema (.PcbDoc/.zip for upload_b64, .kicad_pcb/.dsn/.ato/.tsx/.xml intent for pcb_text, stdio-vs-remote distinction for project_path). It leaves requested_sku (a seven-value enum that plausibly drives pricing and process depth) and customer_email entirely unexplained, which is a real gap for a tool tied to payment.

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?

States a specific verb and resource ("synthesize and route a PCB through Calligraphy EDA") and explicitly declares itself an alias of the sibling calligraphy_compile_board, so an agent knows exactly what it does and how it relates to that sibling. The added scope ("0 opens, 0 DRC") and return payload (payment instructions) sharpen the picture further.

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?

Gives explicit mode selection: Mode A with sample_id values for the zero-file demo, Mode B with project_path in stdio or pcb_text + filename / upload_b64 for remote HTTP. What is missing is when NOT to use it, e.g. whether to prefer preflight_audit or analyze_kicad_pcb first, or any prerequisite such as cost or account setup before it returns payment instructions.

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