For developers

Everything the dashboard does is an API call, and the same operations are exposed as MCP tools, so a program or a design assistant can run a board without anyone clicking. If you just want boards routed, you never need this page.

GET /api/mcp lists every operation, and that listing is generated from the same table the server routes on, so it cannot drift.

MCP

Point your client at the endpoint and it gains the tools beside this.

{ "mcpServers": { "easypcb": { "url": "https://easypcb.confiared.com/api/mcp", "headers": { "Authorization": "Bearer cfd_..." } } } }
Tools
quoteprice a board before running it
upload_boardpost a .kicad_pcb, get its pads and nets
organise_and_routeplacement, pins, vias, routing
job_statusprogress, or why it failed
list_jobshistory and statistics
download_resultthe KiCad project archive
REST, the same thing
curl -X POST https://easypcb.confiared.com/api/quote/price \ -H 'Content-Type: application/json' \ -d '{"pads":952,"routes":186,"attempts":1}' {"pads":952,"routes":186,"attempts":1,"placement":19.04,"routing":11.16, "unit_price":30.2,"discount":0,"total":30.2,"per_pad":0.02,"per_route":0.06} # A ZIP OF THE PROJECT FOLDER is the one to send when you have custom footprints: # a lone .kicad_pcb names them and loses any that are not in a stock library. zip -qr project.zip my-board/ # .kicad_pcb, .kicad_pro, *.pretty/*.kicad_mod curl --data-binary @project.zip \ 'https://easypcb.confiared.com/api/board/upload?name=my-board' {"kind":"project","measured":{"pads":952,"routes":186,"layers":6,"footprints":14}, ...} curl --data-binary @board.kicad_pcb \ 'https://easypcb.confiared.com/api/board/upload?name=my-board' # a re-do, no libraries curl 'https://easypcb.confiared.com/api/job/download?id=job_0123456789ab' -o project.zip

A WebSocket at /ws pushes job progress, so wait on a board instead of polling it: ask /api/ws/ticket first and connect to /ws?t=<ticket> — without a ticket you hear the public demo boards, with one you hear your own. Every path under /api/ answers JSON, including the errors — a program should never have to read an HTML page to find out what went wrong.

Your keys
A key carries your balance and your discount. It never opens a browser session, and it is shown once — we only keep a hash of it.
What comes back

One archive holding the board you sent under source/, the board we produced, a .kicad_pro, and a report with the pads, routes, vias, length, attempts and what you were charged. It is built once, when the job ends, and served unchanged after that.