LICENSED FARM? CALL OR TXT: (707) 494-5197

MCP Server

Give your AI assistant direct, live access to Prime Cuts Nursery: what is in stock, every cultivar's lineage and breeder, how testing works, and how to order.

https://www.primecutsnursery.com/api/mcp

What it is

A Model Context Protocol server using the Streamable HTTP transport in stateless mode: your client POSTs JSON-RPC to the URL above and gets JSON back. There is no login, no API key and no session to manage. Every tool is read-only and returns exactly the same data as the REST API, plus an html_url to cite and, for live data, an as_of timestamp.

Connect a client

Step-by-step instructions for Claude, ChatGPT, Gemini Spark, Perplexity, Cursor, VS Code, Goose and local assistants — with one-click install links — are on /connect. The essentials:

Claude Desktop / Claude Code

Claude Desktop: Settings → Connectors → Add custom connector, paste the URL. Claude Code:

claude mcp add --transport http prime-cuts-nursery https://www.primecutsnursery.com/api/mcp

Cursor

Add to ~/.cursor/mcp.json (or the project's .cursor/mcp.json):

{
  "mcpServers": {
    "prime-cuts-nursery": { "url": "https://www.primecutsnursery.com/api/mcp" }
  }
}

ChatGPT (Developer mode) and other hosted agents

Add a remote MCP server with the URL above and "No authentication". The OpenAI Agents SDK / Responses API:

tools=[{
  "type": "mcp",
  "server_label": "prime_cuts_nursery",
  "server_url": "https://www.primecutsnursery.com/api/mcp",
  "require_approval": "never"
}]

Any language — raw JSON-RPC

curl -s https://www.primecutsnursery.com/api/mcp -H 'Content-Type: application/json' -d '{
  "jsonrpc":"2.0","id":1,"method":"tools/call",
  "params":{"name":"get_availability","arguments":{"strain":"wedding-cake"}}
}'

Tools

ToolWhat it returnsArguments
get_businessPrime Cuts Nursery business profileWho Prime Cuts Nursery is: legal name, phone, email, address, hours, state licence, who may buy, ordering minimums and volume tiers, deposit/delivery terms, testing policy summary, social links, and content counts. Use for any question about contacting, visiting, or ordering from the nursery.—
get_testing_policyHLVd / pathogen testing programHow mother plants and incoming genetics are tested (RT-qPCR), which pathogens, how often, the incoming HLVd positive rate, and whether results are available to buyers.—
get_locationsNursery location and delivery areaNursery address and visit policy, California delivery terms (eligibility, free-delivery threshold, teen delivery fee) and the regional pages the nursery serves.—
quote_deliveryDelivery fee + order quote for a California destinationQuote what a delivery to a California address/city costs (the nursery's own calculator: Google driving round trip from Sonoma × $3/mile under 199 round-trip miles or $2/mile at 199+, capped at $1,450) and, when product + quantity are given, the published per-plant tier, product subtotal, whether the order qualifies for FREE delivery, and the total. Use this instead of estimating prices or delivery costs yourself. Fee-only: it cannot see or book delivery schedules. Set pickup=true for a pickup-only price.destination, pickup, product, quantity
searchSearch strains, breeders and articlesOne-call search across cultivars (meaning-aware: names, aliases, lineage, aroma, colour, flowering, yield, breeder), the breeder registry and published articles. Start here when a user names a strain, breeder or topic and you are not sure of the slug; use list_strains for ranked cultivar results with filters.q*, limit
list_strainsList / filter cultivarsMeaning-aware search over the 339-cultivar encyclopedia, ranked by relevance. Free-text 'q' understands phrases like "short flowering", "high yield", "purple strains", "gas", "OG lineage", "Zkittlez terp profile", "Prime Cuts exclusives", or a breeder name; the same meanings are available as explicit filters. Every result carries 'matched_on' (the factual fields it matched) and the response carries 'interpreted' (how q was read). Nothing is inferred beyond the documented record. Each result includes a 'menu' block with a live-availability URL when Prime Cuts sells the cultivar.q, type, breeder, terpene, on_menu, flowering_max_weeks, flowering_min_weeks, yield, color, flavor, lineage, exclusive, terp_profile_of, limit, offset
get_strainCultivar detail (with live availability if sold)Full encyclopedia record for one cultivar: lineage and parents, breeder(s), terpenes, aroma/flavor/effects, growing notes, history, awards, crosses bred from it, sources. Accepts an encyclopedia slug ('wedding-cake') or a menu slug ('wedding-cake-cannabis-clones'). If Prime Cuts sells it, 'menu.availability' is live (InStock / PreOrder / OutOfStock, units ready now, next batch date).slug*
list_breedersBreeder registryAll 53 breeders with a hub page, each with location, a documented summary, number of attributed cultivars and how many are on the Prime Cuts menu.—
get_breederBreeder detailOne breeder: summary, every cultivar attributed to them (with type, lineage and whether it is on the menu), the menu strains, and collaborators who share attributions.slug*
list_articlesList guides, authority and regional pagesPublished long-form pages: kind 'authority' (topic hubs like wholesale, delivery, HLVd-tested clones), 'local' (regional pages), 'guide', 'buying', 'article'. Returns title, description, section headings and URLs.kind, q, limit
get_articleArticle textFull text (intro, sections, FAQ) of one guide/authority/regional page, with business facts already filled in. Use to answer detailed questions about ordering, delivery, testing, teens, wholesale terms, or growing topics.slug*
get_availabilityLive availability for every menu strainLive stock status for every strain listed on /live-inventory in one call: InStock / PreOrder / OutOfStock, fresh clones ready now and talls ready now (two separate lines with different prices — never add them together), next scheduled batch date, links. Returns 'clones' (one row per /live-inventory strain) and 'teens' (ready-to-flip teens exactly as on /teen-inventory — a separate product line): report both when asked what is available. Pass 'strain' to get one strain with a dated one-sentence summary (includes that strain's teens if any).strain
get_inventoryLive inventory (fresh, talls, forecast, teens)Everything for sale right now in one call: the full live clone inventory as shown on /live-inventory (fresh rooted clones, talls/clearance, 17-day rooting forecast per strain, clone ordering terms) plus `teens` — the ready-to-flip teen inventory as shown on /teen-inventory. Use for "what's available?"; more detail than get_availability.—
get_teen_inventoryLive teen inventoryReady-to-flip teens available now and upcoming groups by ready date, plus teen ordering terms (minimum, delivery fee).—

* required

How results are shaped

  • Each tools/call result carries structuredContent and the same JSON as text: { data, notes?, html_url?, as_of? }.
  • notes are caveats to pass on to the user — for example that a cultivar is encyclopedia-only and not for sale, or that sales are to licensed California cultivators with a 100-clone minimum.
  • Lookups that miss return isError: true with a hint (usually "use searchfirst") rather than a protocol error, so the model can recover.
  • Live tools read the nursery inventory system on each call; if it is unreachable they return an error result and the REST API's cached copy at /api/v1/availability is a good fallback.
  • Supported protocol versions: 2025-06-18, 2025-03-26, 2024-11-05. GET returns 405 (no server-initiated stream); JSON-RPC batches are accepted.

Terms

Same as the REST API — see /developers#terms. Attribute Prime Cuts Nursery and link the html_url. Inventory figures are informational, not an offer to sell.