accueil / serveurs / Finance & Paiement / ai.agenticfabricationnetwork/ufp
ai.agenticfabricationnetwork/ufp
serveur MCP (Model Context Protocol) · ufp 0.1.0
Aucun comportement malveillant détecté au test comportemental.
Est-ce que ai.agenticfabricationnetwork/ufp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « ai.agenticfabricationnetwork/ufp » est classé « Vérifié ». Aucun comportement malveillant détecté au test comportemental. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 13 outils
- create_checkout≈ 641 tokens
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.
Paramètres, retour & exemple (18)
Paramètreszip· string · optionnelcity· string · optionnelname· string · optionnel
Recipient full name (only if the user provided it)email· string · optionnel
Buyer email (only if the user provided it)phone· string · optionnelstate· string · optionnel
Two-letter US statestreet1· string · optionnel
Street address (only if the user provided it)street2· string · optionneloffer_id· string · requisreturn_url· string · optionnel
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 pointing here. Omit when unknown — never invent one.billing_zip· string · optionnelcoupon_code· string · optionnel
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 required. Never invent or guess a code.billing_city· string · optionnelbilling_name· string · optionnel
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 ask for it; omit and the payment page handles billing.billing_state· string · optionnel
Two-letter US statebilling_street1· string · optionnelbilling_street2· string · optionnelshipping_option_id· string · requis
One of the offer's shipping option ids
Exemple d'appel{"name": "create_checkout", "arguments": {"offer_id": "texte", "shipping_option_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - finalize_quote≈ 202 tokens
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.
Paramètres, retour & exemple (1)
Paramètresquote_id· string · requis
Quote id from the still-quoting response
Exemple d'appel{"name": "finalize_quote", "arguments": {"quote_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_fabrication_quote≈ 4616 tokens
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.
Paramètres, retour & exemple (47)
Paramètrescut· string · optionnel
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 optionssize· string · optionnel
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 offersbends· array · optionnel
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 angle (90 = a right-angle flange), direction "up"/"down" is the fold direction relative to the flat pattern, radius_mm the requested inside radius (omit it — the shop resolves to its tooling and reports what it used). Pass these when the user articulates WHERE the bends go; a bare "it has 2 bends" is bend_count, not this.color· string · optionnel
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); powder_print: Powder part color: raw gray/white, or a dye ("black", "dark blue") — vendor-resolved; elastomer_print: Elastomer part color — VCJ parts ship raw; asks resolve with an honest substitution note; cnc: Colour for cnc: with finish anodized it is the anodize colour, otherwise the stock's own colour (black Delrin, clear acrylic). Colour WORDS only; each maker resolves the shade and says what it landed on; laser_cut: Colour of the flat stock for laser_cut (black, clear, natural…). Colour WORDS only; each maker quotes the materials it stocks in that colour and drops the ones that cannot be it; 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-resolvedpaper· string · optionnel
Paper stock — free-form ("matte", "glossy", "recycled", "14pt"). Resolved to the closest stock the vendor runssides· string · optionnel
single|double sided printing (defaults: cards double, flyers/posters single)units· string · optionnel
sheetmetal: DXF drawing units: "mm" (default) or "in". STEP files carry their own units; laser_cut: DXF drawing units: "mm" (default) or "in"finish· string · optionnel
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 mild steel for outdoor useinserts· array · optionnel
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/4-20"); both are required. When known, add length_mm (standoff/stud post length), the hole's center (located_at_mm, part's own mm frame), its axis, the drilled diameter, and `points` — the signed unit vector the insert's functional side faces (flip = negate). Pass these when the user asks for press-in nuts/standoffs/studs; vendors with a hardware service price them.process· string · optionnel · fdm_print | resin_print | powder_print | metal_print | elastomer_print | cnc | sheetmetal | laser_cut
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 yetproduct· string · optionnel
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)shore_a· number · optionnel
Numeric Shore A durometer ask (10-95, e.g. 40). Resolved to the NEAREST stocked durometer with a substitution note — never a silent swaptapping· array · optionnel
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 required; when known, add the hole's center in the part's own mm frame (located_at_mm), its unit axis, the pre-tap drilled diameter, and depth_mm so the shop taps the right hole. Pass these when the user asks for threaded/tapped holes; vendors with a tapping service price them.vendors· array · optionnel
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 an error. Usually OMIT: pass it only when the user explicitly names the vendors they wantcallouts· array · optionnel
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· string · optionnel
Latest acceptable delivery date, ISO YYYY-MM-DDfile_url· string · optionnel
Public URL of the design file — only when the design lives at a URLmaterial· string · optionnel
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 stocked materials so every maker can bid). 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); powder_print: Powder-bed nylon: nylon_12|nylon_12_smooth|nylon_11|nylon_12_gf|nylon_12_esd|nylon_12_white|nylon_pa2200|nylon_12_sls|tpu (free-form — "PA12", "glass filled" resolve to the closest stocked powder); elastomer_print: Jetted elastomer: tepu_30a|tepu_50a (free-form — "TPU", "soft rubber" resolve to the closest stocked durometer); 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· number · optionnel
Decal width in inches (default 3)food_safe· boolean · optionnel
Must be vendor-certified food safeheight_in· number · optionnel
Decal height in inches (default 3)high_temp· boolean · optionnel
Must tolerate sustained heat (vendor heat-resistance claim)placement· string · optionnel
Print placement for apparel: front (default) | back | front_backprocesses· array · optionnel
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 processshare_key· string · optionnel
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 otherwisebend_count· number · optionnel
Number of bends in the design (bend lines must be in the file). Prices CNC bending; omit for flat partsquantities· array · optionnel
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; a part_number reorder defaults to the quantity last purchasedships_from· array · optionnel
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 reported, never an error. Vendors whose origin is unknown or whose network is worldwide (origin not guaranteed) are excluded, each with a note saying why. Usually OMIT: pass it only when the user explicitly limits where vendors ship fromdesign_file· ? · optionnel
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.metal_alloy· string · optionnel
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)part_number· string · optionnel
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 specship_to_zip· string · optionnel
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 destination, flagged on routing.ship_tosubmersible· boolean · optionnel
Must survive submersion in watermetal_finish· string · optionnel
Metal AM post-processing: as_printed|bead_blast|machined_critical|polished|heat_treated (as_printed keeps support witness marks)requirements· array · optionnel
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· number · optionnel
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 stockoutdoor_rated· boolean · optionnel
Must survive outdoor exposurepowder_finish· string · optionnel
Powder post-processing: as_printed (raw powder surface) | vapor_polished | polishedmax_budget_usd· number · optionnel
Hard budget cap in USD, all-inattachment_urls· array · optionnel
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.elastomer_finish· string · optionnel
Elastomer post-processing: as_printed (VCJ parts ship raw — the whole lane today)metal_technology· string · optionnel
Metal AM process: laser_powder_bed (SLM/DMLS/LPBF)|binder_jet|ebm. Omit to let the vendor pick its default for the alloymin_vendor_stars· number · optionnel
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 qualitypowder_technology· string · optionnel
Powder process: mjf (HP Multi Jet Fusion) | sls (laser sintering). Omit to let the vendor pick its default lane for the materialmin_vendor_reviews· integer · optionnel
Only vendors with at least this many verified-purchase reviewsproven_spec_orders· integer · optionnel
Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably"elastomer_technology· string · optionnel
Elastomer process: vapor_cure_jetting (VCJ). Omit to let the vendor pick its default lane for the material
Exemple d'appel{"name": "get_fabrication_quote", "arguments": {"cut": "texte", "size": "texte", "bends": [], "color": "texte", "paper": "texte", "sides": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_material_guide≈ 399 tokens
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".
Paramètres, retour & exemple (3)
Paramètresprocess· string · optionnel
A UFP process to scope to ("fdm_print", "resin_print", "cnc", "sheetmetal", "laser_cut") — lists the materials that process makesmaterial· string · optionnel
A material the user named or you are weighing ("PLA", "6061 aluminum", "stainless") — free-form; a family ask like "stainless" returns the whole familyquestion· string · optionnel
The user's raw question — mined for intent (stronger/tougher, heat/hot, outdoor/UV) so the right ladder is surfaced
Exemple d'appel{"name": "get_material_guide", "arguments": {"process": "texte", "material": "texte", "question": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_network_capabilities≈ 304 tokens
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.
Paramètres, retour & exemple (1)
Paramètresprocess· string · optionnel
Advisory scope ("sheetmetal") — v1 returns the whole catalog either way; filter what you relay
Exemple d'appel{"name": "get_network_capabilities", "arguments": {"process": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_order_status≈ 102 tokens
Check status, ETA and tracking for a UFP order.
Paramètres, retour & exemple (1)
Paramètresorder_id· string · requis
Exemple d'appel{"name": "get_order_status", "arguments": {"order_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_shop_gauges≈ 248 tokens
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.
Paramètres, retour & exemple (2)
Paramètresshop· string · requis
The shop as the user or the offer cards name it ("SendCutSend", "sendcutsend")material· string · optionnel
Advisory: narrow the relayed list to one material ("mild steel", "5052")
Exemple d'appel{"name": "get_shop_gauges", "arguments": {"shop": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - leave_review≈ 684 tokens
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.
Paramètres, retour & exemple (5)
Paramètresstars· integer · requis
Overall rating the user confirmed, 1-5claims· object · optionnel
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· object · optionnel
Score only the facets the user actually spoke tocomment· string · optionnel
Short factual summary of the user's feedback, in their spirit — optionalorder_id· string · requis
The UFP order being reviewed (ord_…) — see list_orders
Exemple d'appel{"name": "leave_review", "arguments": {"stars": 1, "order_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_orders≈ 138 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_orders", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - poll_quote≈ 167 tokens
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.
Paramètres, retour & exemple (1)
Paramètresquote_id· string · requis
Quote id the board is watching
Exemple d'appel{"name": "poll_quote", "arguments": {"quote_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - preview_quote≈ 4472 tokens
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.
Paramètres, retour & exemple (34)
Paramètresbends· ? · optionnel
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 is two points in the part's own mm frame (flat DXF parts use z=0) plus angle_deg, direction up|down, and an optional requested radius_mm. Pass null to REMOVE every articulated bendclear· array · optionnel
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 besides undo. Clearing a deadline or budget answers instantly from held offers (near-misses convert back); clearing an attribute/reliability/requirements demand re-prices honestly. Same effect as ["any"] on the three filter args, extended to every constraintcolor· string|null · optionnel
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 word ('blue') brings back EVERY stocked shade of it, and the quote's color_shades_available lists them — never pass a material or a shade you invented. Pass null to REMOVE a previously asked color — back to vendor defaultsscale· object · optionnel
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 quote prices a rescaled file; STEP/IGES designs keep their original file with the dimensions riding as callouts (pass those too). {1,1,1} is a no-opfinish· string|null · optionnel
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 ignore the finish but keep the COLOR. A colored finish ask ("black powder coat") should set BOTH finish and color, so every lane lands on the buyer's color. Pass null to REMOVE a previously asked finishinserts· ? · optionnel
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_quote: species (nut|flush_nut|standoff|blind_standoff|stud) and thread required, hole geometry optional. Pass null to REMOVE every insertsort_by· string · optionnel · recommended | price | unit_price | total_price | arrival | rating
"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" restores the default price+speed rank). PURE PRESENTATION — answers instantly on the same quote, never re-prices or drops offers, and the ordering sticks across re-reads, streaming, and later refines until changedtapping· ? · optionnel
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: thread callout ("M6", "1/4-20") required, hole geometry optional. Pass null to REMOVE every tapvendors· array · optionnel
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' offers drop instantly (nothing re-prices), further refines inherit the filter, and ["any"] clears it to show every vendor again. Friendly names accepted ("A3D", "slant 3d"); unmatched names are reported, never an error. This is THE way to answer "show me everything vendor X offers" — the filtered quote lists that vendor's complete lineupcallouts· array · optionnel
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· string · optionnel
Latest acceptable delivery date, ISO YYYY-MM-DDmaterial· string|null · optionnel
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. Pass null to REMOVE a previously asked material ("forget the aluminum ask") — the ask comes off the record and the process-default material fan returnsquote_id· string · requisscenario· string · optionnel
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· boolean · optionnelhigh_temp· boolean · optionnelprocesses· array · optionnel
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 togetherquantities· ? · optionnel
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 quantity — the quote returns to single-part pricingships_from· array · optionnel
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 processes: non-matching vendors drop instantly (nothing re-prices), further refines inherit the filter, and ["any"] clears it to show vendors everywhere again. Friendly terms accepted ("US", "Europe", "Germany", "China", "UK"). Vendors whose origin is unknown or whose network is worldwide (a specific origin cannot be guaranteed) are excluded, each with an honest note. For "nothing from X" asks, pass the regions the user does want insteadsort_label· string · optionnel
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 meanssort_order· array · optionnel
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 leave out (including ones that stream in later) land below the listed ones in the default rank. Pass sort_label with itship_to_zip· string · optionnel
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 become theirs. NEVER guess or invent a ZIPsubmersible· boolean · optionnelcolor_shades· ? · optionnel
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 shades; pass null to show every shade again. Never invent a shade name.requirements· array · optionnel
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· ? · optionnel
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 previously asked thickness — back to the material's default gaugeoutdoor_rated· boolean · optionnelmax_budget_usd· number · optionnelsort_direction· string · optionnel · asc | desc
Flip a sort_by ordering: "desc" reverses the key's natural direction ("most expensive first" = sort_by "price" + "desc"). Only meaningful with sort_byundo_last_step· boolean · optionnel
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 — and re-prices where needed. Send it ALONE (no other args besides quote_id); combining it with changes is rejected. The quote's steps[] names what each undo would take back — steps[0] is the newest. Undo resets the baseline like any unlabeled refine, so open comparison scenarios close. Undoing the original quote is rejected with honest wording — relay itmin_vendor_stars· number · optionnel
Only vendors whose displayed review rating is at least this many stars (1-5); vendors with no reviews yet are excludedmin_vendor_reviews· integer · optionnel
Only vendors with at least this many verified-purchase reviewsproven_spec_orders· integer · optionnel
Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably"remove_requirements· array · optionnel
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 ignored, never an error. Re-stating the requirements list can never drop a term (terms merge as a union) — this is the removal channel
Exemple d'appel{"name": "preview_quote", "arguments": {"quote_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - refine_quote≈ 4721 tokens
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).
Paramètres, retour & exemple (34)
Paramètresbends· ? · optionnel
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 is two points in the part's own mm frame (flat DXF parts use z=0) plus angle_deg, direction up|down, and an optional requested radius_mm. Pass null to REMOVE every articulated bendclear· array · optionnel
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 besides undo. Clearing a deadline or budget answers instantly from held offers (near-misses convert back); clearing an attribute/reliability/requirements demand re-prices honestly. Same effect as ["any"] on the three filter args, extended to every constraintcolor· string|null · optionnel
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 word ('blue') brings back EVERY stocked shade of it, and the quote's color_shades_available lists them — never pass a material or a shade you invented. Pass null to REMOVE a previously asked color — back to vendor defaultsscale· object · optionnel
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 quote prices a rescaled file; STEP/IGES designs keep their original file with the dimensions riding as callouts (pass those too). {1,1,1} is a no-opfinish· string|null · optionnel
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 ignore the finish but keep the COLOR. A colored finish ask ("black powder coat") should set BOTH finish and color, so every lane lands on the buyer's color. Pass null to REMOVE a previously asked finishinserts· ? · optionnel
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_quote: species (nut|flush_nut|standoff|blind_standoff|stud) and thread required, hole geometry optional. Pass null to REMOVE every insertsort_by· string · optionnel · recommended | price | unit_price | total_price | arrival | rating
"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" restores the default price+speed rank). PURE PRESENTATION — answers instantly on the same quote, never re-prices or drops offers, and the ordering sticks across re-reads, streaming, and later refines until changedtapping· ? · optionnel
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: thread callout ("M6", "1/4-20") required, hole geometry optional. Pass null to REMOVE every tapvendors· array · optionnel
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' offers drop instantly (nothing re-prices), further refines inherit the filter, and ["any"] clears it to show every vendor again. Friendly names accepted ("A3D", "slant 3d"); unmatched names are reported, never an error. This is THE way to answer "show me everything vendor X offers" — the filtered quote lists that vendor's complete lineupcallouts· array · optionnel
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· string · optionnel
Latest acceptable delivery date, ISO YYYY-MM-DDmaterial· string|null · optionnel
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. Pass null to REMOVE a previously asked material ("forget the aluminum ask") — the ask comes off the record and the process-default material fan returnsquote_id· string · requisscenario· string · optionnel
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· boolean · optionnelhigh_temp· boolean · optionnelprocesses· array · optionnel
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 togetherquantities· ? · optionnel
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 quantity — the quote returns to single-part pricingships_from· array · optionnel
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 processes: non-matching vendors drop instantly (nothing re-prices), further refines inherit the filter, and ["any"] clears it to show vendors everywhere again. Friendly terms accepted ("US", "Europe", "Germany", "China", "UK"). Vendors whose origin is unknown or whose network is worldwide (a specific origin cannot be guaranteed) are excluded, each with an honest note. For "nothing from X" asks, pass the regions the user does want insteadsort_label· string · optionnel
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 meanssort_order· array · optionnel
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 leave out (including ones that stream in later) land below the listed ones in the default rank. Pass sort_label with itship_to_zip· string · optionnel
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 become theirs. NEVER guess or invent a ZIPsubmersible· boolean · optionnelcolor_shades· ? · optionnel
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 shades; pass null to show every shade again. Never invent a shade name.requirements· array · optionnel
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· ? · optionnel
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 previously asked thickness — back to the material's default gaugeoutdoor_rated· boolean · optionnelmax_budget_usd· number · optionnelsort_direction· string · optionnel · asc | desc
Flip a sort_by ordering: "desc" reverses the key's natural direction ("most expensive first" = sort_by "price" + "desc"). Only meaningful with sort_byundo_last_step· boolean · optionnel
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 — and re-prices where needed. Send it ALONE (no other args besides quote_id); combining it with changes is rejected. The quote's steps[] names what each undo would take back — steps[0] is the newest. Undo resets the baseline like any unlabeled refine, so open comparison scenarios close. Undoing the original quote is rejected with honest wording — relay itmin_vendor_stars· number · optionnel
Only vendors whose displayed review rating is at least this many stars (1-5); vendors with no reviews yet are excludedmin_vendor_reviews· integer · optionnel
Only vendors with at least this many verified-purchase reviewsproven_spec_orders· integer · optionnel
Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably"remove_requirements· array · optionnel
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 ignored, never an error. Re-stating the requirements list can never drop a term (terms merge as a union) — this is the removal channel
Exemple d'appel{"name": "refine_quote", "arguments": {"quote_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - reply_to_maker≈ 242 tokens
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.
Paramètres, retour & exemple (2)
Paramètresmessage· string · requis
The user's answer, in their words — it is relayed to the makerorder_id· string · requis
The UFP order the maker asked about (ord_…)
Exemple d'appel{"name": "reply_to_maker", "arguments": {"message": "texte", "order_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
Badge pour votre README
Ce serveur a passé le pentest comportemental. Le badge porte son nom et renvoie à cette fiche — la preuve, c'est la fiche (verdict live qu'on contrôle), pas l'image.
[](https://dokore.fr/serveur/ai.agenticfabricationnetwork--ufp)
<a href="https://dokore.fr/serveur/ai.agenticfabricationnetwork--ufp"><img src="https://dokore.fr/badge/ai.agenticfabricationnetwork--ufp.svg" alt="Vérifié par MCP Hub" height="20"></a>
Réévalué en continu : si le comportement change, le verdict tombe et le badge disparaît. Un badge qui ne pointe pas vers une fiche dokore.fr ne prouve rien. Comment ça marche
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».