Skip to main content
Glama

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 10 of 10 tools scored. Lowest: 3.8/5.

Server CoherenceA
Disambiguation4/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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
create_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNo
cityNo
nameNoRecipient full name (only if the user provided it)
emailNoBuyer email (only if the user provided it)
phoneNo
stateNoTwo-letter US state
street1NoStreet address (only if the user provided it)
street2No
offer_idYes
return_urlNoExact 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_zipNo
billing_cityNo
billing_nameNoBilling 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_stateNoTwo-letter US state
billing_street1No
billing_street2No
shipping_option_idYesOne of the offer's shipping option ids
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
quote_idYesQuote id from the still-quoting response
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cutNoDecal 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
sizeNoPrint 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
colorNoONLY 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
paperNoPaper stock — free-form ("matte", "glossy", "recycled", "14pt"). Resolved to the closest stock the vendor runs
sidesNosingle|double sided printing (defaults: cards double, flyers/posters single)
unitsNosheetmetal: DXF drawing units: "mm" (default) or "in". STEP files carry their own units; laser_cut: DXF drawing units: "mm" (default) or "in"
finishNocnc: 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
processNoWhat 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
productNoprint: 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)
vendorsNoOnly 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
calloutsNoDimensions you read off the user's drawing that matter ("hole_diameter 6.5mm ±0.1"). The tightest tolerance prunes vendors that cannot hold it.
deadlineNoLatest acceptable delivery date, ISO YYYY-MM-DD
file_urlNoPublic URL of the design file — only when the design lives at a URL
materialNoONLY 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_inNoDecal width in inches (default 3)
food_safeNoMust be vendor-certified food safe
height_inNoDecal height in inches (default 3)
high_tempNoMust tolerate sustained heat (vendor heat-resistance claim)
placementNoPrint placement for apparel: front (default) | back | front_back
processesNoOnly 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_keyNoShare 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_countNoNumber of bends in the design (bend lines must be in the file). Prices CNC bending; omit for flat parts
quantitiesNoQuantities 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_fromNoOnly 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_fileNoThe 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_alloyNoMetal 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_numberNoUFP 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_zipNoDestination 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
submersibleNoMust survive submersion in water
metal_finishNoMetal AM post-processing: as_printed|bead_blast|machined_critical|polished|heat_treated (as_printed keeps support witness marks)
requirementsNoVerbatim 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_inNosheetmetal: 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_ratedNoMust survive outdoor exposure
powder_finishNoPowder post-processing: as_printed (raw powder surface) | vapor_polished | polished
max_budget_usdNoHard budget cap in USD, all-in
attachment_urlsNoAdditional 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_technologyNoMetal AM process: laser_powder_bed (SLM/DMLS/LPBF)|binder_jet|ebm. Omit to let the vendor pick its default for the alloy
min_vendor_starsNoOnly 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_technologyNoPowder process: mjf (HP Multi Jet Fusion) | sls (laser sintering). Omit to let the vendor pick its default lane for the material
min_vendor_reviewsNoOnly vendors with at least this many verified-purchase reviews
proven_spec_ordersNoOnly vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably"
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
processNoA UFP process to scope to ("fdm_print", "resin_print", "cnc", "sheetmetal", "laser_cut") — lists the materials that process makes
materialNoA material the user named or you are weighing ("PLA", "6061 aluminum", "stainless") — free-form; a family ask like "stainless" returns the whole family
questionNoThe user's raw question — mined for intent (stronger/tougher, heat/hot, outdoor/UV) so the right ladder is surfaced
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
starsYesOverall rating the user confirmed, 1-5
claimsNoCHECKABLE 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.
facetsNoScore only the facets the user actually spoke to
commentNoShort factual summary of the user's feedback, in their spirit — optional
order_idYesThe UFP order being reviewed (ord_…) — see list_orders
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
quote_idYesQuote id the board is watching
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoNew color for this part (spec change — lanes requote)
finishNoNew 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_byNo"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
vendorsNoOnly 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
calloutsNoDimensions you read off the user's drawing that matter ("hole_diameter 6.5mm ±0.1"). The tightest tolerance prunes vendors that cannot hold it.
deadlineNoLatest acceptable delivery date, ISO YYYY-MM-DD
materialNoNew 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_idYes
scenarioNoComparison 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_safeNo
high_tempNo
processesNoNarrow 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
quantitiesNoNew 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_fromNoOnly 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_labelNoShort 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_orderNoEXPLICIT 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_zipNoDestination 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
submersibleNo
requirementsNoVerbatim 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_ratedNo
max_budget_usdNo
sort_directionNoFlip 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_starsNoOnly vendors whose displayed review rating is at least this many stars (1-5); vendors with no reviews yet are excluded
min_vendor_reviewsNoOnly vendors with at least this many verified-purchase reviews
proven_spec_ordersNoOnly vendors with at least N completed orders for this exact process+material — "a vendor that prints PC reliably"
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe user's answer, in their words — it is relayed to the maker
order_idYesThe UFP order the maker asked about (ord_…)
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    -
    quality
    A
    maintenance
    Enables sending local 3D print files to PrintYourDuck for manual quote review, including file discovery, upload, and status checking.
    79
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    Intelligently 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.
  • F
    license
    A
    quality
    B
    maintenance
    MCP 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
  • F
    license
    -
    quality
    A
    maintenance
    a2a2p 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.

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources