Skip to main content
Glama

colacloud-mcp

MCP server for COLA Cloud - access US alcohol label data from AI assistants.

Query 2.5M+ Certificate of Label Approval (COLA) records from the TTB (Alcohol and Tobacco Tax and Trade Bureau) directly from Claude, ChatGPT, or other MCP-compatible AI tools.

Installation

# Using uvx (recommended, no install required)
uvx colacloud-mcp

# Or install with pip
pip install colacloud-mcp

Configuration

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "colacloud": {
      "command": "uvx",
      "args": ["colacloud-mcp"],
      "env": {
        "COLA_API_KEY": "your-api-key-here"
      }
    }
  }
}

Other MCP Clients

Set the COLA_API_KEY environment variable and run:

export COLA_API_KEY="your-api-key-here"
colacloud-mcp

Getting an API Key

  1. Create an account at app.colacloud.us

  2. Go to Dashboard > API Keys

  3. Create a new API key

Free tier includes 500 requests/month.

Available Tools

Tool

Description

search_colas

Search and filter COLA records by brand, product type, origin, dates, ABV

get_cola

Get detailed info for a specific COLA by TTB ID

search_permittees

Search permit holders (alcohol producers/importers)

get_permittee

Get permit holder details with recent COLAs

lookup_barcode

Find COLAs by product barcode (UPC/EAN)

get_api_usage

Check your API usage and rate limits

Example Queries

Once configured, you can ask Claude things like:

  • "Search for Tito's vodka labels"

  • "Find wine labels from Napa Valley approved in 2024"

  • "Look up the product with barcode 080686001010"

  • "Show me recent labels from permit holder CA-I-123"

  • "What craft beers have an IBU over 60?"

Data Available

Each COLA record includes:

  • Basic info: Brand name, product name, product type, origin

  • Dates: Application, approval, expiration dates

  • Label images: Front, back, neck, strip labels (1-2 per record)

  • Extracted data: ABV, volume, barcodes (via OCR/computer vision)

  • AI enrichment: Category, tasting notes, product descriptions

Development

# Clone and install
git clone https://github.com/cola-cloud-us/colacloud-mcp
cd colacloud-mcp
uv sync --dev

# Run locally
export COLA_API_KEY="your-key"
uv run colacloud-mcp

# Run tests
uv run pytest

# Lint
uv run ruff check .

License

MIT

Available Tools

6 tools
get_api_usageA

Check your COLA Cloud API usage and rate limits.

Returns current usage statistics including requests used this month, remaining quota, and rate limit information.

Returns: Usage stats including tier, limits, and current period usage

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adequately describes what the tool returns (usage statistics, rate limits) and implies it's a read-only operation through the verb 'Check.' However, it doesn't mention potential authentication requirements, error conditions, or whether the data is real-time versus cached, leaving some behavioral aspects unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded, starting with the core purpose and following with details on returns. Every sentence adds value without redundancy, and it efficiently communicates the tool's functionality in a compact format. There's no wasted verbiage or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, with an output schema), the description is largely complete. It explains the purpose and what to expect in returns, which aligns with the presence of an output schema. However, it could be more comprehensive by addressing authentication needs or error handling, slightly reducing completeness for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema has 100% coverage (empty object). The description appropriately doesn't discuss parameters since none exist, focusing instead on the return values. This meets the baseline expectation for a parameterless tool, though it doesn't add extra semantic context beyond what the schema already indicates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Check' and resource 'COLA Cloud API usage and rate limits', making the purpose immediately understandable. It distinguishes this tool from sibling tools like 'get_cola' or 'search_colas' by focusing on API usage metrics rather than data retrieval operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While it implicitly suggests usage for monitoring API consumption, it doesn't mention prerequisites, timing considerations, or how it relates to other tools in the system. There's no explicit 'when' or 'when not' context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_colaA

Get detailed information about a specific COLA by its TTB ID.

Returns the full record including all label images, extracted barcodes, and AI-enriched fields like product descriptions, tasting notes, and category classifications.

Args: ttb_id: The TTB (Alcohol and Tobacco Tax and Trade Bureau) ID, e.g., "23001001000001"

Returns: Complete COLA record with images, barcodes, and enrichment data

