Quick start
Base URL: https://www.primecutsnursery.com/api/v1. All endpoints are GET and return JSON. Try it from a terminal:
# What is in stock right now?
curl -s https://www.primecutsnursery.com/api/v1/availability | jq '.data[] | select(.status=="InStock") | {name, ready_now}'
# Everything about one cultivar (encyclopedia or menu slug both work)
curl -s https://www.primecutsnursery.com/api/v1/strains/wedding-cake | jq '.data | {name, lineage, breeders, menu}'
# Search across strains, breeders and articles
curl -s "https://www.primecutsnursery.com/api/v1/search?q=gelato" | jq '.meta.total'
# Business facts: phone, hours, minimums, licence
curl -s https://www.primecutsnursery.com/api/v1/business | jq '.data | {phone, hours, ordering}'Or from the browser / Node — CORS is open, so this works from any origin:
const r = await fetch("https://www.primecutsnursery.com/api/v1/inventory/mac-1-cannabis-clones");
const { data, meta } = await r.json();
console.log(data.status, data.ready_now, "as of", meta.as_of);Response envelope
Every successful response has the same four top-level keys. meta.as_of is present on live inventory data and tells you when the underlying count was taken; meta.html_url is the human page for the same resource, so an agent can always cite a link. Errors are { api_version, error: { code, message, hint? } } with HTTP 400 / 404 / 503.
{
"api_version": "1.0.0",
"publisher": { "name": "Prime Cuts Nursery", "url": "https://www.primecutsnursery.com", "@id": "https://www.primecutsnursery.com/#organization" },
"meta": {
"generated_at": "2026-09-08T02:24:54.344Z",
"source": "OrcaScan",
"as_of": "2026-09-08T02:24:54.340Z",
"html_url": "https://www.primecutsnursery.com/wedding-cake-cannabis-clones"
},
"data": {
"slug": "wedding-cake-cannabis-clones",
"name": "Wedding Cake",
"status": "InStock",
"schema_org": "https://schema.org/InStock",
"ready_now": 100,
"next_batch_ready": null,
"as_of": "2026-09-08T02:24:54.340Z",
"summary": "100 Wedding Cake clones ready now (inventory as of Sep 7, 2026)."
}
}Endpoints
Full parameter and schema detail is in the OpenAPI document. Path parameters accept either the encyclopedia slug (wedding-cake) or the menu slug (wedding-cake-cannabis-clones) wherever a strain is expected.
Business
| Path | Returns | Query parameters |
|---|---|---|
| /api/v1 | API discovery documentLists every endpoint with a one-line description and links to the OpenAPI spec, developer docs, MCP server and llms.txt. | — |
| /business | Business profileContact details, address, hours, licence, ordering minimums and tiers, testing policy summary, social links and content counts. | — |
| /testing | Pathogen testing programHow mother plants and incoming genetics are tested for HLVd and other pathogens. | — |
| /locations | Nursery location and delivery areaNursery address and visit policy, statewide delivery terms, and the regional landing pages. | — |
Strains
| Path | Returns | Query parameters |
|---|---|---|
| /strains | List / filter cultivarsThe full cultivar encyclopedia (331 entries). Each item says whether Prime Cuts sells it (`menu`). Filters combine with AND. | q, type, breeder, terpene, on_menu, limit, offset |
| /strains/{slug}live | Cultivar detailFull encyclopedia record. Accepts an encyclopedia slug (`wedding-cake`) or a menu slug (`wedding-cake-cannabis-clones`). When the cultivar is on the menu, `data.menu.availability` is live. | — |
Breeders
| Path | Returns | Query parameters |
|---|---|---|
| /breeders | Breeder registryEvery breeder with a hub page, sorted by strains on the menu then by documented cultivars. | — |
| /breeders/{slug} | Breeder detailAttributed cultivars, menu strains and collaborators (breeders sharing an attribution). | — |
Articles
| Path | Returns | Query parameters |
|---|---|---|
| /articles | List guides, authority and regional pagesEverything published as an article-style page. `kind`: authority (topic hubs), local (regional pages), guide, buying, article. | kind, q, limit, offset |
| /articles/{slug} | Article textFull text of an article (intro, sections, FAQ) with business facts already substituted. | — |
Search
| Path | Returns | Query parameters |
|---|---|---|
| /search | Search strains, breeders and articlesSubstring search across the three entity types; up to `limit` of each. | q, limit |
Inventory
| Path | Returns | Query parameters |
|---|---|---|
| /inventorylive | Live clone inventoryRooted clones available now (fresh), talls/clearance, and a 17-day rooting forecast, with menu links. The same numbers as https://www.primecutsnursery.com/live-inventory. Customer/reservation details are never included. | — |
| /inventory/teenslive | Live teen inventoryReady-to-flip teens available now and upcoming by ready date. | — |
| /inventory/{strain}live | Live availability for one menu strainschema.org availability status, units ready now and next scheduled batch for a strain on the clone menu. Accepts a menu or encyclopedia slug. 404 when the strain is not sold. | — |
| /availabilitylive | Live availability for every menu strainOne call, one row per menu strain. Use this to answer "what does Prime Cuts have in stock right now?". | — |
Freshness, caching and limits
- Repo-derived data (business, strains, breeders, articles, search) changes when we publish; it is served with
Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400. Each record carriesupdated_atfrom our publishing history. - Live inventory (
/inventory*,/availability,/strains/{slug}) is read from the nursery's inventory system on every uncached request and cached for about two minutes (s-maxage=120). Always show usersmeta.as_ofalongside a quantity. - Status values are schema.org
ItemAvailabilityterms:InStock(rooted clones ready today),PreOrder(none ready, a batch is scheduled — seenext_batch_ready),OutOfStock. - No authentication, no rate-limit key. Please poll live endpoints no more often than once a minute; they are CDN-cached, so faster polling only returns the same snapshot.
- The API is versioned in the path. Additive changes (new fields, new endpoints) ship under
/api/v1; anything breaking would be a new version with the old one kept alive.
MCP server for AI agents
The same data is exposed as a Model Context Protocol server at https://www.primecutsnursery.com/api/mcp (Streamable HTTP, no auth). Tools include get_business, search, get_strain, list_strains, get_breeder, get_availability, get_inventory and get_article, each returning the exact JSON the REST endpoint returns. Add it to a client config as:
{
"mcpServers": {
"prime-cuts-nursery": { "url": "https://www.primecutsnursery.com/api/mcp" }
}
}Setup notes per client and the tool catalogue are in the MCP guide.
For crawlers and answer engines
- /llms.txt — a curated map of the most useful pages and endpoints, in the llms.txt format.
- /sitemap.xml — sitemap index with honest per-URL
lastmod; /robots.txt welcomes search and AI crawlers. - Every HTML page carries JSON-LD (
Organization,WebPage,Productwith liveoffers.availability,Brandfor breeders,FAQPage,BreadcrumbList) with stable@ids — the same identifiers the API returns aspublisher.@id. - Canonical facts live in one place: if the API and a page ever disagree, tell us at sales@primecutsnursery.com.
Terms of use
- The API is provided free for informational, research, comparison and agent use. Attribute "Prime Cuts Nursery" with a link to
meta.html_urlwhen you display our data. - Inventory figures are informational and change continuously; they are not an offer to sell. Sales are to licensed California cultivators only, subject to the terms on /onboarding.
- Do not use the API to build a service that misrepresents itself as Prime Cuts Nursery, or to republish the encyclopedia wholesale without attribution.
- We may change or retire endpoints with notice on this page;
/api/v1will remain stable for additive changes. - Questions, bugs, feature requests: sales@primecutsnursery.com.
