Agentic Fabrication Network (AFN)
Server Details
Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 10 of 10 tools scored. Lowest: 3.8/5.
Most tools cleanly separate concerns: quote creation, refinement, checkout, order tracking, and reviews each have a unique target. The internal poll_quote is explicitly marked as not for agent use, which creates a slight ambiguity about whether the agent should ever call it, but the warning is clear. finalize_quote is niche but well-scoped for a specific edge case.
All tool names follow a consistent snake_case verb_noun pattern, using prefixes like create_, get_, list_, refine_, and reply_. Verbs are uniform in style and the pattern is predictable across the entire set, making it easy to infer functionality.
With 10 tools, the set is well-sized for the domain, covering quotes, orders, checkout, reviews, and material guidance. Each tool has a clear role, and the count is neither too thin nor bloated.
The core user journey is covered end-to-end: get a quote, refine it, check out, track the order, leave a review, and respond to maker questions. Minor gaps such as no cancel-order tool or the inability for users to initiate questions to makers exist, but they do not block typical workflows.
Available Tools
10 toolscreate_checkoutCreate checkoutAInspect
Create the order and get a hosted payment link for a chosen offer. Call this as soon as the user picks an offer + shipping speed — do NOT ask for their address first: the secure payment page collects the shipping address and email. Only pass address fields if the user already volunteered them. Returns checkout_url — give it to the user to pay; UFP places the vendor order automatically after payment.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | No | ||
| name | No | Recipient full name (only if the user provided it) | |
| No | Buyer email (only if the user provided it) | ||
| phone | No | ||
| state | No | Two-letter US state | |
| street1 | No | Street address (only if the user provided it) | |
| street2 | No | ||
| offer_id | Yes | ||
| return_url | No | 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 | No | ||
| billing_city | No | ||
| billing_name | No | 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 | No | Two-letter US state | |
| billing_street1 | No | ||
| billing_street2 | No | ||
| shipping_option_id | Yes | One of the offer's shipping option ids |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers: it discloses that the payment page collects shipping/email, that the tool returns checkout_url, and that UFP places the vendor order automatically after payment. It does not, however, mention idempotency or any side effects beyond order placement, so a small deduction is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences covering purpose, timing, parameter rule, and return behavior—every sentence earns its place. It is front-loaded with the primary action and contains no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 17 parameters and no output schema, it provides the essential workflow: when to call, what to pass, how to handle optional address fields, and what to do with the returned checkout_url. It skips detailed per-parameter explanations for fields like return_url and billing_*, but the general 'only if volunteered' rule and schema descriptions partially fill that gap, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 47%, so the description must compensate. It does so by stating 'Only pass address fields if the user already volunteered them', which covers the many optional address/billing params, and it implies that offer_id and shipping_option_id are required. This adds meaning beyond the schema without describing every field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create the order and get a hosted payment link for a chosen offer', which uses a specific verb ('create') and resource ('checkout') and clearly distinguishes this from sibling tools like get_order_status and list_orders. The scope is unambiguous and action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to call ('as soon as the user picks an offer + shipping speed'), what not to do ('do NOT ask for their address first'), and when to pass address fields ('Only pass address fields if the user already volunteered them'). This gives clear timing and exclusion guidance without needing to name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_quoteFinalize quote (wait for remaining vendors)AInspect
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 | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | Quote id from the still-quoting response |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and meets it: discloses a ~40s blocking behavior, the need for immediate invocation, and the lack of added value if board is already populated. It also implies the tool is safe to call without side effects, though not explicitly stating read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each essential: condition+action, execution instructions, and a critical exclusion. Information is front-loaded with the primary purpose and constraint. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains the return value ('full board of offers'), the expected wait time, and the exact preconditions. It is sufficiently complete for a single-parameter tool with clear behavior, and it positions itself against sibling tools without needing further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with 'Quote id from the still-quoting response', so the baseline is 3. The description adds no substantive parameter meaning beyond reinforcing 'just quote_id' and 'immediately', which are usage directives rather than semantic details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('waits for... and returns') and clearly identifies the resource ('vendors' offers') and the trigger (empty board response). It sharply distinguishes from siblings by specifying the exact condition under which this tool is used, unlike generic 'finalize' naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (only after an empty board response and told to call it), how to use (call immediately, with just quote_id, say nothing substantive), and when NOT to use (never on a response that already listed offers). This provides clear decision-making rules and practical timing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fabrication_quoteGet fabrication quoteAInspect
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 | Required | Description | Default |
|---|---|---|---|
| cut | No | Decal cut style — pass the user's words verbatim ("triangle", "die cut", "circle"). Known: contour|square|oval|kiss_cut; anything else gets closest-match offers with a substitution note. Omit to compare the main options | |
| size | No | Print size — pass the user's words verbatim ("letter", "24x36", "half letter"). Cards are 3.5x2; flyers 8.5x5.5|8.5x11|11x17; posters 12x18 through 36x48. Unknown sizes get closest-match offers | |
| color | No | 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; print: Print color ask ("full color", "black and white"). Vendors that only price full color note the substitution; apparel: Garment color for apparel ("black", "heather gray") — vendor-resolved | |
| paper | No | Paper stock — free-form ("matte", "glossy", "recycled", "14pt"). Resolved to the closest stock the vendor runs | |
| sides | No | single|double sided printing (defaults: cards double, flyers/posters single) | |
| units | No | sheetmetal: DXF drawing units: "mm" (default) or "in". STEP files carry their own units; laser_cut: DXF drawing units: "mm" (default) or "in" | |
| finish | No | cnc: CNC surface finish: standard|anodized|polished|bead_blasted (default standard); sheetmetal: as_cut (default) | deburred | powder_coat — powder coat protects mild steel for outdoor use | |
| process | No | What to fabricate. If the user just drops a file and asks for a price, OMIT this — UFP detects the file type (artwork, mesh — STL/OBJ/PLY/3MF/AMF, BREP — STEP/IGES, DXF) and routes it to every process that can make it; the response's routing.also_possible lists processes UFP can't quote yet | |
| product | No | print: Print product kind: business_cards|flyers|posters. Omit to quote every kind the artwork fits; apparel: apparel: t_shirt|hoodie|long_sleeve|tank_top (free-form — "tee", "crewneck" resolve to the closest product) | |
| vendors | No | 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 want | |
| callouts | No | Dimensions you read off the user's drawing that matter ("hole_diameter 6.5mm ±0.1"). The tightest tolerance prunes vendors that cannot hold it. | |
| deadline | No | Latest acceptable delivery date, ISO YYYY-MM-DD | |
| file_url | No | Public URL of the design file — only when the design lives at a URL | |
| material | No | 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|tpu (free-form — "PA12", "glass filled" resolve to the closest stocked powder); cnc: aluminum_6061|aluminum_7075|stainless_304|titanium|brass|acetal|delrin|abs|nylon_pa6|peek|acrylic (free-form asks resolve to the closest supported stock); sheetmetal: mild_steel|aluminum_5052|stainless_304 (free-form — "steel", "5052", "stainless" resolve; unknown asks get closest-match offers). Omit to compare the defaults; laser_cut: acrylic|plywood|mdf|delrin|uhmw|hdpe|g10|carbon_fiber|mild_steel|aluminum_5052|stainless_304 (free-form — "plexiglass", "birch" resolve; unknown asks get closest-match offers); decal: vinyl|holographic|transparent|glitter (free-form — "chrome" etc. gets closest matches) | |
| width_in | No | Decal width in inches (default 3) | |
| food_safe | No | Must be vendor-certified food safe | |
| height_in | No | Decal height in inches (default 3) | |
| high_temp | No | Must tolerate sustained heat (vendor heat-resistance claim) | |
| placement | No | Print placement for apparel: front (default) | back | front_back | |
| processes | No | Only quote these fabrication processes — a constraint that narrows the auto-routing fan. Friendly terms accepted ("sheet metal", "3d printing", "cnc", "laser"); unmappable terms are reported, never an error. Usually OMIT: auto-routing quotes every process that can make the file. Pass it only when the user explicitly limits the process | |
| share_key | No | Share key for a LOCKED part — the k=… value from the owner's share link (…/part/UFP-…?k=KEY). Required with part_number when the part is locked; omit otherwise | |
| bend_count | No | Number of bends in the design (bend lines must be in the file). Prices CNC bending; omit for flat parts | |
| quantities | No | Quantities the user actually wants — pass [1] or [2] if that's the ask. Vendors with a higher minimum quote AT their minimum and the offer notes it (requested_quantity). Default: 25 for decals, 1 for prints; a part_number reorder defaults to the quantity last purchased | |
| ships_from | No | 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 from | |
| design_file | No | The design file itself (user-attached or generated image/STL). ChatGPT supplies the file reference automatically when the user attached a file — just bind the attachment here. Other clients may pass a data: URL (base64) or a public https URL string. Preferred over file_url. | |
| metal_alloy | No | 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 | No | UFP part number from a previous paid order (UFP-… or part_…). Reorders: replaces design_file/file_url entirely; any other fields provided override the stored spec | |
| ship_to_zip | No | Destination US ZIP code, exactly as the user stated it. OMIT if the user has not given one — NEVER guess or invent a ZIP. Without it, prices come back all-in with shipping to an assumed central-US destination, flagged on routing.ship_to | |
| submersible | No | Must survive submersion in water | |
| metal_finish | No | Metal AM post-processing: as_printed|bead_blast|machined_critical|polished|heat_treated (as_printed keeps support witness marks) | |
| requirements | No | Verbatim context terms from the user — materials, finishes, certifications, tolerances ("UV resistant", "anodized: red", "iso 13485", "tolerance: 0.1mm"). UFP applies what it can and reports what it could not; unresolvable terms are logged for vendor sourcing. Do not interrogate the user to fill this — pass what they said. | |
| thickness_in | No | sheetmetal: Sheet thickness in inches (e.g. 0.063 = 14 ga aluminum). Quoted at the nearest stocked thickness; omit for ~16 ga default; laser_cut: Nominal thickness in inches; quoted at the vendor's nearest stocked thickness. Omit for the material's common stock | |
| outdoor_rated | No | Must survive outdoor exposure | |
| powder_finish | No | Powder post-processing: as_printed (raw powder surface) | vapor_polished | polished | |
| max_budget_usd | No | Hard budget cap in USD, all-in | |
| attachment_urls | No | Additional files for the SAME part — the PDF drawing next to the STEP, spec sheets, BOMs. Pass everything the user gave you; UFP works out which file is the part and which are supporting documents. | |
| metal_technology | No | 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_stars | No | Only vendors whose displayed review rating is at least this many stars (1-5). Vendors with no reviews yet are excluded — the filter demands demonstrated quality | |
| powder_technology | No | Powder process: mjf (HP Multi Jet Fusion) | sls (laser sintering). Omit to let the vendor pick its default lane for the material | |
| min_vendor_reviews | No | Only vendors with at least this many verified-purchase reviews | |
| proven_spec_orders | No | Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably" |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and excels: it discloses substitution behavior for unknown materials/sizes, UFP auto-routing of design files, that UFP's saved intent applies and user-stated wins, that reorders re-shop across all vendors, that locked parts require share_key, and that offers return across vendors. It also explains tradeoffs like omitting material to let every maker bid, and notes where the 'routing.also_possible' field appears, which is valuable behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every sentence earns its place: it packs essential routing rules, file-format support, reorder semantics, and parameter guidance into a structured flow. However, it could be slightly tightened (e.g., the material parameter description inside the schema is exhaustive, and the paragraph-style listing of file formats could be trimmed). Not every sentence is strictly necessary, but all are informative, so a 4 is fair.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 41-parameter tool with no output schema and no annotations, the description is remarkably complete: it covers design-file input modes, process routing, reorders, locked parts, budget/review filters, shipping ZIP guidance, and special-case behaviors (e.g., decal cut style, bend_count for CNC, powder coat for sheetmetal). It even warns against interrogating the user and tells the agent to pass verbatim terms. The description leaves few gaps for an agent to misinterpret.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds significant semantics beyond parameter names: it explains the strategic meaning of material ('omit instead and each process quotes across its stocked materials so every maker can bid'), clarifies quantity defaults and vendor-minimum behavior, and defines the design_file/part_number/attachment_urls relationship. It resolves ambiguities like 'free-form asks resolve to the closest stocked material with a substitution note', which the schema alone does not convey. Parameter semantics are richly enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Get ranked, purchasable offers... for fabricating a physical item') and clearly distinguishes the tool from siblings by emphasizing it returns ranked offers like Google Flights, contrasting with checkout/order-status/refinement siblings. It names the main input modes (design file, URL, part_number) and process options, making the scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: omit process when a user drops a file (UFP routes it), use part_number INSTEAD of design_file for reorders, require share_key for locked parts, and prefer design_file over file_url. It also notes that vendors parameter is usually OMIT and only passed when explicitly named, giving clear alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_guideGet material guideAInspect
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 | Required | Description | Default |
|---|---|---|---|
| process | No | A UFP process to scope to ("fdm_print", "resin_print", "cnc", "sheetmetal", "laser_cut") — lists the materials that process makes | |
| material | No | A material the user named or you are weighing ("PLA", "6061 aluminum", "stainless") — free-form; a family ask like "stainless" returns the whole family | |
| question | No | The user's raw question — mined for intent (stronger/tougher, heat/hot, outdoor/UV) so the right ladder is surfaced |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: returns caveats-first facts, tags sources (vendor-cited vs general), provides strength ladders, and explicitly states it never gives safety guarantees. This is comprehensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but well-structured, front-loading the core purpose. It is slightly long, but every sentence adds essential information. Could be tightened, but still efficient for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains what is returned. It covers all relevant aspects for a 3-parameter tool, including what the tool does and its limitations. Complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters documented. The description adds value by explaining how 'question' is used to mine for intent, but does not significantly add beyond schema for 'process' and 'material'. Thus slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides material intelligence for specific questions (strength, durability, heat, outdoor). It lists concrete outputs like published specs, comparative ladders, and finish options. The purpose is distinct from sibling tools which handle orders, quotes, and reviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call the tool BEFORE answering material questions and to relay facts. It sets boundaries by stating it supplies facts only, not fitness or safety guarantees. While it doesn't mention alternatives, sibling tools are unrelated, so no confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_statusGet order statusAInspect
Check status, ETA and tracking for a UFP order.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses that this is a read operation returning status, ETA, and tracking, but lacks details on response structure, potential errors, or required permissions. Adequate for a simple read tool, but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one concise sentence that front-loads the action and key data points. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter lookup, the description covers the key return values (status, ETA, tracking). It does not explain how to obtain order_id, but sibling tools like list_orders likely provide that. The lack of an output schema is partially compensated by listing return items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one parameter, order_id, with no description coverage. The parameter name is self-explanatory, and the description references 'a UFP order,' but does not explain the format or source of order_id. Minimal addition beyond the schema, but the parameter is unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks status, ETA, and tracking for a single UFP order. The verb 'check' is specific, and the resource scope distinguishes it from sibling tools like list_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is for a single order's status, but does not explicitly state when to use it instead of alternatives like list_orders. No exclusions or when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leave_reviewLeave vendor reviewAInspect
Record the user's verified-purchase review of how a UFP order turned out. YOUR JOB IS TO STRUCTURE THE FEEDBACK: turn what the user actually said into stars (1-5 overall) and facet scores — "the cut was sloppy" -> quality, "parts arrived 2 days late" -> timeliness, "wrong color" -> accuracy. Keep the optional comment to a short factual summary of their words; never embellish. ALWAYS draft the review (stars, facets, comment) and confirm it with the user BEFORE calling this tool — e.g. "I'll rate this 2 stars with timeliness 1 because it arrived 2 days late — send it?". One review per order: submitting again updates the existing review. Use list_orders first if you need to resolve which order they mean.
| Name | Required | Description | Default |
|---|---|---|---|
| stars | Yes | Overall rating the user confirmed, 1-5 | |
| claims | No | CHECKABLE claims from the user's feedback — the network stamps each against its own records (the ordered spec, polled tracking + delivery events) and attaches evidence chips to the review. Only pass what the user actually asserted. | |
| facets | No | Score only the facets the user actually spoke to | |
| comment | No | Short factual summary of the user's feedback, in their spirit — optional | |
| order_id | Yes | The UFP order being reviewed (ord_…) — see list_orders |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool structures feedback into stars/facets, updates existing reviews on resubmission, and requires user confirmation. It also warns against embellishing comments. With no annotations provided, the description fully carries the burden of behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but every sentence serves a purpose: purpose, structuring rule, confirmation requirement, update behavior, and reference to list_orders. It's dense but not wasteful, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description covers purpose, process, facet mapping, confirmation step, and update semantics. It adequately equips an agent to invoke it correctly, including handling ambiguous order references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with descriptions for all parameters. The description adds value by mapping user phrases to facet scores ('the cut was sloppy' -> quality) and clarifying comment brevity. This goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records a verified-purchase review for a UFP order, with a specific verb ('record') and resource ('review'). It distinguishes from siblings like list_orders or get_order_status by focusing on submitting feedback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to confirm the drafted review with the user before calling, and to use list_orders first to resolve which order. It also notes one review per order with update semantics. While it doesn't list alternatives or exclusions, these guidelines are clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersList recent ordersAInspect
List this agent's recent UFP orders (newest first): order id, what was made, vendor, status, total, ETA, created date. Use it to resolve vague references — "my sticker order", "that order from 6 days ago" — to a concrete order_id before calling get_order_status or leave_review.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the ordering behavior (newest first) and the returned fields. It does not explicitly state it is read-only, but the action of listing without side effects is implied. This is sufficient for a list tool, though a note about no state change would have been more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main purpose, and includes a concrete example of usage. Every sentence provides value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no input parameters and no output schema, the description covers the essential return fields, ordering, and a practical use case. It also differentiates from sibling tools, making the context complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% by default. Per rubric, a baseline of 4 is appropriate since there are no parameters to explain and the description adds no param-specific semantics needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the agent's recent UFP orders with a specific set of fields and sorting (newest first). It also explicitly distinguishes its role from siblings by noting it resolves vague references before calling get_order_status or leave_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: to resolve vague order references into a concrete order_id. It also names specific alternative tools (get_order_status, leave_review) and indicates this tool should be used before them, providing clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_quotePoll quote (board internal)AInspect
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 | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | Quote id the board is watching |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It does reveal that the tool is internal and that the board refreshes itself, and it warns that the board is already final. However, it does not specify what happens if the tool is called manually (errors, side effects, return value), leaving some ambiguity about actual runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the INTERNAL warning and immediately give actionable prohibitions. Every clause earns its place, with no filler or repeated schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is an intentional internal-only tool with a single well-described parameter and no output schema, the description covers the essential context: what the tool is for, who calls it, and why the agent must not call it. It lacks explicit return/error details, but for a tool the agent is explicitly forbidden from invoking, the guardrails are sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes quote_id as 'Quote id the board is watching' with 100% coverage, so the description adds no additional parameter semantics. The baseline of 3 applies because the schema already handles the parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool is an internal callback used by the offer board to refresh itself while vendors finish pricing, which goes beyond the title. It also distinguishes itself from refine_quote, warning not to use that tool for re-inspection because it paints a duplicate board.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit, non-ambiguous usage rules: 'Never call this yourself' and explicitly warns against using refine_quote to look at the board again. It explains that the provided board is already final for its turn, so calling this tool is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refine_quoteRefine quoteAInspect
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. Call with ONLY quote_id to re-read the quote (e.g. to pick up preview images that finished rendering).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | New color for this part (spec change — lanes requote) | |
| finish | No | 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 | |
| sort_by | No | "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 changed | |
| vendors | No | 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 lineup | |
| callouts | No | Dimensions you read off the user's drawing that matter ("hole_diameter 6.5mm ±0.1"). The tightest tolerance prunes vendors that cannot hold it. | |
| deadline | No | Latest acceptable delivery date, ISO YYYY-MM-DD | |
| material | No | New material for this part ("I need it in PLA" → "pla"). A spec change: lanes requote with this material through warm vendor sessions; an explicit material here replaces the quote's material fan-out. Free-form — unstocked asks resolve to the closest stocked material with a substitution note. Do NOT pass material changes as requirements terms | |
| quote_id | Yes | ||
| scenario | No | Comparison lane label. A labeled refine sits SIDE BY SIDE with the quote's other offers instead of replacing them: refines with the same label replace that scenario, different labels coexist (max 4 per quote), and a refine WITHOUT a scenario resets the baseline and supersedes every lane. "How does X compare to Y?" = one labeled refine per scenario (e.g. scenario "carbon steel" + material "carbon steel", then scenario "aluminum" + material "aluminum"). Keep labels short and human, like "carbon steel" | |
| food_safe | No | ||
| high_temp | No | ||
| processes | No | Narrow this quote to specific fabrication processes ("no, I meant in sheet metal" → ["sheet metal"]). A CONSTRAINT, not a new quote: excluded lanes drop while warm vendor sessions survive, and further refines inherit the filter. Friendly terms accepted ("sheet metal", "3d printing", "cnc", "laser"); pass ["any"] to clear the filter and show every process again. When comparison scenarios are open and the user narrows the process, re-refine EVERY active scenario label with this same arg so all columns prune together | |
| quantities | No | New quantities the user wants (spec change — lanes requote at the new quantity). Same rules as on get_fabrication_quote: pass the real ask, never inflate it | |
| ships_from | No | 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 instead | |
| sort_label | No | 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 | No | 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 it | |
| ship_to_zip | No | Destination US ZIP code, exactly as the user stated it — use this when the user provides their ZIP after a quote priced to the assumed central-US destination (routing.ship_to); the refined prices become theirs. NEVER guess or invent a ZIP | |
| submersible | No | ||
| requirements | No | Verbatim context terms from the user — materials, finishes, certifications, tolerances ("UV resistant", "anodized: red", "iso 13485", "tolerance: 0.1mm"). UFP applies what it can and reports what it could not; unresolvable terms are logged for vendor sourcing. Do not interrogate the user to fill this — pass what they said. | |
| outdoor_rated | No | ||
| max_budget_usd | No | ||
| sort_direction | No | Flip a sort_by ordering: "desc" reverses the key's natural direction ("most expensive first" = sort_by "price" + "desc"). Only meaningful with sort_by | |
| min_vendor_stars | No | Only vendors whose displayed review rating is at least this many stars (1-5); vendors with no reviews yet are excluded | |
| min_vendor_reviews | No | Only vendors with at least this many verified-purchase reviews | |
| proven_spec_orders | No | Only vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably" |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure, and it excels: it explains that material/quantity changes re-price via warm vendor sessions, that constraints drop offers instantly without re-pricing, that labeled refines coexist (max 4) while unlabeled refines replace the baseline, that sort ordering is instant and presentation-only, and that quote_id alone triggers a re-read. These are meaningful behaviors beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, but appropriately so for a tool with 25 parameters and multiple operating modes. It front-loads the core purpose in the opening sentence and uses dash-separated examples efficiently. Some redundancy exists (e.g., process/vendor/ships_from each repeat the 'constraint, not new quote' pattern), but each sentence carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (25 params, no output schema, no annotations), the description covers all major modes: narrowing, spec changes, scenario comparisons, sorting, and re-reading. It does not describe the return format, but with no output schema the description is expected to cover return behavior; the 're-read to pick up preview images' hint partially addresses this. It is complete enough for an agent to invoke the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 76%, so the schema already documents most parameters. The description adds genuine value by mapping natural-language examples to parameters ('only US vendors' → ships_from, 'only show A3D Manufacturing' → vendors), clarifying the spec-change vs. constraint distinction, and explaining sort_order + sort_label for judgment-based ordering. This goes beyond a simple restatement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Narrow an existing quote' and 'CHANGE its spec', immediately distinguishing it from quote creation or finalization. It enumerates distinct actions (narrowing, spec change, scenario comparison, sort, re-read) with concrete examples, making the tool's purpose unmistakable even among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance on when to use this tool ('existing quote', 're-read'), what to pass for different intents (ZIP, deadline, processes, vendors), and what not to pass (material/quantity as requirements terms). It also notes presentation-only sorting vs. re-pricing, but does not explicitly reference alternative sibling tools by name or state when not to use refine_quote in favor of another tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_makerReply to the makerAInspect
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 | Required | Description | Default |
|---|---|---|---|
| message | Yes | The user's answer, in their words — it is relayed to the maker | |
| order_id | Yes | The UFP order the maker asked about (ord_…) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the message is relayed via the network account, that contact details and links are stripped, and warns against including them. This is significant behavioral context beyond a simple 'send'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then usage guidance. Every clause adds value: the flow reference, the confirmation step, and the network sanitization warning. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema, the description still provides enough context: when to use, how to use, and a critical behavioral caveat. It is complete for a two-parameter send action with strong usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description reinforces that message is in the user's words and relayed, but adds little beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends the user's answer to a maker's question about a UFP order. It references get_order_status, distinguishing this as the complementary action to surfacing the question.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to confirm the answer with the user before sending and ties usage to get_order_status surfacing an open question. Also provides a clear exclusion: never include emails, phone numbers, or URLs the answer depends on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityAmaintenanceEnables sending local 3D print files to PrintYourDuck for manual quote review, including file discovery, upload, and status checking.79MIT
- Flicense-qualityDmaintenanceIntelligently generates cost estimates and lead times for manufacturing RFPs by parsing requests, matching against historical quotes, and calculating activity-based costs with confidence scoring and human approval workflows.
- FlicenseAqualityBmaintenanceMCP server for real FDM 3D-printing slicing, quoting, and design-for-manufacturability analysis via the FabTally API, supporting 12 printer profiles and 12 materials. Includes free discovery/printability tools and paid slice/quote/orientation tools settled via x402 (USDC on Base).6
- Flicense-qualityAmaintenancea2a2p is an open protocol for turning intent into physical things: describe what must be true about the world (holds 15 kg, outdoors, ten years) and get back a manufacturable specification, a deterministic engineering review, and a price. The specification is public domain (CC0) and implementable by anyone; a2a2p.com is a free reference implementation with no API key required.