Skip to main content
Glama
untappd-mcp

untappd-mcp

by chrischall

Sync a user's complete venue history into the cache

untappd_sync_user_venues

Fetch a user's full venue check-in history into cache to answer whether they have visited a given venue. Pages 25 venues per call, resumable, and stops before rate limits.

Instructions

Fetch a user's COMPLETE venue history (every venue they've checked in at, with first/most-recent visit dates and visit count) into the cache from user/venues. Unlike user/checkins — which only returns the ~50 most recent check-ins for anyone but yourself — user/venues pages any public/friend account's whole history, so this is how to answer "has this person been here?" (via untappd_cache_has_visited). Untappd serves 25 venues per page, so a 2,700-venue history is ~110 calls: resumable — fetches max_pages per call, saves progress after every page; run again until another_run_needed is false. Once complete, a re-run is a cheap refresh from the top that stops at the first page with no changed visits (a refresh cut short resumes where it stopped; another_run_needed stays true until it finishes). Stops BEFORE the ~100 calls/hour rate limit (or cleanly on a 429) with stopped_for_rate_limit and rate_limit.resume_at. Omit username for your own account.

Input Schema

NameRequiredDescriptionDefault
usernameNoUntappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
max_pagesNoPages (25 venues each) to fetch this run (default 10, max 50). Keep modest to respect the ~100 calls/hour rate limit.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.6.1

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing pagination (25 venues/page), a ~110-call example, resumability with progress saved after every page, the loop condition (another_run_needed), refresh-from-top semantics, and rate-limit stopping with stopped_for_rate_limit and rate_limit.resume_at. It is consistent with readOnlyHint=false since it writes to a local cache. The one gap is that the description never states plainly that it does not modify anything on Untappd itself, though the 'into the cache' phrasing implies it.

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?

Front-loaded with the purpose and the key differentiator before the operational detail, and nearly every sentence carries information an agent needs. The refresh-cut-short clause is dense and slightly convoluted, and the single unbroken paragraph could be split into usage and mechanics sections.

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 long-running, resumable, rate-limited sync with no output schema, the description supplies the loop contract, the stop conditions, and the field names an agent must inspect. Nothing essential to calling it correctly across repeated invocations is missing.

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 coverage is 100%, so the baseline is 3, but the description adds real meaning: max_pages is framed as a per-run batch inside a repeat-until-done loop, and username omission is tied to the caller's own account. It does not restate types or bounds, which is correct since the schema already carries them.

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?

States a specific verb and resource ('Fetch a user's COMPLETE venue history ... into the cache from user/venues') and explicitly contrasts it with the sibling endpoint user/checkins, which only returns ~50 recent check-ins. An agent can distinguish it from untappd_user_venues and untappd_sync_checkins without opening a schema.

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?

Gives an explicit purpose statement tied to a downstream tool ('this is how to answer "has this person been here?" via untappd_cache_has_visited'), names the alternative endpoint and the condition that selects it, and covers the omit-username case for the caller's own account.

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