
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.
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.
Installation
In SourceWeft
- Open Sf Beverage Skus in the dashboard and add it to a workspace.
- 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
Money is integer cents everywhere. Divide by 100 for dollars.
Quick start (DuckDB)
Tables
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, updatesskus.price_centsonly on confident matches.geocode.py,query.py— location backfill; geo + item search.
Source: README.md at commit d9a1a8a
Tools
0Version history
1- v0.3.0LatestOct 2, 2026

