Documentation

Connect your AI agent to real-time LCBO product, inventory, and sales data.

Quick Start

Get up and running in under a minute. You need a BoozeData API key — sign up free to get one.

Terminal
$ claude mcp add boozedata \
    https://boozedata.ca/mcp \
    --header "Authorization: Bearer YOUR_API_KEY"

That's it. Claude (or any MCP client) can now search products, check inventory, and query sales data.

MCP Setup

BoozeData implements the Model Context Protocol (MCP) — an open standard for connecting AI agents to data sources. Any MCP-compatible client can connect.

Claude Code

Terminal
$ claude mcp add boozedata \
    https://boozedata.ca/mcp \
    --header "Authorization: Bearer YOUR_API_KEY"

Claude.ai (Web)

  1. Go to SettingsConnectorsAdd Custom Connector
  2. Enter name: BoozeData
  3. Enter URL: https://boozedata.ca/mcp
  4. Click Add
  5. When prompted, enter your email and API key (generate one from your dashboard first)

Claude.ai uses OAuth behind the scenes — it will handle the authorization flow automatically. Once connected, BoozeData tools appear in your conversations.

Claude Desktop

Add to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "boozedata": {
      "url": "https://boozedata.ca/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Cursor

In Cursor settings, add a new MCP server:

.cursor/mcp.json
{
  "mcpServers": {
    "boozedata": {
      "url": "https://boozedata.ca/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

ChatGPT

In ChatGPT settings, go to ConnectionsAdd MCP Server, and enter:

  • URL: https://boozedata.ca/mcp
  • Auth header: Authorization: Bearer YOUR_API_KEY

MCP Tools

BoozeData exposes 11 tools via MCP. Your AI agent calls these automatically based on your questions.

search_products

Search and filter the LCBO product catalog (~11,000 active products).

ParameterTypeDescription
querystringText search across name, brand, and description
categorystringCategory filter: "Gin", "Red Wine", "IPA", etc.
booze_typestring"Wine", "Spirits", "Beer & Cider", "Coolers"
countrystring"Canada", "France", "Japan"
regionstring"Ontario", "Niagara Peninsula", "Speyside"
min_price / max_pricenumberPrice range filter
min_abv / max_abvnumberABV range filter
sort_bystring"name", "price", "sell_rank_yearly", "sell_rank_monthly"
limit / offsetnumberPagination (max 100)

Example

{ "category": "Gin", "region": "Ontario", "sort_by": "sell_rank_yearly", "sort_order": "asc" }

Returns: products[], count, offset, limit

get_product

Get full details for a single product by SKU.

ParameterTypeDescription
skustringProduct SKU, e.g. "447540"

Example

{ "sku": "447540" }

Returns: product (all fields including description, tasting notes)

get_product_inventory

Get per-store inventory for a product. Shows which stores stock it and quantities.

ParameterTypeDescription
skustringProduct SKU
citystringFilter by city, e.g. "Toronto"
datestringDate (YYYY-MM-DD), defaults to today
limitnumberMax results (max 200)

Example

{ "sku": "447540", "city": "Toronto" }

Returns: stores[], total_units, store_count

get_store_inventory

Get all products in stock at a specific store.

ParameterTypeDescription
store_idnumberStore ID (use search_stores to find)
categorystringFilter by category
sort_bystring"quantity", "name", "price"

Example

{ "store_id": 511, "category": "Gin" }

Returns: products[], count

get_salesPro only

Get sales data for a product over a date range. Computed from daily inventory depletion.

ParameterTypeDescription
skustringProduct SKU
start_datestringStart date (YYYY-MM-DD)
end_datestringEnd date, defaults to today
aggregatestring"daily" for per-day breakdown, "total" for sum
store_idnumberFilter by specific store

Example

{ "sku": "447540", "start_date": "2026-03-01", "aggregate": "total" }

Returns: total_sold, stores_with_sales, days_with_data (or daily breakdown)

get_top_sellersPro only

Get best-selling products by actual units sold in a date range.

ParameterTypeDescription
start_datestringStart date (YYYY-MM-DD)
categorystringFilter by category
booze_typestringFilter by type
querystringText filter on product name/brand
store_idnumberFilter by store

Example

{ "start_date": "2026-03-01", "category": "Gin", "limit": 10 }

Returns: top_sellers[] (sku, name, total_sold, store_count)

search_stores

Search LCBO stores by name, address, or city.

ParameterTypeDescription
querystringSearch name/address, e.g. "Queen"
citystring"Toronto", "Ottawa", "Guelph"

Example

{ "city": "Toronto" }

Returns: stores[] (store_id, name, city, address, phone)

get_categories

Get the full LCBO product category taxonomy with counts.

Example

{}

Returns: categories[] (path, count)

get_scrape_status

Check the health and freshness of the scraped data.

Example

{}

Returns: latest_run, data_freshness_hours

get_inventory_historyPro only

Get aggregated inventory history for a product over time. Shows total units and store count per day.

ParameterTypeDescription
skustringProduct SKU
start_datestringStart date (YYYY-MM-DD), defaults to 30 days ago
end_datestringEnd date (YYYY-MM-DD), defaults to today
limitnumberMax days to return (max 365, default 90)

Example

{ "sku": "447540", "start_date": "2026-02-01" }

Returns: days[] (summary_date, store_count, total_units)

get_store_product_historyPro only

Get per-store inventory history for a specific product at a specific store. Shows daily quantity snapshots.

ParameterTypeDescription
skustringProduct SKU
store_idnumberStore ID (use search_stores to find)
start_datestringStart date (YYYY-MM-DD), defaults to 30 days ago
end_datestringEnd date (YYYY-MM-DD), defaults to today

Example

{ "sku": "447540", "store_id": 511 }

Returns: store_name, city, days[] (scraped_date, quantity)

REST API

All MCP tools are also available as REST endpoints. Authenticate with your API key or Supabase JWT in the Authorization: Bearer header.

View the interactive API reference →

curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://boozedata.ca/api/v1/products?query=gin&category=Gin&sort_by=sell_rank_yearly&limit=5"

Access Tiers

FeatureFreePro ($100/mo)
Rate limit5 rpm / 10 rpd30 rpm / 500 rpd
Product search & detailsYesYes
Current inventoryYesYes
Store lookupYesYes
CategoriesYesYes
MCP + REST APIYesYes
OAuth supportYesYes
Sales rankings (sort)NoYes
Sales data (get_sales)NoYes
Top sellers (get_top_sellers)NoYes
Inventory historyNoYes
Store-level inventory historyNoYes
Tasting notes / descriptionNoYes
Promo / sale price dataNoYes
Sugar contentNoYes

Free tier users receive redacted product data — fields like sell_rank_yearly, description, ec_promo_price, and sugar_gm_per_ltr are removed from responses. Upgrade to Pro for full access.

BoozeData© 2026 BoozeData