Skip to main content
Glama

FabTally 3D-Print Slicer, Quote & DFM

Check 3D-print printability (DFM)

check_printability

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-warnings/no), watertight/manifold, dimensions & volume, fits-on-bed, wall-thickness estimate vs the 0.4mm nozzle, overhang heuristic. Set full=true for the complete report with EXACT support-material grams/time and infill material-saving deltas from REAL slices (every field labelled exact vs heuristic). Both are FREE for personal/interactive use (fair-use limits); agents/high-volume use prepaid credits or the x402 lane.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fullNofalse (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).
printerNoPrinter 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.
qualityNoQuality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height.
filenameNoFile name incl. extension, e.g. 'bracket.stl'. Required with model_base64.
materialNoFilament/material id (pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu). Default pla.
model_urlNoPREFERRED. 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_heightNoExplicit 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_base64NoBase64 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_percentNoSparse infill density percent (0-100).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / layer_height / description
      Previous value: -"Explicit layer height mm (0.04-0.6); overrides `quality`."New value: +"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)."
    • addedInput schema / properties / layer_height / maximum
      Added value: +0.6
    • addedInput schema / properties / layer_height / minimum
      Added value: +0.04
    • changedInput schema / properties / model_url / description
      Previous value: -"PREFERRED. Public URL to the 3D model. Paste a link: Thingiverse/Printables/MakerWorld model pages, 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). Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."New value: +"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."
    • changedInput schema / properties / printer / description
      Previous value: -"Printer id from list_printers (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-neptune4-max."New value: +"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."
  2. Changed9 schema fields changed
    • changedInput schema / properties / filename / description
      Previous value: -"File name incl. extension, e.g. 'bracket.stl'. Sets the file type; required with model_base64."New value: +"File name incl. extension, e.g. 'bracket.stl'. Required with model_base64."
    • changedInput schema / properties / full / description
      Previous value: -"false (default) = FREE geometry-only preview via /agent/v1/dfm-preview. true = premium, x402-metered full DFM report ($0.01) with exact slice-derived support & material deltas via /agent/v1/dfm (returns x402 challenge unless x_payment is supplied)."New value: +"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)."
    • changedInput schema / properties / infill_percent / description
      Previous value: -"Sparse infill density percent (0-100). Used for the material-saving delta in a full DFM report."New value: +"Sparse infill density percent (0-100)."
    • changedInput schema / properties / layer_height / description
      Previous value: -"Explicit layer height in mm (0.04-0.6); overrides `quality` if both are given."New value: +"Explicit layer height mm (0.04-0.6); overrides `quality`."
    • changedInput schema / properties / model_base64 / description
      Previous value: -"Base64-encoded model file bytes (STL/3MF/OBJ/PLY/STEP), an alternative to model_url for inline data. Provide `filename` too."New value: +"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."
    • changedInput schema / properties / model_url / description
      Previous value: -"Public https URL to the 3D model file (STL, 3MF, OBJ, PLY, or STEP). The server fetches it. Use this OR model_base64."New value: +"PREFERRED. Public URL to the 3D model. Paste a link: Thingiverse/Printables/MakerWorld model pages, 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). Local file? Upload once at https://fabtally.com/upload and paste that URL. The server fetches and (if a zip) unpacks it."
    • changedInput schema / properties / printer / description
      Previous value: -"3D printer id from list_printers (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-neptune4-max."New value: +"Printer id from list_printers (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-neptune4-max."
    • changedInput schema / properties / quality / description
      Previous value: -"Print quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height."New value: +"Quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height."
    • removedInput schema / properties / x_payment
      Removed value: -{
      -  "description": "x402 payment payload (base64) for a PAID tool/mode. If supplied it is forwarded as the X-PAYMENT header to settle the call and return the real result instead of a 402 challenge. Omit to get the price challenge first.",
      -  "type": "string"
      -}
  3. Changed2 schema fields changed
    • changedInput schema / properties / full / description
      Previous value: -"false (default) = FREE geometry-only preview via /agent/v1/dfm-preview. true = PAID full DFM report ($0.01) with exact slice-derived support & material deltas via /agent/v1/dfm (returns x402 challenge unless x_payment is supplied)."New value: +"false (default) = FREE geometry-only preview via /agent/v1/dfm-preview. true = premium, x402-metered full DFM report ($0.01) with exact slice-derived support & material deltas via /agent/v1/dfm (returns x402 challenge unless x_payment is supplied)."
    • changedInput schema / properties / x_payment / description
      Previous value: -"x402 payment payload (base64) for a PAID tool. If supplied it is forwarded as the X-PAYMENT header to settle the call and return the real result instead of a 402 challenge. Omit to get the price challenge first."New value: +"x402 payment payload (base64) for a PAID tool/mode. If supplied it is forwarded as the X-PAYMENT header to settle the call and return the real result instead of a 402 challenge. Omit to get the price challenge first."
  4. First observed

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the cost model (free for personal/interactive use, fair-use limits, prepaid credits or x402 for agents/high-volume), the heuristic-vs-exact labelling of every field, the 0.4mm-nozzle assumption behind wall-thickness estimates, and the silent-truncation risk of inline base64 arguments. This is well beyond what any structured field provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the tool's identity and cost, then input handling, then the full=false/true semantics. It is dense but nearly every clause is actionable; the only real redundancy is restating the model_url sourcing rules that already appear verbatim in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, no-output-schema, no-annotation tool, the description covers what the call returns (verdict, watertight/manifold, dimensions, bed fit, wall thickness, overhang) and the cost/limit model, which is what an agent needs before spending credits. It stops short of noting that the tool is side-effect-free and gives no rate-limit specifics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters (defaults, enums, ranges, printer/material ids). The description largely repeats this (model_url sourcing, base64 size caveat, quality presets, nozzle assumption) rather than adding new syntax or constraints, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: a free DFM/printability check on an STL/3MF/OBJ/PLY model, and explains the two operating modes (fast geometry read vs full slice report) so the agent knows what the call produces. It does not, however, explicitly distinguish itself from close siblings like validate_model, analyze_3d_model, or slice_model, whose overlap is left for the agent to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear input-sourcing guidance (GitHub/Drive/Dropbox links, direct file URLs, .zip handling, the Thingiverse/Printables/MakerWorld blocking caveat, and the upload workaround) and explains when to set full=true vs the default. But it never states when to prefer check_printability over sibling tools such as validate_model or slice_model, so the routing guidance an agent most needs is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.