
For developers and AI assistants
JOLT for developers and AI assistants
Quote JOLT by machine: a public pricing and availability API with OpenAPI 3.1, an MCP server for AI assistants, product feeds and llms.txt. No key needed.
120req/min, no key
Catalog, quotes and live availability over plain GET, an OpenAPI 3.1 document, an MCP server and three product feeds. The same cents the site prints, plus applicable sales tax.
- Endpoints
- 3
- MCP tools
- 4
- Feeds
- 3
- Licence
- CC BY 4.0
Key facts
- The 10 ft storage container rents for $225 per month as of .
- Standard delivery is scheduled 2–4 weeks after the reservation as of .
- Free cancellation ends 14 days before the delivery window opens as of .
- Delivery to Zone A costs $400 each way as of .
Cite this page: "JOLT for developers and AI assistants." JOLT (Jolt Rents), https://joltrents.com/developers. Last updated September 11, 2026.
What a machine can do here without asking us
Everything on this site that a person can read, a program can read too, at a fixed address, in a documented shape, with the same numbers. That covers the published prices, a delivered quote for any unit at any ZIP code we serve, the live count of units in the yard, and the link that opens the reservation flow with the choices already made. It also covers the two things AI assistants now look for: a Model Context Protocol server they can call as a tool, and the plain-text files that let a language model read the whole site in one request.
Nothing here needs an account. The API is GET-only, the MCP server is read-only, and the one action that costs money — paying the reservation deposit — still happens on this site, by a person, under the Terms of Service. If you are building an estimating tool, a procurement bot, a comparison site or an assistant that helps a superintendent order a jobsite office, start with the table below and the quote example after it.
| Surface | Address | What it is |
|---|---|---|
| Catalog | /api/public/v1/catalog | Every published price with its cents, the as-of date and the licence. Cached 300 s with an ETag. |
| Quote | /api/public/v1/quote | A dated quote for one unit at one ZIP: monthly total, delivery and pickup fees, deposit, first invoice, delivery window and a pre-filled Reserve link. Not cached. |
| Availability | /api/public/v1/availability | Live counts per unit from the yard's ledger and the earliest standard window each can make. Cached 30 s. |
| OpenAPI 3.1 | /api/public/v1/openapi.json/api/public/v1/openapi.yaml | The contract for the three endpoints and their error shape. Generate a client from it or paste it into an assistant. |
| MCP server | /mcp | Model Context Protocol over Streamable HTTP, 4 read-only tools, no auth. GET returns the manifest. |
| Google Merchant feed | /feeds/google-merchant.tsv | The four purchase builds as tab-separated product data for Merchant Center. |
| OpenAI product feed | /feeds/openai-products.jsonl | The same four builds in the OpenAI product feed format for ChatGPT search, search only. |
| ACP product feed | /feeds/acp-products.json | The builds as an Agentic Commerce Protocol ProductsResponse, validated against the protocol's schema at build. |
| llms.txt | /llms.txt/llms-full.txt | The site map for language models, and the full text of every public page with its URL and last-updated date. |
| Price Book | /price-book.json/price-book.csv | The dated price dataset with its revision history, for spreadsheets and offline comparison. |
Getting a quote
A quote takes one request. Give it a unit key from the catalog, the five-digit ZIP of the job site and, optionally, the term in months, a list of upgrades, a quantity and the day you want it. The response is the same arithmetic the reservation flow runs: rent, the upgrades you asked for, the damage waiver and the environmental fee as a monthly total; the delivery and pickup fees for the ZIP's zone; the reservation deposit; what is due on the first invoice; a projection of the total over the term; the delivery window in the reservation flow's own terms; and the date it was priced on.
curl "https://joltrents.com/api/public/v1/quote?sku=of20_gridfree&zip=81657&months=6&start=2026-10-05"
The response is trimmed here to the fields most integrations use. Every amount is an integer in cents.
{
"apiVersion": "v1",
"quotedOn": "2026-09-11",
"unit": { "key": "of20_gridfree", "name": "20 ft office container — Grid-Free" },
"zone": { "code": "B", "town": "Vail", "deliveryFeeCents": 55000, "pickupFeeCents": 55000 },
"termMonths": 6,
"monthly": { "rentCents": 149500, "damageWaiverCents": 17940, "environmentalFeeCents": 7475, "totalCents": 174915 },
"depositCents": 75000,
"dueAtReservationCents": 75000,
"firstInvoiceCents": 154915,
"termTotalCents": 1159490,
"delivery": {
"mode": "standard",
"earliestWindowStart": "2026-09-25",
"latestWindowStart": "2026-10-09",
"windowStart": "2026-10-05",
"windowEnd": "2026-10-07",
"windowLabel": "Oct 5 – Oct 7",
"schedulable": true,
"minTermEnd": "2027-04-05",
"freeCancellationUntil": "2026-09-20",
"cancellationNote": "Cancel free in writing through 2026-09-20 — more than 14 days before the first day of the window (Rental Agreement §2.2).",
"note": null
},
"reserveUrl": "https://joltrents.com/reserve?sku=of20_gridfree&zip=81657&start=2026-10-05&step=2&utm_source=public-api&utm_medium=api",
"sourceUrl": "https://joltrents.com/rent/20ft-office-container/grid-free"
}
The parameters, in full:
| Parameter | Meaning |
|---|---|
sku | Required. A unit key from the catalog's units[].key, such as of20_gridfree, st20 or fence. |
zip | Required. The five-digit ZIP of the job site. Outside the service area the API answers with an error that names the states we serve. |
months | Term in months, for termTotalCents and minTermEnd only. Defaults to the unit's minimum term; a shorter term is raised to the minimum and the response says so. The reservation flow does not fix a term: rent is billed month to month after the minimum, so months is not carried onto the reserve link. |
upgrades | Comma-separated upgrade keys from the catalog's upgrades[].key. Upgrades a unit already includes or cannot take are reported, not silently priced. |
quantity | Number of units, for storage containers and fence. Fence takes linearFeet instead. |
brand, express | true to add logo branding or JOLT Express to the quote when the unit is eligible. |
protection | waiver (default) or deposit for the security-deposit alternative to the damage waiver. |
start | Requested delivery date, YYYY-MM-DD (or a month, YYYY-MM). The response uses the first day the reservation flow can book on or after it — a weekday two to four weeks out, or within the next seven business days with JOLT Express, that the truck calendar has open with the unit free for it — and sets delivery.schedulable to false, with a note, when the day is further out than the flow can book today or no offered day fits the order. The quote is still priced. |
The reserveUrl in every quote opens the reservation flow with those choices filled in — unit, quantity or footage, upgrades, branding, Express, protection, ZIP and, when it is bookable, the delivery day — so a person lands on the site-details step, the first one that still needs them, instead of starting from an empty cart. Add your own source parameter to the quote request (lowercase letters, digits and hyphens) and it is carried onto that link, which is how a referring tool shows up in our analytics.
Errors
Errors are JSON with a stable machine code, a sentence a person can act on, the HTTP status and, where it applies, the parameter at fault. The same shape comes back for every endpoint and every version.
{
"error": {
"code": "unknown_sku",
"message": "Unknown unit \"of20\". Catalog keys are listed at /api/public/v1/catalog (units[].key).",
"status": 400,
"details": { "param": "sku" }
},
"apiVersion": "v1",
"docs": "https://joltrents.com/developers"
}
Codes you will meet: invalid_request for a malformed parameter, invalid_zip for a ZIP that is not five digits, unknown_sku and unknown_upgrade for keys not in the catalog, outside_service_area for a ZIP we do not deliver to, unquotable when the combination cannot be priced, rate_limited with a Retry-After header, and not_found for a path that is not an endpoint.
Checking availability
The availability endpoint returns one row per rentable unit: how many are free, how many exist, a status word, and the earliest standard delivery window a unit can make. It is the same data behind the availability badge on every product page and the day picker in the reservation flow.
curl "https://joltrents.com/api/public/v1/availability"
{
"apiVersion": "v1",
"asOf": "2026-09-11T18:04:12.000Z",
"items": [
{ "sku": "of20_gridfree", "available": 3, "total": 5, "status": "available",
"leadTime": "2–4 weeks", "nextWindowStart": "2026-09-28", "nextWindowLabel": "week of Sept 28" }
]
}
A unit is held only when a reservation deposit is paid, so treat a count as a snapshot. When available is zero the row carries nextAvailableOn, the date the next unit comes back from a job, and the reservation flow will offer windows from that date.
The catalog
The catalog is the whole price list in one document: every unit with its monthly rent, minimum term, deposit and the upgrades it includes or accepts; every upgrade and add-on; the one-time fees; the reservation deposits; the four purchase builds; the lease-to-own plans; and the delivery and pickup fee for each zone with a link to its page. It carries the revision date and the licence, and it changes only when a price revision is published, so cache it. The response sends an ETag; a conditional request with If-None-Match costs a 304 and no body.
curl -i "https://joltrents.com/api/public/v1/catalog" \
-H 'If-None-Match: "<etag from the last response>"'
The Price Book is the same dataset as a dated download with its revision history, for spreadsheets and for anyone who wants to diff two dates.
The MCP server
Assistants that speak the Model Context Protocol can call JOLT directly. The server runs at the MCP address in the table above over Streamable HTTP, needs no authentication, and exposes four read-only tools. Each tool's description carries the facts an assistant needs to answer well without a second call: the service area, the delivery window, what a deposit is, that prices are before sales tax. Every response includes the page on this site the figure came from, so an assistant can cite it.
list_catalogEvery unit, upgrade, fee, deposit, purchase price and delivery zone, with the as-of date.get_quoteA dated quote for one unit at one ZIP: monthly total, delivery and pickup fees, deposit, first invoice, delivery window.check_availabilityLive counts per unit and the earliest standard delivery window each can make.start_reservationThe link that opens the reservation flow with the unit, ZIP, upgrades and a bookable first delivery day filled in; the person finishes and pays there.
To connect it, add a remote MCP server with the address and no authentication. In Claude that is Settings, Connectors, Add custom connector; in ChatGPT it is Settings, Connectors with developer mode on; in a desktop client or an agent framework it is a JSON entry like this one.
{
"mcpServers": {
"jolt-rents": { "type": "streamable-http", "url": "https://joltrents.com/mcp" }
}
}
A typical exchange: the assistant calls get_quote with the unit, ZIP and the day wanted, reads back the monthly total, the first invoice and a window the flow can book today, calls check_availability when the person wants to know how many units are left or when the next one comes back, then calls start_reservation and gives the person the link. The person finishes on this site. Submission to the ChatGPT app directory and the Claude connector directory is documented in the server's readme; until it is listed there, the custom-connector route above works today.
Product feeds
Shopping surfaces want products with a fixed price, and JOLT has four: the three 20 ft office builds and the 40 ft office with bathroom, sold outright. They are published three ways from the same rows: as tab-separated product data for Google Merchant Center, as an OpenAI product feed for ChatGPT search, and as an Agentic Commerce Protocol product feed that an ACP-speaking agent can ingest. The price in each file is the cent figure the buy page and its Offer markup print, and the build checks all three against the catalog before the site publishes.
Rentals are not in any feed on purpose. A month-to-month unit with a delivery fee that depends on the ZIP is not a product with one price; it is a quote, and the API and the MCP server produce it. The OpenAI feed is marked search-only, and the ACP feed carries no checkout: a purchase closes on a Bill of Sale with a person on the other end, as the buy pages explain.
llms.txt and the full text
The llms.txt file is a short map of the site for language models: the sections, the pages in each, and the machine addresses on this page. The llms-full.txt file is the full text of every public page — headings, paragraphs, lists and tables, with the page's address and its last-updated date at the top of each entry — so a model can read the whole site in one request without rendering anything. Drafts, account pages, the admin area and the reservation flow are left out of both.
Rate limits, caching, versioning and licence
- Base URL
https://joltrents.com/api/public/v1- Authentication
- None. Every endpoint is public and read-only; there are no keys to request or rotate.
- Rate limit
- 120 requests per minute per IP address on the API and on the MCP server. Over the limit you receive HTTP 429 with a Retry-After header; the catalog and availability responses are cacheable, so a polite client rarely gets near it.
- Caching
- Catalog: 300 seconds with an ETag (send If-None-Match and get 304 when nothing changed). Availability: 30 seconds. Quotes: never cached; each one carries the date it was priced on.
- Versioning
- The version sits in the path (v1) and in every response and error body as apiVersion. Fields are added, not removed or renamed, within a version; a breaking change ships as v2 beside v1 with notice on this page.
- CORS
- Any origin may call the API from a browser (Access-Control-Allow-Origin: *).
- Money
- Every amount is an integer in US cents (monthlyCents, deliveryFeeCents, termTotalCents); formatted strings are for display only. Prices are before sales tax.
- Licence
- Prices and availability data are published under Creative Commons Attribution 4.0 International (CC BY 4.0). Attribution: JOLT Price Book, Jolt Rents (Jolt Construction Rentals LLC), https://joltrents.com/price-book, licensed CC BY 4.0.
- Terms
- A quote is an offer to rent at the published rate; it becomes a booking only when a person completes the reservation and pays the deposit under the Terms of Service and the Rental Agreement.
- Questions
- reserve@joltrents.com with the request URL and the apiVersion from the response, or call 970-279-1015, Mon–Fri 7:00am–7:00pm MT.
From a quote to a reservation
The API quotes; a person reserves. Every quote's reserveUrl opens the reservation flow at the site-details step with the unit, ZIP, upgrades, quantity and delivery day already chosen. From there the person enters the site address and contact details, confirms the day against the live truck calendar, reviews the order, signs the Rental Agreement electronically and pays the deposit by card. The deposit holds the unit and is applied to the first invoice; cancelling more than 14 days before the first day of the delivery window refunds it in full. How it works walks through the same steps in order, and the reservation flow is where they happen.
If a quote and a page ever disagree, tell us the request URL and the apiVersion from the response and we will fix the source, not the page: both are generated from the one catalog, so a disagreement is a bug, not a policy.
Questions contractors ask
Do I need an API key?
No. Every endpoint, the MCP server and the feeds are public and read-only. There is nothing to sign up for, and nothing to rotate. The only limit is a per-address rate limit that a client with normal caching never reaches.
Are the API prices the same as the website's?
Yes, to the cent. The API, the pricing page, the reservation flow, the Price Book and the invoices all read one catalog, and the build refuses to publish while any copy differs. A quote's monthly total, deposit and first invoice are the figures the reservation flow shows for the same unit, ZIP and options; the term total is a projection over the months you asked for, because the rental itself runs month to month after the minimum.
Can an AI assistant reserve a unit for me?
It can get you to the step that needs you. The assistant quotes the unit at your ZIP, confirms the first delivery day it quotes is one the reservation flow can book today — a day the truck calendar has open with a unit free for it — and hands you a link with the unit, ZIP, upgrades and that day already filled in. You enter the site and contact details, review the order and pay the deposit yourself; the API and the MCP server never book or charge anything.
How do I connect the MCP server to Claude or ChatGPT?
Add it as a custom connector using the MCP address shown on this page, with no authentication. Claude accepts a remote MCP URL under Settings, Connectors; ChatGPT accepts one under Settings, Connectors in developer mode. Once added, ask for a quote in plain language and the assistant calls the tools itself.
How current is availability?
Counts come from the yard's unit ledger and are cached for thirty seconds. A unit is held only when a reservation deposit is paid, so a count can move between your check and your booking; the reservation flow re-checks before it charges.
Why are amounts in cents?
So nobody adds floating-point dollars. Every figure is an integer number of US cents with a formatted string beside it for display. Sum the cents, then format once. Prices are before sales tax.
Which products are in the shopping feeds?
The four office builds sold outright, which have a fixed price. Rentals are month-to-month with a zone delivery fee, so they are quoted by the API and the MCP server instead of listed as products. The OpenAI feed is marked search-only; checkout in chat is off.
What happens when the API changes?
Within version 1, fields are added and never removed or renamed. A breaking change would ship as version 2 alongside version 1, with notice on this page and in the OpenAPI document. The change log for prices is the Price Book's revision history.
Keep reading
- JOLTThe JOLT Price Book
- JOLTPrices. All of them.
- JOLTReserve it. We deliver it. You work.
- JOLTEvery unit JOLT rents, with the price on it
- AnswerJobsite office cost in Denver — Denver yards vs. our I-70 yard
- AnswerMobile office trailer rental cost — and why a container office costs less
- AnswerWorking in a container office through a Colorado winter
- AnswerHow much does a jobsite office cost per month?
Reserve it today.
Rentals from $85/mo · every price published
A deposit holds your delivery window. Cancel free of charge more than 14 days before the first day of the window. Deposits from $85 are applied to your first invoice.