{"serverId":"mcp-registry/com.fabtally/slicer","tools":[{"name":"analyze_3d_model","fixed":{"name":"analyze_3d_model","description":"FREE general 3D-model analysis — bounding box, volume, triangle count, watertight/manifold, solidity — useful BEYOND 3D printing: game-asset & real-time mesh QC, AR/VR asset optimisation, 3D-marketplace upload validation, engineering sanity checks. Accepts STL/3MF/OBJ/PLY. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads:","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Analyze a 3D model (general, beyond printing)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":532,"tokensAfter":532},{"name":"analyze_model","fixed":{"name":"analyze_model","description":"FREE geometry sanity check for an STL/3MF/OBJ/PLY model: bounding box (mm), volume (cm3), triangle count, watertight/manifold flag, fits-on-bed, plus a printable-so-far verdict and overhang/thin-wall heuristics. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"material":{"type":"string","description":"Filament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla."},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Analyze 3D model geometry"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":575,"tokensAfter":575},{"name":"check_printability","fixed":{"name":"check_printability","description":"FREE 3D-printing DFM / printability check for an STL/3MF/OBJ/PLY model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. Default (full=false): a fast geometry-only read — printable verdict (yes/with-warnin","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"full":{"type":"boolean","description":"false (default) = fast geometry-only read. true = full report with exact slice-derived support & material deltas (free for interactive use; counts toward the daily fair-use limit)."},"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"quality":{"enum":["draft","standard","fine"],"type":"string","description":"Quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"material":{"type":"string","description":"Filament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla."},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"layer_height":{"type":"number","maximum":0.6,"minimum":0.04,"description":"Explicit layer height mm; overrides `quality`. 0.04 up to the printer's max (0.3-0.4 mm on a 0.4 mm nozzle)."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."},"infill_percent":{"type":"number","maximum":100,"minimum":0,"description":"Sparse infill density percent (0-100)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Check 3D-print printability (DFM)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":765,"tokensAfter":765},{"name":"compare_printers","fixed":{"name":"compare_printers","description":"FREE. Slice the same model across several printers and get a table of print time / filament / cost / fits-on-bed, plus the cheapest and fastest picks. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. Fair-","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["printers"],"properties":{"margin":{"type":"number","description":"BYO pricing: fractional margin, 0.3 = 30%."},"quality":{"enum":["draft","standard","fine"],"type":"string","description":"Quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height."},"currency":{"type":"string","description":"BYO pricing: currency code (USD, EUR, ...). Default USD. Only a label: amounts are NOT converted, so pass your own rates in that currency too."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"material":{"type":"string","description":"Filament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla."},"printers":{"type":"string","description":"Comma-separated printer ids to compare (max 6), e.g. 'bambu-a1,prusa-mk4,ender3-v3'."},"quantity":{"type":"integer","description":"Number of parts (1-10000). Volume discounts apply. Default 1.","exclusiveMinimum":0},"supports":{"enum":["auto","none","tree"],"type":"string","description":"Support generation style."},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"setup_fee":{"type":"number","description":"BYO pricing: flat setup fee, charged once per job (not per part)."},"layer_height":{"type":"number","maximum":0.6,"minimum":0.04,"description":"Explicit layer height mm; overrides `quality`. 0.04 up to the printer's max (0.3-0.4 mm on a 0.4 mm nozzle)."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."},"minimum_price":{"type":"number","description":"BYO pricing: per-unit price floor, applied after volume discounts."},"infill_percent":{"type":"number","maximum":100,"minimum":0,"description":"Sparse infill density percent (0-100)."},"markup_percent":{"type":"number","description":"BYO pricing: extra % markup on top of margin."},"material_cost_per_kg":{"type":"number","description":"BYO pricing: override material $/kg."},"machine_rate_per_hour":{"type":"number","description":"BYO pricing: machine time cost/hour."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Compare printers for a model"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":946,"tokensAfter":946},{"name":"cost_breakdown","fixed":{"name":"cost_breakdown","description":"FREE. Break a quote into material vs machine-time vs setup vs margin, in your currency and filament price (bring your own pricing). Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. Fair-use limited (one sl","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"margin":{"type":"number","description":"BYO pricing: fractional margin, 0.3 = 30%."},"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"quality":{"enum":["draft","standard","fine"],"type":"string","description":"Quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height."},"currency":{"type":"string","description":"BYO pricing: currency code (USD, EUR, ...). Default USD. Only a label: amounts are NOT converted, so pass your own rates in that currency too."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"material":{"type":"string","description":"Filament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla."},"quantity":{"type":"integer","description":"Number of parts (1-10000). Volume discounts apply. Default 1.","exclusiveMinimum":0},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"setup_fee":{"type":"number","description":"BYO pricing: flat setup fee, charged once per job (not per part)."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."},"minimum_price":{"type":"number","description":"BYO pricing: per-unit price floor, applied after volume discounts."},"infill_percent":{"type":"number","maximum":100,"minimum":0,"description":"Sparse infill density percent (0-100)."},"markup_percent":{"type":"number","description":"BYO pricing: extra % markup on top of margin."},"material_cost_per_kg":{"type":"number","description":"BYO pricing: override material $/kg."},"machine_rate_per_hour":{"type":"number","description":"BYO pricing: machine time cost/hour."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Cost breakdown (material vs machine vs setup)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":905,"tokensAfter":905},{"name":"get_print_quote","fixed":{"name":"get_print_quote","description":"FREE. Slicer-accurate FDM price quote from a real slice (not an estimate): print time, filament grams, and a priced quote (material + machine time + setup, with automatic volume discounts). Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtal","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"margin":{"type":"number","description":"BYO pricing: fractional margin, 0.3 = 30%."},"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"quality":{"enum":["draft","standard","fine"],"type":"string","description":"Quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height."},"currency":{"type":"string","description":"BYO pricing: currency code (USD, EUR, ...). Default USD. Only a label: amounts are NOT converted, so pass your own rates in that currency too."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"material":{"type":"string","description":"Filament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla."},"quantity":{"type":"integer","description":"Number of parts (1-10000). Volume discounts apply. Default 1.","exclusiveMinimum":0},"supports":{"enum":["auto","none","tree"],"type":"string","description":"Support generation style."},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"setup_fee":{"type":"number","description":"BYO pricing: flat setup fee, charged once per job (not per part)."},"layer_height":{"type":"number","maximum":0.6,"minimum":0.04,"description":"Explicit layer height mm; overrides `quality`. 0.04 up to the printer's max (0.3-0.4 mm on a 0.4 mm nozzle)."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."},"minimum_price":{"type":"number","description":"BYO pricing: per-unit price floor, applied after volume discounts."},"infill_percent":{"type":"number","maximum":100,"minimum":0,"description":"Sparse infill density percent (0-100)."},"markup_percent":{"type":"number","description":"BYO pricing: extra % markup on top of margin."},"material_cost_per_kg":{"type":"number","description":"BYO pricing: override material $/kg."},"machine_rate_per_hour":{"type":"number","description":"BYO pricing: machine time cost/hour."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get a 3D printing price quote"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":985,"tokensAfter":985},{"name":"list_printers","fixed":{"name":"list_printers","description":"FREE. Discovery: the live FDM printer fleet (id, name, bed/build volume mm, nozzle), the 12 filament materials (PLA, PETG, ABS, ASA, Nylon, PC, TPU + carbon-fiber variants), and the pricing model. Call this FIRST to pick a `printer` and `material` id. Personal & interactive use is FREE (fair-use limits); per-call x402 / prepaid credits apply to agents, production and high volume.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List 3D printers, materials and pricing"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":146,"tokensAfter":146},{"name":"recommend_material","fixed":{"name":"recommend_material","description":"FREE. Suggest the best filament(s) for a use case with plain-language reasons, and (by default) a real slice/quote per candidate so you see the time/filament/cost tradeoff. use_case: functional | decorative | outdoor | flexible | high-temp | food-contact-note. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["use_case"],"properties":{"quote":{"type":"boolean","description":"Also slice/quote each candidate material (default true)."},"margin":{"type":"number","description":"BYO pricing: fractional margin, 0.3 = 30%."},"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"quality":{"enum":["draft","standard","fine"],"type":"string","description":"Quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height."},"currency":{"type":"string","description":"BYO pricing: currency code (USD, EUR, ...). Default USD. Only a label: amounts are NOT converted, so pass your own rates in that currency too."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"use_case":{"enum":["functional","decorative","outdoor","flexible","high-temp","food-contact-note"],"type":"string","description":"What the part is for — drives the material recommendation."},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"setup_fee":{"type":"number","description":"BYO pricing: flat setup fee, charged once per job (not per part)."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."},"minimum_price":{"type":"number","description":"BYO pricing: per-unit price floor, applied after volume discounts."},"infill_percent":{"type":"number","maximum":100,"minimum":0,"description":"Sparse infill density percent (0-100)."},"markup_percent":{"type":"number","description":"BYO pricing: extra % markup on top of margin."},"material_cost_per_kg":{"type":"number","description":"BYO pricing: override material $/kg."},"machine_rate_per_hour":{"type":"number","description":"BYO pricing: machine time cost/hour."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Recommend / compare filament materials"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":915,"tokensAfter":915},{"name":"recommend_settings","fixed":{"name":"recommend_settings","description":"FREE. Suggest layer height / infill / walls for a goal (strength | speed | surface | cost) and slice WITH those settings so you see the resulting time / filament / cost. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and pa","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["goal"],"properties":{"goal":{"enum":["strength","speed","surface","cost"],"type":"string","description":"What to optimise for."},"margin":{"type":"number","description":"BYO pricing: fractional margin, 0.3 = 30%."},"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"currency":{"type":"string","description":"BYO pricing: currency code (USD, EUR, ...). Default USD. Only a label: amounts are NOT converted, so pass your own rates in that currency too."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"material":{"type":"string","description":"Filament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla."},"quantity":{"type":"integer","description":"Number of parts (1-10000). Volume discounts apply. Default 1.","exclusiveMinimum":0},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"setup_fee":{"type":"number","description":"BYO pricing: flat setup fee, charged once per job (not per part)."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."},"minimum_price":{"type":"number","description":"BYO pricing: per-unit price floor, applied after volume discounts."},"markup_percent":{"type":"number","description":"BYO pricing: extra % markup on top of margin."},"material_cost_per_kg":{"type":"number","description":"BYO pricing: override material $/kg."},"machine_rate_per_hour":{"type":"number","description":"BYO pricing: machine time cost/hour."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Recommend slice settings for a goal"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":867,"tokensAfter":867},{"name":"validate_model","fixed":{"name":"validate_model","description":"FREE, fast, uncapped. One-shot 'is this printable?': watertight/manifold, wall-thickness estimate, size vs the chosen bed, and a printability verdict with reasons + a one-liner. Geometry-only (no slice). Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"printer":{"type":"string","description":"Printer id from list_printers (elegoo-centauri-carbon, elegoo-neptune4-max, bambu-a1, bambu-a1-mini, bambu-p1s, bambu-x1c, prusa-mk4, prusa-mini, ender3-v3, creality-k1, creality-k1-max, voron-24-350, anycubic-kobra2). Default elegoo-centauri-carbon."},"filename":{"type":"string","description":"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."},"material":{"type":"string","description":"Filament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla."},"model_url":{"type":"string","format":"uri","description":"PREFERRED. Public URL to the 3D model. Paste a link: a GitHub blob, Google Drive or Dropbox share link, a direct .stl/.3mf/.obj/.ply/.step URL, or a .zip (first printable model inside is used). Thingiverse/Printables/MakerWorld pages usually block server downloads: download the file yourself and upload it. Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."},"model_base64":{"type":"string","description":"Base64 model bytes — small-file fallback only (roughly <50KB). MCP clients (Claude/ChatGPT Desktop) truncate large inline tool arguments, so a real STL can silently arrive corrupted. For anything bigger use model_url (upload at https://fabtally.com/upload first). Provide `filename` too."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Validate model (one-shot go/no-go)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":575,"tokensAfter":575}],"toolsChanged":10,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}