Use Atlas data.

The Atlas API lets applications search and retrieve public wine e-label records. Public reads are free and open, with no key required for the standard rate limit.

Quick start

Set the base URL once, then run any example below.

ATLAS_API=https://www.elabel-atlas.eu/api/v1

Authentication

Anonymous requests can use every public read endpoint. A key raises the rate limit and is required for provider write operations. Provider workspace owners and administrators can create a key in the signed-in workspace under API keys. If you need a read key without a provider workspace or need bulk access, email david@essentialcode.eu.

curl --fail --silent --show-error \
  -H "Authorization: Bearer $ATLAS_API_KEY" \
  "$ATLAS_API/public-records?limit=1"

Rate limits

Each public operation allows 60 anonymous requests per minute per address, or 600 per minute per read key. Responses include limit, remaining, and reset headers. A request over the limit returns HTTP 429:

HTTP/1.1 429 Too Many Requests
retry-after: 60
x-ratelimit-limit: 60
x-ratelimit-remaining: 0

{"error":{"code":"rate_limited","message":"The public API rate limit was exceeded."}}

Public read endpoints

Search records

curl --fail --silent --show-error \
  "$ATLAS_API/search?q=Veltliner&limit=1"

Sample output

{
  "query": "Veltliner",
  "records": [{
    "atlas_record_id": "QXSvIVqvHcRW-LjHtG88I",
    "name": "Grüner Veltliner 2025",
    "provider": { "name": "Demo Wine Cooperative" },
    "gtin": "4006381333931"
  }]
}

List public records

curl --fail --silent --show-error \
  "$ATLAS_API/public-records?limit=1"

Sample output

{
  "records": [{
    "atlas_record_id": "ovPcoHyHMEbzdcGC_Zkm_",
    "name": "Grüner Veltliner Ried Steinberg 2024",
    "provider": { "name": "Glasswise" }
  }],
  "next_cursor": "eyJ1cGRhdGVkQXQiOjE3ODk1MDIxMjQ3MDcsImlkIjoib3ZQY29IeUhNRWJ6ZGNHQ19aa21fIn0"
}

Look up a GTIN

curl --fail --silent --show-error \
  "$ATLAS_API/public-records/4006381333931"

Sample output

{
  "gtin": "4006381333931",
  "records": [{
    "atlas_record_id": "QXSvIVqvHcRW-LjHtG88I",
    "name": "Grüner Veltliner 2025",
    "provider": { "name": "Demo Wine Cooperative" }
  }]
}

Get one record by Atlas ID

RECORD_ID=$(curl --fail --silent --show-error \
  "$ATLAS_API/public-records?limit=1" | jq -r '.records[0].atlas_record_id')
curl --fail --silent --show-error \
  "$ATLAS_API/public-records/by-id/$RECORD_ID"

Sample output

{
  "atlas_record_id": "ovPcoHyHMEbzdcGC_Zkm_",
  "name": "Grüner Veltliner Ried Steinberg 2024",
  "provider": { "name": "Glasswise" },
  "atlas_updated_at": "2026-09-15T19:55:24.707Z"
}

Pagination

The public record list returns next_cursor when another page exists. Send that exact opaque value with the same filters. Do not decode or edit it.

CURSOR=$(curl --fail --silent --show-error \
  "$ATLAS_API/public-records?limit=1" | jq -r '.next_cursor')
curl --fail --silent --show-error \
  "$ATLAS_API/public-records?limit=1&cursor=$CURSOR"

Public record languages

Public record pages localize only Atlas-owned labels and the codes the E-Label Standard Format defines, including wine type, wine properties, country codes, nutrition keys, and units. Every provider-authored string remains exactly as supplied, including ingredient names and categories and any packaging or disposal text the provider wrote.

The first code in languages is always the record's primary language, including when Atlas cannot render its interface in that language. A page offers the primary content and supported languages that have provider translations. Link to a selection with ?lang=de or ?lang=hr. With no parameter, Atlas uses Accept-Language when matching content exists and redirects to the corresponding shareable URL.

Prefer structured ingredients[] to preserve allergen and organic flags. Use ingredients_text only when the provider has a complete prose declaration. Providers may add translations.{language} values for ingredients_text, designation_of_origin, and each packaging[].disposal instruction. The packaging array follows the primary list's length and order; use null for an instruction that should fall back. Missing translations fall back to the top-level primary value. REST and MCP return this optional map, and JSON-LD uses language-tagged values. This provider-supplied map is the only way provider-authored text changes between languages.

The provider request body follows the E-Label Standard Format.

On public pages Atlas renders the Standard's own codes (productType, color, sweetness, packagingGas, packagingType, materialType, and collection) in the page language from the published Standard vocabulary. Every other provider value stays exactly as supplied.

MCP

Model Context Protocol, or MCP, is a standard way for an AI client to call external tools. e-label Atlas provides an anonymous Streamable HTTP server at https://www.elabel-atlas.eu/mcp.

The server exposes search_elabels, lookup_elabel_by_gtin, get_elabel, and list_elabels_updated_since.

Install Atlas in an agent

Choose your client. The Claude Code plugin and Codex setup include both the Atlas skill guidance and the live MCP tools. Other clients connect to the same read-only MCP server.

Claude Code

Adds the official Atlas marketplace, then installs the plugin. The plugin contains the skill and registers the remote MCP server. Claude Code 2.1.224 or later is required for the hosted archive.

claude plugin marketplace add https://www.elabel-atlas.eu/claude/marketplace.json && \
  claude plugin install elabel-atlas@elabel-atlas

Claude Code plugins install through marketplaces, not directly from an arbitrary plugin URL.Official format and distribution reference.

Claude web and desktop

Claude web and Claude Desktop accept Atlas as a custom remote connector. They do not install the Claude Code plugin into an ordinary chat. Open the prefilled connector form, review the URL, and confirm it.

https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=e-label%20Atlas&connectorUrl=https%3A%2F%2Fwww.elabel-atlas.eu%2Fmcp
Open the Atlas connector form

Official custom connector reference.

Codex

Downloads the user skill and registers the Streamable HTTP server. Restart Codex after installing the skill.

mkdir -p "$HOME/.agents/skills/elabel-atlas"
curl --fail --location   https://www.elabel-atlas.eu/api/v1/SKILL.md   --output "$HOME/.agents/skills/elabel-atlas/SKILL.md"
codex mcp add elabel-atlas --url https://www.elabel-atlas.eu/mcp

Official skill reference andofficial MCP reference.

Cursor

Add this entry to ~/.cursor/mcp.json, preserving any servers already in the file, then restart Cursor. Atlas does not currently have a Cursor Marketplace listing.

{
  "mcpServers": {
    "elabel-atlas": {
      "url": "https://www.elabel-atlas.eu/mcp"
    }
  }
}

Official Cursor MCP reference.

Gemini CLI

Add this entry to ~/.gemini/settings.json, preserving existing settings, then restart Gemini CLI. Atlas does not currently have a Gemini extension listing.

{
  "mcpServers": {
    "elabel-atlas": {
      "httpUrl": "https://www.elabel-atlas.eu/mcp"
    }
  }
}

Official Gemini CLI MCP reference.