ParametersJSON Schema
NameRequiredDescriptionDefault
ttb_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns ('full record including all label images, extracted barcodes, and AI-enriched fields'), which is valuable context beyond just being a read operation. It doesn't mention rate limits, authentication needs, or error conditions, but provides good behavioral insight for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and concise: purpose statement first, return details second, parameter explanation third, and return summary fourth. Every sentence earns its place with no wasted words, and information is front-loaded appropriately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (retrieving detailed records with images and enriched data), no annotations, and the presence of an output schema, the description provides excellent context. It explains what kind of data is returned, mentions AI-enriched fields, and provides parameter semantics. The output schema will handle return value details, so the description focuses appropriately on usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must fully compensate. It provides excellent parameter semantics: clearly explains what 'ttb_id' represents (TTB ID), provides context about what TTB stands for, and gives a concrete example format ('23001001000001'). This adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get detailed information') and resource ('a specific COLA by its TTB ID'), distinguishing it from sibling tools like search_colas (which likely returns multiple results) and lookup_barcode (which uses a different identifier). It provides a precise verb+resource combination with clear scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you need detailed information about a specific COLA using its TTB ID) versus alternatives like search_colas (which likely searches multiple records). However, it doesn't explicitly state when NOT to use it or name specific alternatives, keeping it at a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_permitteeB

Get detailed information about a permit holder.

Returns the permittee's company details and their 10 most recent COLAs.

Args: permit_number: The federal permit number, e.g., "NY-I-123"

Returns: Permittee details with recent COLA summaries

ParametersJSON Schema
NameRequiredDescriptionDefault
permit_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions what information is returned, it doesn't address important behavioral aspects like whether this is a read-only operation, authentication requirements, rate limits, error conditions, or what happens with invalid permit numbers. The description provides basic functional information but lacks critical behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and well-structured with clear sections (purpose, arguments, returns). Each sentence serves a distinct purpose: the first states the tool's function, the second specifies what's returned, and the following sections document parameters and return values. There's minimal wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which handles return value documentation) and only one parameter with good semantic coverage in the description, the description is reasonably complete for a simple lookup tool. However, the lack of behavioral transparency and usage guidelines relative to sibling tools represents a significant gap in contextual understanding for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and only one parameter, the description provides essential semantic context that the schema lacks. It explains that 'permit_number' is a 'federal permit number' and provides an example format ('NY-I-123'), which adds meaningful interpretation beyond the bare schema type declaration. This significantly compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get detailed information about a permit holder' with specific details about what information is returned (company details and recent COLAs). It uses a specific verb ('Get') and identifies the resource ('permit holder'), but doesn't explicitly differentiate from sibling tools like 'search_permittees' or 'get_cola'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'search_permittees' and 'get_cola' available, there's no indication of when this specific tool is appropriate versus those alternatives, nor any prerequisites or contextual usage information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_barcodeA

Find COLAs by product barcode (UPC, EAN, etc.).

Barcodes are extracted from label images using computer vision. This tool finds all COLAs that contain a specific barcode, useful for identifying products or tracking label changes over time.

Args: barcode_value: The barcode number (UPC, EAN, etc.), e.g., "012345678905"

Returns: Barcode info and all associated COLAs

ParametersJSON Schema
NameRequiredDescriptionDefault
barcode_valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that barcodes are extracted from label images using computer vision, which adds useful context about data source and limitations. However, it doesn't cover behavioral aspects like error handling, rate limits, authentication needs, or what happens if no matches are found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It front-loads the core purpose, follows with implementation context, and ends with clear sections for Args and Returns. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (single parameter, no annotations, but with output schema), the description is mostly complete. It explains the purpose, parameter semantics, and return value at a high level. The existence of an output schema means it doesn't need to detail return structure, but could benefit from more behavioral context for a lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the input schema, which has 0% coverage. It explains that barcode_value accepts UPC, EAN formats with an example ('012345678905'), clarifies what constitutes a barcode, and mentions it's extracted from label images. This compensates well for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Find', 'identifying', 'tracking') and resources ('COLAs by product barcode'). It distinguishes from siblings by focusing on barcode-based lookup rather than general searches or other entity retrievals like get_cola or search_colas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('useful for identifying products or tracking label changes over time'), but does not explicitly state when not to use it or name specific alternatives among the sibling tools. It implies usage based on barcode availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_colasA

Search and filter COLA (Certificate of Label Approval) records.

COLAs are federal approvals for alcohol product labels in the US. Each record includes brand name, product details, label images, and enriched data like barcodes and AI-extracted features.

Args: q: Full-text search query (searches brand, product name, origin) product_type: Filter by type - "malt beverage", "wine", or "distilled spirits" origin: Filter by country or US state (e.g., "california", "france") brand_name: Filter by brand name (partial match, case-insensitive) approval_date_from: Minimum approval date (YYYY-MM-DD) approval_date_to: Maximum approval date (YYYY-MM-DD) abv_min: Minimum alcohol by volume percentage abv_max: Maximum alcohol by volume percentage page: Page number for pagination (default: 1) per_page: Results per page (default: 20, max: 100)

