upload
Step 1 of an order: a signed upload link and the command that sends the files.
quote
Step 2: a live JLCPCB price, questions about what the files don’t state, or a custom-quote link.
checkout
The checkout or quote-request link for an existing quote.
saved_code
Buy with saved details, step 1: email the customer a 6-digit code.
saved_verify
Step 2: check the code; returns what will be charged and where it ships.
saved_pay
Step 3: pay with the saved card once the customer says yes.
order_status
Where a quote or order stands: awaiting payment, ordered, in production or shipped.
jlcpcb_capabilities
JLCPCB’s materials, the 35 documented customization services and the
jlc_options fields.buy_link
A permanent buy link for a partner site’s Buy button.
design_check
The uploaded board checked the way a fab would, with no quote or order.
parts_check
A part list checked for the build quantity, with no files.
upload
Step 1 of an order: a signed upload link and the command that sends the files.What the agent is told
What the agent is told
Step 1 of an instant JLCPCB order. Returns an upload link and a command that compresses the files with tar and uploads them with curl. Run it from the project folder with the files: a KiCad project (.kicad_pcb, optionally .kicad_sch, or the project zipped) or a Gerber zip; for assembly also a BOM CSV with LCSC or manufacturer part numbers if you have one; any line that gives only a value or symbol needs its exact part number, from the design or the user, asked together with the board options. Add any fabrication drawing, stackup PDF or README that states build requirements: ProvenMetal’s team gets them with the quote, but the price uses only the options you pass, so pass what they state. ProvenMetal makes Gerbers, drill, BOM and pick-and-place from KiCad files. Send an Altium output folder whole, with its .EXTREP and .REP reports: they say which mechanical layer is the board outline, and without them it can’t be measured. Never write, change or delete a file in the user’s project, a new one included, without their go-ahead: a BOM you make goes up from a temporary folder outside the project, or piped to curl as -F ‘files=@-;filename=bom.csv’.
quote
Step 2: a live JLCPCB price, questions about what the files don’t state, or a custom-quote link.What the agent is told
What the agent is told
Step 2: a live JLCPCB price for the uploaded design, in USD, delivered with shipping, import duty and tax. Before calling, ask the user once, together, with your multiple-choice question tool (Claude Code’s AskUserQuestion, or Codex’s equivalent), for the board options neither they nor the files state, whether the board has special requirements, and who receives the boards and where (name, email, phone, street address, city, state, postal code, country). Delivery is optional: pass what they give, never a guess; outside the US no postal code is needed, so never invent one. Each argument says when to pass it; standard_for_unstated=true if they accept JLCPCB’s standard for the rest. Replies: needs_details lists the questions left with their choices; needs_part_numbers lists BOM lines that name no exact part: find each in the design or ask the user, never guess a variant, add it to a copy of the BOM and upload again (or staff_picks_parts=true to let ProvenMetal choose). Never search for replacement parts yourself: this tool checks JLCPCB, Digi-Key, Mouser, LCSC, Octopart and ProvenMetal’s AI sourcing. Exact-spec passive replacements are priced without asking; active parts are never swapped automatically. An unpriced part’s reason says what was searched, and it may carry similar_part: show it and how it differs, and pass substitutions only with the user’s approval. mode review returns a link for ProvenMetal’s team to quote: share it, and offer fabrication_quote (an instant bare-board price) when present. A KiCad board with shorts or unrouted connections is refused with each problem: tell the user. Keep every BOM placement; never mark parts do-not-populate to get a price. price_unavailable is temporary. Pricing takes 5 seconds to 2 minutes (the upload’s reply gives the estimate): tell the user, and if your client times out, call again with the same arguments to pick up the same quote.
string
required
The
upload_id from upload.integer
required
How many boards.
Delivery
string
The recipient’s full name, as the user gave it.
string
The user’s email: their ProvenMetal account is made with it at checkout.
string
A delivery phone number with country code, for the courier.
string
string
The street address.
string
string
The delivery city, if the user gave one; needed with a country outside the US.
string
State or province, if the user gave it; in Canada and India it (or the postal code) sets the tax.
string
Only if the user gave it; never invent one.
string
Two-letter country code, only if the user gave a destination.
string
A tax or VAT ID, only if the user gave one.
Board
boolean
Assemble the boards.
integer
Copper layers, when the files don’t state them.
number
Finished thickness in mm. 0.1 to 10.
string
The finishes JLCPCB’s API prices. One of
enig, hasl_lead_free, hasl.string
The gloss colours JLCPCB’s API prices. One of
Green, Red, Blue, White, Black, Yellow, Purple, Transparent.number
Outer copper weight in oz. 0.1 to 12.
number
Inner-layer copper of a 4+ layer board, in oz, only when the user or the design files state it. 0.1 to 12.
string
The laminate;
jlcpcb_capabilities lists JLCPCB’s materials. One of FR-4, FR-4 / TG155, FR-4 / TG170, Aluminum, Copper core, Rogers 4350B, ZYF300CA-P, ZYF300CA-C, ZYF265D, ZYF255DA, Polyimide.string
Which
.kicad_pcb to use when the upload holds more than one.string
For a file holding several boards:
one_panel (as drawn) or separately. One of one_panel, separately.boolean
true only when the user accepts JLCPCB’s standard for whatever neither they nor the files state: 1.6 mm, lead-free HASL, 1 oz outer and 0.5 oz inner copper, green, FR-4 and no special requirements.
boolean
true only when the board needs something the other options can’t express: an OSP, ENEPIG or immersion tin or silver finish or a matte mask (none of which JLCPCB’s API offers), blind, buried or micro vias, rigid-flex, an unmapped laminate, or impedance on the board’s own stackup; describe it in special_notes.
string
The user’s words for ProvenMetal’s team.
Advanced fabrication
object
Advanced JLCPCB fields and services, named as
jlcpcb_capabilities lists them.string
One of JLCPCB’s five via treatments. One of
tented, untented, plugged, epoxy_filled_capped, copper_paste_filled_capped.boolean
Controlled impedance, with
jlc_stackup naming the stackup the design was made for.string
The JLCPCB stackup for controlled impedance.
string
When the files carry their own stackup:
replace lets JLCPCB’s construction replace it; keep makes a custom quote. One of replace, keep.Parts
object[]
Replacements the user approved:
reference, original_mpn, replacement_mpn, reason, optional replacement_manufacturer.string[]
References of parts the user will send to ProvenMetal themselves.
string[]
References to leave unpopulated.
boolean
Leave BOM lines that name no exact part to ProvenMetal’s team, who name their picks in the quote.
Other
string
A name for the board, shown on the order.
string
A sentence or two on what the board is for and preferences the user stated, kept with the quote for ProvenMetal’s team.
boolean
Quote a KiCad board with unrouted connections or shorts anyway.
boolean
Set when the design is ITAR-controlled; it is then refused before anything is read.
checkout
The checkout or quote-request link for an existing quote.What the agent is told
What the agent is told
Returns the Central link for an existing quote or sourcing request. Delivery details passed to quote are already there; the customer enters any that weren’t, in Central. Instant quotes can be paid there. Reviewed assembly requests and custom quote requests go to staff for a complete quote.
string
required
The quote ID from
quote.saved_code
Buy with saved details, step 1: email the customer a 6-digit code.What the agent is told
What the agent is told
Only for an instant quote whose reply says saved_details: true, and only after the user said yes to buying it with their saved details. ProvenMetal emails a 6-digit code to the email they saved; ask the user for it, then call saved_verify.
string
required
The quote ID from
quote.saved_verify
Step 2: check the code; returns what will be charged and where it ships.What the agent is told
What the agent is told
Checks the 6-digit code the user read from ProvenMetal’s email. Returns what will be charged and where it ships, and a confirm_token for saved_pay.
string
required
The quote ID from
quote.string
required
The 6-digit code from ProvenMetal’s email, as the user read it.
saved_pay
Step 3: pay with the saved card once the customer says yes.What the agent is told
What the agent is told
Pays an instant quote with the user’s saved card, once they said yes to the summary from saved_verify. ProvenMetal then places the order. A declined card or a bank check returns the checkout link instead.
string
required
The quote ID from
quote.string
required
The
confirm_token from saved_verify.order_status
Where a quote or order stands: awaiting payment, ordered, in production or shipped.What the agent is told
What the agent is told
Where a JLCPCB quote or reviewed sourcing request stands: ready, awaiting payment or staff quote, ordered, in production or shipped (with tracking).
string
required
The quote ID from
quote.jlcpcb_capabilities
JLCPCB’s materials, the 35 documented customization services and thejlc_options fields.
What the agent is told
What the agent is told
Lists JLCPCB bare-board material families, common values, the 35 documented customization services and the jlc_options object accepted by the quote tool. Call it when a board needs advanced fabrication selections. Availability and fees are confirmed by a live quote.
buy_link
A permanent buy link for a partner site’s Buy button.What the agent is told
What the agent is told
For a partner site’s Buy button: prepare a board ahead of time and get a permanent buy link. Upload the board’s files with the upload tool first (KiCad project or Gerber zip, plus a BOM for assembly), then call this with the upload_id, the board’s name and its page URL. Set assembly=true if the board can be ordered assembled. The shopper opening the link picks the quantity and delivery city, gets a live price and checks out in Central.
string
required
The
upload_id from upload.string
required
A name for the board, shown on the order.
string
The board’s page, shown to shoppers.
boolean
Assemble the boards.
integer
Copper layers, when the files don’t state them.
number
Finished thickness in mm.
string
string
integer
Outer copper weight in oz.
string
The laminate;
jlcpcb_capabilities lists JLCPCB’s materials.string
Which
.kicad_pcb to use when the upload holds more than one.boolean
Quote a KiCad board with unrouted connections or shorts anyway.
boolean
Set when the design is ITAR-controlled; it is then refused before anything is read.
design_check
The uploaded board checked the way a fab would, with no quote or order.What the agent is told
What the agent is told
While a board is being designed: checks the uploaded board files (upload them with the upload tool first) the way a fab would, in seconds, with no quote or order: the Gerbers and drills against JLCPCB’s limits (outline, drills, annular rings, trace and spacing, mask, silkscreen), each partner fab’s estimated verdict (JLCPCB, PCBWay, Bay Area Circuits, Summit Interconnect: can_build, cannot_build with the failed limits, or not_fully_checked with what couldn’t be proved), and for a KiCad board KiCad’s own design-rule check: unrouted connections and shorts as must_fix, the rest grouped by kind (a warning when it breaks JLCPCB’s limit, a note when it only breaks the board’s own rules). Relay the fab verdicts as an estimate from each fab’s published limits, not the fab’s own review: JLCPCB’s engineers check the files again after an order, and ProvenMetal’s team reviews custom quotes. When Summit Interconnect is listed or chosen, tell the user its lead times are not very reliable, so plan with margin or ask ProvenMetal. Pass boards (how many will be built) and the BOM’s parts are checked too, as parts_check does. With a BOM, the part-level checks ProvenMetal runs on orders (datasheets, package fit, footprints against the parts) also run, behind real orders and at a limited pace: they come back in part_checks on a later call (status checking with retry_after_s until then). findings come worst first: must_fix, then warning, then note. Pass copper_oz and thickness_mm when the board isn’t JLCPCB’s standard 1 oz and 1.6 mm. Upload again and call this after each round of edits.
string
required
The
upload_id from upload.integer
How many boards will be built, to check the BOM’s parts. 1 to 100000.
number
Outer copper weight in oz. 0.5 to 6.
number
Finished thickness in mm. 0.2 to 6.
string
Which
.kicad_pcb to use when the upload holds more than one.integer
default:"15"
Seconds to wait for the distributors’ answer. 0 to 50.
boolean
Set when the design is ITAR-controlled; it is then refused before anything is read.
parts_check
A part list checked for the build quantity, with no files.What the agent is told
What the agent is told
While a board is being designed: checks its parts for the build quantity the way ProvenMetal builds it (assembled at JLCPCB; a part JLCPCB lacks is bought from Digi-Key, Mouser or LCSC). Call it whenever parts are added or changed, with every BOM line from the schematic or design code: reference, quantity per board, mpn and manufacturer, or lcsc, or value and footprint for a resistor, capacitor or inductor. Nothing is uploaded or ordered. Each part comes back ok (in stock and priced, with its stock, lead time and lifecycle when known), check (its package or identity needs a look; why says what), problem (can’t be bought for this quantity; why says what was searched, with any in-stock similar_part to offer the user) or checking. JLCPCB’s stock answers in about two seconds; parts it lacks come back from the distributors within wait_s, else as checking with retry_after_s: call again with the same parts then. Choose parts by what it says; never search distributor sites yourself.
integer
required
How many boards will be built. 1 to 100000.
object[]
BOM lines:
reference, quantity (per board), and mpn with manufacturer, or lcsc, or value with footprint for a passive.string
A BOM file’s text, instead of parts.
integer
default:"20"
Seconds to wait for the distributors’ answer. 0 to 50.
boolean
Set when the design is ITAR-controlled; it is then refused before anything is read.