# ProvenMetal agent ordering setup ProvenMetal builds and ships PCBs. This page sets up the ProvenMetal MCP server so an AI coding agent can quote a board from its KiCad fabrication outputs, clear sourcing/DFM blockers, and draft an order. Every order is a DRAFT. A human approves the final placement. Follow the steps in order. ## 1. Prerequisites - A ProvenMetal account: https://central.provenmetal.com - An ordering API key: sign in, open Settings, and generate a key. It starts with "pm_live_". Treat it as a secret. If the user hasn't got one, ask them. - Python 3.11+ on the machine running the agent (the MCP server runs locally over stdio). ## 2. Add the MCP server Add ProvenMetal to the agent's MCP client config (Claude Code's mcp.json, Cursor's MCP settings, or any MCP-capable client) and paste in the user's key: { "mcpServers": { "provenmetal": { "command": "python", "args": ["-m", "mcp_server.server"], "env": { "PROVENMETAL_API_URL": "https://api.provenmetal.com", "PROVENMETAL_API_KEY": "pm_live_your_key_here" } } } } Restart the agent so it loads the server. Four "provenmetal" tools should appear. ## 3. Tools - quote_pcb(gerbers_path, bom_path, qty, cpl_path?): price + lead-time range from KiCad fab outputs. Returns the assumptions used, a blockers list, DFM recommendations, and per-line sourcing. Save the returned quote_id. - revise_quote(quote_id, resolutions?, assumptions?): apply a blocker fix or an assumption change; returns the updated quote. Repeat until blockers is empty. - create_draft_order(quote_id, contact_email?): turn a clean quote into a DRAFT order. Returns a confirmation_url. It never places the order. - check_order_status(order_id): draft -> confirmed -> in production -> shipped. ## 4. Ordering workflow 1. Locate the KiCad fab outputs: the gerber .zip, the BOM .csv, and the placement/CPL .csv. Ask the user if you can't find them. 2. Call quote_pcb with those paths and the build quantity. Save the quote_id. 3. Read "blockers". For each, apply the fix from its suggested_resolutions with revise_quote. Repeat until blockers is empty. 4. Read "recommendations" and apply the design-for-manufacturability fixes that make sense (e.g. swap an end-of-life or long-lead part). Hand board-level fixes back to the user for the KiCad design. 5. Call create_draft_order with the quote_id and a contact_email for approval. 6. Report the price range, lead time, confirmation_url, and this notice: "This Quote and any resulting Order are subject to ProvenMetal's Terms of Sale at https://provenmetal.com/terms. Seller rejects additional or different terms, and acceptance is expressly conditional on Customer's assent to the Terms of Sale." Do NOT place or confirm the order yourself. A human opens that URL to approve it. ## Constraints - Every order is a draft. Nothing is built until a human approves the confirmation_url. - Every displayed or transmitted quote must include the Terms of Sale notice above. ## Links - Account & API key: https://central.provenmetal.com - Human-readable overview: https://provenmetal.com/resources - KiCad plugin (exports gerbers / BOM / CPL): https://provenmetal.com/plugins/kicad - Terms of Sale: https://provenmetal.com/terms - Help: founders@provenmetal.com