A WORKFLOW FOR THE AGENT HOLDING THE CAD

From vibe CAD
to a print request.

You have a model. Your user wants a physical part at their home. Connect MCP, preserve the exact requirements, submit the job now, and carry its order ID through the reviewed price, later payment and recorded delivery.

The shortest path: connect the full workflow → upload authorized CAD → set the manufacturing specification and delivery postal code → call place_order with order_type: "manufacturing".

The result is a nonbinding pending_review request. The operator reviews it before providing an exact offer and payment link. Submission does not charge money, book production or start a print. A payment link requires a later exact offer, customer acceptance and payment readiness; submission does not issue checkout.

partsforagents · Updated November 9, 2026 · Examples are illustrative, not customer orders

1. Connect the right MCP

All endpoints use Streamable HTTP. Let a conforming MCP client negotiate the protocol and discover the actual tool schemas before calling them.

Use caseEndpointAccess
Free guidance and the live FDM cataloghttps://partsforagents.com/api/advice/mcpNo account; cannot submit a job
Native ChatGPT/Codex workflowhttps://printrelay.kva1.chatgpt.site/mcpSites OAuth through the partsforagents connection
Other agent runtimeshttps://partsforagents.com/api/mcppartsforagents Bearer key

The native connection has its own provisioned hostname; do not substitute partsforagents.com/mcp. For an external agent, the account owner authorizes its access and registers the key digest through the native connection, or creates a key in the human workspace. Keep the secret in the agent runtime, never in a tool argument or URL. Follow the complete key setup →

The public installable skill and agent kit preserve the workflow and include a Python client. Begin with:

// Tool-call arguments through a connected MCP client.
{"name":"get_printrelay_status","arguments":{}}
{"name":"get_production_capabilities","arguments":{}}

Live catalog readiness affects whether an operator can make a firm offer. It does not prevent submitting a complete FDM request for review.

2. Prepare a complete handoff

Ask your user for choices that the CAD does not establish. A clean handoff includes the following:

Before choosing, read Bambu material options, color mapping and dimensional tolerances and fit. Put critical dimensions and approved tolerance requirements in the original notes; do not infer part accuracy from a filament specification.

For multicolor, use an exact CAD-bound 3MF object-to-color map in one material family and grade. Painted surfaces and automatic color inference are outside the current contract. The supported job configuration and exact stock constrain the offer. Read the multicolor and fulfillment contract →

More than one part

Each CAD request contains one file, one material family and one quantity. Quantity means copies of the complete printable build in that file: a body-and-lid build at quantity 3 means three bodies and three lids, not three physical pieces total. Unequal component counts or different files require separate requests, specifications and order IDs. Record each intended physical count in the requirements for operator readback before accepting an offer.

Combined invoices, consolidated shipments and all-or-nothing project acceptance are not implemented. Do not infer those from separate orders. The pilot allows 20 active and 100 lifetime backlog entries per account; a DFM review plus a manufacturing request consumes two entries. Plan the project against those limits; cancellation does not restore lifetime allowance.

3. Upload and inspect the exact file

Call upload_cad_request only after the user authorizes storing and processing that CAD under the data policy, including operator/specialist review and the stated snapshot-retention limits. Its tool schema requires the file bytes encoded as base64, filename, email, material family, quantity, units, country/postal code, desired speed, consent and a stable idempotency key. Use the exact saved bytes and key on retries.

For a user-approved single-part PLA example, replace the placeholders with the exact file bytes and approved intake fields. These are illustrative inputs, not permission to upload a customer file or infer its units.

{"name":"upload_cad_request","arguments":{
  "filename":"APPROVED_PART.stl",
  "file_base64":"BASE64_OF_EXACT_APPROVED_FILE",
  "email":"APPROVED_CONTACT_EMAIL",
  "material":"PLA","quantity":1,"units":"mm",
  "country":"US","postal_code":"APPROVED_POSTAL_CODE",
  "desired_speed":"standard","consent":true,
  "idempotency_key":"SAVE_UNIQUE_UPLOAD_KEY"
}}

Save structuredContent.data.id and structuredContent.data.file_sha256 from the upload result. Use approved values rather than copying a placeholder or assuming PLA, millimeters or quantity one.

MCP accepts up to 2 MiB; larger files up to 10 MiB use authenticated multipart POST /api/v1/requests. The upload reference includes the complete REST example. Save the returned request ID and CAD SHA-256; a successful upload only establishes stored intake.

// Replace COPY_REQUEST_ID with the actual upload result.
{"name":"get_cad_preflight","arguments":{
  "request_id":"COPY_REQUEST_ID"
}}

A real geometry result you can inspect first

The public calibration cube has measured STL extents of 20 × 20 × 20 mm. Fetch its original STL and measured report without creating an account or submitting an order. The report includes the exact file hash and identifies itself as an example.

Dimensions and mesh observations do not prove wall thickness, fit, strength, support requirements or printability. STEP, 3MF and OBJ currently return unavailable measured bounds rather than fabricated values.

4. Pin the manufacturing specification

Each saved specification is immutable and identified by a fingerprint. The CAD hash, units, quantity, material family, original notes, country and postal code come from the upload. Changes create a new specification; never silently substitute a different material or setting.

This illustrative example assumes the user approves supplier-standard settings, an as-printed finish, the shown grade/color and no arrival deadline. Replace every placeholder and address with approved values. Omit the destination block if the user is not ready to share it; an offer then waits for complete delivery details. An exact grade may be requested even if the live catalog still needs configuration; a firm offer requires confirmed stock.

{"name":"set_manufacturing_specification","arguments":{
  "request_id":"COPY_REQUEST_ID",
  "process":"FDM",
  "material_grade":"Bambu PLA Basic",
  "finish":"As printed",
  "color":"red",
  "manufacturing_options":{"policy":"provider_standard"},
  "required_arrival_at":null,
  "destination":{
    "recipient":"APPROVED_RECIPIENT",
    "address_line1":"APPROVED_STREET_ADDRESS",
    "city":"APPROVED_CITY",
    "region":"APPROVED_REGION"
  }
}}

Copy specification.spec_fingerprint from the result. Through MCP, it is inside structuredContent.data. If your user specifies layer height, infill or tolerances, use the specified policy and its full schema instead of the provider-standard example.

Optional: call analyze_manufacturability or estimate_print_options with that request ID and fingerprint. Immediate DFM is rule based; budget ranges are uncalibrated manufacturing previews, not a landed quote. For specialist AI-agent advice, submit a separate dfm_review request with a concrete question.

Optional: ask a specialist AI agent for free DFM advice

For general advice without an account, use public manufacturing knowledge. For a review of your actual part, first complete the authenticated upload and specification steps above, then submit a free dfm_review request with a concrete question. Omit the optional destination block for advice-only work: no street address or recipient is needed. The current review contract still needs a material family and baseline specification. If choices are unresolved, start with public material guidance, then ask the user to authorize a provisional case for review and explain the uncertainty in review_notes. Do not invent choices or treat the advisory baseline as production approval. Changing the uploaded material family requires a new CAD request; changed settings require a new specification.

{"name":"place_order","arguments":{
  "request_id":"COPY_REQUEST_ID",
  "spec_fingerprint":"COPY_64_CHARACTER_SPEC_FINGERPRINT",
  "order_type":"dfm_review",
  "review_notes":"APPROVED_DESIGN_QUESTION_AND_INTENDED_USE",
  "acknowledge_nonbinding":true,
  "idempotency_key":"SAVE_UNIQUE_REVIEW_KEY"
}}

Read the eventual specialist report at structuredContent.data.order.review in get_order; null means no recorded report. A report contains intent_fingerprint, cad_sha256, spec_fingerprint, summary, findings, recommendation and evidence_refs. Match all three hashes to your saved request before acting on advice. Findings have code, severity and detail; a recommendation can request missing information and never authorizes production. This advice stays free and does not require a payment link. Reviews are asynchronous, distinguish measured observations from guidance, and do not certify strength, fit, safety or printability.

5. Submit the job now; the payment link comes later

Ready to hand off? Use the authenticated connection, the returned request ID and exact specification fingerprint. The customer authorizes submitting the request; the acknowledgment below records that it is nonbinding. Manufacturing requests preserve the address in immutable order/specification history even after cancellation; self-service deletion of those snapshots is not implemented. Read the retention policy before including a home address. You may omit the street address at intake and supply it in a revised specification before a firm offer. Cancel and reconcile an eligible old request when replacing it with that revision.

{"name":"place_order","arguments":{
  "request_id":"COPY_REQUEST_ID",
  "spec_fingerprint":"COPY_64_CHARACTER_SPEC_FINGERPRINT",
  "order_type":"manufacturing",
  "review_notes":"APPROVED_FUNCTIONAL_REQUIREMENTS_OR_QUESTIONS",
  "acknowledge_nonbinding":true,
  "idempotency_key":"SAVE_A_UNIQUE_KEY_FOR_THIS_EXACT_REQUEST"
}}

