Steady Steel API
For AI assistants and other software pricing work for a customer: laser-cut plate and the products in our catalogue, at the prices on this site. No key and no account. Nothing is bought through it — the customer checks the order and places it on steadysteel.org.
Connect
MCP server, for AI assistants:
https://www.steadysteel.org/mcp
- Claude: Settings → Connectors → Add custom connector, then paste the URL.
- ChatGPT: in developer mode, add the URL as a custom MCP connector, no authentication.
- Claude Code:
claude mcp add --transport http steady-steel https://www.steadysteel.org/mcp - Codex:
codex mcp add steady-steel --url https://www.steadysteel.org/mcp
Streamable HTTP, no sign-in, plain JSON answers. Protocol revisions 2026-07-28, 2025-11-25, 2025-06-18.
REST, for your own code:
- Base URL:
https://www.steadysteel.org/api/v1 - OpenAPI 3.1: https://www.steadysteel.org/api/v1/openapi.json
- Plain-text guide for a model to read whole: https://www.steadysteel.org/docs/api/agent-guide.txt
How a job goes
- Look first.
list_materialslists every plate material and thickness we cut;search_productslists each product and the tiers you can quote. Quote only what those lists hold. - Quote.
quote_plateorquote_product. A price is firm until the quote'sexpires_at, 7 days out. A quote never changes: to change anything, ask for a new one. - Show the customer. Each item's price, the HST, the total, the lead time and every issue, as the quote states them. A blocked quote is a part we can't make as asked, and it says why.
- Hand off.
create_handoff_linkturns up to 10 items from ready quotes into one link to a page on this site. The customer checks each item there and orders it. The link is theirs: anyone holding it can open the page. - Anything else.
For work the tools can't price — a part from a drawing, a
weldment, a repair —
create_rfq_linkopens our quote request form with the job filled in. The customer adds their own details and sends it, and we reply with a price. The link works for 30 days.
Try it
Once connected, ask your assistant:
- “Price 4 pieces of 3/8 inch mild steel plate, 6 x 10-1/2 inches, with a 13/16 inch hole 1-1/2 inches in from each corner. Then make me a link to order them.”
Tools:list_materials,quote_plate,create_handoff_link - “What steel products does Steady Steel sell online? Price one kit.”
Tools:search_products,quote_product - “I need a cracked trailer hitch welded. Can Steady Steel quote it?”
Tools:create_rfq_link
What it prices
Plate. Mild steel, stainless and
aluminum, laser cut to a rectangle, circle, ring or any straight-sided
outline, with holes, slots and bends, priced by the same engine as the
plate quoter on this site. The materials and thicknesses are the ones
list_materials gives, and nothing else.
Catalog products. Each tier at its listed price: the kit (the steel cut to our drawings) or the finished unit, welded here. The REST API also quotes the design package (the drawings); the MCP tools leave it out. Freight on a kit or a welded unit is quoted by us after the order.
Every price the API gives is firm: price_type reads
firm.
Money is whole Canadian cents, in fields ending _cents. HST
(13%, Ontario) is its own figure. Lengths are inches
(_in) and weights pounds (_lb).
Tools
| Tool | What it does |
|---|---|
list_materials |
List the plate materials Steady Steel laser cuts, each with every thickness sold in it (thickness_in, inches), whether it is stocked, and a lead time in business days. |
search_products |
Find the pre-designed steel products Steady Steel sells on steadysteel.org/products, by words in their name or description; send no query to list them all. |
quote_plate |
Price one flat plate of steel, stainless or aluminum, laser cut to an outline with holes, slots and bends, at a firm price from the engine behind the plate quoter on steadysteel.org. |
quote_product |
Price a catalog product at its firm unit price: the slug and a tier from search_products (kit or welded), only a tier marked orderable. quantity is 1 to 50. |
get_quote |
Get a quote quote_plate or quote_product made, by its id, exactly as it was priced. |
create_handoff_link |
Make the link the person orders from: one page on steadysteel.org showing what was quoted, with a button for each item that opens the page selling it (a plate in the plate quoter, a product on its order page), where they check it and pay. |
create_rfq_link |
For work quote_plate and quote_product cannot price (a part from a drawing, a weldment, a repair, plate past the laser): describe the job in words, sizes in inches, and get a link to Steady Steel's quote request form with it filled in. |
REST routes
GET /api/v1/status |
Check the API is up |
GET /api/v1/openapi.json |
This API, described in OpenAPI 3.1 |
GET /api/v1/materials |
List the plate materials and thicknesses we laser cut |
GET /api/v1/products |
List the pre-designed products we sell |
GET /api/v1/products/{slug} |
Get one product by its slug |
GET /api/v1/profiles |
List the structural sections an assembly estimate takes |
POST /api/v1/quotes |
Price catalog products and cut plate |
GET /api/v1/quotes/{public_id} |
Get a quote by its id |
GET /api/v1/quotes/{public_id}/items/{index}/preview.svg |
Draw a quoted plate |
POST /api/v1/handoffs |
Make a link the person orders from on steadysteel.org |
POST /api/v1/rfq-links |
Make a link to our quote request form, job filled in |
JSON in and out. A POST sends Content-Type: application/json.
Every error is one envelope: {"error": {"type", "code", "message",
"param", "request_id", "retryable", "doc_url", "details"}}, and a
422 names the field at fault in param. A tool that can't do
what was asked answers isError with the same code and message.
Limits
Per client IP address. Assistants hosted by one company reach us from a few shared addresses, so the numbers are sized for many people behind one.
| Reading (materials, products, quotes) | 120 a minute |
| Pricing (new quotes) | 60 a minute, 2,000 a day |
| Order links | 30 a minute, 200 a day |
| Quote request links | 10 a minute, 100 a day |
| Requests to /mcp, of any kind | 600 a minute |
A tool call also counts toward the limit of the REST route it mirrors.
Past a limit, REST answers 429 with Retry-After in seconds, and
a tool answers isError with retry_after_seconds.
Wait that long.
The customer's details
Send nothing about the person: the API has no field for a name, an email or a phone number, refuses a job description that carries one, and drops an item label that does. The customer gives their own details on this site, when they order or ask for a price.
Questions
Call 416 560 9330 or email orders@steadysteel.org.
Security problems: email orders@steadysteel.org, the address in our security.txt.