3D Printer on Demand
Quote, check and order 3D prints of STL, 3MF, STEP or OBJ files. Made in the USA, shipped in the US.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"3d-printer-on-demand": {
"url": "https://3dprinterondemand.com/api/mcp"
}
}
}원격 엔드포인트
https://3dprinterondemand.com/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (9)
🟡get_print_quote(model_file, material, color, quantity, part_description)
Use this when someone 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.
입력 스키마
{
"type": "object",
"properties": {
"model_file": {
"type": "object",
"properties": {
"download_url": {
"type": "string",
"description": "Download URL of the attached file."
},
"file_id": {
"type": "string",
"description": "Identifier of the attached file."
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": true,
"description": "The STL, 3MF, STEP or OBJ file the user attached."
},
"material": {
"type": "string",
"enum": [
"petg",
"pla",
"abs",
"pa-cf",
"petg-cf",
"opm",
"tpu"
],
"default": "petg",
"description": "Material id, one of the listed values. Default petg."
},
"color": {
"type": "string",
"maxLength": 40,
"description": "Color name for the chosen material. Default is the material's first color."
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 100000,
"default": 1,
"description": "How many copies of the part."
},
"part_description": {
"type": "string",
"maxLength": 500,
"description": "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."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"instant",
"needs_upload",
"needs_review",
"not_accepted",
"invalid_choice",
"try_later"
]
},
"message": {
"type": "string"
},
"upload_url": {
"type": "string"
},
"review_url": {
"type": "string"
},
"quote_url": {
"type": "string"
},
"file_name": {
"type": "string"
},
"material": {
"type": "string"
},
"color": {
"type": "string"
},
"quantity": {
"type": "number"
},
"currency": {
"type": "string",
"const": "USD"
},
"price_per_part_usd": {
"type": "number"
},
"subtotal_usd": {
"type": "number"
},
"shipping_usd": {
"type": "number"
},
"order_fee_usd": {
"type": "number"
},
"total_usd": {
"type": "number"
},
"size_mm": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
},
"print_fit_notes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
},
"required": [
"title",
"detail"
],
"additionalProperties": false
}
},
"price_held_days": {
"type": "number"
},
"multi_color": {
"type": "boolean"
},
"next_step": {
"type": "string"
},
"valid_colors": {
"type": "array",
"items": {
"type": "string"
}
},
"valid_materials": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"outcome",
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡update_print_quote(quote_url, quantity, color)
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.
입력 스키마
{
"type": "object",
"properties": {
"quote_url": {
"type": "string",
"maxLength": 300,
"description": "The private quote link from an earlier quote in this chat."
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 100000,
"description": "The new number of copies of the part."
},
"color": {
"type": "string",
"maxLength": 40,
"description": "A new color for the same material. Leave out to keep the saved color."
}
},
"required": [
"quote_url",
"quantity"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"instant",
"needs_upload",
"needs_review",
"not_accepted",
"invalid_choice",
"try_later"
]
},
"message": {
"type": "string"
},
"upload_url": {
"type": "string"
},
"review_url": {
"type": "string"
},
"quote_url": {
"type": "string"
},
"file_name": {
"type": "string"
},
"material": {
"type": "string"
},
"color": {
"type": "string"
},
"quantity": {
"type": "number"
},
"currency": {
"type": "string",
"const": "USD"
},
"price_per_part_usd": {
"type": "number"
},
"subtotal_usd": {
"type": "number"
},
"shipping_usd": {
"type": "number"
},
"order_fee_usd": {
"type": "number"
},
"total_usd": {
"type": "number"
},
"size_mm": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
},
"print_fit_notes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
},
"required": [
"title",
"detail"
],
"additionalProperties": false
}
},
"price_held_days": {
"type": "number"
},
"multi_color": {
"type": "boolean"
},
"next_step": {
"type": "string"
},
"valid_colors": {
"type": "array",
"items": {
"type": "string"
}
},
"valid_materials": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"outcome",
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_materials
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.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"materials": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"summary": {
"type": "string"
},
"best_for": {
"type": "string"
},
"not_advised": {
"type": "string"
},
"colors": {
"type": "array",
"items": {
"type": "string"
}
},
"pricing_mode": {
"type": "string",
"enum": [
"instant",
"reviewed_by_a_person"
]
},
"heat_rank": {
"type": "string"
}
},
"required": [
"id",
"name",
"summary",
"best_for",
"not_advised",
"colors",
"pricing_mode",
"heat_rank"
],
"additionalProperties": false
}
},
"guidance": {
"type": "array",
"items": {
"type": "string"
}
},
"heat_rank_note": {
"type": "string"
},
"strength_note": {
"type": "string"
},
"materials_url": {
"type": "string"
},
"review_url": {
"type": "string"
}
},
"required": [
"materials",
"guidance",
"heat_rank_note",
"strength_note",
"materials_url",
"review_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_service_details
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.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"brand": {
"type": "string"
},
"lead_time": {
"type": "string"
},
"lead_time_reviewed": {
"type": "string"
},
"expedite": {
"type": "string"
},
"shipping": {
"type": "string"
},
"shipping_flat_usd": {
"type": "number"
},
"freight_quote_over": {
"type": "string"
},
"ships_to": {
"type": "string"
},
"made_in": {
"type": "string"
},
"quote_hold": {
"type": "string"
},
"quote_hold_days": {
"type": "number"
},
"file_types": {
"type": "string"
},
"file_types_instant": {
"type": "array",
"items": {
"type": "string"
}
},
"file_types_review": {
"type": "array",
"items": {
"type": "string"
}
},
"file_types_in_chat": {
"type": "array",
"items": {
"type": "string"
}
},
"largest_instant_part_mm": {
"type": "number"
},
"part_size": {
"type": "string"
},
"materials": {
"type": "string"
},
"review_follow_up": {
"type": "string"
},
"not_printed": {
"type": "array",
"items": {
"type": "string"
}
},
"contact_email": {
"type": "string"
},
"urls": {
"type": "object",
"properties": {
"instant_quote": {
"type": "string"
},
"review_request": {
"type": "string"
},
"materials": {
"type": "string"
},
"contact": {
"type": "string"
},
"privacy": {
"type": "string"
},
"terms": {
"type": "string"
}
},
"required": [
"instant_quote",
"review_request",
"materials",
"contact",
"privacy",
"terms"
],
"additionalProperties": false
}
},
"required": [
"brand",
"lead_time",
"lead_time_reviewed",
"expedite",
"shipping",
"shipping_flat_usd",
"freight_quote_over",
"quote_hold",
"quote_hold_days",
"file_types",
"file_types_instant",
"file_types_review",
"file_types_in_chat",
"largest_instant_part_mm",
"part_size",
"materials",
"review_follow_up",
"not_printed",
"contact_email",
"urls"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢check_printability(model_file, material, part_description)
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.
입력 스키마
{
"type": "object",
"properties": {
"model_file": {
"type": "object",
"properties": {
"download_url": {
"type": "string",
"description": "Download URL of the attached file."
},
"file_id": {
"type": "string",
"description": "Identifier of the attached file."
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": true,
"description": "The STL, 3MF, STEP or OBJ file the user attached."
},
"material": {
"type": "string",
"enum": [
"petg",
"pla",
"abs",
"pa-cf",
"petg-cf",
"opm",
"tpu"
],
"description": "Material id the part would be printed in, if the user named one, one of the listed values."
},
"part_description": {
"type": "string",
"maxLength": 500,
"description": "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."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"checked",
"needs_upload",
"not_accepted",
"try_later"
]
},
"message": {
"type": "string"
},
"upload_url": {
"type": "string"
},
"design_check_url": {
"type": "string"
},
"review_url": {
"type": "string"
},
"file_name": {
"type": "string"
},
"material": {
"type": "string"
},
"material_pricing_mode": {
"type": "string",
"enum": [
"instant",
"reviewed_by_a_person"
]
},
"size_mm": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
},
"volume_cm3": {
"type": "number"
},
"fits_instant_size_limit": {
"type": "boolean"
},
"size_limit": {
"type": "string"
},
"multi_color": {
"type": "boolean"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"area": {
"type": "string"
},
"severity": {
"type": "string",
"enum": [
"pass",
"note",
"needs_change"
]
},
"needs_person": {
"type": "boolean"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
},
"what_to_do": {
"type": "string"
},
"learn_more_url": {
"type": "string"
}
},
"required": [
"area",
"severity",
"needs_person",
"title",
"detail"
],
"additionalProperties": false
}
},
"needs_person": {
"type": "boolean"
},
"person_reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"outcome",
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_design_guidance(topic, question)
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.
입력 스키마
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"enum": [
"wall-thickness",
"fdm-tolerances",
"supports-and-overhangs",
"orientation",
"infill",
"hole-clearances",
"dimensional-accuracy",
"bosses",
"ribs",
"snap-fits",
"threaded-inserts",
"fdm-vs-injection-molding",
"fdm-vs-cnc",
"production-economics",
"prototype-to-production",
"material-properties"
],
"description": "The engineering topic, when it is clear which one the user means."
},
"question": {
"type": "string",
"maxLength": 500,
"description": "The user's question in their own words. Used only to pick the topic and the most relevant answers."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"guidance",
"no_match",
"topic_list"
]
},
"message": {
"type": "string"
},
"topics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"summary": {
"type": "string"
},
"page_url": {
"type": "string"
},
"points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string"
},
"answer": {
"type": "string"
},
"claim_class": {
"anyOf": [
{
"type": "string",
"enum": [
"datasheet",
"representative",
"internal_test",
"guaranteed_spec",
"own_operational"
]
},
{
"type": "null"
}
]
},
"source_refs": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"question",
"answer",
"claim_class",
"source_refs"
],
"additionalProperties": false
}
},
"tables": {
"type": "array",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string"
},
"caption": {
"type": "string"
},
"columns": {
"type": "array",
"items": {
"type": "string"
}
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"cells": {
"type": "array",
"items": {
"type": "string"
}
},
"claim_class": {
"$ref": "#/properties/topics/items/properties/points/items/properties/claim_class/anyOf/0"
},
"source_ref": {
"type": [
"number",
"null"
]
}
},
"required": [
"cells",
"claim_class",
"source_ref"
],
"additionalProperties": false
}
}
},
"required": [
"question",
"caption",
"columns",
"rows"
],
"additionalProperties": false
}
},
"left_on_page": {
"type": "object",
"properties": {
"answers": {
"type": "number"
},
"tables": {
"type": "number"
}
},
"required": [
"answers",
"tables"
],
"additionalProperties": false
},
"limitations": {
"type": "array",
"items": {
"type": "string"
}
},
"when_to_test": {
"type": "string"
},
"related_topics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"additionalProperties": false
}
},
"related_site_tools": {
"type": "array",
"items": {
"$ref": "#/properties/topics/items/properties/related_topics/items"
}
},
"related_chat_tools": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"title",
"summary",
"page_url",
"points",
"tables",
"left_on_page",
"limitations",
"when_to_test",
"related_topics",
"related_site_tools",
"related_chat_tools"
],
"additionalProperties": false
}
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "number"
},
"title": {
"type": "string"
},
"publisher": {
"type": "string"
},
"url": {
"type": "string"
},
"checked_on": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"ref",
"title",
"publisher",
"url"
],
"additionalProperties": false
}
},
"claim_classes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"claim_class": {
"type": "string"
},
"meaning": {
"type": "string"
}
},
"required": [
"claim_class",
"meaning"
],
"additionalProperties": false
}
},
"citation_rule": {
"type": "string"
},
"available_topics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"topic": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"topic",
"title",
"url"
],
"additionalProperties": false
}
},
"engineering_url": {
"type": "string"
}
},
"required": [
"outcome",
"message",
"topics",
"sources",
"claim_classes",
"citation_rule",
"engineering_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢recommend_material(environment, heat_exposure, impact, flexibility, chemical_exposure, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"environment": {
"type": "string",
"enum": [
"indoor",
"outdoor"
],
"description": "Where the part lives. Default indoor."
},
"heat_exposure": {
"type": "string",
"enum": [
"none",
"warm",
"hot"
],
"description": "How much heat the part sees in use. Default none."
},
"impact": {
"type": "string",
"enum": [
"no_preference",
"high"
],
"description": "high when the part takes knocks or drops."
},
"flexibility": {
"type": "string",
"enum": [
"no_preference",
"flexible",
"rigid"
],
"description": "flexible for parts that must bend and spring back, rigid for parts that must not."
},
"chemical_exposure": {
"type": "string",
"enum": [
"none",
"some",
"harsh"
],
"description": "Contact with oils, fuels, cleaners or solvents. Default none."
},
"appearance": {
"type": "string",
"enum": [
"standard",
"high"
],
"description": "high when looks and color choice matter."
},
"cost_sensitivity": {
"type": "string",
"enum": [
"standard",
"high"
],
"description": "high when keeping material cost low matters most."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"ranked",
"none_fit"
]
},
"message": {
"type": "string"
},
"recommendations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {
"type": "number"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"summary": {
"type": "string"
},
"best_for": {
"type": "string"
},
"not_advised": {
"type": "string"
},
"pricing_mode": {
"type": "string",
"enum": [
"instant",
"reviewed_by_a_person"
]
},
"heat_rank": {
"type": "string"
},
"reasons": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"rank",
"id",
"name",
"summary",
"best_for",
"not_advised",
"pricing_mode",
"heat_rank",
"reasons"
],
"additionalProperties": false
}
},
"ruled_out": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"reasons": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"name",
"reasons"
],
"additionalProperties": false
}
},
"guidance": {
"type": "array",
"items": {
"type": "string"
}
},
"heat_rank_note": {
"type": "string"
},
"strength_note": {
"type": "string"
},
"selector_url": {
"type": "string"
},
"materials_url": {
"type": "string"
},
"properties_url": {
"type": "string"
},
"review_url": {
"type": "string"
}
},
"required": [
"outcome",
"message",
"recommendations",
"ruled_out",
"guidance",
"heat_rank_note",
"strength_note",
"selector_url",
"materials_url",
"properties_url",
"review_url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢compare_print_vs_molding(quantity, printed_unit_cost, tooling_cost, molded_unit_cost, tool_revisions, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"description": "The total or yearly quantity to compare."
},
"printed_unit_cost": {
"type": "number",
"exclusiveMinimum": 0,
"description": "The user's cost per printed part, in US dollars."
},
"tooling_cost": {
"type": "number",
"minimum": 0,
"description": "What the mold costs, in US dollars. 0 if the user has no tooling quote yet."
},
"molded_unit_cost": {
"type": "number",
"exclusiveMinimum": 0,
"description": "The user's cost per molded part once the tool exists, in US dollars."
},
"tool_revisions": {
"type": "integer",
"minimum": 0,
"maximum": 10,
"description": "Expected tool revisions. Default 0."
},
"revision_cost": {
"type": "number",
"minimum": 0,
"description": "Cost per tool revision, in US dollars."
},
"setup_cost": {
"type": "number",
"minimum": 0,
"description": "Setup or secondary cost per printed order, in US dollars. Default 0."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"computed",
"needs_inputs",
"invalid_input"
]
},
"message": {
"type": "string"
},
"missing": {
"type": "array",
"items": {
"type": "string"
}
},
"problems": {
"type": "array",
"items": {
"type": "string"
}
},
"assumptions": {
"type": "array",
"items": {
"type": "string"
}
},
"result": {
"type": "object",
"properties": {
"quantity": {
"type": "number"
},
"currency": {
"type": "string",
"const": "USD"
},
"tooling_total": {
"type": "number"
},
"printed_total_at_quantity": {
"type": "number"
},
"molded_total_at_quantity": {
"type": "number"
},
"per_unit_gap": {
"type": "number"
},
"break_even_quantity": {
"type": [
"number",
"null"
]
},
"cheaper_at_quantity": {
"type": "string",
"enum": [
"printing",
"molding",
"tie"
]
},
"difference_at_quantity": {
"type": "number"
}
},
"required": [
"quantity",
"currency",
"tooling_total",
"printed_total_at_quantity",
"molded_total_at_quantity",
"per_unit_gap",
"break_even_quantity",
"cheaper_at_quantity",
"difference_at_quantity"
],
"additionalProperties": false
},
"table": {
"type": "array",
"items": {
"type": "object",
"properties": {
"quantity": {
"type": "number"
},
"printed_total": {
"type": "number"
},
"molded_total": {
"type": "number"
}
},
"required": [
"quantity",
"printed_total",
"molded_total"
],
"additionalProperties": false
}
},
"published_range": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"source_refs": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"text",
"source_refs"
],
"additionalProperties": false
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "number"
},
"title": {
"type": "string"
},
"publisher": {
"type": "string"
},
"url": {
"type": "string"
},
"checked_on": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"ref",
"title",
"publisher",
"url"
],
"additionalProperties": false
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"tool_url": {
"type": "string"
},
"reading": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"outcome",
"message",
"published_range",
"sources",
"notes",
"tool_url",
"reading"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢size_hole_or_tolerance(fit_type, hole_diameter_mm, hole_axis)
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.
입력 스키마
{
"type": "object",
"properties": {
"fit_type": {
"type": "string",
"enum": [
"sliding-moving",
"bolt-clearance",
"pin-in-hole",
"mating-fdm-parts",
"press-interference",
"snap-fit"
],
"description": "What the fit is for: sliding-moving, bolt-clearance, pin-in-hole, mating-fdm-parts, press-interference or snap-fit."
},
"hole_diameter_mm": {
"type": "number",
"minimum": 0.1,
"maximum": 500,
"description": "The hole diameter the user plans to draw, in mm."
},
"hole_axis": {
"type": "string",
"enum": [
"vertical-z",
"horizontal-xy"
],
"description": "vertical-z when the hole goes through a top or bottom face, horizontal-xy when it goes through a side wall."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"guidance",
"needs_input"
]
},
"message": {
"type": "string"
},
"fit": {
"type": "object",
"properties": {
"fit_type": {
"type": "string"
},
"label": {
"type": "string"
},
"has_number": {
"type": "boolean"
},
"starting_clearances": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
},
"source_ref": {
"type": [
"number",
"null"
]
},
"basis": {
"type": "string"
}
},
"required": [
"label",
"value",
"source_ref"
],
"additionalProperties": false
}
},
"no_number_reason": {
"type": "string"
},
"considerations": {
"type": "array",
"items": {
"type": "string"
}
},
"test_coupon": {
"type": "string"
},
"source_refs": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"fit_type",
"label",
"has_number",
"starting_clearances",
"considerations",
"test_coupon",
"source_refs"
],
"additionalProperties": false
},
"hole": {
"type": "object",
"properties": {
"nominal_diameter_mm": {
"type": "number"
},
"axis": {
"type": "string"
},
"direction": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"source_refs": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"text",
"source_refs"
],
"additionalProperties": false
},
"magnitude": {
"$ref": "#/properties/hole/properties/direction"
},
"published_minimums": {
"type": "array",
"items": {
"type": "object",
"properties": {
"publisher": {
"type": "string"
},
"axis": {
"type": "string"
},
"min_diameter_mm": {
"type": "number"
},
"note": {
"type": "string"
},
"source_ref": {
"type": [
"number",
"null"
]
}
},
"required": [
"publisher",
"axis",
"min_diameter_mm",
"note",
"source_ref"
],
"additionalProperties": false
}
},
"below_published_minimum": {
"type": "boolean"
},
"below_minimum_note": {
"type": "string"
},
"single_setup_examples": {
"type": "array",
"items": {
"type": "object",
"properties": {
"material": {
"type": "string"
},
"nominal_mm": {
"type": "number"
},
"measured_mm": {
"type": "number"
},
"study": {
"type": "string"
},
"source_ref": {
"type": [
"number",
"null"
]
}
},
"required": [
"material",
"nominal_mm",
"measured_mm",
"study",
"source_ref"
],
"additionalProperties": false
}
},
"gear_bore_example": {
"$ref": "#/properties/hole/properties/direction"
},
"drill_or_ream": {
"$ref": "#/properties/hole/properties/direction"
},
"measurement_plan": {
"type": "string"
}
},
"required": [
"nominal_diameter_mm",
"direction",
"magnitude",
"published_minimums",
"single_setup_examples",
"gear_bore_example",
"drill_or_ream",
"measurement_plan"
],
"additionalProperties": false
},
"fit_types": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fit_type": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"fit_type",
"label"
],
"additionalProperties": false
}
},
"tolerance_posture": {
"type": "string"
},
"guidance": {
"type": "array",
"items": {
"type": "string"
}
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "number"
},
"title": {
"type": "string"
},
"publisher": {
"type": "string"
},
"url": {
"type": "string"
},
"checked_on": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"ref",
"title",
"publisher",
"url"
],
"additionalProperties": false
}
},
"citation_rule": {
"type": "string"
},
"urls": {
"type": "object",
"properties": {
"tolerance_guide": {
"type": "string"
},
"hole_compensation": {
"type": "string"
},
"hole_clearances": {
"type": "string"
},
"fdm_tolerances": {
"type": "string"
},
"review_request": {
"type": "string"
}
},
"required": [
"tolerance_guide",
"hole_compensation",
"hole_clearances",
"fdm_tolerances",
"review_request"
],
"additionalProperties": false
}
},
"required": [
"outcome",
"message",
"tolerance_posture",
"guidance",
"sources",
"citation_rule",
"urls"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거