3D Printer on Demand
Server Details
Quote, check and order 3D prints of STL, 3MF, STEP or OBJ files. Made in the USA, shipped in the US.
- Status
- Healthy
- Uptime
- 100.0% over 20 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
Most tools have clearly distinct purposes, and descriptions go out of their way to state boundaries (e.g. check_printability gives no quote, get_print_quote does not cover drawings). However, several advisory tools overlap: get_design_guidance covers hole clearances/tolerances and printing vs molding, which also belong to size_hole_or_tolerance and compare_print_vs_molding, and recommend_material vs list_materials both address material choice. An agent could reasonably pick the wrong advisory tool, though the descriptions mostly steer it right.
All 13 tools use consistent snake_case with a verb-first pattern (get_, list_, update_, combine_, compare_, check_, recommend_, reorder_, quote_, size_). The verbs vary appropriately by action rather than being chaotic, and each name reads as a predictable verb_noun phrase.
13 tools is well within the ideal range and each one earns its place: quoting, file checking, material advice, design guidance, order status, reorder, and quote combination are all distinct capabilities. Nothing feels padded or redundant at the count level.
The quote lifecycle is well covered (create from file or link, update, combine, reorder) plus order status, printability checks, and a solid advisory set. Minor gaps exist: there is no way to retrieve or cancel an existing quote by its link without modifying it, and no order history lookup beyond a single order link, but agents can work around these via the website links returned.
Available Tools
13 toolscheck_printabilityCheck a 3D model for printingARead-onlyInspect
Use this when someone attaches an STL, 3MF, STEP or OBJ file and wants to know whether it will 3D print well: size, walls, mesh problems and what to change. It reads the file, runs the same automatic design checks as our website, and stores nothing. It gives no quote. When no file is attached, it returns a link to upload the file on our website.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Material id the part would be printed in, if the user named one, one of the listed values. | |
| model_file | No | The STL, 3MF, STEP or OBJ file the user attached. | |
| part_description | No | What the user says this part is or what it is for, in their own words, if they said. Leave out if they did not. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| message | Yes | |
| outcome | Yes | |
| size_mm | No | |
| findings | No | |
| material | No | |
| file_name | No | |
| review_url | No | |
| size_limit | No | |
| upload_url | No | |
| volume_cm3 | No | |
| multi_color | No | |
| needs_person | No | |
| person_reasons | No | |
| design_check_url | No | |
| material_pricing_mode | No | |
| fits_instant_size_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only safety, but the description adds substantive behavior: it reads the file, runs the same automatic design checks as the website, stores nothing, and returns an upload link when no file is attached. That is real context beyond structured fields.
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 sentences, trigger front-loaded, every clause carrying information (what it checks, what it does not do, the fallback). No filler or repetition of the title.
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?
An output schema exists, so return values need not be described. Given the read-only annotations plus the description's coverage of inputs, side effects (stores nothing) and the no-file path, an agent has everything needed to call it 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?
Schema description coverage is 100%, so the schema already documents material, model_file and part_description, including the enum values. The description names supported file formats but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource (check a 3D model's printability) and enumerates exactly what it inspects: size, walls, mesh problems and remediation. It also distinguishes itself from siblings with 'It gives no quote,' routing quoting intent to get_print_quote.
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 trigger is explicit: 'Use this when someone attaches an STL, 3MF, STEP or OBJ file and wants to know whether it will 3D print well.' It also states the negative case ('gives no quote') and the no-file fallback behavior, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combine_quotesCombine quotes into one orderAInspect
Use this when someone has two or more quotes from 3D Printer on Demand in this chat and wants to order the parts together. It takes the private quote links, saves one quote that holds all the parts, and returns its private link with one combined total and one shipping charge, next to what the quotes cost ordered one by one. It does not change the earlier quotes, and it does not take a quote made outside this chat or a part still waiting for a person.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_urls | Yes | The private quote links from earlier quotes in this chat, one per part. |
Output Schema
| Name | Required | Description |
|---|---|---|
| parts | No | |
| message | Yes | |
| outcome | Yes | |
| currency | No | |
| next_step | No | |
| quote_url | No | |
| saved_usd | No | |
| total_usd | No | |
| link_number | No | |
| shipping_usd | No | |
| price_held_days | No | |
| separate_total_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and openWorldHint=false, so the bar is lower, and the description still adds real context: a new quote record is written, earlier quotes are left untouched, and the response carries combined totals versus per-quote costs. It stops short of stating idempotency or whether repeated combines stack, which is the only meaningful gap.
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?
Front-loaded with the selection condition, then behavior, then exclusions — a sensible order with no filler. Three sentences is proportionate, though the middle sentence packs two ideas (what is saved and what is returned) that could read more cleanly.
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 one-parameter mutation with annotations and an output schema, everything an agent needs is present: trigger, preconditions, side effects, what is left unchanged, and what the returned link represents. Return-value details are bonus rather than a burden here since an output schema exists.
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% and minItems/maxItems already constrain the array, so the schema does the heavy lifting. The description still adds meaning the schema cannot: the links must be 'private quote links from earlier quotes in this chat' and one per part, which is exactly the mis-fill an agent would otherwise make.
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?
States a specific verb and resource ('saves one quote that holds all the parts') plus the outcome ('returns its private link with one combined total and one shipping charge'). It also distinguishes itself from quote_from_link by excluding quotes made outside this chat, so an agent can pick it out of the sibling list without opening a schema.
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?
Gives an explicit trigger ('use this when someone has two or more quotes from 3D Printer on Demand in this chat') and explicit exclusions ('does not take a quote made outside this chat or a part still waiting for a person'). Both when-to-use and when-not-to-use are covered with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_print_vs_moldingCompare 3D printing with moldingARead-onlyInspect
Use this when someone wants to compare 3D printing with injection molding for a quantity, using their own numbers: quantity, printed unit cost, tooling cost and molded unit cost. It returns the totals for each, the crossover quantity on those numbers, and the published range with sources. It makes up no cost, and when a number is missing it says which.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | The total or yearly quantity to compare. | |
| setup_cost | No | Setup or secondary cost per printed order, in US dollars. Default 0. | |
| tooling_cost | No | What the mold costs, in US dollars. 0 if the user has no tooling quote yet. | |
| revision_cost | No | Cost per tool revision, in US dollars. | |
| tool_revisions | No | Expected tool revisions. Default 0. | |
| molded_unit_cost | No | The user's cost per molded part once the tool exists, in US dollars. | |
| printed_unit_cost | No | The user's cost per printed part, in US dollars. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| table | No | |
| result | No | |
| message | Yes | |
| missing | No | |
| outcome | Yes | |
| reading | Yes | |
| sources | Yes | |
| problems | No | |
| tool_url | Yes | |
| assumptions | No | |
| published_range | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, and the description adds real behavioral guarantees beyond that: it will not fabricate costs and it reports which number is missing. That missing-value disclosure is the kind of failure-mode behavior annotations cannot express. The rest ('returns the totals for each, the crossover quantity...') largely restates what the output schema already conveys, which keeps it from a 5.
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 sentences, front-loaded with the when-to-use clause, then outputs, then the reliability caveat. No filler and no repetition of the tool name or title.
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?
With seven optional parameters (zero required), a full output schema and clear annotations, the description covers purpose, inputs, outputs and trust behavior adequately. The one gap is that it never explains what happens if the user supplies no numbers at all, which matters given that every parameter is optional.
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 all seven parameters with units, defaults and bounds, making 3 the baseline. The description adds little parameter meaning and only names four of the seven inputs (quantity, printed unit cost, tooling cost, molded unit cost), silently omitting setup_cost, revision_cost and tool_revisions, which could mislead an agent into ignoring revision-related costs.
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?
States a specific verb (compare) and two specific resources (3D printing vs injection molding) plus the scope (for a quantity, using the user's own numbers). This is clearly distinguishable from siblings like get_print_quote or recommend_material, which do different jobs.
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?
'Use this when someone wants to compare 3D printing with injection molding for a quantity, using their own numbers' gives a clear triggering condition and even constrains the input mode (user-supplied figures, not a quote lookup). It does not name an alternative tool or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_guidanceGet 3D print design guidanceARead-onlyInspect
Use this when someone asks how to design a part for FDM 3D printing: wall thickness, tolerances, hole clearances, overhangs and supports, orientation, infill, bosses, ribs, snap fits, threaded inserts, dimensional accuracy, published material figures, or printing compared with molding or machining. It takes a topic or the question and returns short answers with their published sources and a link to the full page. It does not check a specific file.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | The engineering topic, when it is clear which one the user means. | |
| question | No | The user's question in their own words. Used only to pick the topic and the most relevant answers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| topics | Yes | |
| message | Yes | |
| outcome | Yes | |
| sources | Yes | |
| citation_rule | Yes | |
| claim_classes | Yes | |
| engineering_url | Yes | |
| available_topics | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/destructive=false, so the safety profile is covered. The description still adds that answers come with published sources and a link to the full page and that it is scoped to guidance (not file checks), which is useful behavior beyond the structured fields.
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 topic list is long but front-loads the trigger and every item earns its place by defining coverage scope. No filler sentences; the exclusion is placed last as a boundary marker.
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?
With an output schema covering return values and annotations covering safety, the description only needs to cover trigger, scope, and boundaries – all present. The brief omission of how topic vs question interact when both are supplied is minor.
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 description coverage is 100% and the enum enumerates every topic, so the schema carries the parameter burden; per calibration this is a baseline 3. The description recaps 'takes a topic or the question' but adds no syntax or format detail beyond the schema.
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?
States a specific verb and resource ('how to design a part for FDM 3D printing') and enumerates the covered topics, so the agent knows exactly what guidance it returns. The closing line 'It does not check a specific file' distinguishes it from the check_printability sibling.
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 trigger is explicit ('Use this when someone asks how to design a part...') and the exclusion 'does not check a specific file' rules out the file-inspection use case. It never names the routing sibling by name, but the when/when-not is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_statusCheck an order's statusARead-onlyInspect
Use this when someone who ordered from 3D Printer on Demand asks where their order is or what state it is in. It takes the private order link from their order email and returns the order's status, its parts, how many have shipped, and any tracking numbers. It does not show the shipping address and it does not change the order.
| Name | Required | Description | Default |
|---|---|---|---|
| order_link | Yes | The private order link from the order confirmation or shipping email. |
Output Schema
| Name | Required | Description |
|---|---|---|
| paid | No | |
| parts | No | |
| status | No | |
| totals | No | |
| message | Yes | |
| need_by | No | |
| outcome | Yes | |
| packages | No | |
| expedited | No | |
| placed_on | No | |
| order_number | No | |
| status_detail | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real context: it consumes the private order link from email, it explicitly does not return the shipping address, and it does not mutate the order. This is useful beyond the annotations, though it doesn't mention rate limits or error 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?
Three efficient sentences, front-loaded with the usage condition, followed by what it returns and what it excludes. Every sentence adds distinct value and there is 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 single-parameter read-only tool with an output schema, the description is complete: it states the trigger, the return contents, and explicit exclusions. Nothing an agent needs to call it correctly is missing, and the output schema handles return structure.
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%, meaning the single parameter is already fully documented in the input schema. The description repeats that it 'takes the private order link from their order email' but adds no new syntax, format, or validation detail beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
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?
States a specific verb and resource ('returns the order's status, its parts, how many have shipped, and any tracking numbers') and clearly distinguishes it from siblings like get_print_quote and reorder_from_order by describing exactly what it retrieves. An agent knows precisely what this tool does without opening the schema.
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 it: 'when someone who ordered from 3D Printer on Demand asks where their order is or what state it is in.' It also states exclusions ('does not show the shipping address and it does not change the order'), which helps an agent avoid misusing it for address changes or order modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_print_quoteGet a 3D print quoteAInspect
Use this when someone asks how much it costs to 3D print a part, or wants a quote to have a 3D model (an STL, 3MF, STEP or OBJ file) printed and shipped by 3D Printer on Demand. It reads the attached file, checks that it can be printed, saves the quote, and returns the estimate with a private link that opens the saved quote on our website. When no file is attached, or the file type cannot be read, it returns a link to upload the file on our website. It does not cover drawings or photos.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Color name for the chosen material. Default is the material's first color. | |
| material | No | Material id, one of the listed values. Default petg. | petg |
| quantity | No | How many copies of the part. | |
| model_file | No | The STL, 3MF, STEP or OBJ file the user attached. | |
| part_description | No | What the user says this part is or what it is for, in their own words, if they said. Leave out if they did not. |
Output Schema
| Name | Required | Description |
|---|---|---|
| color | No | |
| message | Yes | |
| outcome | Yes | |
| size_mm | No | |
| currency | No | |
| material | No | |
| quantity | No | |
| file_name | No | |
| next_step | No | |
| quote_url | No | |
| total_usd | No | |
| review_url | No | |
| upload_url | No | |
| multi_color | No | |
| shipping_usd | No | |
| subtotal_usd | No | |
| valid_colors | No | |
| order_fee_usd | No | |
| price_held_days | No | |
| print_fit_notes | No | |
| valid_materials | No | |
| price_per_part_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=false, openWorldHint=false; the description adds substantial behavior on top: it reads the file, validates printability, persists the quote, returns an estimate with a private website link, and degrades to an upload link when no file or an unreadable type is present. The stated 'saves the quote' is consistent with readOnlyHint=false.
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?
Front-loads the trigger condition, then layers the normal path, the fallback path, and the scope exclusion in four tight sentences with no filler. Each sentence carries distinct, load-bearing 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?
An output schema exists so return values need no explanation, yet the description still clarifies the key output (estimate plus a private quote link) and the degraded fallback response. Combined with the write semantics implied by annotations, an agent has everything needed to call this 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?
Schema description coverage is 100%, so the schema already documents material, color, quantity, and the nested model_file fields — this sets the baseline at 3. The description reinforces which file types are acceptable and that a missing attachment is tolerated, but adds no new syntax or constraint detail for the individual parameters.
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?
States a specific verb+resource (produce a 3D printing cost quote) and enumerates the exact input file types accepted (STL, 3MF, STEP, OBJ). It also carves out scope boundaries that separate it from siblings — it explicitly excludes drawings/photos and describes the no-file fallback that distinguishes it from quote_from_link.
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?
Opens with an explicit trigger ('Use this when someone asks how much it costs...'), states an exclusion ('does not cover drawings or photos'), and describes the no-file/unreadable fallback path. It stops short of naming the sibling to use instead (e.g., quote_from_link, check_printability), so routing among neighbors is still partly inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_detailsGet service detailsARead-onlyInspect
Use this when someone asks how 3D Printer on Demand works: lead time, shipping, how long a quote is held, accepted file types, the largest part, the items we refuse to print, or where to upload a file, request a review or get in touch. It returns these facts as our website publishes them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| urls | Yes | |
| brand | Yes | |
| made_in | No | |
| expedite | Yes | |
| shipping | Yes | |
| ships_to | No | |
| lead_time | Yes | |
| materials | Yes | |
| part_size | Yes | |
| file_types | Yes | |
| quote_hold | Yes | |
| not_printed | Yes | |
| contact_email | Yes | |
| quote_hold_days | Yes | |
| review_follow_up | Yes | |
| file_types_review | Yes | |
| shipping_flat_usd | Yes | |
| file_types_in_chat | Yes | |
| file_types_instant | Yes | |
| freight_quote_over | Yes | |
| lead_time_reviewed | Yes | |
| largest_instant_part_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds a meaningful behavioral fact beyond annotations: it returns facts 'as our website publishes them,' signalling the data is static published documentation rather than computed/real-time. It doesn't discuss freshness or latency, but the annotations carry the safety profile.
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?
One dense sentence with the trigger front-loaded and the fact list following. The topic enumeration is long but each item is a genuine query category; minimal waste.
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?
With no parameters, readOnly/openWorld annotations, and an output schema present, the description covers exactly what an agent needs: when to call it and what categories of facts come back. Return-value explanation is unnecessary given the output schema.
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?
Zero parameters, so the baseline is 4. The description correctly implies a no-argument retrieval of published facts, consistent with the empty schema.
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?
States a specific resource (3D printing service details) with an enumerated list of covered facts (lead time, shipping, quote hold, file types, max size, refused items, upload/contact). It's clearly distinct from siblings like get_print_quote or list_materials, though it doesn't explicitly name them.
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?
Gives a clear trigger ('when someone asks how 3D Printer on Demand works') plus concrete example topics. It doesn't articulate when NOT to use it or name alternative tools, but the enumerated question types effectively scope its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsList print materialsARead-onlyInspect
Use this when someone asks which plastics 3D Printer on Demand prints, which colors each comes in, which material suits a job, or which materials are quoted by a person. It returns each material with what it is for, what it is not advised for, its colors and how it is quoted, plus plain guidance on comparing them. It returns no engineering figures.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| guidance | Yes | |
| materials | Yes | |
| review_url | Yes | |
| materials_url | Yes | |
| strength_note | Yes | |
| heat_rank_note | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds real value by describing the return contents and, notably, the negative scope 'returns no engineering figures', which sets agent expectations. It stops short of detailing any limits or freshness 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?
Two sentences, front-loaded with the trigger conditions and followed by the return summary. Both sentences carry distinct, non-redundant information and the negative scope note earns its place.
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?
An output schema exists so return values need not be enumerated, yet the description helpfully summarizes them anyway, and a 0-param list tool requires little else. The one gap is the unstated boundary against recommend_material, which is a relevant sibling.
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?
Zero parameters, so there is nothing to document and the baseline is 4. The description correctly does not invent parameter semantics, and the empty schema means no compensation was ever 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?
States a specific verb (list) and resource (print materials/plastics) with concrete detail about what each entry contains (purpose, colors, quoting). It is clear, but the trigger 'which material suits a job' overlaps with the sibling recommend_material, and the description never names that sibling to disambiguate.
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?
Gives four explicit trigger scenarios (which plastics, which colors, which suits a job, which are human-quoted), which is strong when-to-use guidance. However it offers no when-not guidance and does not explicitly route to recommend_material when a recommendation rather than a list is wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_from_linkQuote a 3D print from a linkAInspect
Use this when someone shares a link to a 3D model, such as a model page on Thingiverse or Printables or a direct link to an STL, 3MF, STEP or OBJ file, and wants a quote to have it printed and shipped by 3D Printer on Demand. It reads the model's licence where the site publishes one, gets the file, checks that it can be printed, saves the quote, and returns the estimate with a private link that opens the saved quote on our website. When the link offers several files, it lists them to pick from. Links that are not model pages with a licence need the person to confirm they have the right to print the file.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The link to the model page or to the file, starting with https. | |
| color | No | Color name for the chosen material. Default is the material's first color. | |
| file_key | No | The file_key of one file from an earlier answer that listed several files for this link. | |
| material | No | Material id, one of the listed values. Default petg. | petg |
| quantity | No | How many copies of the part. | |
| part_description | No | What the user says this part is or what it is for, in their own words, if they said. Leave out if they did not. | |
| rights_confirmed | No | True only when the person has said they own this file or have the right to have it printed. Leave out otherwise. |
Output Schema
| Name | Required | Description |
|---|---|---|
| color | No | |
| files | No | |
| source | No | |
| message | Yes | |
| outcome | Yes | |
| size_mm | No | |
| currency | No | |
| material | No | |
| quantity | No | |
| file_name | No | |
| next_step | No | |
| quote_url | No | |
| total_usd | No | |
| review_url | No | |
| upload_url | No | |
| multi_color | No | |
| shipping_usd | No | |
| subtotal_usd | No | |
| valid_colors | No | |
| order_fee_usd | No | |
| price_held_days | No | |
| print_fit_notes | No | |
| valid_materials | No | |
| price_per_part_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish that this writes (readOnlyHint=false) and reaches external sites (openWorldHint=true), and the description goes well beyond that by disclosing the exact pipeline: it reads the site licence, downloads the file, validates printability, persists a saved quote, and returns an estimate plus a private link to the stored quote. It also states the multi-file listing behavior and the rights-confirmation fallback — real behavioral context the annotations cannot convey.
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?
Front-loaded with the trigger ('Use this when...') followed by the operation sequence and then edge cases; every sentence carries information. Sentences are long and clause-heavy, which slightly hurts scanability, but there is little true 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 complex, open-world, write-enabled tool with 7 parameters, the description covers the trigger, the multi-step behavior, the artifact created, and the out-of-scope case. Because an output schema exists, it need not explain return values, and nothing an agent needs to invoke it correctly is missing.
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 baseline is 3. The description adds meaning on top of the schema by explaining the multi-file selection round-trip (which motivates file_key) and the condition under which rights_confirmed is required, giving workflow context the field descriptions alone don't provide.
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 states a specific verb and resource ('quote ... to have it printed and shipped') and spells out the full operation: read licence, fetch file, check printability, save quote, return estimate. It clearly separates this link-driven flow from the sibling get_print_quote without naming it, so an agent can identify it precisely.
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?
"Use this when someone shares a link to a 3D model" gives an explicit trigger condition, and the closing sentence handles the when-not case (non-model links require rights confirmation). It does not name alternative sibling tools for other quoting paths (e.g. get_print_quote, update_print_quote), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_materialRecommend a print materialARead-onlyInspect
Use this when someone wants help choosing which of our plastics suits a part, from where it will be used: indoor or outdoor, heat, impact, flexing, chemicals, looks and material cost. It returns the materials we offer that fit, best match first, the reasons in plain words, and the ones ruled out and why. It does not rank materials by strength or stiffness, and it sends safety-critical parts to a person.
| Name | Required | Description | Default |
|---|---|---|---|
| impact | No | high when the part takes knocks or drops. | |
| appearance | No | high when looks and color choice matter. | |
| environment | No | Where the part lives. Default indoor. | |
| flexibility | No | flexible for parts that must bend and spring back, rigid for parts that must not. | |
| heat_exposure | No | How much heat the part sees in use. Default none. | |
| cost_sensitivity | No | high when keeping material cost low matters most. | |
| chemical_exposure | No | Contact with oils, fuels, cleaners or solvents. Default none. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| outcome | Yes | |
| guidance | Yes | |
| ruled_out | Yes | |
| review_url | Yes | |
| selector_url | Yes | |
| materials_url | Yes | |
| strength_note | Yes | |
| heat_rank_note | Yes | |
| properties_url | Yes | |
| recommendations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only establish that this is a safe, non-destructive read; the description goes well beyond them by disclosing the return shape (fits ranked best-first, plain-word reasons, ruled-out materials and why) and two real behavioral limits: it does not rank by strength/stiffness, and safety-critical parts are escalated to a human. That escalation behavior is exactly the kind of thing an agent could not infer from schema or annotations.
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 sentences, front-loaded with the usage trigger, then the return contract, then the boundaries. Every sentence adds information an agent needs and none is redundant with structured fields.
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?
With an output schema present the description need not explain return values, yet it still summarizes the ranked/reasons/ruled-out shape and the human-escalation rule. Combined with the annotations and fully documented enums, an agent has everything needed to call and interpret this tool; the only unmentioned detail is that all parameters are optional, which is evident from the schema.
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 description coverage is 100% with all seven enums documented, including defaults, so the schema carries the parameter burden and a 3 baseline applies. The description restates the criteria categories but adds no format, precedence, or interaction guidance (e.g., how conflicting criteria are resolved) beyond the schema.
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?
States a specific verb and resource ('recommend which of our plastics suits a part') and immediately scopes it to selection-by-requirements, which separates it from list_materials. The description also names the ordering and the rationale output, so an agent knows exactly what kind of answer to expect.
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 opening 'Use this when someone wants help choosing which of our plastics suits a part' gives clear trigger conditions, and the enumerated criteria (indoor/outdoor, heat, impact, flexing, chemicals, looks, cost) tell the agent what inputs matter. It does not name an alternative sibling (e.g., list_materials for a plain catalogue) or state exclusions as routing advice, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_from_orderReorder parts from an earlier orderAInspect
Use this when someone wants the same parts again from an earlier 3D Printer on Demand order. It takes the private order link from their order email, works out a new estimate for each part from the files saved with that order, and returns a private link to review the parts and order them on our website. It takes no payment and does not change the earlier order.
| Name | Required | Description | Default |
|---|---|---|---|
| order_link | Yes | The private order link from the order confirmation or shipping email. |
Output Schema
| Name | Required | Description |
|---|---|---|
| parts | No | |
| message | Yes | |
| outcome | Yes | |
| next_step | No | |
| review_url | No | |
| reorder_url | No | |
| needs_review | No | |
| order_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false with no destructiveness, which leaves the write semantics ambiguous. The description resolves this by stating it takes no payment and does not change the earlier order, and by describing the internal steps (estimate each part from saved files, return a private link). That is meaningful behavioral context beyond the structured fields.
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?
Front-loaded with the trigger sentence, then what it takes, what it does, and its side-effect boundary. Four sentences are all load-bearing, though the workflow sentence could be tightened slightly.
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?
Output schema exists, so the returned private link need not be elaborated further. With annotations, a single 100%-documented parameter, and no nested objects, the description covers when to use it, what it consumes, what it produces, and its non-side-effects — nothing an agent needs to call it correctly is missing.
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% and the schema already documents order_link including its source emails. The description restates the same idea ("private order link from their order email") without adding format, validation, or failure-mode detail, so the baseline 3 applies.
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?
Specific verb+resource+scope: it reorders parts from an *earlier* order, using saved files, and returns a review/order link. That scope implicitly separates it from quote_from_link and get_print_quote, but no sibling is named explicitly, so it falls just short of the top tier.
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?
"Use this when someone wants the same parts again from an earlier 3D Printer on Demand order" gives a clear trigger condition. There is no explicit when-not guidance or named alternative (e.g., if the user has no earlier order, use quote_from_link instead), which keeps it out of the 5 band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
size_hole_or_toleranceSize a printed hole or fitARead-onlyInspect
Use this when someone asks what clearance or hole size to draw for a printed fit: a sliding part, a bolt or pin through a hole, two printed parts that mate, a press fit, or a snap fit. It returns published starting clearances and hole guidance, each with its source, and how to test the fit. It gives no single universal hole offset, because none is published.
| Name | Required | Description | Default |
|---|---|---|---|
| fit_type | No | What the fit is for: sliding-moving, bolt-clearance, pin-in-hole, mating-fdm-parts, press-interference or snap-fit. | |
| hole_axis | No | vertical-z when the hole goes through a top or bottom face, horizontal-xy when it goes through a side wall. | |
| hole_diameter_mm | No | The hole diameter the user plans to draw, in mm. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fit | No | |
| hole | No | |
| urls | Yes | |
| message | Yes | |
| outcome | Yes | |
| sources | Yes | |
| guidance | Yes | |
| fit_types | No | |
| citation_rule | Yes | |
| tolerance_posture | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, non-destructive profile, so the bar is lower. The description still adds meaningful context: output is source-attributed published guidance plus a test method, and it proactively discloses a limitation ('no single universal hole offset, because none is published'), which prevents the agent from overpromising.
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 sentences, zero waste, and the usage trigger is front-loaded ahead of the return and limitation notes. Every sentence carries a distinct piece of 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?
With an output schema present, the description need not explain return values, and it still covers usage trigger, output nature, and an explicit limitation. Nothing an agent needs to select or call the tool correctly is missing.
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 description coverage is 100%, so the schema already documents fit_type, hole_axis and hole_diameter_mm. The description's scenario list loosely maps to the fit_type enum values but adds no format or syntax detail beyond the schema, matching the baseline 3.
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 pairs a specific verb and resource ('size a printed hole or fit') with an enumeration of the exact scenarios it handles (sliding, bolt/pin clearance, mating, press, snap). It also states plainly what it returns (published starting clearances and hole guidance with sources), letting an agent distinguish it from generic siblings like get_design_guidance.
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 an explicit usage trigger ('Use this when someone asks what clearance or hole size to draw') followed by concrete scenario examples. It does not name alternatives such as get_design_guidance or state when-not-to-use, so it stops short of a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_print_quoteUpdate a 3D print quoteAInspect
Use this when someone wants a different quantity or color on a quote 3D Printer on Demand already gave them. It takes that quote's private link and the new quantity, works out the estimate again from the file saved with the quote, saves it, and returns the new estimate with a new private link. The earlier link keeps the earlier quote. It does not take a new file, a different material, or a link that did not come from one of our quotes.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | A new color for the same material. Leave out to keep the saved color. | |
| quantity | Yes | The new number of copies of the part. | |
| quote_url | Yes | The private quote link from an earlier quote in this chat. |
Output Schema
| Name | Required | Description |
|---|---|---|
| color | No | |
| message | Yes | |
| outcome | Yes | |
| size_mm | No | |
| currency | No | |
| material | No | |
| quantity | No | |
| file_name | No | |
| next_step | No | |
| quote_url | No | |
| total_usd | No | |
| review_url | No | |
| upload_url | No | |
| multi_color | No | |
| shipping_usd | No | |
| subtotal_usd | No | |
| valid_colors | No | |
| order_fee_usd | No | |
| price_held_days | No | |
| print_fit_notes | No | |
| valid_materials | No | |
| price_per_part_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic write/non-destructive/non-open-world profile. The description adds real behavior: the estimate is recomputed from the file saved with the original quote (no re-upload), the result is persisted, a new private link is issued, and the earlier link keeps serving the earlier quote. The last point is a non-obvious versioning guarantee the agent cannot infer from annotations.
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?
Four sentences, all load-bearing, with the trigger condition front-loaded before the mechanics and the exclusions. No restatement of the title and no 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 mutation tool with an output schema already covering return shape, the description supplies everything else: the eligibility condition, what is and is not accepted, the recompute-from-saved-file behavior, and the link-versioning outcome. Nothing an agent needs to call it correctly is missing.
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 per-parameter text is already handled and the baseline is 3. The description adds provenance semantics the schema does not stress — the link must come from one of our quotes — and clarifies that color changes apply to the same material. Small but genuine value over the schema.
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?
States a specific verb and resource ('Update a 3D print quote') and immediately narrows scope to changing quantity or color on a quote that already exists. An agent can distinguish this from get_print_quote (create a new quote) without opening either schema.
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?
Explicit trigger ('when someone wants a different quantity or color on a quote... already gave them') plus explicit exclusions: no new file, no different material, no link that did not come from one of our quotes. The negatives route the agent away from unsupported requests instead of leaving it to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
combine_quotes
1 tool update
- Changed
reorder_from_order1 field changed- added
Output schema / properties / parts / items / properties / line_usdAdded value: +{ + "type": "number" +}
3 tool updates
- Added
get_order_status - Added
quote_from_link - Added
reorder_from_order
2 tool updates
- Changed
get_print_quote1 field changed- added
Output schema / properties / order_fee_usdAdded value: +{ + "type": "number" +}
- Changed
update_print_quote1 field changed- added
Output schema / properties / order_fee_usdAdded value: +{ + "type": "number" +}
9 tool updates
- First observed
check_printability - First observed
compare_print_vs_molding - First observed
get_design_guidance - First observed
get_print_quote - First observed
get_service_details - First observed
list_materials - First observed
recommend_material - First observed
size_hole_or_tolerance - First observed
update_print_quote
Related MCP Connectors
Instant 3D printing and CNC machining quotes from your CAD files (STL, STEP, 3MF, OBJ): price and ship date for SLS nylon, FDM plastic, aluminum and brass parts made in the US
Quote, price and order custom 3D prints (PLA) shipped anywhere in the US.
Get 3D printing and manufacturing quoted by a person, shipped anywhere in the US.
Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out.
Related MCP Servers
- AlicenseAqualityBmaintenanceGet live UK 3D printing prices for your own STL/3MF/STEP files or Printables and Thingiverse models, with a checkout link. Also finds mail-in electronics repair prices and checks order or repair progress.9MIT
- AlicenseAqualityCmaintenanceCalculates 3D printing cost, time, material weight and build-plate fit from plain dimensions given in the conversation, with no STL upload and no API key. Covers PLA, PETG, ABS, ASA, TPU, Nylon, PC and PLA-CF, plus build volumes for Bambu Lab, Prusa, Creality, Voron and Elegoo printers.3MIT
- AlicenseAqualityCmaintenanceMCP 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).6MIT
- AlicenseNot gradedqualityDmaintenanceGenerate 3D models from text or image. Browse 10K+ free 3D models. AI creative platform with API1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.