Agent Guidance for Fabworks

How AI agents work with Fabworks, and where to look for everything else.

This page is the starting point for AI agents that work with Fabworks through the Fabworks MCP server. It covers how to work, and links to the pages that hold the details. Load those only when a question needs them. An agent connected to the server can load this page with the get_agent_guidance tool.

Rules

  • Live tool results are the answer for a quote: catalog IDs, prices, DFM, bend data, and delivery dates. Do not invent capabilities, tolerances, prices, or lead times. When neither a tool nor a Fabworks page answers, say so and point the user to support@fabworks.com.
  • Report every DFM error and warning, quoting the message. Never call a part clean unless dfm.errors and dfm.warnings are both 0, and never call a quote complete while failed_files lists a file: those files are not in its parts or price.
  • Never pick a suggested material, thickness, profile, or finish without asking. Suggestions are alternatives, not matches.
  • Checkout, payment, and ownership transfers happen in the Fabworks dashboard. Give the user the link, and never imply a quote was ordered or paid.
  • A part we can make but can't ship makes the quote local pickup only: get_delivery_options returns local_pickup: true and lists the parts in pickup_only_parts. Tell the user which parts, and that they can pick up in Ventura, California or contact support@fabworks.com for freight. Size limits are on the maximum part size page.

Quote parts

  1. Confirm the STEP files, quantities, names, material, and finish. A missing finish means No Deburring.
  2. find_materials for exact material and finish IDs. get_catalog returns the whole catalog with a catalog_version: keep it, and pass the version back to get not_modified instead of the rows. find_materials results carry the same version.
  3. create_upload with files (up to 100 per call) returns an upload for each file, in order; with filename it returns one. PUT each file's raw bytes from disk to its upload_url with every returned header. Inline base64 also works, but it fills your context, so keep it for small files.
  4. create_quote once, with an idempotency_key you generate. It takes up to 25 parts and 24 MB per call; add the rest to the same quote with add_quote_parts. If status is processing, call get_quote instead of creating it again.
  5. Report the price, every DFM issue, and the links in the result.
  6. get_manufacturability is available to every account. Call it for the engine's review and fix what it reports before calling the part ready (see below).

Each tool's description says what it does and returns. Read those rather than guessing.

Revise a design

Keep one quote per part while the design changes, rather than a new quote for every revision.

  1. create_quote with the first file. Give taps, countersinks, and hardware in the part's hole_ops by hole location: at is the hole center in inches, at mid-thickness, in the STEP file's own coordinates, and diameter tells close holes apart. They are applied when the file is parsed, even with wait_seconds 0; each part's requested_hole_ops says which hole each one landed on and why any was rejected.
  2. For each revision, replace_part_file with the quote, the part, and the new file. It keeps the name, quantity, material, finish, and hole operations (matched again by location and size; dropped_hole_ops lists the ones with no matching hole now), and returns the new part ID in replaced.new_part_id. Welds are dropped and listed; weld again with find_weld_seams.
  3. get_manufacturability on that quote for the engine's review of the new revision.
  4. To change a hole operation later, update_quote_parts takes at as well as hole numbers from get_quote with view full, whose holes[].location is in the same frame.

Many files

  • An account can upload 500 STEP files (1 GB) at once, then one file (1 MB) a second. Past that a PUT is answered 429 with a Retry-After header in seconds: wait that long, then send the same PUT again to the same URL with the same headers. Don't create a new upload for it.
  • An upload URL expires after expires_in_seconds (15 minutes), so create them in batches as you go rather than all at the start.

Fix what the engine finds

  • get_manufacturability returns the DFM engine's findings and the press brake simulation. If it answers status: unavailable, the engine is briefly down: use get_quote's checks and try again shortly. When a bend fails, it names the step, the bend line (BL2), and which flange (F3) or formed bend hits the punch or die, with measured fixes in millimetres: lengthen or shorten a flange, or stop a bend short of a lip. Ask for files: ["svg"] to see the flat and a side view of the failing bend.
  • Fix amounts are enough for the reported bend order and punch, not the least possible. After a change, upload again: the solver re-checks every step and may pick another order.
  • Flange labels (F0…) follow your model's axes and usually stay put between uploads. Bend line numbers (BL1…) can change, so find each bend by the flanges it joins (bend_simulation.bends[].model) and check both against flanges[].model each time.
  • It carries the same catalog rules as get_quote as rule_issues, so checkout needs both clean of errors. checkout_blocked_reason says why checkout is blocked: errors (fix them), checking (wait and call again), or not_ready.

Weld bent parts

  1. Confirm which seams the user wants welded, whether continuous or stitched, and whether to grind them flush.
  2. find_weld_seams with the quote ID lists the bent parts that can be welded. With a part_id, it lists that part's numbered seams, longest first, with their end points in the STEP file's coordinates.
  3. Match the user's description (for example "the four corners") to seam numbers using the lengths and end points. Mirror-image seams have the same length. Ask when the match is unclear.
  4. update_quote_parts with welds, then report the new price and give the user welding_url to review the welds in 3D.

Hand-offs

  • Quote links open in the account that owns the quote. If the user sees an empty or blocked page, call get_account to check which account and organization the connection uses.
  • Send the user to quote_url to review the part, or bending_url to watch the bend sequence in 3D.

Where to look next

Use search_docs and read_doc to load these pages when a question depends on them, and cite the page you used.

QuestionStart here
What Fabworks makes and how each service worksServices and the guidelines overview
Whether a design can be cut, bent, tapped, or coated as drawnGuidelines, one page per process
Which materials and thicknesses are availableMaterials, then find_materials for the exact catalog
When parts arrive and what shipping costsget_delivery_options, then the shipping page
How big a part can be cut, bent, or shippedMaximum part size
Common customer questionsFAQ