Sf Beverage Skus

io.github.pratikgajjarv0.3.0Updated Oct 2, 2026

SF coffee, matcha, and chai catalog API: 439 SKUs across 13 merchants, prices in cents.

VerifiedStreamable HTTPWeb executableData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Query a read-only San Francisco coffee, matcha, and chai catalog of 439 SKUs across 13 merchants, with prices in integer cents.

What it does
Exposes a remote catalog API for San Francisco beverage menus, covering 439 SKUs across 13 merchants with prices in cents. The underlying dataset includes merchants, locations, items, SKUs, option groups, options, templates, and append-only price observations, with deterministic hierarchical slug IDs. Prices are computed as the SKU price plus the sum of selected option price deltas.
When to use it
Useful when an assistant needs structured San Francisco beverage menu or price data, for example to compare drink prices, look up SKUs and customization options, or build agent-native restaurant commerce experiments. It is a pilot dataset, so it is best for exploration rather than authoritative pricing.
Requirements
A remote streamable HTTP endpoint; no packages, environment variables, headers, or authentication are declared. Network access to the endpoint is required.
Before you install
The data is read-only and no orders, sign-ins, or payments are involved. Prices come from mixed aggregator sources and may differ from walk-in prices; some location records are not geocoded, and some price observations have a null sku_id when matching was not confident.

Installation

In SourceWeft

  1. Open Sf Beverage Skus in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "sf-beverage-skus": {
      "type": "http",
      "url": "https://sf-beverage-skus.luff.workers.dev/mcp"
    }
  }
}

README

sf-beverage-skus

SKU-level coffee, matcha, and chai catalog for San Francisco. CC0-1.0. Pilot dataset for agent-native restaurant commerce. Schema: v2 (see SCHEMA.md).

The price formula

total_cents = sku.price_cents + SUM(selected option.price_delta_cents)

Money is integer cents everywhere. Divide by 100 for dollars.

Quick start (DuckDB)

sql
SELECT m.name AS merchant, i.name AS item, s.size_name,       s.price_cents/100.0 AS priceFROM read_parquet('parquet/skus.parquet') sJOIN read_parquet('parquet/items.parquet') i USING (item_id)JOIN read_parquet('parquet/merchants.parquet') m USING (merchant_id)WHERE i.category = 'matcha' AND i.name ILIKE '%latte%'ORDER BY s.price_cents LIMIT 10;

Tables

TableRowsContents
merchants13merchants (stable slug IDs)
locations26storefronts: address + lat/lon (11/26 geocoded)
items658beverages (coffee 474, matcha 134, chai 50)
skus1222the sellable unit: item x size, price in cents
option_groups542customization groups with min/max/required
options2476choices with price_delta_cents added to the SKU price
templates28reusable option-group bundles
price_observations342append-only price history per refresh

IDs are deterministic hierarchical slugs (starbucks--caffe-latte--tall, ...--tall--milk--oat).

Provenance

Mixed sources, all read-only (no orders, sign-ins, or payments): DoorDash, Square, Toast storefronts. price_observations.parquet records checked_at and source_url per observation; sku_id is null when the match was not confident. Aggregator prices may differ from walk-in prices.

Write paths

  • ingest.py — item/template records in, idempotent upsert on deterministic IDs.
  • update_prices.py — price-refresh records in; appends history, updates skus.price_cents only on confident matches.
  • geocode.py, query.py — location backfill; geo + item search.

Source: README.md at commit d9a1a8a

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.3.0LatestOct 2, 2026