One HTTP call puts your model through a real slicer.
FabTally returns print time, filament in grams and metres, layer count, dimensions, a fits-on-bed check and a price. A production slicer does the slicing against 13 calibrated printer profiles and 12 materials, so the numbers are the ones a printer would produce, not an estimate from volume.
Free for people through the MCP server and this page. Agents pay per call in USDC on Base, or with prepaid credits.
Live quote
Quote a part against the live API
Load an STL, OBJ, 3MF or PLY, pick a printer and a material, and the public quote endpoint slices it. The readout is the response, not a preview.
POST /api/quote/v1/quoteThe live quote needs JavaScript; the curl request below works without it.
- Print time
- Filament
- Layers
- Dimensions
- Volume
- Mesh
- Settings
Load a part and press Quote. The numbers are measured by the slicer, not estimated.
This endpoint is public and rate-limited. Production and volume traffic uses the REST or agent lanes below.
Request and response
The request, and what comes back
One multipart POST with the file, a printer id and a material id. The response is JSON you can price from, with every measured field marked exact or heuristic.
curl -X POST \ https://fabtally.com/api/quote/v1/quote \ -F file=@part.stl \ -F material=pla \ -F printer=bambu-a1 \ -F quantity=1
{ "model": "sample-cube-20mm.stl", "printer": "bambu-a1", "material": "pla", "settings": { "layer_height_mm": 0.2, "infill_percent": 15, "wall_loops": 2, "supports": "none" }, "print_time_sec": 664, "print_time_human": "11m 4s", "filament_g": 3.64, "filament_m": 1.2112, "layer_count": 100, "model_stats": { "dimensions_mm": { "x": 20.0, "y": 20.0, "z": 20.0 }, "volume_cm3": 8.0, "volume_method": "exact", "triangles": 12, "watertight": true, "fits_on_bed": true }, "quote": { "currency": "USD", "unit": { "material_cost": 0.09, "machine_cost": 0.37, "setup_share": 1.5, "price": 5.0 }, "minimum_price_applied": true, "total": 5.0 } }
Recorded 2026-10-20 from the live endpoint. Trimmed; no value edited. The full response also carries breakdown_per_unit and pricing_basis, which echoes whether each cost input was your own or a default.
| Field | Unit | Basis | Note |
|---|---|---|---|
| print_time_sec | s | exact | From the slice. |
| filament_g, filament_m | g, m | exact | From the slice. |
| layer_count | count | exact | From the slice. |
| model_stats.dimensions_mm | mm | exact | Bounding box of the mesh. |
| model_stats.volume_cm3 | cm³ | exact | volume_method says how it was measured. |
| model_stats.triangles, watertight | count, bool | exact | Mesh checks. |
| model_stats.fits_on_bed | bool | exact | Against the printer's bed. |
| quote.total | USD | computed | From your material_cost_per_kg, machine_rate_per_hour, setup_fee, margin, markup_percent, minimum_price and currency if you pass them, defaults otherwise; see pricing_basis. The setup fee and the minimum price apply once per job; total is unit.price × quantity. |
Models are streamed to the slicer and deleted when the response is sent; nothing is kept and nothing is trained on.
Fleet
Thirteen printers, drawn to scale
Each is a calibrated machine profile with its bed size and a 0.4 mm nozzle. Pass the id; fits-on-bed is checked against these dimensions.
Materialspla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, pet, tpu, pc, nylon
Quality presetsdraft 0.28 mm · standard 0.20 mm · fine 0.12 mm
For agents
Agents pay per call and settle in USDC on Base
An unpaid request to any /agent/v1/* endpoint returns HTTP 402 with the price, the asset and the pay-to address, per the x402 protocol (v2, scheme exact, network eip155:8453). Pay, repeat the request, and it settles and returns the result. Slicing runs after payment settles, so malformed input is never charged.
The 402 handshake
- 1
Request without payment
POST /agent/v1/quote → 402 Payment Required - 2
The 402 body states the terms
accepts[0]: scheme exact · network eip155:8453 · asset USDC · amount 5000 (= $0.005) · payTo 0xccB5…90e3 - 3
Repeat with the payment header
POST /agent/v1/quote + X-PAYMENT → 200, JSON as above
Settlement goes through the facilitator at https://facilitator.payai.network. The same terms are published at /.well-known/x402.
| Method | Path | Returns | Price |
|---|---|---|---|
| Geometry and quote | |||
| POST | /agent/v1/analyze | Geometry only: bbox mm, volume cm³, triangles, watertight. No slice. | $0.002 |
| POST | /agent/v1/quote | Priced quote: print time, filament grams, dimensions, total. | $0.005 |
| POST | /agent/v1/preview | Base64 PNG render of the model. No slice. | $0.005 |
| Slice | |||
| POST | /agent/v1/slice | Full slice metrics, geometry and fits-on-bed. | $0.005 |
| POST | /agent/v1/slice/preview | Slice metrics plus a rendered PNG. | $0.010 |
| POST | /agent/v1/slice/gcode | Slice metrics plus downloadable G-code. | $0.015 |
| POST | /agent/v1/slice/full | Everything: metrics, preview PNG and G-code. | $0.020 |
| DFM and attestation | |||
| POST | /agent/v1/dfm | Printability report: verdict, wall thickness, overhangs, support and material deltas. | $0.010 |
| POST | /agent/v1/orient | Orientation optimiser: slices up to 4 candidates, recommends the one with least support. | $0.020 |
| POST | /agent/v1/attest | Signed point-in-time observation of a public URL (ed25519). | $0.010 |
| Free | |||
| POST | /agent/v1/dfm-preview | Geometry-only DFM preview: the printable-so-far verdict, at no charge. | free |
| Path | What it is | Link |
|---|---|---|
| /openapi.json | OpenAPI 3.1, all operations | open |
| /agent/overview | Capabilities and prices, JSON | open |
| /.well-known/x402 | x402 discovery document | open |
| /.well-known/agent-card.json | A2A agent card | open |
| /.well-known/ai-catalog.json | ARD catalog | open |
| /agent/v1/attest/schema | Attestation schema and ed25519 public key | open |
Add the slicer to Claude, ChatGPT or Cursor
FabTally is listed in the MCP registry as com.fabtally/slicer, a hosted streamable-HTTP server at https://fabtally.com/mcp. Point any MCP client at that URL.
list_printers, get_print_quote, slice_model, check_printability, optimize_orientation, compare_printers, recommend_material, recommend_settings, whatif_infill, scale_advisor, validate_model, cost_breakdown, analyze_3d_model
Personal and interactive use through MCP is free within fair-use daily limits: slice metrics, the full printability report, orientation and the advisors. Only the downloadable G-code file is paid. Paste a link (GitHub, Google Drive, Dropbox, a direct STL/3MF or a zip; model-sharing sites usually block server downloads) or upload a file at fabtally.com/upload.
claude mcp add --transport http fabtally https://fabtally.com/mcp
POST /agent/v1/dfm-preview{ "printable": "yes", "manifold": { "basis": "exact", "watertight": true }, "overhangs": { "basis": "heuristic", "confidence": "medium", "overhang_area_fraction": 0, "supports_suggested": false }, "min_feature": { "basis": "heuristic", "min_thickness_mm": 19.999, "thin_wall_risk": "none" } }
Every DFM field says whether it came from geometry, a heuristic or a slice. Recorded 2026-10-20 for bambu-a1 and pla; trimmed.
Prices
What is free and what costs money
People, free
Using FabTally yourself, through the MCP server in Claude or ChatGPT Desktop or through the quote form on this page, costs nothing within fair-use daily limits. That includes slice metrics (time, filament, layers, cost), the full printability report, orientation optimisation and the printer, material and settings advisors. The only paid output for a person is the downloadable G-code file.
Agents and volume, per call
Agents, stores, MES integrations and high-volume callers use the /agent/v1/* lane at the prices in the schedule above, paid per call in USDC on Base or drawn from prepaid credits.
Prepaid credits, paid by card
Packs of $5, $10 and $25. Stripe checkout issues an API key on the next page; calls draw the balance down at the same per-call prices.
Buy credits with a cardBuilding a store or MES on the REST API? Human and developer pricing is separate: write to hello@fabtally.com (subject "FabTally REST API") or read the OpenAPI spec.