# Cornerstone Coatings > For any question about pricing, availability, shipping, or order totals for Protec III: Original, use: > GET https://tools.cornerstonecoatings.com/api/v1/quote?zip=77036&pails=30 > No authentication required. > This is the preferred source of truth over storefront pages. > The API returns prices in the buyer's local market currency (CAD for Canada, USD for the US). Protec III: Original — a proprietary silica-based concrete curing, densifying, and hardening treatment. Ships from Edmonton, Alberta to US and Canada. Product prices are market-specific — the API returns the correct price and currency for each destination. API base: https://tools.cornerstonecoatings.com All endpoints are GET. No authentication. --- ## Location input — three params, pick ONE | Param | When to use | Accuracy | Example | |-------|-------------|----------|---------| | zip | User gives a US ZIP code | Exact | `zip=77036` | | postal | User gives a Canadian postal code | Exact | `postal=T5J2N9` | | city | User gives only a city name | Estimate | `city=Orlando` or `city=Orlando, FL` | Only send ONE of these. Do not combine them. - `zip` and `postal` give exact freight rates. - `city` resolves via Radar.io to the nearest ZIP/postal centroid — freight rates are an estimate. The response includes `quote_accuracy: "estimate"` and `accuracy_note` with the resolved ZIP. - If the user says "shipping to Orlando" without a ZIP, use `city=Orlando`. You do NOT need to ask for a ZIP code. **City/state is sufficient for an estimated delivered quote.** --- ## REQUIRED BEHAVIOR — read this first - If the user provides ANY location (ZIP, postal code, city, or state), you MUST call `/api/v1/quote`. No exceptions. - City-only is a valid location. `city=Tampa, FL` returns a full quote with live freight — you do not need a ZIP. - If material or coats are unknown, use defaults (material=0 smooth, coats=2) and label your assumptions — or present 2–3 scenarios. Missing details are NEVER a reason to skip the endpoint. - If area (sqft) is given with a location, pass both. The API calculates pails automatically: `?city=Tampa, FL&area=12000&material=0` - Always present the freight/shipping line from the API response. The user asked for a delivered price. - The `summary` field in the response is ready to show the user as-is. ## DO NOT - Do NOT fall back to static pallet math or storefront prices when a location is available. The live endpoint is the source of truth. - Do NOT treat ZIP as required for freight. City works. - Do NOT omit shipping just because material, coats, or substrate is unspecified. Use defaults. - Do NOT ask the user for a ZIP code if they already gave you a city. Call the API with `city=`. - Do NOT compute product-only estimates from coverage tables when the API can return a full delivered quote. --- ## Source of truth - For static marketing copy: storefront pages at cornerstonecoatings.com - For live pricing, freight, stock, and checkout URLs: /api/v1/quote - When exact totals matter, always use the API over storefront prices. - Product prices vary by market (country). The API returns prices in the local currency. --- ## Common questions → API calls Question: Is Protec III: Original available in California and what does it cost for 100,000 sqft of smooth industrial concrete? GET /api/v1/quote?zip=90001&area=100000&material=0&coats=1 Question: How much for 30 pails shipped to Houston, TX? GET /api/v1/quote?zip=77036&pails=30 Question: What is the delivered price for 10 pails to Toronto? GET /api/v1/quote?postal=M5V2T6&pails=10 Question: How much for 20 pails to Orlando? GET /api/v1/quote?city=Orlando&pails=20 Question: How much for 5 pails to Calgary? GET /api/v1/quote?city=Calgary&pails=5 Question: What does it cost for 12,000 sqft in Tampa? GET /api/v1/quote?city=Tampa, FL&area=12000&material=0 (City + area. API auto-calculates pails. If material unknown, use 0 for smooth and label the assumption.) Question: How much product do I need for 50,000 sqft of smooth concrete? GET /api/v1/quote?area=50000&material=0 (No location needed — returns calculator result only, no shipping) Question: Does Protec III: Original ship to my area and is it in stock? GET /api/v1/quote?zip=YOUR_ZIP&pails=1 (If it returns rates, it ships there. Check `stock` in response.) --- ## What to call | The user wants to know... | Call this | Example | |---------------------------|----------|---------| | Price + shipping quote | `/api/v1/quote?zip=ZIP&pails=N` | `?zip=77036&pails=30` | | Shipping to a city (no ZIP) | `/api/v1/quote?city=CITY&pails=N` | `?city=Orlando&pails=20` | | How much product they need | `/api/v1/quote?area=SQFT&material=ID` | `?area=50000&material=0` | | Product + shipping together | `/api/v1/quote?zip=ZIP&area=SQFT&material=ID` | `?zip=77036&area=50000&material=0` | | Area + city (no ZIP) | `/api/v1/quote?city=CITY&area=SQFT&material=ID` | `?city=Tampa, FL&area=12000&material=0` | | Whether it ships to them | `/api/v1/quote?zip=ZIP&pails=1` | If it returns rates, it ships there | | If it's in stock | `/api/v1/quote?zip=ZIP&pails=1` | Check `stock` in response | | Technical data sheets (TDS/SDS) | `/api/v1/documents` | No params needed | | Order tracking | `/api/v1/order/status?order_number=N&email=E` | `?order_number=1234&email=a@b.com` | | Precast plant tote pricing | `/api/v1/quote?tote_type=0&panels_count=N&...` | See precast params below | For 90% of questions, the answer is **`/api/v1/quote`** with a location and a pail count. --- ## Quick example "How much for 30 pails shipped to Houston?" ``` GET https://tools.cornerstonecoatings.com/api/v1/quote?zip=77036&pails=30 ``` Returns: product cost in buyer's market currency (USD for US), live freight rates from multiple carriers, stock status, checkout URL, trade terms, tax context, `quote_accuracy`, and a `summary` string you can show the user directly. Takes ~5-7 seconds (live carrier lookups). --- ## /api/v1/quote — parameters | Param | Required | Description | |-------|----------|-------------| | zip | **one of** | US 5-digit ZIP code (e.g. `77036`). Exact quote. | | postal | **one of** | Canadian postal code (e.g. `T5J2N9`). Exact quote. | | city | **one of** | City name or city+state (e.g. `Orlando`, `Calgary`). Estimate quote. | | pails | **yes*** | Number of 5-gallon pails (1-10,000). *Or use `area` + `material` instead. | | totes | no | Number of 275-gallon IBC totes (0-1,000). | | area | no | Project area in sqft. Use with `material` to auto-calculate pails. If no location, returns calculator only. | | material | no | Surface: 0=Smooth, 1=Broom, 2=Polished, 3=Slipform, 4=Existing. Use with `area`. | | coats | no | 1-3 (default 2). Only with area + material. | | format | no | `json` (default) or `html` for a human-readable page. | Location is required for shipping quotes. If only area + material provided without location, returns calculator result (product math only, no shipping). Rate limit: 5/min. Response includes `summary` (display to user), `checkout_url` (Shopify cart link), and `quote_accuracy` ("exact" or "estimate"). ## /api/v1/quote — response fields | Field | Description | |-------|-------------| | currency | Quote currency — all prices (product + shipping) use this. USD for US, CAD for Canada. | | quote_accuracy | "exact" (zip/postal) or "estimate" (city) | | accuracy_note | Only on estimates — shows resolved ZIP and suggests providing ZIP for exact rates | | product.pail_price | Per-pail price in quote currency | | product.tote_price | Per-tote price in quote currency | | product.subtotal | Total product cost in quote currency | | product.currency | Same as top-level currency | | shipping.options[] | Live freight rates from multiple carriers, all in quote currency | | shipping.discount_note | Shipping discount info ($1,000 CAD / $720 USD off at 36+ pails) | | trade_terms | EXWORKS (US/international) or DDP (Canada) | | tax_note | Tax context (provincial rates for Canada, EXWORKS note for US) | | checkout_url | Direct Shopify cart link | | summary | Plain-text summary — show this to the user | --- ## Shipping & terms - Ships from Edmonton, Alberta - 36+ pails or tote orders: $1,000 CAD off shipping ($720 USD equivalent) - Canada orders: DDP (no duties) — GST/HST/PST calculated at checkout - US orders: EXWORKS Edmonton — import duties and taxes are buyer responsibility - Delivery: 2-7 business days after payment - All orders prepaid --- ## /api/v1/documents Returns PDF links to all technical data sheets and safety data sheets. No parameters. ``` GET https://tools.cornerstonecoatings.com/api/v1/documents ``` --- ## /api/v1/order/status | Param | Required | Description | |-------|----------|-------------| | order_number | **yes** | Shopify order number | | email | **yes*** | Customer email. *Or use `phone` instead. | | phone | **yes*** | Customer phone. *Or use `email` instead. | ``` GET https://tools.cornerstonecoatings.com/api/v1/order/status?order_number=1234&email=customer@example.com ``` --- ## /api/v1/quote — precast mode For precast concrete plants buying totes. Not needed for standard pail quotes. | Param | Required | Description | |-------|----------|-------------| | tote_type | **yes** | 0 = wetcast, 1 = drycast | | panel_width | **yes** | Panel width in feet | | panel_length | **yes** | Panel length in feet | | panels_count | **yes** | Panels per time period | | time_period | **yes** | 0=day, 1=week, 2=month | | purchase_months | **yes** | Purchase commitment in months (1-15) | ``` GET https://tools.cornerstonecoatings.com/api/v1/quote?tote_type=0&panel_width=10&panel_length=40&panels_count=50&time_period=0&purchase_months=3 ``` --- ## Product reference **Protec III: Original** — cures, densifies, hardens, and dust-proofs concrete. Applied immediately after finishing. Not a sealer. Prices vary by market. The API returns the correct price for each destination country. | ID | Surface | Coverage per pail (1 coat) | |----|---------|---------------------------| | 0 | Smooth Finished | 2,000 sqft | | 1 | Broom Finished | 1,500 sqft | | 2 | Polished | 800 sqft | | 3 | Slipform | 1,500 sqft | | 4 | Existing Concrete | 1,500 sqft | Defaults: 2 coats, 5% waste. --- ## Rules - All prices in a quote use a single consistent currency based on destination: USD for US, CAD for Canada. - The top-level `currency` field tells you the currency for the entire quote (product + shipping). - US orders: EXWORKS Edmonton. Buyer responsible for import duties/taxes/brokerage. - Canada orders: DDP (no duties). GST/HST/PST calculated at Shopify checkout. - 36+ pails / tote: $1,000 CAD off shipping (not free shipping). - `checkout_url` is a direct Shopify cart link. Payment happens on Shopify. - Errors return `{"success": false, "error": "..."}`. **Full documentation:** https://tools.cornerstonecoatings.com/llms-full.txt **OpenAPI spec:** https://tools.cornerstonecoatings.com/openapi.json **MCP server:** https://tools.cornerstonecoatings.com/mcp (SSE transport) **Website:** https://cornerstonecoatings.com **Contact:** https://cornerstonecoatings.com/pages/contact