The five axes
| Axe · Axis | Champ · Field | Valeurs · Values | Source de vérité · Source of truth | Requis · Required |
|---|---|---|---|---|
| C — Catégorie Category | segment | beer · wine · spirits · cider_perry · rtd | Euromonitor five | yes |
| U — Usage Customs class | hs_code | Harmonized System (HS) heading or six-digit subheading in chapter 22 (2203, 2204, 2205, 2206, 2208 …) | Harmonized System; EU Combined Nomenclature | yes |
| V — Vignoble Origin | origin | country · region · protected name (PDO, PGI, GI) | eAmbrosia, appellation councils, TTB | country yes; region and protected name when they exist |
| É — Étiquette Label | gtin | GS1 Global Trade Item Number (GTIN) | GS1 | when it exists |
| É — Échelon Price tier | tier | value · standard · premium · super_premium · ultra_premium · prestige | IWSR tier ladder | when a source states it; never inferred |
Above the axes: the node, the country door a record sits on. Beside them, attributes that are not axes: strength, pack size, vintage, producer, brand, product. Written CUVEE on the wire and in code, cuvée in prose.
The string
Canonical form, colon-joined, lower-case, an empty axis written as a hyphen:
- cuvee:<segment>:<hs_code>:<country>[/<region>][/<protected_name_slug>]:<gtin|->:<tier|->
Three shapes, not real records:
- cuvee:wine:220410:es/catalonia/cava:8410013000000:premium
- cuvee:spirits:220850:uk/scotland/scotch-whisky:-:super_premium
- cuvee:beer:2203:be:5410228000000:-
Segment, customs code and country are always present. Region and protected name only when sourced. GTIN and tier are a hyphen when absent. The string is the product's address inside a node; the record id stays the record's key. One record has exactly one CUVEE; one CUVEE may point at several records, the same product in several pack sizes.
The door
An agent connects to the CUVEE door over the Model Context Protocol (MCP) at mcp.bev-cuvee.ai/mcp. Read-only, no account. The Agent-to-Agent (A2A) card is at agent.bev-cuvee.ai.
| Outil · Tool | Entrée · Input | Réponse · Returns |
|---|---|---|
| validate_cuvee | a CUVEE string | well-formed yes or no, and which axis fails and why |
| list_vocab | segments · hs · tiers · origins(country) | the vocabulary file, each entry with its source page and read date |
| resolve_cuvee | a CUVEE string, or free text: product name, GTIN, maker | the CUVEE object and the record ids that carry it — answers in words until records exist |
| explain_cuvee | a CUVEE string | each axis spelled out with its source and vocabulary entry — answers in words until records exist |
The vocabularies
Files of record, served and versioned. Each is produced from its source, never typed, and carries its own read date.
- segments.json — the five categories with the Euromonitor label each maps to · read 2026-09-26
- hs.json — the chapter-22 headings and six-digit subheadings in use, each with its plain name and the segments it may carry · read 2026-09-26
- tiers.json — the six IWSR tiers, ordered, with the source line for each · read 2026-09-26
- origins/<country>.json — protected names per country, harvested from eAmbrosia and the TTB; Spain arrives with the Spain harvest
Rulings
- Open standard: the specification, the axes and resolution are free to read and free to implement, always. No fee is ever attached to the standard itself.
- Never infers a tier. Échelon is filled only from a source that states it; otherwise it is absent, said in words.
- Never ranks. CUVEE classifies; ordering results is the buyer's agent's job.
- Same one primitive as every field on the record: a value, its source page, who read it, and its state. A CUVEE is derived from five sourced fields; it is never typed.
Licence
Specification and vocabularies: Creative Commons Attribution 4.0 (CC BY 4.0), attribution "CUVEE by agent-bev / Agent Holdings S.A.". Door code in the public connect kit: MIT. The record itself is not licensed by this page.