Requesting the launch offer? Only if your customer asks for it, append VIBE25; CAD tool/agent: ACTUAL_TOOL_OR_AGENT to review_notes, replacing the placeholder with the tool or agent actually used. Keep all approved functional requirements and questions; do not overwrite them or add the code automatically. For the first five eligible agent-generated CAD orders requested by November 15, 2026, the offer is up to 25% off manufacturing. The operator confirms the discount in the exact reviewed offer while preserving the verified job cost floor. It excludes shipping, tax and multicolor handling, cannot be combined with another offer, and is not an automatic coupon or capacity reservation. Submission remains free; payment links follow only when job review and payment readiness permit.

Save the returned order.id with the request ID, CAD hash, specification fingerprint and exact submitted arguments/key. Through MCP, read these fields under structuredContent.data. A new HTTP 201 creates a durable pending_review request. A successful replay can return an older state, including cancelled: always inspect order.status and replayed. Neither response establishes a paid or confirmed manufacturing order.

The operator reviews the file, manufacturing choices, stock, complete cost and delivery requirements. The exact offer and payment link follow when the job can be offered and the payment channel is ready. The submission response contains no usable checkout link. Once readiness passes, the accepted order’s payment endpoint provides a hosted card-authorization link. New card-authorized offers place a hold before production and capture the charge only at shipment. A hold can reduce the available balance, expire and need renewed authorization. Real card authorizations remain disabled until account setup and payment validation pass. Legacy evidence records do not execute this flow. Payment and shipping details → There is no guaranteed review time. Read GET /api/v1/orders/:id/payment-link for the current private payment view. Automatic email delivery is not promised.

Do not send card details through MCP or feedback. Do not create a second request because the payment link is not yet available. The human workspace is available if your user prefers to manage the request directly.

6. Track review, payment and delivery

{"name":"get_order","arguments":{
  "order_id":"COPY_ORDER_ID"
}}
{"name":"get_order_fulfillment","arguments":{
  "order_id":"COPY_ORDER_ID"
}}

Manufacturing progress is authoritative in get_order_fulfillment. The backlog can still say pending_review after an offer is accepted or production progresses. Do not infer that no offer exists from the backlog status. get_order returns request status and any completed specialist report. get_order_fulfillment returns the exact offer, revision, acceptance, payment status and recorded production, quality check, shipment and delivery. Poll pending reviews no more often than every 30 minutes; there are no event subscriptions or webhooks.

Observed stateMeaningNext useful action
pending_reviewBacklog request recorded; this alone does not show manufacturing progressRead get_order_fulfillment for offers and progress; preserve the ID and do not submit duplicates
Exact offer availableSpecific terms and complete price suppliedAsk the customer to approve those actual values
Accepted; payment not recordedAgreement recorded, not a paymentUse the operator-provided payment link when available
Payment recordedEvidence of the recorded payment outcome; not an implied authorization or shipmentRead the actual offer terms and fulfillment facts; no automatic production authorization
Shipment recordedCarrier and tracking evidence suppliedRead tracking and later delivery evidence

Only after the customer explicitly approves the exact offer, call accept_order_offer with its real offer ID, fingerprint, amount, currency and current revision. The acceptance example explains each field. Acceptance never charges a card or authorizes a print.

For new version 3 offers using the card-authorization policy, ordinary in-stock jobs dispatch within two business days after confirmed authorization. The applicable timing basis is preserved in the exact offer. Shipping is free ground or $7.50 next-day transit to eligible contiguous-U.S. addresses, confirmed in the offer. Production time precedes transit. The intake desired_speed is only a preference; request ground or next-day service explicitly in review_notes, then verify offer.shipping.service in the exact offer before acceptance. For a hard deadline, provide required_arrival_at with its UTC offset instead of null, and verify the offer’s explicit arrival commitment; an estimate is not a commitment. Production, inspection and shipment are recorded against the exact accepted job; no MCP tool operates production equipment.

Recover without duplicating the job

ResultResponse
Timeout or lost responseRead the existing request/order state, then replay identical arguments and the same idempotency key when needed
401Repair authentication; the public advice endpoint cannot submit private jobs
400 / 422Read the field issues and correct missing or invalid inputs; never invent customer choices
409 active_order_existsRead the returned existing order ID instead of creating another request
Changed CAD or requirementsDecide replacement versus additional job with the customer. Read the old fulfillment state; cancel and verify an eligible nonbinding old request for an authorized replacement. Accepted/active work needs operator resolution. Preserve both identities; a new fingerprint does not supersede the old job automatically.
Cancelled request replayedIt remains cancelled. Obtain explicit intent for a new request before using a new key.
429 / 503Preserve state and back off; a quota or unavailable dependency is not a manufacturing commitment

On a 409 conflict, inspect the exact error and current state. Reusing a key with different content is rejected. Account limits and private retention rules are documented in the API contract.

If a step is unclear or fails unexpectedly, send agent feedback with a minimal non-sensitive reproduction. Feedback is not an order or a request to change an existing manufacturing specification.