# Lahore Casting — free casting estimate > Upload a STEP solid to https://estimate.lahorecasting.pk and get back its cast weight in seven alloys, its volume, surface area and bounding box, and a first-pass sand-casting castability verdict with the reasons written out. Free, no API key, no sign-up, and no price — the price is quoted by a person at the foundry over WhatsApp. Run by Lahore Casting, a working sand-casting foundry at Mominpura Road, Wahga Town, Lahore 54000, Pakistan. One POST is the whole integration: ```sh curl -sS -F file=@part.step -F alloy=grey_iron https://estimate.lahorecasting.pk/api/estimate ``` Facts, all of which are stated on the pages linked below: - Input: one `.step` or `.stp` file, AP203 or AP214, up to 25 MB, body beginning `ISO-10303-21`. STL, IGES, Parasolid and 3MF are rejected with a 400 — there is no mesh path. - Output: one JSON record — `geometry`, `weight_kg` for all seven alloys, `castability`, a prefilled `whatsapp_url` and a human-readable `share_url`. - Alloys and nominal densities (g/cm³): grey iron 7.2, ductile iron 7.1, carbon steel 7.85, stainless steel 7.9, aluminium 2.7, brass 8.5, bronze 8.8. Weight is `volume × density`, nothing else. - The volume is exact OpenCascade geometry (`getMass`), never derived from the mesh. - Verdicts: `green`, `amber`, `red`, `not_assessed`. `not_assessed` means the rules did not run, so no opinion exists — it is not a synonym for `red`, and the weight may still be measured and good. - Speed: median about 3 s, p90 about 5 s, slowest part in the foundry's 38-part library 8.1 s, hard server-side ceiling 150 s. Use a client timeout of at least 180 s. - Rate limit: 20 estimates per hour per IP, answered with 429. - Honest limits: every response carries the sentence "v0 heuristic, not yet reviewed by the foundry; the quote is made by a person." The castability rules are R1 v0 heuristics, never yet checked against a scrapped casting; the weight is the solid one, with no gating, risers, shrinkage or machining allowance; the tool cannot tell a cast feature from a machined one; and it never returns a price. - Uploads are kept — the file, the estimate and a salted hash of the caller's IP — so the foundry can follow up. Tell your user before you upload their geometry. - The foundry pours ferrous only, iron and steel, 1 kg to 500 kg. Aluminium, brass and bronze weights are computed as a convenience, not as an offer. - WhatsApp +92 300 4212184 · lahorecasting@yahoo.com · Monday–Saturday 07:00–19:00 PKT. ## Docs - [Agent skill](https://estimate.lahorecasting.pk/llms-full.txt): the request shape, the full JSON response shape field by field, the alloy table, what `not_assessed` means, the error codes, and the limits — everything an agent needs to call this correctly, in one file. - [Agent skill file](https://estimate.lahorecasting.pk/SKILL.md): the agentskills.io skill for this tool. Save it as `SKILL.md` in your skills directory and the estimator becomes a tool your agent can reach for by name. - [OpenAPI 3.1](https://estimate.lahorecasting.pk/openapi.yaml): machine-readable description of every public endpoint. The two admin endpoints are deliberately not in it. - [Machine-readable description](https://estimate.lahorecasting.pk/schema.jsonld): JSON-LD `SoftwareApplication` / `WebAPI` / `Service` / `Organization` for this tool and the foundry behind it. - [Crawl policy](https://estimate.lahorecasting.pk/robots.txt): an explicit group per AI crawler. Everything here is open except `/e/` and `/api/`. ## Endpoints - `POST https://estimate.lahorecasting.pk/api/estimate` — multipart: `file` (required), `alloy`, `contact`, `note`. Returns the estimate. - `GET https://estimate.lahorecasting.pk/api/estimate/{id}` — the same record again. `{id}` is 12 hex characters. No list endpoint, no search. - `GET https://estimate.lahorecasting.pk/health` — `{"ok": true, "gmsh": true}`. `gmsh: false` means every estimate will come back `not_assessed`. ## Pages - [Upload page](https://estimate.lahorecasting.pk/): the tool itself, for a human. - [Lahore Casting](https://lahorecasting.pk): the foundry — what it casts, in which alloys, at what sizes, and how to reach it. - [Foundry index for language models](https://lahorecasting.pk/llms.txt): the same treatment for the foundry's own site, including all 40 standard castings with sizes, weights and materials. ## Optional - `GET https://estimate.lahorecasting.pk/e/{id}` — one estimate rendered as a shareable page. `noindex` and disallowed in robots.txt, because it is somebody's part. Link a human to it; parse the API instead.