Agentic Fabrication Network (AFN)
REMOTE · AGENTICFABRICATIONNETWORK.AI · SCANNED SEP 28
Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 13 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability71
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 13708 tokens (~913/item across 15 items; 13 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management94
- Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 3 additions. See how to fix → Fail
Tool Coverage95
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 85% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "reply_to_maker" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
How do I install the Agentic Fabrication Network (AFN) MCP server?
Agentic Fabrication Network (AFN) is a hosted endpoint at https://agenticfabricationnetwork.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · agenticfabricationnetwork.ai
claude mcp add --transport http ai-agenticfabricationnetwork-ufp 'https://agenticfabricationnetwork.ai/mcp'
{
"mcpServers": {
"ai-agenticfabricationnetwork-ufp": {
"url": "https://agenticfabricationnetwork.ai/mcp"
}
}
} {
"servers": {
"ai-agenticfabricationnetwork-ufp": {
"type": "http",
"url": "https://agenticfabricationnetwork.ai/mcp"
}
}
} [mcp_servers.ai-agenticfabricationnetwork-ufp] url = "https://agenticfabricationnetwork.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-agenticfabricationnetwork-ufp": {
"type": "remote",
"url": "https://agenticfabricationnetwork.ai/mcp",
"enabled": true
}
}
} openclaw mcp add ai-agenticfabricationnetwork-ufp --url 'https://agenticfabricationnetwork.ai/mcp' --transport streamable-http
mcp_servers:
ai-agenticfabricationnetwork-ufp:
url: "https://agenticfabricationnetwork.ai/mcp" {
"McpServers": {
"ai-agenticfabricationnetwork-ufp": {
"Transport": "http",
"Url": "https://agenticfabricationnetwork.ai/mcp"
}
}
} assistant mcp add ai-agenticfabricationnetwork-ufp -t streamable-http -u 'https://agenticfabricationnetwork.ai/mcp'
{
"mcpServers": {
"ai-agenticfabricationnetwork-ufp": {
"type": "http",
"url": "https://agenticfabricationnetwork.ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 10 Sept 26 0
- New tool “get_shop_gauges” functional
- 7 Sept 26 0
- “preview_quote” added an optional parameter “color_shades” cosmetic
- “refine_quote” added an optional parameter “color_shades” cosmetic
- “preview_quote” reworded the description of “color” cosmetic
- “refine_quote” reworded the description of “color” cosmetic
4 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 6 Sept 26 0
- “get_fabrication_quote” reworded the description of “color” cosmetic
- “preview_quote” reworded the description of “color” cosmetic
- “refine_quote” reworded the description of “color” cosmetic
3 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 3 Sept 26 0
- Schema quality: 844 → 943 ▼ functional
- New tool “preview_quote” functional
- 31 Aug 26 −1
- Stability: pass → fail ▼ security
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- Schema quality: 9863 → 10981 ▼ functional
- “refine_quote” changed the type of “color”: string → string|null ▼ functional
- “refine_quote” changed the type of “finish”: string → string|null ▼ functional
- “refine_quote” changed the type of “material”: string → string|null ▼ functional
- New tool “get_network_capabilities” functional
- “get_fabrication_quote” added an optional parameter “bends” cosmetic
- “get_fabrication_quote” added an optional parameter “inserts” cosmetic
- “get_fabrication_quote” added an optional parameter “tapping” cosmetic
- “refine_quote” added an optional parameter “bends” cosmetic
- “refine_quote” added an optional parameter “inserts” cosmetic
- “refine_quote” added an optional parameter “scale” cosmetic
- “refine_quote” added an optional parameter “tapping” cosmetic
- “refine_quote” added an optional parameter “thickness_in” cosmetic
- “get_fabrication_quote” reworded the description of “finish” cosmetic
- “refine_quote” reworded the description of “color” cosmetic
- “refine_quote” reworded the description of “finish” cosmetic
- “refine_quote” reworded the description of “material” cosmetic
- “refine_quote” reworded the description of “quantities” cosmetic
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 28 Sept 2026 · Probed https://agenticfabricationnetwork.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=agenticfabricationnetwork.ai | CN=YE2,O=Let's Encrypt,C=US | 21 Sept 2026 | 20 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 6fd499cdb10624bd3a6bf1c7b35ed4b816c |
| SANs: agenticfabricationnetwork.ai | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of agenticfabricationnetwork.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| agenticfabricationnetwork.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://agenticfabricationnetwork.ai/mcp | Verified | 200 | |
| http (plaintext) | http://agenticfabricationnetwork.ai/mcp | Inconclusive | 406 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
create_checkout Create checkout ~437
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 | Type | Req | Description |
|---|---|---|---|
| billing_city | string | – | – |
| billing_name | string | – | Billing address, only when the buyer answered the billing question (e.g. said it differs from shipping, or a checkout UI's 'same as shipping' checkbox — then send the shipping values verbatim). Never… |
| billing_state | string | – | Two-letter US state |
| billing_street1 | string | – | – |
| billing_street2 | string | – | – |
| billing_zip | string | – | – |
| city | string | – | – |
| coupon_code | string | – | Coupon code, only if the user provided one (early-adopter codes from the AFN team). Case-insensitive. The discount appears on the payment page; a 100%-off code makes the total $0 with no card require… |
| string | – | Buyer email (only if the user provided it) | |
| name | string | – | Recipient full name (only if the user provided it) |
| offer_id | string | yes | – |
| phone | string | – | – |
| return_url | string | – | Exact URL of the page the user is on right now, IF the client application knows it (a web app embedding this tool passes its own page URL). The post-payment page shows a 'Return to <site>' button poi… |
| shipping_option_id | string | yes | One of the offer's shipping option ids |
| state | string | – | Two-letter US state |
| street1 | string | – | Street address (only if the user provided it) |
| street2 | string | – | – |
| zip | string | – | – |
No output schema declared.
No examples provided.
finalize_quote Finalize quote (wait for remaining vendors) ~105
ONLY for the case where a quote response came back with an EMPTY board and told you to call this: waits for the vendors to answer (up to ~40s) and returns their offers as a full board. Call with just quote_id, immediately, and say nothing substantive before it. NEVER call it on a response that already listed offers — that board is final, and this would add nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| quote_id | string | yes | Quote id from the still-quoting response |
No output schema declared.
No examples provided.
get_fabrication_quote Get fabrication quote ~3,300
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). A .ufp file (UFP part container: the design plus saved spec/constraints in one) is accepted anywhere a design file is — its saved intent applies automatically and anything the user states now wins. 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 | Type | Req | Description |
|---|---|---|---|
| attachment_urls | array | – | 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. |
| bend_count | number | – | Number of bends in the design (bend lines must be in the file). Prices CNC bending; omit for flat parts |
| bends | array | – | Sheet-metal bend lines, each as TWO POINTS in the part's own mm frame (flat DXF parts use z=0: a bend from (0,12.7) to (76.2,12.7) is p1 [0,12.7,0], p2 [76.2,12.7,0]). angle_deg is the target bend an… |
| callouts | array | – | 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. |
| color | string | – | ONLY a color the user actually asked for — NEVER pick one for them. fdm_print: Filament color for fdm_print (e.g. black, red); resin_print: Resin color for resin_print (e.g. gray, white, black); powd… |
| cut | string | – | 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 comp… |
| deadline | string | – | Latest acceptable delivery date, ISO YYYY-MM-DD |
| design_file | – | – | 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… |
| elastomer_finish | string | – | Elastomer post-processing: as_printed (VCJ parts ship raw — the whole lane today) |
| elastomer_technology | string | – | Elastomer process: vapor_cure_jetting (VCJ). Omit to let the vendor pick its default lane for the material |
| file_url | string | – | Public URL of the design file — only when the design lives at a URL |
| finish | string | – | cnc: CNC surface finish: standard|anodized|polished|bead_blasted (default standard); sheetmetal: as_cut (default) | deburred | anodized | powder_coat — anodized is aluminum-only; powder coat protects… |
| food_safe | boolean | – | Must be vendor-certified food safe |
| height_in | number | – | Decal height in inches (default 3) |
| high_temp | boolean | – | Must tolerate sustained heat (vendor heat-resistance claim) |
| inserts | array | – | PEM-style hardware inserts pressed into holes of a sheet-metal part — one record per hole. `insert` is the species (nut | flush_nut | standoff | blind_standoff | stud) and `thread` its size ("M4", "1… |
| material | string | – | ONLY a material the user actually asked for — NEVER guess or default one (a silent "pla" on a bare file drop prunes every maker that does not stock it; OMIT instead and each process quotes across its… |
| max_budget_usd | number | – | Hard budget cap in USD, all-in |
| metal_alloy | string | – | Metal AM alloy: stainless_316l|stainless_17_4ph|titanium_ti64|aluminum_alsi10mg|inconel_718|cobalt_chrome|tool_steel_h13|copper (free-form asks like "Ti-6Al-4V" resolve to the closest stocked powder) |
| metal_finish | string | – | Metal AM post-processing: as_printed|bead_blast|machined_critical|polished|heat_treated (as_printed keeps support witness marks) |
| metal_technology | string | – | Metal AM process: laser_powder_bed (SLM/DMLS/LPBF)|binder_jet|ebm. Omit to let the vendor pick its default for the alloy |
| min_vendor_reviews | integer | – | Only vendors with at least this many verified-purchase reviews |
| min_vendor_stars | number | – | 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 |
| outdoor_rated | boolean | – | Must survive outdoor exposure |
| paper | string | – | Paper stock — free-form ("matte", "glossy", "recycled", "14pt"). Resolved to the closest stock the vendor runs |
| part_number | string | – | 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 |
| placement | string | – | Print placement for apparel: front (default) | back | front_back |
| powder_finish | string | – | Powder post-processing: as_printed (raw powder surface) | vapor_polished | polished |
| powder_technology | string | – | Powder process: mjf (HP Multi Jet Fusion) | sls (laser sintering). Omit to let the vendor pick its default lane for the material |
| process | string | – | 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 proces… |
| processes | array | – | 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 a… |
| product | string | – | 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 th… |
| proven_spec_orders | integer | – | Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably" |
| quantities | array | – | 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… |
| requirements | array | – | 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… |
| share_key | string | – | 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 |
| ship_to_zip | string | – | 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, prices come back all-in with shipping to an assumed central-US de… |
| ships_from | array | – | Only vendors that ship from these countries/regions ("only US vendors", "keep it domestic") — an INCLUDE list. Friendly terms accepted ("US", "Europe", "Germany", "China", "UK"); unmappable terms are… |
| shore_a | number | – | Numeric Shore A durometer ask (10-95, e.g. 40). Resolved to the NEAREST stocked durometer with a substitution note — never a silent swap |
| sides | string | – | single|double sided printing (defaults: cards double, flyers/posters single) |
| size | string | – | 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 |
| submersible | boolean | – | Must survive submersion in water |
| tapping | array | – | Tapped (threaded) holes for a sheet-metal part — one record per hole the user wants threads cut into. `thread` is the callout in the user's words ("M6", "M4 x 0.7", "1/4-20") and is all that's requir… |
| thickness_in | number | – | 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 n… |
| units | string | – | sheetmetal: DXF drawing units: "mm" (default) or "in". STEP files carry their own units; laser_cut: DXF drawing units: "mm" (default) or "in" |
| vendors | array | – | Only these specific vendors/makers ("just quote Slant 3D") — an INCLUDE list of vendor names as they appear on offers. Friendly names accepted ("A3D", "slant 3d"); unmatched names are reported, never… |
| width_in | number | – | Decal width in inches (default 3) |
No output schema declared.
No examples provided.
get_material_guide Get material guide ~293
Honest, cited material intelligence for material-choice / strength / durability / heat / outdoor questions ("my PLA part broke, what's stronger?", "will this survive outdoors?"). Returns caveats-FIRST facts: published specs (tensile, heat-deflection, UV/outdoor, chemical) each tagged vendor-cited vs general engineering knowledge, "stronger/tougher/hotter than X" ladders (PLA→PETG→ABS/ASA→nylon/PC→metals), and finish/coating options. Call it BEFORE answering such a question, then relay the facts. It supplies FACTS ONLY — comparative specs and vendor-admitted caveats, never a fitness-for-purpose or safety guarantee (that stays your judgment boundary); name express vendor claims "advertised", not "certified".
| Name | Type | Req | Description |
|---|---|---|---|
| material | string | – | A material the user named or you are weighing ("PLA", "6061 aluminum", "stainless") — free-form; a family ask like "stainless" returns the whole family |
| process | string | – | A UFP process to scope to ("fdm_print", "resin_print", "cnc", "sheetmetal", "laser_cut") — lists the materials that process makes |
| question | string | – | The user's raw question — mined for intent (stronger/tougher, heat/hot, outdoor/UV) so the right ladder is surfaced |
No output schema declared.
No examples provided.
get_network_capabilities Network capabilities ~187
The LIVE catalog of what the fabrication network can do RIGHT NOW — no quote needed. Returns the services ledger (tapping, inserts, welding, bending, finishes… with each shop's own size/material/thickness windows), the network's sheet gauge ladder, the stocked hardware combinations (species x thread) with stocked lengths and shop counts — the most-stocked length is the steering default for an unspecified length — the finish options with their stocked color menus, and per-process manufacturability rules. This is live state, not a spec sheet: it changes as connectors join, leave, or have capability branches toggled, so call it fresh when the user asks what's possible (materials, gauges, hardware, colors, services) rather than answering from memory.
| Name | Type | Req | Description |
|---|---|---|---|
| process | string | – | Advisory scope ("sheetmetal") — v1 returns the whole catalog either way; filter what you relay |
No output schema declared.
No examples provided.
get_order_status Get order status ~29
Check status, ETA and tracking for a UFP order.
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | – |
No output schema declared.
No examples provided.
get_shop_gauges A shop's stocked sheet gauges ~144
Every sheet thickness (gauge) ONE named shop stocks right now, per material — read live off the shop's declared catalog, no quote needed. Call it when the user asks what thicknesses/gauges a specific maker carries ("what thicknesses does SendCutSend have in mild steel?"). For the whole network's ladder use get_network_capabilities instead. Never answer a gauge question from memory.
| Name | Type | Req | Description |
|---|---|---|---|
| material | string | – | Advisory: narrow the relayed list to one material ("mild steel", "5052") |
| shop | string | yes | The shop as the user or the offer cards name it ("SendCutSend", "sendcutsend") |
No output schema declared.
No examples provided.
leave_review Leave vendor review ~296
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 | Type | Req | Description |
|---|---|---|---|
| claims | object | – | 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… |
| comment | string | – | Short factual summary of the user's feedback, in their spirit — optional |
| facets | object | – | Score only the facets the user actually spoke to |
| order_id | string | yes | The UFP order being reviewed (ord_…) — see list_orders |
| stars | integer | yes | Overall rating the user confirmed, 1-5 |
No output schema declared.
No examples provided.
list_orders List recent orders ~75
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
poll_quote Poll quote (board internal) ~73
INTERNAL — the offer board calls this to refresh itself while vendors finish pricing. Never call this yourself. The board you were given is already final for its turn; do not reach for refine_quote to look at it again either, that paints a duplicate board.
| Name | Type | Req | Description |
|---|---|---|---|
| quote_id | string | yes | Quote id the board is watching |
No output schema declared.
No examples provided.
preview_quote Preview quote routing (soft quote) ~2,362
INTERNAL client rail — the routing half of refine_quote with NOTHING committed: takes the same arguments as refine_quote and answers how many distinct fabricators (and which process lanes) the network WOULD ask for the refined part, plus the exclusion notes, without creating a child quote, asking any vendor, superseding in-flight work, or logging demand. An expectation, never a promise — lanes can still decline once asked. Never call this to look at prices; it carries none. Use refine_quote to actually re-price.
| Name | Type | Req | Description |
|---|---|---|---|
| bends | – | – | New bend records for this part — a spec change: sheet lanes requote with exactly these bends (the list REPLACES the previous one, never patches it). Same shape as on get_fabrication_quote: each bend… |
| callouts | array | – | 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. |
| clear | array | – | REMOVE constraints entirely ("drop the deadline", "forget the budget", "no more food-safe requirement"): list the constraints to clear and each is removed from the quote — the one deliberate widening… |
| color | string|null | – | New color for this part (spec change — lanes requote). Colour WORDS only ('black', 'green', 'clear'); the network resolves them to each maker's stocked shades, dyes, filaments or coatings — a family… |
| color_shades | – | – | Narrow the board to these color SHADES exactly as the quote lists them (color_shades_available / "Colors on this board") — instant, nothing re-prices, the same quote id comes back with only those sha… |
| deadline | string | – | Latest acceptable delivery date, ISO YYYY-MM-DD |
| finish | string|null | – | New surface finish ("powder coat", "anodized", "bead blasted") — a spec change: finish-capable lanes (sheet metal, CNC, metal print) requote WITH it; 3D-print lanes have no coating step, so they igno… |
| food_safe | boolean | – | – |
| high_temp | boolean | – | – |
| inserts | – | – | New hardware-insert records for this part — a spec change: sheet lanes requote with exactly these inserts (the list REPLACES the previous one, never patches it). Same shape as on get_fabrication_quot… |
| material | string|null | – | 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.… |
| max_budget_usd | number | – | – |
| min_vendor_reviews | integer | – | Only vendors with at least this many verified-purchase reviews |
| min_vendor_stars | number | – | Only vendors whose displayed review rating is at least this many stars (1-5); vendors with no reviews yet are excluded |
| outdoor_rated | boolean | – | – |
| processes | array | – | 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 furthe… |
| proven_spec_orders | integer | – | Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably" |
| quantities | – | – | 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. Pass null to REMOVE a previously asked qu… |
| quote_id | string | yes | – |
| remove_requirements | array | – | Take back INDIVIDUAL requirements terms ("drop the anodized ask, keep the rest"): each listed term is removed from the quote's requirements by normalized match, the others stay. Unknown terms are ign… |
| requirements | array | – | 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… |
| scale | object | – | Rescale the DESIGN ITSELF before re-quoting: per-axis stretch factors over the file's current geometry ("make it 2x bigger" = {"x":2,"y":2,"z":2}). Mesh designs are genuinely converted — the child qu… |
| scenario | string | – | 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 p… |
| ship_to_zip | string | – | Destination US ZIP code, exactly as the user stated it — use this when the user provides their ZIP after a quote priced to the assumed central-US destination (routing.ship_to); the refined prices bec… |
| ships_from | array | – | Only vendors that ship from these countries/regions ("only US vendors", "just European shops", "keep it domestic") — an INCLUDE list naming where the user DOES want vendors from. A CONSTRAINT like pr… |
| sort_by | string | – | "Organize by": re-order the quote's offer cards ("sort by cheapest" → "price"; "soonest arrival first" → "arrival"; "best rated" → "rating"; "total_price" = part + cheapest shipping; "recommended" re… |
| sort_direction | string | – | Flip a sort_by ordering: "desc" reverses the key's natural direction ("most expensive first" = sort_by "price" + "desc"). Only meaningful with sort_by |
| sort_label | string | – | Short human wording for a sort_order, displayed on the board ("most green first") — required with sort_order, since only you know what your order means |
| sort_order | array | – | EXPLICIT card order for asks only you can judge ("sort the most green to the top"): look at the offers' preview images, decide the order yourself, and pass the offer ids first-on-top. Offers you leav… |
| submersible | boolean | – | – |
| tapping | – | – | New tapped-hole records for this part — a spec change: sheet lanes requote with exactly these taps (the list REPLACES the previous one, never patches it). Same shape as on get_fabrication_quote: thre… |
| thickness_in | – | – | New sheet thickness in INCHES ("make it in 1/8" → 0.125) — a spec change: sheet lanes requote at the nearest stocked gauge, flagging the substitution when the match isn't close. Pass null to REMOVE a… |
| undo_last_step | boolean | – | GO BACK EXACTLY ONE STEP ("undo that", "go back", "put it back how it was"): the network restores the previous quote's stored spec and constraints EXACTLY — never reconstructed from conversation — an… |
| vendors | array | – | Only these specific vendors/makers ("only show A3D Manufacturing", "just Slant 3D and Fictiv") — an INCLUDE list of vendor names as they appear on offers. A CONSTRAINT like processes: other vendors'… |
No output schema declared.
No examples provided.
refine_quote Refine quote ~2,583
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, a process filter — "no, I meant in sheet metal" → processes — a ship-from country filter — "only US vendors" → ships_from — or a vendor filter — "only show A3D Manufacturing" → vendors) — 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). "Organize by" ("sort by cheapest", "soonest arrival on top", "most green first") is also this tool: sort_by for objective orders, sort_order + sort_label for orders you judged yourself from the previews — presentation only, instant, nothing re-prices. GOING BACK is also this tool: undo_last_step ALONE takes back exactly one refine step (the quote's steps[] names each step, newest first — the network restores the previous stored state exactly); clear removes whole constraints ("drop the deadline" → clear ["deadline"]); remove_requirements takes back individual requirements terms. Call with ONLY quote_id to re-read the quote (e.g. to pick up preview images that finished rendering).
| Name | Type | Req | Description |
|---|---|---|---|
| bends | – | – | New bend records for this part — a spec change: sheet lanes requote with exactly these bends (the list REPLACES the previous one, never patches it). Same shape as on get_fabrication_quote: each bend… |
| callouts | array | – | 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. |
| clear | array | – | REMOVE constraints entirely ("drop the deadline", "forget the budget", "no more food-safe requirement"): list the constraints to clear and each is removed from the quote — the one deliberate widening… |
| color | string|null | – | New color for this part (spec change — lanes requote). Colour WORDS only ('black', 'green', 'clear'); the network resolves them to each maker's stocked shades, dyes, filaments or coatings — a family… |
| color_shades | – | – | Narrow the board to these color SHADES exactly as the quote lists them (color_shades_available / "Colors on this board") — instant, nothing re-prices, the same quote id comes back with only those sha… |
| deadline | string | – | Latest acceptable delivery date, ISO YYYY-MM-DD |
| finish | string|null | – | New surface finish ("powder coat", "anodized", "bead blasted") — a spec change: finish-capable lanes (sheet metal, CNC, metal print) requote WITH it; 3D-print lanes have no coating step, so they igno… |
| food_safe | boolean | – | – |
| high_temp | boolean | – | – |
| inserts | – | – | New hardware-insert records for this part — a spec change: sheet lanes requote with exactly these inserts (the list REPLACES the previous one, never patches it). Same shape as on get_fabrication_quot… |
| material | string|null | – | 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.… |
| max_budget_usd | number | – | – |
| min_vendor_reviews | integer | – | Only vendors with at least this many verified-purchase reviews |
| min_vendor_stars | number | – | Only vendors whose displayed review rating is at least this many stars (1-5); vendors with no reviews yet are excluded |
| outdoor_rated | boolean | – | – |
| processes | array | – | 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 furthe… |
| proven_spec_orders | integer | – | Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably" |
| quantities | – | – | 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. Pass null to REMOVE a previously asked qu… |
| quote_id | string | yes | – |
| remove_requirements | array | – | Take back INDIVIDUAL requirements terms ("drop the anodized ask, keep the rest"): each listed term is removed from the quote's requirements by normalized match, the others stay. Unknown terms are ign… |
| requirements | array | – | 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… |
| scale | object | – | Rescale the DESIGN ITSELF before re-quoting: per-axis stretch factors over the file's current geometry ("make it 2x bigger" = {"x":2,"y":2,"z":2}). Mesh designs are genuinely converted — the child qu… |
| scenario | string | – | 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 p… |
| ship_to_zip | string | – | Destination US ZIP code, exactly as the user stated it — use this when the user provides their ZIP after a quote priced to the assumed central-US destination (routing.ship_to); the refined prices bec… |
| ships_from | array | – | Only vendors that ship from these countries/regions ("only US vendors", "just European shops", "keep it domestic") — an INCLUDE list naming where the user DOES want vendors from. A CONSTRAINT like pr… |
| sort_by | string | – | "Organize by": re-order the quote's offer cards ("sort by cheapest" → "price"; "soonest arrival first" → "arrival"; "best rated" → "rating"; "total_price" = part + cheapest shipping; "recommended" re… |
| sort_direction | string | – | Flip a sort_by ordering: "desc" reverses the key's natural direction ("most expensive first" = sort_by "price" + "desc"). Only meaningful with sort_by |
| sort_label | string | – | Short human wording for a sort_order, displayed on the board ("most green first") — required with sort_order, since only you know what your order means |
| sort_order | array | – | EXPLICIT card order for asks only you can judge ("sort the most green to the top"): look at the offers' preview images, decide the order yourself, and pass the offer ids first-on-top. Offers you leav… |
| submersible | boolean | – | – |
| tapping | – | – | New tapped-hole records for this part — a spec change: sheet lanes requote with exactly these taps (the list REPLACES the previous one, never patches it). Same shape as on get_fabrication_quote: thre… |
| thickness_in | – | – | New sheet thickness in INCHES ("make it in 1/8" → 0.125) — a spec change: sheet lanes requote at the nearest stocked gauge, flagging the substitution when the match isn't close. Pass null to REMOVE a… |
| undo_last_step | boolean | – | GO BACK EXACTLY ONE STEP ("undo that", "go back", "put it back how it was"): the network restores the previous quote's stored spec and constraints EXACTLY — never reconstructed from conversation — an… |
| vendors | array | – | Only these specific vendors/makers ("only show A3D Manufacturing", "just Slant 3D and Fictiv") — an INCLUDE list of vendor names as they appear on offers. A CONSTRAINT like processes: other vendors'… |
No output schema declared.
No examples provided.
reply_to_maker Reply to the maker ~131
Send the user's answer to a question the maker (vendor) asked about a UFP order — get_order_status surfaces an open question when one is waiting. Confirm the answer with the user before sending. The network relays it: the maker sees plain text from the network account with the user's contact details and links stripped, so never include emails, phone numbers, or URLs the answer depends on.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | The user's answer, in their words — it is relayed to the maker |
| order_id | string | yes | The UFP order the maker asked about (ord_…) |
No output schema declared.
No examples provided.
What is the Agentic Fabrication Network (AFN) MCP server?
Agentic Fabrication Network (AFN) is an MCP server listed in the public MCP registry as ai.agenticfabricationnetwork/ufp. Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out. This page covers its hosted endpoint (https://agenticfabricationnetwork.ai/mcp).
Is the Agentic Fabrication Network (AFN) MCP server safe to use?
Agentic Fabrication Network (AFN) scores 70 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Agentic Fabrication Network (AFN) MCP server expose?
Agentic Fabrication Network (AFN) exposes 13 tools: get_fabrication_quote, refine_quote, preview_quote, poll_quote, finalize_quote, and 8 more. Their descriptions and schemas cost roughly 10,015 tokens of context every time the server is loaded.
Does the Agentic Fabrication Network (AFN) MCP server require authentication?
No. We connected to Agentic Fabrication Network (AFN) without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Agentic Fabrication Network (AFN) MCP server still maintained?
Agentic Fabrication Network (AFN) is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.