# Agent Fabrication Network (UFP) (remote · agenticfabricationnetwork.ai)

Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out.

- Trust score: 59/100 (low)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `agenticfabricationnetwork.ai`: 59/100 (this document), [markdown](https://verifymcp.io/servers/ai-agenticfabricationnetwork-ufp/agenticfabricationnetwork.md), [page](https://verifymcp.io/servers/ai-agenticfabricationnetwork-ufp/agenticfabricationnetwork)

## Channel facts

- Endpoint: `https://agenticfabricationnetwork.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 61/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 8633 tokens (~784/item across 11 items; 9 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 82% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http ai-agenticfabricationnetwork-ufp https://agenticfabricationnetwork.ai/mcp
```

### Codex

```toml
[mcp_servers.ai-agenticfabricationnetwork-ufp]
url = "https://agenticfabricationnetwork.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-agenticfabricationnetwork-ufp": {
      "type": "remote",
      "url": "https://agenticfabricationnetwork.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-agenticfabricationnetwork-ufp --url https://agenticfabricationnetwork.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-agenticfabricationnetwork-ufp:
    url: "https://agenticfabricationnetwork.ai/mcp"
```

### Other

```json
{
  "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.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 58, −1)

- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [functional improvement] Endpoint reachability: unreachable → reachable
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100
- [functional] Schema quality: excellent → good

### 2026-08-01 (score 59, 0)

- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] Stability: 0.17 → unverified
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-07-31 (score 59, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 61, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 58, 0)

- [security] The server rewrote its instructions, which are the text every model session reads

### 2026-07-27 (score 58, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (9)

### `get_fabrication_quote` (~2283 tokens)

Get fabrication quote

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.

Input parameters:

- `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
- `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): 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 o…
- `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…
- `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 | powder_coat — powder coat protects mild steel for outdoor use
- `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)
- `material` (string): 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…
- `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
- `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…
- `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
- `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"
- `width_in` (number): Decal width in inches (default 3)

### `refine_quote` (~1457 tokens)

Refine quote

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 — or a ship-from country filter — "only US vendors" → ships_from) — 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. Call with ONLY quote_id to re-read the quote (e.g. to pick up preview images that finished rendering).

Input parameters:

- `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): New color for this part (spec change — lanes requote)
- `deadline` (string): Latest acceptable delivery date, ISO YYYY-MM-DD
- `finish` (string): 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)
- `material` (string): 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` (array): 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
- `quote_id` (string, required)
- `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…
- `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)

### `poll_quote` (~56 tokens)

Poll quote (board internal)

INTERNAL — the offer board calls this to refresh itself while vendors finish pricing. Never call this yourself: to pick up new offers, use refine_quote with just quote_id.

Input parameters:

- `quote_id` (string, required): Quote id the board is watching

### `finalize_quote` (~81 tokens)

Finalize quote (wait for remaining vendors)

Step 2 after a quote response says the board is still filling: waits for the remaining vendors to answer (up to ~40s) and returns the final board and offers. Call with just quote_id, immediately after the response that told you to. Never call it otherwise.

Input parameters:

- `quote_id` (string, required): Quote id from the still-quoting response

### `create_checkout` (~375 tokens)

Create checkout

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.

Input parameters:

- `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)
- `email` (string): Buyer email (only if the user provided it)
- `name` (string): Recipient full name (only if the user provided it)
- `offer_id` (string, required)
- `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, required): 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)

### `get_order_status` (~29 tokens)

Get order status

Check status, ETA and tracking for a UFP order.

Input parameters:

- `order_id` (string, required)

### `list_orders` (~75 tokens)

List recent orders

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.

### `leave_review` (~296 tokens)

Leave vendor review

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.

Input parameters:

- `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, required): The UFP order being reviewed (ord_…) — see list_orders
- `stars` (integer, required): Overall rating the user confirmed, 1-5

### `get_material_guide` (~293 tokens)

Get material guide

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".

Input parameters:

- `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

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-agenticfabricationnetwork-ufp/agenticfabricationnetwork#diagnostics

## Score history

- 2026-08-03: 59
- 2026-08-02: 58
- 2026-08-01: 59
- 2026-07-31: 59
- 2026-07-30: 61
- 2026-07-29: 59
- 2026-07-28: 58
- 2026-07-27: 58
- 2026-07-26: 58

## Links

- Remote endpoint: https://agenticfabricationnetwork.ai/mcp
- Changelog RSS feed: https://verifymcp.io/servers/ai-agenticfabricationnetwork-ufp/agenticfabricationnetwork/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-agenticfabricationnetwork-ufp/agenticfabricationnetwork/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-agenticfabricationnetwork-ufp/agenticfabricationnetwork
