Skip to main content
Glama
chrischall

untappd-mcp

by chrischall

Batch-check many beers against the cache

untappd_cache_has_had_many
Read-onlyIdempotent

Check up to 500 beer IDs against a user's cached check-ins and distinct beers in one call, returning had/not-had status, count, and last date. No API call; sync user beers first for complete coverage.

Instructions

Cross-check a list of beer ids against a user's cached history in ONE call — NO API call. Consults BOTH sources (check-ins + distinct beers). Returns had/not-had per bid (with count and last date when had). Ideal for checking a whole venue menu at once. Run untappd_sync_user_beers first; the freshness block flags if coverage is incomplete.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bidsYesBeer ids to check (1–500)
usernameNoUntappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Addedv1.7.1

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, but the description goes beyond them with valuable behavioral context: it explicitly says 'NO API call' (cache-only, no network cost), states that it consults BOTH check-ins and distinct beers, and warns that 'the freshness block flags if coverage is incomplete'. This last point is genuinely useful operational behavior — it tells the agent the tool is self-aware about stale data. No contradictions with annotations.

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 four sentences with zero filler: it front-loads the core capability, then adds the no-API-call advantage, the dual-source behavior, the return shape, the ideal use case, and the prerequisite — all in about 60 words. Every sentence contributes a distinct fact an agent needs. It is dense but not bloated, and the key differentiators appear before the auxiliary details.

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?

For a read-only, idempotent, cache-query tool with 2 parameters fully documented in the schema and clear sibling differentiation, the description is complete. It covers what the tool returns (had/not-had per bid with count and last date), when to use it, what to do first, and a caveat about freshness coverage. There is no output schema, but the return shape is described inline, so an agent has enough to invoke it correctly and interpret the result.

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?

Schema description coverage is 100%, so the baseline is 3, and both parameters (bids, username) are documented in the schema. The description adds contextual meaning to the bids parameter by framing it as 'a list of beer ids' and giving the use case of a 'whole venue menu at once', which clarifies intent beyond the schema's bare type constraints. It doesn't detail the username fallback, but the schema covers it. That marginal semantic addition justifies a 4 rather than a 3.

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 opens with a specific verb and resource ('Cross-check a list of beer ids against a user's cached history'), immediately distinguishing it from a single-beer check by emphasizing 'in ONE call — NO API call' and 'Batch-check many beers'. It also explicitly states it consults BOTH sources (check-ins + distinct beers), which sets it apart from cache tools like untappd_cache_has_had or untappd_cache_not_had that may cover only one source or direction. The purpose is unambiguous and fully differentiated from siblings.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: batch-checking a list of ids, ideal for 'checking a whole venue menu at once', and even names the prerequisite 'Run untappd_sync_user_beers first'. It also signals the comparison class by noting it returns had/not-had per bid, which distinguishes it from single-item cache lookups. It does not explicitly list when-not-to-use alternatives, but the batch vs single distinction and the dependency on sync are clear enough to route an agent correctly.

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