Returns: Search results with COLA summaries and pagination info

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
product_typeNo
originNo
brand_nameNo
approval_date_fromNo
approval_date_toNo
abv_minNo
abv_maxNo
pageNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by describing the search functionality, pagination behavior (defaults and max), and return format. However, it doesn't mention important behavioral aspects like rate limits, authentication requirements, error conditions, or whether this is a read-only operation (though 'search' implies it likely is).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose explanation, Args, Returns) and every sentence adds value. The COLA explanation provides necessary domain context. While not minimal, the length is justified given the 10 parameters needing documentation. The information is front-loaded with the core purpose stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 10 parameters, 0% schema coverage, no annotations, but with an output schema, the description does an excellent job. It explains the tool's purpose, documents all parameters thoroughly, describes the return format, and provides domain context about COLAs. The main gap is lack of explicit usage guidelines versus sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and 10 parameters, the description fully compensates by providing detailed semantic explanations for every parameter. Each parameter gets clear documentation including search scope ('q: Full-text search query (searches brand, product name, origin)'), format examples ('YYYY-MM-DD'), constraints ('default: 20, max: 100'), and matching behavior ('partial match, case-insensitive').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Search and filter COLA (Certificate of Label Approval) records,' providing a specific verb ('search and filter') and resource ('COLA records'). It distinguishes from siblings like 'get_cola' (which likely retrieves a single record) and 'search_permittees' (which searches different entities). The explanation of what COLAs are adds helpful domain context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the explanation of what COLAs are and the search/filter functionality, but doesn't explicitly state when to use this tool versus alternatives. No guidance is provided about when to use 'search_colas' versus 'get_cola' or 'search_permittees,' nor are there any prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_permitteesA

Search permit holders (companies authorized to produce/import alcohol).

Permittees are businesses that hold federal permits to manufacture, import, or wholesale alcohol products. Each permittee can have many COLAs.

Args: q: Search by company name (partial match) state: Filter by US state (two-letter code, e.g., "CA", "NY") is_active: Filter by active permit status (true/false) page: Page number for pagination (default: 1) per_page: Results per page (default: 20, max: 100)

Returns: Search results with permittee summaries and pagination info

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
stateNo
is_activeNo
pageNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that this is a search operation (implied read-only), mentions pagination behavior with defaults, and specifies partial matching for company names. However, it doesn't mention rate limits, authentication requirements, or error conditions that would be helpful for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear introductory sentence, domain explanation, and organized parameter documentation. Every sentence earns its place by providing essential information without redundancy. The formatting with clear sections (Args, Returns) enhances readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 5 parameters and no annotations, the description does an excellent job explaining parameters and return values. The existence of an output schema means the description doesn't need to detail return structure. It could be slightly more complete by mentioning authentication or rate limits, but overall it's quite comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all 5 parameters in detail. It clarifies that 'q' uses partial matching, 'state' requires two-letter codes, 'is_active' filters by permit status, and provides default values and constraints for pagination parameters. This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for permit holders (companies authorized to produce/import alcohol) and distinguishes them from other entities like COLAs. It specifies the resource (permit holders/businesses) and verb (search) with domain context about federal permits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about what permittees are and their relationship to COLAs, which helps differentiate from sibling tools like 'search_colas' and 'get_permittee'. However, it doesn't explicitly state when to use this versus the 'get_permittee' tool for individual lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.1.0
    • First observedget_api_usage
    • First observedget_cola
    • First observedget_permittee
    • First observedlookup_barcode
    • First observedsearch_colas
    • First observedsearch_permittees

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting different resources and actions within the COLA domain. get_cola retrieves specific records by TTB ID, search_colas performs filtered searches, lookup_barcode finds records by barcode, get_permittee retrieves permit holder details, search_permittees searches permit holders, and get_api_usage checks system usage - there is no functional overlap between these operations.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (get_api_usage, get_cola, get_permittee, lookup_barcode, search_colas, search_permittees). The verbs 'get', 'lookup', and 'search' are appropriately differentiated based on the operation type, creating a predictable and readable naming convention throughout the set.

Tool Count5/5

With 6 tools, this server is well-scoped for its COLA database domain. The count provides comprehensive coverage without bloat - each tool serves a distinct, necessary function for interacting with COLA records, permit holders, and system usage, making the set appropriately sized for the server's purpose.

Completeness4/5

The tool set provides excellent coverage for querying and retrieving COLA and permittee data, including search, lookup by various identifiers, and system monitoring. The only minor gap is the absence of write/update operations, but given the domain appears to be a regulatory database (likely read-only), the surface is appropriately complete for typical agent workflows.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cola-cloud-us/colacloud-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server