Agent Fabrication Network (UFP)
Server Details
Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
6 toolscreate_checkoutCreate checkoutInspect
Create the order and get a hosted payment link for a chosen offer. Call this as soon as the user picks an offer + shipping speed — do NOT ask for their address first: the secure payment page collects the shipping address and email. Only pass address fields if the user already volunteered them. Returns checkout_url — give it to the user to pay; UFP places the vendor order automatically after payment.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | No | ||
| name | No | Recipient full name (only if the user provided it) | |
| No | Buyer email (only if the user provided it) | ||
| phone | No | ||
| state | No | Two-letter US state | |
| street1 | No | Street address (only if the user provided it) | |
| street2 | No | ||
| offer_id | Yes | ||
| shipping_option_id | Yes | One of the offer's shipping option ids |
get_fabrication_quoteGet fabrication quoteInspect
Get ranked, purchasable offers (price, ETA, preview image) for fabricating a physical item from a design file. process=fdm_print for 3D printing a model (STL/OBJ/PLY/3MF/AMF/STEP/IGES), process=cnc or process=sheetmetal for machined/bent metal parts (STEP, IGES, DXF), process=decal for stickers/decals from artwork (any common image or design file — PNG/JPG/HEIC/TIFF/GIF/BMP/WEBP/AVIF/SVG/PDF/AI/EPS/PSD/CDR, auto-converted). If the user just drops a file and asks for a price, omit process — UFP routes it. Provide the design either as design_file (an image/file the user attached or you generated — preferred) or file_url (a public URL). REORDERS: if the user has a UFP part number (from a receipt email or a previous session, looks like UFP-… or part_…), pass it as part_number INSTEAD of any file — the stored design and spec are reused and re-shopped across all current vendors. Locked parts additionally require share_key (from the owner's share link). Returns offers across vendors like Google Flights returns flights.
| Name | Required | Description | Default |
|---|---|---|---|
| cut | No | Decal cut style — pass the user's words verbatim ("triangle", "die cut", "circle"). Known: contour|square|oval|kiss_cut; anything else gets closest-match offers with a substitution note. Omit to compare the main options | |
| size | No | Print size — pass the user's words verbatim ("letter", "24x36", "half letter"). Cards are 3.5x2; flyers 8.5x5.5|8.5x11|11x17; posters 12x18 through 36x48. Unknown sizes get closest-match offers | |
| color | No | fdm_print: Filament color for fdm_print (e.g. black, red); resin_print: Resin color for resin_print (e.g. gray, white, black); print: Print color ask ("full color", "black and white"). Vendors that only price full color note the substitution; apparel: Garment color for apparel ("black", "heather gray") — vendor-resolved | |
| paper | No | Paper stock — free-form ("matte", "glossy", "recycled", "14pt"). Resolved to the closest stock the vendor runs | |
| sides | No | single|double sided printing (defaults: cards double, flyers/posters single) | |
| units | No | sheetmetal: DXF drawing units: "mm" (default) or "in". STEP files carry their own units; laser_cut: DXF drawing units: "mm" (default) or "in" | |
| finish | No | cnc: CNC surface finish: standard|anodized|polished|bead_blasted (default standard); sheetmetal: as_cut (default) | deburred | powder_coat — powder coat protects mild steel for outdoor use | |
| process | No | What to fabricate. If the user just drops a file and asks for a price, OMIT this — UFP detects the file type (artwork, mesh — STL/OBJ/PLY/3MF/AMF, BREP — STEP/IGES, DXF) and routes it to every process that can make it; the response's routing.also_possible lists processes UFP can't quote yet | |
| product | No | print: Print product kind: business_cards|flyers|posters. Omit to quote every kind the artwork fits; apparel: apparel: t_shirt|hoodie|long_sleeve|tank_top (free-form — "tee", "crewneck" resolve to the closest product) | |
| callouts | No | Dimensions you read off the user's drawing that matter ("hole_diameter 6.5mm ±0.1"). The tightest tolerance prunes vendors that cannot hold it. | |
| deadline | No | Latest acceptable delivery date, ISO YYYY-MM-DD | |
| file_url | No | Public URL of the design file — only when the design lives at a URL | |
| material | No | fdm_print: pla|petg|asa (free-form — "abs", "polycarbonate" asks resolve to the closest stocked filament with a substitution note); resin_print: standard|tough|high_temp|high_detail resin (free-form asks resolve to the closest supported resin); cnc: aluminum_6061|aluminum_7075|stainless_304|titanium|brass|acetal|delrin|abs|nylon_pa6|peek|acrylic (free-form asks resolve to the closest supported stock); sheetmetal: mild_steel|aluminum_5052|stainless_304 (free-form — "steel", "5052", "stainless" resolve; unknown asks get closest-match offers). Omit to compare the defaults; laser_cut: acrylic|plywood|mdf|delrin|uhmw|hdpe|g10|carbon_fiber|mild_steel|aluminum_5052|stainless_304 (free-form — "plexiglass", "birch" resolve; unknown asks get closest-match offers); decal: vinyl|holographic|transparent|glitter (free-form — "chrome" etc. gets closest matches) | |
| width_in | No | Decal width in inches (default 3) | |
| food_safe | No | Must be vendor-certified food safe | |
| height_in | No | Decal height in inches (default 3) | |
| high_temp | No | Must tolerate sustained heat (vendor heat-resistance claim) | |
| placement | No | Print placement for apparel: front (default) | back | front_back | |
| processes | No | Only quote these fabrication processes — a constraint that narrows the auto-routing fan. Friendly terms accepted ("sheet metal", "3d printing", "cnc", "laser"); unmappable terms are reported, never an error. Usually OMIT: auto-routing quotes every process that can make the file. Pass it only when the user explicitly limits the process | |
| share_key | No | Share key for a LOCKED part — the k=… value from the owner's share link (…/part/UFP-…?k=KEY). Required with part_number when the part is locked; omit otherwise | |
| bend_count | No | Number of bends in the design (bend lines must be in the file). Prices CNC bending; omit for flat parts | |
| quantities | No | Quantities the user actually wants — pass [1] or [2] if that's the ask. Vendors with a higher minimum quote AT their minimum and the offer notes it (requested_quantity). Default: 25 for decals, 1 for prints | |
| design_file | No | The design file itself (user-attached or generated image/STL). ChatGPT supplies the file reference automatically when the user attached a file — just bind the attachment here. Other clients may pass a data: URL (base64) or a public https URL string. Preferred over file_url. | |
| part_number | No | UFP part number from a previous paid order (UFP-… or part_…). Reorders: replaces design_file/file_url entirely; any other fields provided override the stored spec | |
| ship_to_zip | No | Destination US ZIP code, exactly as the user stated it. OMIT if the user has not given one — NEVER guess or invent a ZIP. Without it, delivery dates come back labeled as estimated for a default US destination | |
| submersible | No | Must survive submersion in water | |
| requirements | No | Verbatim context terms from the user — materials, finishes, certifications, tolerances ("UV resistant", "anodized: red", "iso 13485", "tolerance: 0.1mm"). UFP applies what it can and reports what it could not; unresolvable terms are logged for vendor sourcing. Do not interrogate the user to fill this — pass what they said. | |
| thickness_in | No | sheetmetal: Sheet thickness in inches (e.g. 0.063 = 14 ga aluminum). Quoted at the nearest stocked thickness; omit for ~16 ga default; laser_cut: Nominal thickness in inches; quoted at the vendor's nearest stocked thickness. Omit for the material's common stock | |
| outdoor_rated | No | Must survive outdoor exposure | |
| max_budget_usd | No | Hard budget cap in USD, all-in | |
| attachment_urls | No | Additional files for the SAME part — the PDF drawing next to the STEP, spec sheets, BOMs. Pass everything the user gave you; UFP works out which file is the part and which are supporting documents. | |
| min_vendor_stars | No | Only vendors whose displayed review rating is at least this many stars (1-5). Vendors with no reviews yet are excluded — the filter demands demonstrated quality | |
| min_vendor_reviews | No | Only vendors with at least this many verified-purchase reviews | |
| proven_spec_orders | No | Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably" |
get_order_statusGet order statusInspect
Check status, ETA and tracking for a UFP order.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
leave_reviewLeave vendor reviewInspect
Record the user's verified-purchase review of how a UFP order turned out. YOUR JOB IS TO STRUCTURE THE FEEDBACK: turn what the user actually said into stars (1-5 overall) and facet scores — "the cut was sloppy" -> quality, "parts arrived 2 days late" -> timeliness, "wrong color" -> accuracy. Keep the optional comment to a short factual summary of their words; never embellish. ALWAYS draft the review (stars, facets, comment) and confirm it with the user BEFORE calling this tool — e.g. "I'll rate this 2 stars with timeliness 1 because it arrived 2 days late — send it?". One review per order: submitting again updates the existing review. Use list_orders first if you need to resolve which order they mean.
| Name | Required | Description | Default |
|---|---|---|---|
| stars | Yes | Overall rating the user confirmed, 1-5 | |
| claims | No | CHECKABLE claims from the user's feedback — the network stamps each against its own records (the ordered spec, polled tracking + delivery events) and attaches evidence chips to the review. Only pass what the user actually asserted. | |
| facets | No | Score only the facets the user actually spoke to | |
| comment | No | Short factual summary of the user's feedback, in their spirit — optional | |
| order_id | Yes | The UFP order being reviewed (ord_…) — see list_orders |
list_ordersList recent ordersInspect
List this agent's recent UFP orders (newest first): order id, what was made, vendor, status, total, ETA, created date. Use it to resolve vague references — "my sticker order", "that order from 6 days ago" — to a concrete order_id before calling get_order_status or leave_review.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
refine_quoteRefine quoteInspect
Narrow an existing quote with new constraints (destination ZIP the user just provided, deadline, outdoor/waterproof/heat/food-safety requirements, budget, vendor reliability, verbatim requirements terms, drawing callouts, or a process filter — "no, I meant in sheet metal" → processes) — or CHANGE its spec: material, color, or quantities. Changing material/quantity is a spec change, not a narrowing — pass it via the material/color/quantities args, NOT as a requirements term; the affected lanes re-price with the new spec through warm vendor sessions. For side-by-side comparisons ("how does carbon steel compare?"), add a scenario label — labeled refines coexist instead of replacing each other (max 4). Call with ONLY quote_id to re-read the quote (e.g. to pick up preview images that finished rendering).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | New color for this part (spec change — lanes requote) | |
| callouts | No | Dimensions you read off the user's drawing that matter ("hole_diameter 6.5mm ±0.1"). The tightest tolerance prunes vendors that cannot hold it. | |
| deadline | No | Latest acceptable delivery date, ISO YYYY-MM-DD | |
| material | No | New material for this part ("I need it in PLA" → "pla"). A spec change: lanes requote with this material through warm vendor sessions; an explicit material here replaces the quote's material fan-out. Free-form — unstocked asks resolve to the closest stocked material with a substitution note. Do NOT pass material changes as requirements terms | |
| quote_id | Yes | ||
| scenario | No | Comparison lane label. A labeled refine sits SIDE BY SIDE with the quote's other offers instead of replacing them: refines with the same label replace that scenario, different labels coexist (max 4 per quote), and a refine WITHOUT a scenario resets the baseline and supersedes every lane. "How does X compare to Y?" = one labeled refine per scenario (e.g. scenario "carbon steel" + material "carbon steel", then scenario "aluminum" + material "aluminum"). Keep labels short and human, like "carbon steel" | |
| food_safe | No | ||
| high_temp | No | ||
| processes | No | Narrow this quote to specific fabrication processes ("no, I meant in sheet metal" → ["sheet metal"]). A CONSTRAINT, not a new quote: excluded lanes drop while warm vendor sessions survive, and further refines inherit the filter. Friendly terms accepted ("sheet metal", "3d printing", "cnc", "laser"); pass ["any"] to clear the filter and show every process again. When comparison scenarios are open and the user narrows the process, re-refine EVERY active scenario label with this same arg so all columns prune together | |
| quantities | No | New quantities the user wants (spec change — lanes requote at the new quantity). Same rules as on get_fabrication_quote: pass the real ask, never inflate it | |
| ship_to_zip | No | Destination US ZIP code, exactly as the user stated it — use this when the user provides their ZIP after a quote whose delivery dates were estimated for a default destination. NEVER guess or invent a ZIP | |
| submersible | No | ||
| requirements | No | Verbatim context terms from the user — materials, finishes, certifications, tolerances ("UV resistant", "anodized: red", "iso 13485", "tolerance: 0.1mm"). UFP applies what it can and reports what it could not; unresolvable terms are logged for vendor sourcing. Do not interrogate the user to fill this — pass what they said. | |
| outdoor_rated | No | ||
| max_budget_usd | No | ||
| min_vendor_stars | No | Only vendors whose displayed review rating is at least this many stars (1-5); vendors with no reviews yet are excluded | |
| min_vendor_reviews | No | Only vendors with at least this many verified-purchase reviews | |
| proven_spec_orders | No | Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably" |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!