ply 3D Printing
Server Details
Custom 3D-printed parts: describe a part, upload a 3D file or pick a model, see a live price, order.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
Each tool maps to a distinct step or object in the 3D-printing workflow: finding models, listing materials, building a custom part, ordering, pricing a file, pricing a model link, and recommending material. The closest pair, price_file and price_model_link, is clearly separated by input source (customer file vs. page link), and make_part vs. order_part is separated by build/price vs. cart handoff.
All seven tools use snake_case with a clear verb_noun pattern: find_models, list_materials, make_part, order_part, price_file, price_model_link, recommend_material. The naming is predictable and readable throughout.
Seven tools is well-scoped for a 3D-printing sales assistant, covering discovery, materials, customization, pricing, recommendation, and ordering without obvious filler. Each tool appears to earn its place in the workflow.
The surface covers the core customer journey from model discovery through pricing, material advice, and cart handoff. Minor lifecycle gaps remain, such as order status/tracking or cart review, but they are not central to the described sales-assistant purpose.
Available Tools
7 toolsfind_modelsFind printable modelsARead-onlyIdempotentInspect
Search for ready-made 3D models ply may print and sell: Printables (open or commercial-use licenses only; non-commercial models are left out) and Poly Haven (CC0 decor, props and figures, scaled to fit). Returns titles, designers, licenses and page links.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to look for, e.g. 'milwaukee m18 battery holder' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), so the description focuses on value-add: license filtering on Printables and pre-scaling on Poly Haven results. It doesn't mention result limits or ranking behavior, keeping it below 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?
One compact sentence plus a return-value clause, front-loaded with the action. Minor typo ('ply may print') and the parenthetical license note brush up against density, but nothing is wasted.
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 output schema, the description explicitly enumerates returned fields (titles, designers, licenses, page links), which is exactly what an agent needs to use results. Sources and filtering semantics are also covered.
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?
Single parameter with 100% schema coverage including an example, so the schema does the work. The description adds nothing about query syntax or matching behavior, so the baseline of 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 (Search) and resource (ready-made 3D models) and names the two sources (Printables, Poly Haven). It also states an exclusion (non-commercial models left out), which sharply separates it from siblings like make_part or list_materials.
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?
Makes the selection condition clear: use this when you need ready-made models you may print and sell, with commercial licensing enforced. It does not name a sibling tool as an alternative, which is the only missing piece.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsList ply materials and colorsBRead-onlyIdempotentInspect
The materials, colors and strength levels ply prints custom parts in, with what each material is good for.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is fully covered and the description carries a low bar. It adds value by disclosing the shape of the payload — colors, strength levels, and per-material suitability notes — but says nothing about how many materials exist or how the suitability text is presented. Annotations mean a 3 is an adequate bar here.
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?
A single compact sentence with no filler, and the most useful clause (what each material is good for) is retained. It is slightly awkward as a fragment — a leading verb such as 'Lists' would front-load the action more clearly — but nothing is wasted.
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 zero-parameter, read-only catalog with no output schema and no nested objects, the main missing piece is a sense of what the return values look like. The description covers that in prose (materials, colors, strength levels, suitability). Only the routing to recommend_material and any indication of result size are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies a no-argument catalog call and does not introduce any parameter confusion.
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 sentence identifies the resource precisely — materials, colors, strength levels — and adds that it explains what each material is good for, which goes beyond the title. It is a noun phrase rather than a verb-led statement, so the listing action is inferred from the name, but the resource is unambiguous. It does not differentiate from recommend_material.
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?
There is no statement of when to use this catalog versus recommend_material, which is the obvious sibling for material selection. No prerequisites, no call-order guidance (e.g., call this before make_part), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_partMake a custom partARead-onlyIdempotentInspect
Build, check and price a custom 3D-printed part from exact sizes (mm): plate with holes, L-bracket, spacer/standoff, washer, or box with lid. Shows the part in 3D with its price and an Order button. Sizes left out use sensible defaults. Use again with new sizes or options when the customer asks for changes.
| Name | Required | Description | Default |
|---|---|---|---|
| lid | No | box: lid | |
| legA | No | bracket: base leg length (mm) | |
| legB | No | bracket: upright leg length (mm) | |
| wall | No | box: wall thickness (mm) | |
| color | No | Color name, e.g. black, white, red (default black) | |
| depth | No | plate: depth (mm) | |
| shape | No | spacer/washer shape | |
| width | No | plate/bracket: width (mm) | |
| height | No | spacer: height; washer: thickness (mm) | |
| holesA | No | bracket: holes in the base leg | |
| holesB | No | bracket: holes in the upright leg | |
| gridRows | No | plate, grid: hole rows | |
| material | No | Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA). | |
| quantity | No | How many (default 1) | |
| strength | No | Plastic parts only. Default balanced; strong for parts under load | |
| template | Yes | plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid | |
| holeInset | No | plate, corner holes: distance from each edge to the hole center (mm) | |
| thickness | No | plate/bracket: thickness (mm) | |
| extraHoles | No | plate: holes at exact spots, x/y = hole center in mm from the plate's center | |
| innerDepth | No | box: inside depth (mm) | |
| innerWidth | No | box: inside width (mm) | |
| gridColumns | No | plate, grid: hole columns | |
| holePattern | No | plate: hole layout | |
| innerHeight | No | box: inside height (mm) | |
| innerRadius | No | bracket: inside corner radius (mm) | |
| cornerRadius | No | plate: outside corner radius, 0 = square; box: inside corner radius (mm) | |
| holeDiameter | No | plate: diameter of the pattern holes; bracket: hole diameter (0 = no holes) (mm) | |
| innerDiameter | No | spacer/washer: hole diameter, 0 = solid spacer (mm) | |
| outerDiameter | No | spacer/washer: outside diameter (hex: across the flats) (mm) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds relevant behavior beyond that: it previews the part in 3D, shows pricing and an Order button, applies sensible defaults, and supports re-running with changed inputs. It does not directly contradict the read-only annotation because it describes a preview rather than placing an order.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four front-loaded sentences with no obvious filler. It moves from purpose to output preview to default behavior to reuse pattern efficiently.
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 29-parameter tool with full schema coverage but no output schema, the description supplies the missing high-level return context: a 3D preview with price and Order button. It also covers defaults and reuse, though it does not elaborate on pricing rules or validation behavior.
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 schema already documents all 29 parameters with template-specific meanings. The description adds only high-level context such as exact sizes being in mm, template names, and defaults for omitted values, so it is at the baseline for a fully documented 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 bundle (build/check/price) and resource (custom 3D-printed part from exact mm sizes), and enumerates the supported templates. This is clearly distinct from sibling pricing tools for existing files/models and from order_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context that it should be reused when the customer asks for size or option changes, and that omitted sizes use defaults. However, it does not explicitly state when to use this versus price_file, price_model_link, recommend_material, or order_part.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_partOrder on plyAInspect
Put a part into a ply cart and get the link to finish the order on plyparts.com (shipping, payment, engineer review). Nothing is charged here. For a built part pass the same template, sizes and options; for a file pass its path and options.
| Name | Required | Description | Default |
|---|---|---|---|
| lid | No | box: lid | |
| legA | No | bracket: base leg length (mm) | |
| legB | No | bracket: upright leg length (mm) | |
| path | No | A file's ply path (from price_file) | |
| wall | No | box: wall thickness (mm) | |
| color | No | Color name, e.g. black, white, red (default black) | |
| depth | No | plate: depth (mm) | |
| shape | No | spacer/washer shape | |
| thumb | No | Leave empty (the ply card fills in a picture). | |
| units | No | Units of an STL/OBJ file, which doesn't say (default mm). Use in if the part comes out 25x too small. | |
| width | No | plate/bracket: width (mm) | |
| height | No | spacer: height; washer: thickness (mm) | |
| holesA | No | bracket: holes in the base leg | |
| holesB | No | bracket: holes in the upright leg | |
| coating | No | Resin only: coating (needs sanding) | |
| process | No | fdm = plastic (default); resin = fine detail (miniatures, figurines, smooth looks) | |
| sanding | No | Resin only: sanded finish | |
| fileName | No | ||
| gridRows | No | plate, grid: hole rows | |
| material | No | Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA). | |
| quantity | No | How many (default 1) | |
| strength | No | Plastic parts only. Default balanced; strong for parts under load | |
| template | No | plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid | |
| holeInset | No | plate, corner holes: distance from each edge to the hole center (mm) | |
| thickness | No | plate/bracket: thickness (mm) | |
| extraHoles | No | plate: holes at exact spots, x/y = hole center in mm from the plate's center | |
| innerDepth | No | box: inside depth (mm) | |
| innerWidth | No | box: inside width (mm) | |
| gridColumns | No | plate, grid: hole columns | |
| holePattern | No | plate: hole layout | |
| innerHeight | No | box: inside height (mm) | |
| innerRadius | No | bracket: inside corner radius (mm) | |
| cornerRadius | No | plate: outside corner radius, 0 = square; box: inside corner radius (mm) | |
| holeDiameter | No | plate: diameter of the pattern holes; bracket: hole diameter (0 = no holes) (mm) | |
| innerDiameter | No | spacer/washer: hole diameter, 0 = solid spacer (mm) | |
| outerDiameter | No | spacer/washer: outside diameter (hex: across the flats) (mm) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say this is a non-read-only, non-destructive, non-idempotent, closed-world operation. The description adds meaningful behavioral context that annotations do not: no charge occurs here, the output is a completion link, and final steps happen on plyparts.com. It could be stronger by warning that repeated calls may create duplicate carts, given idempotentHint=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?
The description is two tight sentences, front-loading the core action and the no-charge caveat. Every sentence adds useful information and there is 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 complex ordering tool with 36 optional parameters and no output schema, the description explains the return link and the two input modes. It still leaves unclear which parameter combinations are required for each template or file mode, which is a meaningful gap for correct invocation despite the rich schema descriptions.
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 97%, so the schema already explains nearly every one of the 36 parameters in detail. The description only broadly groups inputs into built-part mode (template, sizes, options) and file mode (path, options), which is useful but adds limited per-parameter meaning 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?
The description states a specific verb and resource: putting a part into a ply cart and returning a link to finish the order on plyparts.com. It distinguishes two input modes (built part vs file), which helps separate it from make_part and price_file, but it does not explicitly name or contrast those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives usage context for built parts versus files, and clarifies that shipping, payment, and engineer review happen later. However, it does not say when to use this tool instead of price_file, make_part, or price_model_link, nor does it state prerequisites such as needing a ply path from price_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_filePrice a 3D fileARead-onlyIdempotentInspect
Price the customer's 3D file (STL, 3MF, STEP or OBJ) and show it in ply's card. Without a file, shows the card with an upload button (with sourceUrl: the model page to download it from). In ChatGPT, pass a file the customer attached. Pass path (from an earlier result) to change options for a file already priced.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | A 3D file the customer attached in this chat | |
| path | No | The file's ply path from an earlier price_file result | |
| color | No | Color name, e.g. black, white, red (default black) | |
| units | No | Units of an STL/OBJ file, which doesn't say (default mm). Use in if the part comes out 25x too small. | |
| coating | No | Resin only: coating (needs sanding) | |
| process | No | fdm = plastic (default); resin = fine detail (miniatures, figurines, smooth looks) | |
| sanding | No | Resin only: sanded finish | |
| fileName | No | The file's name, with a path | |
| material | No | Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA). | |
| quantity | No | How many (default 1) | |
| strength | No | Plastic parts only. Default balanced; strong for parts under load | |
| sourceUrl | No | The model page the customer picked (they download the file there and drop it in the card) | |
| sourceTitle | No | That model's name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds real behavioral context the annotations can't: this renders a card in the UI, degrades to an upload button when no file exists, and supports re-pricing via `path`. It doesn't say what the card shows or whether pricing is persisted/reusable beyond the `path` hint.
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 compact sentences, front-loaded with the primary action, then the no-file fallback, then the host-specific and re-pricing cases. No filler, though the parenthetical sourceUrl aside is slightly parenthetical-heavy.
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 13-param, schema-rich, annotation-covered tool with no output schema, the description covers the main flows (new file, no file, re-price). It omits what the resulting card/quote actually contains, which matters since there is no 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?
Schema coverage is 100% and the schema already explains `path`, `units` (including the '25x too small' heuristic), `sourceUrl` and the enums. The description repeats the `path` and `sourceUrl` semantics rather than adding new meaning, so baseline 3 applies for a fully documented 13-param 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 ('Price the customer's 3D file') and enumerates supported formats. It does not explicitly distinguish itself from price_model_link, whose territory the sourceUrl sentence brushes against, so it falls short of a 5.
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 concrete routing: no file → show upload card with sourceUrl; ChatGPT → pass the attached file; existing priced file → pass `path` to change options. It never says when to use price_model_link or make_part instead, so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_model_linkPrice a model from a linkARead-onlyIdempotentInspect
Price a 3D model from its page link and show it in ply's card. Printables: ply fetches the file itself if the license allows printing it for sale (CC0, CC BY, CC BY-SA, GPL, Commercial Use…) and credits the designer; other licenses are declined with the reason. Poly Haven (CC0 decor and props made at real-world size): ply fetches it scaled to fit (150 mm on its longest side, or sizeMm). Other sites (Thingiverse, MakerWorld, MyMiniFactory, Thangs, Cults3D…): the card links to the page and the customer drops the downloaded file in. If a Printables model has several files, ply lists them: pass the one wanted as file.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The model's page | |
| file | No | Which file to print, by name, when the model has several | |
| color | No | Color name, e.g. black, white, red (default black) | |
| title | No | The model's name (for links to sites ply doesn't fetch from) | |
| units | No | Units of an STL/OBJ file, which doesn't say (default mm). Use in if the part comes out 25x too small. | |
| sizeMm | No | Poly Haven only: the printed size of the longest side, mm (up to 250) | |
| coating | No | Resin only: coating (needs sanding) | |
| process | No | fdm = plastic (default); resin = fine detail (miniatures, figurines, smooth looks) | |
| sanding | No | Resin only: sanded finish | |
| material | No | Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA). | |
| quantity | No | How many (default 1) | |
| strength | No | Plastic parts only. Default balanced; strong for parts under load |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world behavior, yet the description adds substantial context: license gating (CC0/CC BY/CC BY-SA/GPL/Commercial vs declined with reason), designer crediting, auto-scaling to 150 mm, and file-listing when a model has multiple files. This is exactly the extra context 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?
Organized by site (Printables, Poly Haven, other), which front-loads the decision-relevant branching. It is on the longer side, but nearly every clause carries conditional information an agent needs; the closing sentence on `file` is well placed.
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?
No output schema exists, so the description carries the result burden; it does state that the result appears in ply's card and whether the file is fetched or linked. It could say more about what 'priced' means numerically (cost estimate, time), but for this tool the site-branching coverage is the core need and it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: `file` is only relevant when a Printables model has several files, and `sizeMm` is scoped to Poly Haven with a 150 mm default longest-side behavior. That enriches the schema's bare 'up to 250' note.
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 ('Price a 3D model from its page link') and names the surface where the result lands ('ply's card'). Clearly distinguishable from siblings like price_file or find_models without opening any 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 explicit conditional guidance per source site: Printables fetches automatically when the license permits, Poly Haven is fetched and scaled, other sites require a manual upload. It lacks an explicit routing sentence versus price_file or make_part, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_materialRecommend a materialARead-onlyIdempotentInspect
Run ply's material advisor ("Help me choose" on plyparts.com) for a part: it may ask up to 2 questions about how the part is used, then recommends a process, material, color and strength. Give either the part's ply path (a file) or its template and sizes (a built part).
| Name | Required | Description | Default |
|---|---|---|---|
| lid | No | box: lid | |
| use | Yes | What the part is for, in the customer's words (where it's used, heat, water, loads, looks) | |
| legA | No | bracket: base leg length (mm) | |
| legB | No | bracket: upright leg length (mm) | |
| path | No | A file's ply path from price_file | |
| wall | No | box: wall thickness (mm) | |
| depth | No | plate: depth (mm) | |
| shape | No | spacer/washer shape | |
| width | No | plate/bracket: width (mm) | |
| height | No | spacer: height; washer: thickness (mm) | |
| holesA | No | bracket: holes in the base leg | |
| holesB | No | bracket: holes in the upright leg | |
| answers | No | The advisor's earlier questions and the customer's answers | |
| fileName | No | The file's name, as in price_file (it can tell the advisor what the part is) | |
| gridRows | No | plate, grid: hole rows | |
| template | No | plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid | |
| holeInset | No | plate, corner holes: distance from each edge to the hole center (mm) | |
| thickness | No | plate/bracket: thickness (mm) | |
| extraHoles | No | plate: holes at exact spots, x/y = hole center in mm from the plate's center | |
| innerDepth | No | box: inside depth (mm) | |
| innerWidth | No | box: inside width (mm) | |
| gridColumns | No | plate, grid: hole columns | |
| holePattern | No | plate: hole layout | |
| innerHeight | No | box: inside height (mm) | |
| innerRadius | No | bracket: inside corner radius (mm) | |
| cornerRadius | No | plate: outside corner radius, 0 = square; box: inside corner radius (mm) | |
| holeDiameter | No | plate: diameter of the pattern holes; bracket: hole diameter (0 = no holes) (mm) | |
| innerDiameter | No | spacer/washer: hole diameter, 0 = solid spacer (mm) | |
| outerDiameter | No | spacer/washer: outside diameter (hex: across the flats) (mm) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety needs no elaboration. The description adds genuinely non-obvious behavior: the advisor may ask up to 2 clarifying questions, implying a multi-turn flow that the agent must handle by returning with `answers` — context an agent could not get from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action and its output are front-loaded, and the input-mode constraint follows immediately after, so an agent reads the essential facts in the first pass.
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 29-parameter tool with no output schema, the description still communicates what comes back (process, material, color, strength) and how the interaction may loop, which is the critical missing context. The remaining gap is that it does not indicate what the response looks like structurally when answers are needed versus when a recommendation is returned.
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 every parameter is already documented and the baseline is 3. The description does add structural meaning by framing the two input families (path vs. template+sizes) and by explaining that earlier Q&A is passed back, but it does not clarify how the template-scoped parameters group together beyond what per-property descriptions already say.
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 ("Run ply's material advisor for a part") and names the concrete output of the tool: a recommended process, material, color and strength. It also anchors the tool to a known surface ("Help me choose" on plyparts.com), which clearly separates it from siblings like list_materials or price_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description distinguishes the two valid invocation modes — a file `path` or a template plus sizes for a built part — which effectively says when each input shape applies. However, it never says when to prefer this tool over alternatives such as list_materials or make_part, so routing between siblings is left to inference.
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.
7 tool updates
- First observed
find_models - First observed
list_materials - First observed
make_part - First observed
order_part - First observed
price_file - First observed
price_model_link - First observed
recommend_material
Related MCP Connectors
Turn designs into shipped parts: quote 3D printing, CNC, and decals, then check out.
Quote, check and order 3D prints of STL, 3MF, STEP or OBJ files. Made in the USA, shipped in the US.
Order real 3D prints from chat: send an STL or OpenSCAD model, see one price, get it by UPS.
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
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
- AlicenseAqualityAmaintenanceEnables MCP clients to design, verify, and export FDM 3D-printable parts by running model-written build123d scripts in a sandbox, rendering previews and cross-sections, running print checks, and exporting STEP, STL, 3MF, or PNG. It supports workflows from photos or caliper readings to finished part files through natural language.331,776 PyPI1MIT
- AlicenseNot gradedqualityBmaintenanceEnables users to generate printable 3D map models of any place on Earth from open data, including terrain, buildings, trees, water, roads, and fields, with options for tiles, colors, and browser previews via MCP tools.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.