Skip to main content
Glama

FabTally 3D-Print Slicer, Quote & DFM

Get a 3D printing price quote

get_print_quote

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: 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. Optionally bring your own pricing (all optional): currency, machine_rate_per_hour, margin, setup_fee, minimum_price, material_cost_per_kg, markup_percent — the response echoes a pricing_basis (default vs custom). Free for personal/interactive use (fair-use limits); high volume / agents use credits or x402.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
marginNoBYO pricing: fractional margin, 0.3 = 30%.
printerNoPrinter 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.
qualityNoQuality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height.
currencyNoBYO pricing: currency code (USD, EUR, ...). Default USD.
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.
quantityNoNumber of parts (1-10000). Volume discounts apply. Default 1.
supportsNoSupport generation style.
model_urlNoPREFERRED. 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.
setup_feeNoBYO pricing: flat per-job setup fee.
layer_heightNoExplicit layer height mm (0.04-0.6); overrides `quality`.
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.
minimum_priceNoBYO pricing: per-unit price floor.
infill_percentNoSparse infill density percent (0-100).
markup_percentNoBYO pricing: extra % markup on top of margin.
material_cost_per_kgNoBYO pricing: override material $/kg.
machine_rate_per_hourNoBYO pricing: machine time cost/hour.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changed
    • changedInput schema / properties / currency / description
      Previous value: -"Bring-your-own pricing: 2-8 letter currency code (e.g. USD, EUR). Default USD."New value: +"BYO pricing: currency code (USD, EUR, ...). Default USD."
    • 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 / 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 / machine_rate_per_hour / description
      Previous value: -"Bring-your-own pricing: machine time cost per hour, in `currency`. Default FabTally's rate."New value: +"BYO pricing: machine time cost/hour."
    • changedInput schema / properties / margin / description
      Previous value: -"Bring-your-own pricing: fractional margin on top of cost, e.g. 0.3 = 30%. Default FabTally's margin."New value: +"BYO pricing: fractional margin, 0.3 = 30%."
    • changedInput schema / properties / markup_percent / description
      Previous value: -"Bring-your-own pricing: extra percent markup applied on top of margin. Default 0."New value: +"BYO pricing: extra % markup on top of margin."
    • changedInput schema / properties / material_cost_per_kg / description
      Previous value: -"Bring-your-own pricing: override the material's $/kg cost. Default FabTally's material pricing."New value: +"BYO pricing: override material $/kg."
    • changedInput schema / properties / minimum_price / description
      Previous value: -"Bring-your-own pricing: price floor per unit, in `currency`. Default FabTally's minimum."New value: +"BYO pricing: per-unit price floor."
    • 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."
    • changedInput schema / properties / quantity / description
      Previous value: -"Number of parts (1-10000). Volume discounts apply automatically. Default 1."New value: +"Number of parts (1-10000). Volume discounts apply. Default 1."
    • changedInput schema / properties / setup_fee / description
      Previous value: -"Bring-your-own pricing: flat per-quote setup fee, in `currency`. Default FabTally's fee."New value: +"BYO pricing: flat per-job setup fee."
  2. Changed13 schema fields changed
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "Bring-your-own pricing: 2-8 letter currency code (e.g. USD, EUR). Default USD.",
      +  "type": "string"
      +}
    • addedInput schema / properties / infill_percent
      Added value: +{
      +  "description": "Sparse infill density percent (0-100). Used for the material-saving delta in a full DFM report.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / layer_height
      Added value: +{
      +  "description": "Explicit layer height in mm (0.04-0.6); overrides `quality` if both are given.",
      +  "type": "number"
      +}
    • addedInput schema / properties / machine_rate_per_hour
      Added value: +{
      +  "description": "Bring-your-own pricing: machine time cost per hour, in `currency`. Default FabTally's rate.",
      +  "type": "number"
      +}
    • addedInput schema / properties / margin
      Added value: +{
      +  "description": "Bring-your-own pricing: fractional margin on top of cost, e.g. 0.3 = 30%. Default FabTally's margin.",
      +  "type": "number"
      +}
    • addedInput schema / properties / markup_percent
      Added value: +{
      +  "description": "Bring-your-own pricing: extra percent markup applied on top of margin. Default 0.",
      +  "type": "number"
      +}
    • addedInput schema / properties / material_cost_per_kg
      Added value: +{
      +  "description": "Bring-your-own pricing: override the material's $/kg cost. Default FabTally's material pricing.",
      +  "type": "number"
      +}
    • addedInput schema / properties / minimum_price
      Added value: +{
      +  "description": "Bring-your-own pricing: price floor per unit, in `currency`. Default FabTally's minimum.",
      +  "type": "number"
      +}
    • addedInput schema / properties / printer
      Added value: +{
      +  "description": "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.",
      +  "type": "string"
      +}
    • addedInput schema / properties / quality
      Added value: +{
      +  "description": "Print quality preset: draft 0.28mm | standard 0.20mm | fine 0.12mm layer height.",
      +  "enum": [
      +    "draft",
      +    "standard",
      +    "fine"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / setup_fee
      Added value: +{
      +  "description": "Bring-your-own pricing: flat per-quote setup fee, in `currency`. Default FabTally's fee.",
      +  "type": "number"
      +}
    • addedInput schema / properties / supports
      Added value: +{
      +  "description": "Support generation style.",
      +  "enum": [
      +    "auto",
      +    "none",
      +    "tree"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / x_payment
      Removed value: -{
      -  "description": "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.",
      -  "type": "string"
      -}
  3. First observed

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries full burden and does excellently: discloses server-side fetching/unzipping, first printable model in a zip, base64 truncation risk, fair-use limits, credit/x402 for high volume, and response echoing pricing_basis. These are meaningful behavioral details beyond what the schema 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?

The description is a single dense paragraph, but every sentence earns its place: output summary, input source options, BYO pricing, and usage limits. It is front-loaded with 'FREE' and the core value proposition. Slightly long but not wasteful for a 17-parameter tool.

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?

Given 17 parameters, no output schema, and no annotations, the description covers the essential behavioral context: input methods, pricing customization, fair-use limits, and the fact that output includes print time, filament grams, and priced quote. It could mention error cases or defaults, but schema covers parameter defaults, making this reasonably complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by grouping BYO pricing parameters as optional, clarifying model_url as preferred, warning about model_base64 size limits, and explaining that pricing_basis reflects default vs custom. This goes beyond the individual schema descriptions.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Slicer-accurate FDM price quote from a real slice (not an estimate): print time, filament grams, and a priced quote.' This clearly distinguishes it from sibling tools like slice_model or cost_breakdown by emphasizing real slicing and automatic volume discounts.

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

Usage Guidelines4/5

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

Provides clear context on how to use the tool: paste a link from supported sources, upload local files first, and optionally supply BYO pricing parameters. It implicitly distinguishes from estimate-based approaches ('not an estimate') but does not explicitly name alternative tools or state when not to use this tool.

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.