Ozzi Developer Docs

Ozzi API and MCP documentation

Ozzi is a natural GLP-1 support drink stick and capsule. This page documents the public Ozzi Storefront API and the Ozzi MCP server, so an agent or an application can read the catalog, build a cart, and complete a purchase without scraping the marketing site.

OpenAPI specification Agent instructions UCP discovery

Getting started

There is nothing to sign up for. The catalog, search and cart endpoints are public and unauthenticated — no API key, no OAuth handshake, no contact-sales form, no sandbox to provision. Copy the request below and it works.

curl -s https://heyozzi.com/products/crave-crusher.js

What you do not have to do first

Usual stepHere
Generate an API keyNo key exists. No endpoint accepts one, so there is nothing to generate and no signup page.
Complete an OAuth flowNo authorization server. Scopes are published at /scopes.json for least-privilege reasoning, but nothing issues a token.
Provision a sandboxNone, and none is needed — see below.
Talk to salesNo.

Production is the only environment, and it is safe to explore. Reads change nothing, carts are session-scoped and disposable, and no money moves until a human approves payment. To exercise the full purchase path without charging a card, build a cart end to end and stop before complete_checkout.

Base URL and conventions

  • Base URL: https://heyozzi.com
  • All responses are JSON. Errors are JSON too, never an HTML page.
  • Money is an integer in minor units (US cents). 6500 means $65.00.
  • Currency is USD.
  • Product handles: crave-crusher, crave-crusher-pills, ozzi-sample-packs.

Authentication and scopes

Reads need no credential. Writes are scoped, and the scopes are declared machine-readably in the OpenAPI document under components.securitySchemes. Request the narrowest scope that does the job.

ScopeGrantsCredential
catalog:readProducts, variants, prices, availability. No customer or order data.None
cart:writeCreate and modify a cart.Session cookie only
checkout:writeCreate and advance a checkout, set shipping.UCP session
checkout:completeFinalize payment.UCP session and human approval

Checkout always requires a human. An agent may assemble the entire order, but payment cannot be completed without explicit, contemporaneous buyer approval. If you cannot obtain approval at the moment of payment, route the purchase through the Shop skill instead.

Ozzi Storefront API endpoints

Full request and response schemas, with typed parameters and operation IDs, are in the OpenAPI 3.1 specification.

OperationRequestPurpose
getProductByHandleGET /products/{handle}.jsOne product with variants, live prices and availability
listCollectionProductsGET /collections/{handle}/products.jsonPaginated products; use all for the whole catalog
searchProductsGET /search/suggest.json?q=Resolve a shopper's phrasing to a product handle
getCartGET /cart.jsRead the session cart
addCartItemsPOST /cart/add.jsAdd variants to the cart
changeCartItemPOST /cart/change.jsChange a line quantity; 0 removes it
getUcpProfileGET /.well-known/ucpUCP capabilities and endpoints
callMcpEndpointPOST /api/ucp/mcpThe MCP server: catalog, cart and checkout tools

Example: read a product

curl -s https://heyozzi.com/products/crave-crusher.js \
  | jq '{title, variants: [.variants[] | {id, title, price, available}]}'

Example: add to cart

curl -s -X POST https://heyozzi.com/cart/add.js \
  -H 'Content-Type: application/json' \
  -d '{"items":[{"id":VARIANT_ID,"quantity":1}]}'

Ozzi MCP server

Ozzi runs a Model Context Protocol server implementing the Universal Commerce Protocol, over Streamable HTTP. Claude, ChatGPT and other agents can call it natively.

Endpoint

POST https://heyozzi.com/api/ucp/mcp

Discovery

GET https://heyozzi.com/.well-known/ucp

Discovering the tools

curl -s -X POST https://heyozzi.com/api/ucp/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Call initialize first to negotiate the protocol version, then tools/list for the tool JSON Schemas, then tools/call. The usual order is search_catalogcreate_cartcreate_checkoutupdate_checkoutcomplete_checkout.

Errors and rate limits

Every endpoint returns a structured JSON error with a code, a message and a resolution hint.

Verify it yourself

Both of these are idempotent GETs that take no arguments and change nothing. Each returns a structured JSON 422, so you can confirm the error contract before you depend on it.

curl -s https://heyozzi.com/search/suggest.json
curl -s https://heyozzi.com/recommendations/products.json
{
  "status": 422,
  "message": "Cart Error",
  "description": "Cannot find variant"
}
StatusMeaningWhat to do
404Resource does not existDo not retry. Re-derive the handle from the sitemap.
422Well-formed but rejected — sold out, unknown variant, quantity limitRead description, change the request. Do not retry unchanged.
429Rate limitedBack off exponentially, minimum 1 second, honour Retry-After.
5xxServer errorRetry up to 3 times with jitter, then stop.

The MCP endpoint returns JSON-RPC 2.0 errors with a numeric code, a message, and optional structured data.

Machine-readable files

Support

Questions about the API: help@heyozzi.com. Ozzi, Inc, 1211 West 6th Street, Suite 600-113, Austin, TX 78703, United States. See also Contact and Privacy policy.