Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.chrischall/untappd-mcp

NPM · UNTAPPD-MCP

Untappd MCP — search beers/breweries/venues, read check-ins & wishlists, post check-ins

Available components

−1 this week 93 Trust /100

Last scanned (8 hours ago)

Scores higher than 96% of npm servers

Category Entertainment and Games

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 5 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to chrischall/untappd-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability67
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 13411 tokens (~231/item across 58 items; 58 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 58 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +11
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 1.00 ▲ functional
  • 4 Nov 26 +15
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Malware scan: unverified → pass ▲ security
    • Known CVEs: unverified → pass ▲ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Dependency health: unverified → 1.00 ▲ functional
    • Package version: 2.5.2 → 2.6.1 functional
    • Package version: 2.5.2 → 2.6.0 functional
  • 3 Nov 26 −27
    • Known CVEs: pass → unverified ▼ security
    • Malware scan: pass → unverified ▼ security
    • Schema quality: 182 → 230 ▼ functional
    • Dependency health: 1.00 → unverified ▼ functional
    • Package version: 2.4.0 → 2.5.2 functional
    • Package version: 2.4.0 → 2.5.1 functional
    • Package version: 2.4.0 → 2.5.0 functional
  • 2 Nov 26 0
    • Stability: 0.97 → pass security
  • 1 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 24 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 23 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Schema quality: 8023 → 8964 ▼ functional
    • Package version: 2.3.2 → 2.4.0 functional
    • Package version: 2.3.1 → 2.3.2 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/untappd-mcp@2.6.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo chrischall/untappd-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/chrischall/untappd-mcp/.github/workflows/release-please.yml@refs/heads/main
Rekor log index 3691538074
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:ddc58ec04c7222dc219956fa40154e2b781435396e78a44efed7d0826d2f060aa2e0d5edb2d5ee0691971140fd27d8e62d5524af059405364974abfd1

Background: How many MCP packages publish verified provenance →

Dependencies 5 packages
Packages resolved 5
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 58 exposed · ~13,411 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
untappd_accept_friend ~221

Accepts an incoming friend request (see untappd_pending_friends for pending uids). Acts on YOUR account and affects a real relationship with another person. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
target_uidintegeryesThe target user id (uid) — from a user profile (response.user.uid) or a friends-list item

No output schema declared.

No examples provided.

untappd_activity_feed ~203

Get your Untappd friend activity feed — the recent check-ins from people you follow, newest first. Page backwards with max_id (the pagination.max_id from a prior call). Read-only.

NameTypeReqDescription
limitinteger–Max check-ins (1–50, default 25)
max_idinteger–Return check-ins older than this id (for paging)
viewstring–Response shape: "compact" (default) projects each check-in to {id, user, beer, brewery, venue, rating, comment, toast/comment counts}; "full" returns Untappd's whole ~5 KB record; "brief" returns one…

No output schema declared.

No examples provided.

untappd_add_comment ~189

Post a comment on a check-in from YOUR account. Writes to your Untappd account and is visible to others. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

NameTypeReqDescription
checkin_idintegeryesUntappd check-in id
commentstringyesComment text to post
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…

No output schema declared.

No examples provided.

untappd_add_friend ~215

Sends a friend request to another user, who will be notified. Acts on YOUR account and affects a real relationship with another person. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
target_uidintegeryesThe target user id (uid) — from a user profile (response.user.uid) or a friends-list item

No output schema declared.

No examples provided.

untappd_beer_activity ~177

Get the recent public check-ins for a beer by its bid — who drank it, their rating, comment, and venue. Page backwards with max_id (the pagination.max_id from a prior call). Read-only.

NameTypeReqDescription
bidintegeryesUntappd beer id (bid)
limitinteger–Max check-ins (1–50, default 25)
max_idinteger–Return check-ins older than this id (for paging)
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact projects each check-in to {id, user, beer, brewery…

No output schema declared.

No examples provided.

untappd_beer_info ~171

Get full detail for a beer by its Untappd beer id (bid): description, style, ABV, IBU, brewery, rating, total check-in count, and — on view:"full" — recent activity. Get a bid from untappd_search_beer. Read-only.

NameTypeReqDescription
bidintegeryesUntappd beer id (bid)
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact asks Untappd for its own slim record, dropping the…

No output schema declared.

No examples provided.

untappd_brewery_beers ~465

Get the beers a brewery makes, by brewery id, with per-beer global rating, check-in count, ABV, style and in_production. Supports sorting and paging. Get an id from untappd_search_brewery. Lists are CACHED locally for 7 days (source:"cache"|"api", fetched_at, expires_at): a fresh cached list answers without an API call — the default popularity order from the cached top-of-list, other sorts once the whole list is cached (sorted locally). refresh:true re-fetches. The compact result has the same keys with or without the cache (source:"api" and null fetched_at/expires_at when no cache is available), with pagination {offset, limit, next_offset}. Untappd's per-beer has_had / your-count on this endpoint describe the AUTHENTICATED account, never the user you are asking about, so have_had / your_count are never cached or returned on either path — use untappd_cache_has_had_many for any user. With the cache, the result carries favorite {is_favorite, sources, reason} for the brewery and on each favorite beer (derived from username's history or added with untappd_favorite_add; default your account). view:"full" always calls Untappd and returns its raw page. Read-only.

NameTypeReqDescription
brewery_idintegeryesUntappd brewery id
limitinteger–Max beers (1–50, default 25)
offsetinteger–Result offset for paging (default 0)
refreshboolean–Re-fetch from Untappd even if a fresh cached list exists (default false)
sortstring–Sort order (default by popularity)
usernamestring–Whose favorites to mark (cache only; default your configured account)
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact keeps each beer's identity, rating and counts and…

No output schema declared.

No examples provided.

untappd_brewery_info ~179

Get full detail for a brewery by its Untappd brewery id: description, location, type, rating, total check-ins, and popular beers. Get an id from untappd_search_brewery. Read-only. Its claimed_status.follow_status is whether the SIGNED-IN account follows/likes the brewery — never another user's; for theirs, run untappd_sync_brewery_likes and read untappd_favorites_list (source "untappd").

NameTypeReqDescription
brewery_idintegeryesUntappd brewery id
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact also asks Untappd for its own slim record, droppin…

No output schema declared.

No examples provided.

untappd_cache_forget ~288

Delete everything the LOCAL cache holds for one user — their cached check-ins (beer, rating, comment, venue, date), distinct-beers list, venue history, wishlist copy, local favorites, venue drinks and sync state — e.g. after syncing a friend you no longer want a history of. Only the local cache is touched; nothing on Untappd changes, and a later sync can re-fetch it (manual favorites cannot be re-fetched). Shared beer, venue and brewery facts are kept. The preview shows the username and exactly how many rows will be removed. Omit username for your own account. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_cache_has_had ~220

Answer "has this user ever checked in this beer?" from the cache only — NO API call. Consults BOTH cached sources (check-ins and the distinct-beers list); a hit in either counts as had. Match by exact bid or a case-insensitive substring of the beer name. Returns whether they had it, the times-had count, best rating, last date, which sources matched, any detailed check-ins, and favorite {is_favorite, sources, reason} (rated ≥4.25 / had ≥3 times, or added with untappd_favorite_add). Reports per-source freshness so you can caveat incomplete data. Requires bid or beer_name. Run untappd_sync_user_beers first for full coverage.

NameTypeReqDescription
beer_namestring–Case-insensitive substring match on the beer name
bidinteger–Exact Untappd beer id to look for
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_cache_has_had_many ~325

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), plus favorite {is_favorite, sources, reason} per bid and brewery_favorite when its brewery (from cached beer metadata) is a favorite. Ideal for checking a whole venue menu at once. Pass usernames (instead of username) to check a GROUP: each bid then lists had_by / not_had_by and qualifies per mode — "none_had" (default: new to everyone) or "any_not_had" (at least one of them still needs it) — with qualifying_bids and a per-user freshness block. Run untappd_sync_user_beers first (for every user); the freshness block flags if coverage is incomplete.

NameTypeReqDescription
bidsarrayyesBeer ids to check (1–500)
modestring–With usernames: "none_had" (default) keeps beers NONE of them has had (new to everyone); "any_not_had" keeps beers at least one of them has not had.
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
usernamesarray–Check a GROUP of users (1–10) instead of one — e.g. everyone at the table. Use instead of username; each must be synced (untappd_sync_user_beers).

No output schema declared.

No examples provided.

untappd_cache_has_visited ~331

Answer "has this user been here?" for one or many places in ONE call, from the cached venue history only — NO API call. Each query matches by exact venue_ids, by name (case-insensitive substring or all significant words, optionally narrowed by city/state), and/or by lat/lng within radius_m (default 150 m); venue_ids are unioned with the name/geo match, and name + lat/lng together must both hold. Name/location matching matters because a brewery_id is NOT its taproom's venue_id, a brewery can have several venues, and Untappd keeps "… (duplicate of …)" venues — so expect, and check, several matches. Returns per query: visited, the matched venues (first_visit, recent_visit, total_count, is_duplicate, distance_m, and — once untappd_sync_venue_drinks has fetched them — drinks: the beer from the first/recent visit check-ins — and favorite {is_favorite, sources, reason}: derived from the visit history or added with untappd_favorite_add), and total_visits; plus a freshness block (last_synced_at, coverage_complete, caveat). Run untappd_sync_user_venues first.

NameTypeReqDescription
max_matchesinteger–Most matched venues listed per query (default 10)
queriesarrayyesPlaces to check (1–50); each needs venue_ids, name, or lat+lng
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_cache_not_had ~159

Given a list of beer ids, return only the ones the user has NOT had — the "what here is new to me?" filter for a venue menu, a brewery lineup, or a festival list. Consults BOTH cached sources; reads the cache only, NO API call. Returns the not-had bids (plus the had bids and counts) and cache freshness. Run untappd_sync_user_beers first; if coverage is incomplete the freshness caveat flags that a "not had" may be a false negative.

NameTypeReqDescription
bidsarrayyesCandidate beer ids to filter (1–500)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_cache_query ~296

Query a user's cached CHECK-INS by brewery, style, minimum rating, venue, and/or date range, with sorting and a limit — from the cache only, NO API call. Reflects the detailed check-ins table (venue/date), which for non-self accounts is only the recent window; for full coverage of which beers a user has had, use untappd_cache_has_had / not_had instead. Run untappd_sync_checkins first.

NameTypeReqDescription
brewerystring–Case-insensitive substring match on brewery name
brewery_idinteger–Exact brewery id
date_fromstring–Only check-ins on/after this date (YYYY-MM-DD, UTC)
date_tostring–Only check-ins on/before this date (YYYY-MM-DD, UTC)
limitinteger–Max rows (1–200, default 25)
min_ratingnumber–Only check-ins you rated at least this (0–5)
sortstring–Sort order (default recent first)
stylestring–Case-insensitive substring match on beer style (e.g. "IPA")
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
venuestring–Case-insensitive substring match on venue name
venue_idinteger–Exact venue id

No output schema declared.

No examples provided.

untappd_cache_status ~252

Diagnostics for the LOCAL check-in cache — NO API call. Returns the resolved cache file path, its size on disk (db + WAL), journal mode, schema version, the number of cached menu-line resolutions and beer-metadata rows, cached venues, and for every cached user: cached vs total distinct beers, cached check-ins, coverage_complete, the resume offset of an unfinished user/beers backfill, last_synced_at, and venue-history coverage (venues: cached vs total, complete, percent, next_offset; null if never synced), wishlist and Untappd brewery-likes mirror coverage (wishlist / brewery_likes: cached vs total, complete; null if never synced). Also reports rate_limit: API calls made in the last hour (this process plus any other sharing the cache file), the ~100/hour limit, the estimated calls left, the raw X-Ratelimit-* headers (the v4 API sends Remaining: 0 on every success, so it is ignored until it reports a live value) and any 429 wait. Use it to confirm the cache persisted across restarts, to see how far a backfill has got, or to check whether a sync can run now.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

untappd_checkin ~508

Post a NEW beer check-in to YOUR Untappd account — this publishes to your public feed. Provide the beer id (bid) from untappd_search_beer; optionally a rating (0–5 in 0.25 steps), a shout (comment), a venue via foursquare_id, and a local photo via photo_path (JPEG/PNG). The preview shows the exact fields and photo that will be posted. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

NameTypeReqDescription
bidintegeryesUntappd beer id to check in (from untappd_search_beer)
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
container_idinteger–Optional serving container id (e.g. 1 = draft, 2 = bottle, 3 = can)
foursquare_idstring–Optional Foursquare venue id to tag the check-in location
geolatnumber–Optional latitude of the check-in
geolngnumber–Optional longitude of the check-in
photo_pathstring–Optional path to a local JPEG/PNG photo (max 15 MB) to attach — it is published publicly. It must be inside the photo directory (UNTAPPD_PHOTO_DIR, default ~/Downloads/untappd-mcp). Only use a file t…
ratingnumber–Rating 0–5 in 0.25 increments (omit for no rating)
shoutstring–Optional shout / comment text for the check-in
timezonestring–The drinker's IANA timezone (e.g. America/New_York), which sets the check-in's local time. Defaults to UNTAPPD_TIMEZONE, else the server's own zone — which on a hosted connector is usually UTC, so pa…

No output schema declared.

No examples provided.

untappd_checkin_info ~76

Get full detail for a single check-in by its id: the beer, rating, comment, photos, venue, badges earned, toasts, and comments. Get a check-in id from a feed or user-checkins result. Read-only.

NameTypeReqDescription
checkin_idintegeryesUntappd check-in id

No output schema declared.

No examples provided.

untappd_delete_checkin ~175

Permanently delete one of YOUR check-ins by its id. This is destructive and cannot be undone. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

NameTypeReqDescription
checkin_idintegeryesUntappd check-in id
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…

No output schema declared.

No examples provided.

untappd_delete_comment ~180

Delete one of YOUR comments by its comment id (the id from a check-in's comments list). Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

NameTypeReqDescription
comment_idintegeryesUntappd comment id (from a check-in's comments.items)
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…

No output schema declared.

No examples provided.

untappd_favorite_add ~243

Add a MANUAL favorite — a beer, brewery or venue — with an optional note, to the local cache. Local to the cache — NEVER writes to Untappd (Untappd has no favorites API for this). Re-adding an existing favorite updates its note (omit note to keep it) and keeps its created_at. Manual favorites show in untappd_favorites_list (source "manual") and as the `favorite` field on has_had, has_had_many, has_visited, brewery_beers, venue_menu, top_not_had and trip_check results; a favorite brewery also boosts its beers in untappd_top_not_had. Omit username for your own account.

NameTypeReqDescription
idintegeryesThe Untappd bid / brewery_id / venue_id
kindstringyesWhat the id is: a beer (bid), brewery (brewery_id) or venue (venue_id)
notestring–Why it is a favorite (shown as the reason)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_favorite_remove ~170

Remove a MANUAL favorite (beer, brewery or venue) from the local cache. Local to the cache — NEVER writes to Untappd (Untappd has no favorites API for this). Returns removed:false when there was none. A DERIVED favorite (from the user's history) cannot be removed — it is computed from the thresholds; change them in untappd_favorites_list instead. Omit username for your own account.

NameTypeReqDescription
idintegeryesThe Untappd bid / brewery_id / venue_id
kindstringyesWhat the id is: a beer (bid), brewery (brewery_id) or venue (venue_id)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_favorites_list ~376

List a user's favorites from the cache only — NO API call. Each item appears ONCE with every source that names it (sources: "derived" = qualifies from their cached history, "manual" = added with untappd_favorite_add, "untappd" = a brewery the user likes/follows on Untappd, mirrored by untappd_sync_brewery_likes — breweries only: Untappd has no followed/favorite venue list) and a reason ("liked on Untappd (since 2021-03)", "12 check-ins since 2015", "avg 4.1 across 9 beers", "manual: <note>"). Derived rules, each overridable via thresholds: venue = ≥5 check-ins OR visits spanning ≥3 distinct months (ranked by check-ins); brewery = ≥5 beers had AND avg rating ≥3.75, OR ≥15 beers (ranked by count blended with rating); beer = rated ≥4.25 OR had ≥3 times. Derived favorites are only as complete as the syncs behind them (untappd_sync_user_venues, untappd_sync_user_beers); "untappd" ones as the last untappd_sync_brewery_likes (freshness.brewery_likes). Filter by kind and source. Omit username for your own account.

NameTypeReqDescription
kindstring–Only this kind (default all three)
limitinteger–Most items per kind (default 50)
sourcestring–Only favorites carrying this source
thresholdsobject–Override the derived-favorite thresholds (each optional; omitted ones keep their defaults).
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_healthcheck ~79

Verify Untappd connectivity and that credentials are configured and can log in. Performs a lightweight authenticated request (your recent feed) and reports whether it succeeded, plus the running server version and the exact set of tools this build exposes (count, a stable hash, and their names) so you can confirm which build is live. Read-only.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

untappd_local_checkins ~170

Get recent check-ins near a location (lat/lng) — what people are drinking nearby right now. Optionally widen the search radius. Read-only.

NameTypeReqDescription
latnumberyesLatitude of the location
limitinteger–Max check-ins (1–50, default 25)
lngnumberyesLongitude of the location
radiusinteger–Search radius (default per Untappd)
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact projects each check-in to {id, user, beer, brewery…

No output schema declared.

No examples provided.

untappd_menu_pick ~506

One call from a tap list to "order this": give the raw menu lines as read from a photo and get back the top-rated beers the user has NOT had. It (1) refreshes the user's distinct-beers cache — an incremental refresh when the cache is complete, otherwise it backfills automatically within api_budget, no separate sync needed; (2) resolves each line to an Untappd beer (prices/punctuation stripped, scored on brewery + name match and check-in volume, venue_city as tie-breaker; resolutions are cached locally so repeat venues are instant); (3) treats "<Brewery> SEASONAL/ROTATING" as a list of possible beers (needs_confirmation) and "ROTATING CIDER"-style lines as unresolved ("ask bartender"); (4) checks every beer against the cache; (5) ranks the not-had ones by global rating. Returns picks, not_had, had, possible, unresolved, a sync block (what the refresh did) and freshness (coverage); if coverage is still incomplete a "not had" may be a false negative and another_run_needed is true. api_budget is also capped to the quota Untappd reports, when it reports one. Omit username for your own account.

NameTypeReqDescription
api_budgetinteger–Max Untappd API calls this run, shared by the cache sync, searches and rating lookups (default 60; Untappd allows ~100/hour). If it runs out, the result says another_run_needed and a re-run continues…
itemsarrayyesRaw menu lines as read from the menu, e.g. ["JACKALOPE FENNARIO IPA $7", "BLACK ABBEY SEASONAL", "ROTATING CIDER"].
refresh_resolutionsboolean–Ignore cached line→beer matches and re-search every line (default false).
style_filterstring–Case-insensitive substring filter on the beer style or parent style for the picks (e.g. "ipa", "stout").
top_ninteger–How many picks to return (default 2, max 10).
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
venue_citystring–City of the venue (e.g. "Nashville") — breaks ties between same-named beers toward local breweries.

No output schema declared.

No examples provided.

untappd_notifications ~71

Get your Untappd notifications — toasts, comments, friend requests, and badges earned on YOUR account, plus news items. Read-only.

NameTypeReqDescription
limitinteger–Max notifications (1–50, default 25)
offsetinteger–Result offset for paging (default 0)

No output schema declared.

No examples provided.

untappd_open_url ~68

Resolve an untappd.com URL AND fetch the entity detail in one call — the convenience combination of untappd_resolve + the matching info tool. Returns { resolved, detail }. Read-only.

NameTypeReqDescription
urlstringyesAn untappd.com URL to resolve and fetch

No output schema declared.

No examples provided.

untappd_pending_friends ~67

Get the incoming friend requests waiting on YOUR account — the users who have requested to be your friend. Read-only.

NameTypeReqDescription
limitinteger–Max requests (1–50, default 25)
offsetinteger–Result offset for paging (default 0)

No output schema declared.

No examples provided.

untappd_reject_friend ~225

Rejects/ignores an incoming friend request (see untappd_pending_friends for pending uids). Acts on YOUR account and affects a real relationship with another person. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
target_uidintegeryesThe target user id (uid) — from a user profile (response.user.uid) or a friends-list item

No output schema declared.

No examples provided.

untappd_remove_friend ~216

Removes an existing friend, or cancels a friend request you sent. Acts on YOUR account and affects a real relationship with another person. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
target_uidintegeryesThe target user id (uid) — from a user profile (response.user.uid) or a friends-list item

No output schema declared.

No examples provided.

untappd_resolve ~81

Parse an untappd.com URL (a beer /b/, brewery /w/, venue /v/, user /user/, or check-in link) into its entity type and id, and name the tool to call next. Pure local parsing — no network. Read-only.

NameTypeReqDescription
urlstringyesAn untappd.com URL to resolve

No output schema declared.

No examples provided.

untappd_search_beer ~224

Search Untappd for beers by name (optionally "Brewery Beer"). Returns ranked matches with their beer id (bid), brewery, style, ABV, IBU, and global rating. Feed a bid into untappd_beer_info for full detail. Read-only.

NameTypeReqDescription
limitinteger–Max results (1–50, default 25)
offsetinteger–Result offset for paging (default 0)
querystringyesBeer name to search for
sortstring–Sort order: checkin (relevance, default), name, or count
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact projects each match to {bid, name, style, abv, ibu…

No output schema declared.

No examples provided.

untappd_search_brewery ~100

Search Untappd for breweries by name. Returns matches with their brewery id, location, type, and beer count. Feed a brewery id into untappd_brewery_info for full detail. Read-only.

NameTypeReqDescription
limitinteger–Max results (1–50, default 25)
offsetinteger–Result offset for paging (default 0)
querystringyesBrewery name to search for

No output schema declared.

No examples provided.

untappd_search_venue ~87

Search Untappd for venues (bars, breweries, restaurants) by name. Returns matches with their venue id, category, and location. Feed a venue id into untappd_venue_info for full detail. Read-only.

NameTypeReqDescription
limitinteger–Max results (1–50, default 25)
querystringyesVenue name to search for

No output schema declared.

No examples provided.

untappd_sync_brewery_likes ~315

Mirror the breweries a user "likes" on Untappd (user/brewerylikes — the app calls them "followings"; works for other users' public/friend accounts) into the local cache. Liked breweries then count as favorites with source "untappd" — in untappd_favorites_list, the `favorite` field on has_had / brewery_beers / venue_menu / top_not_had / trip_check results, and the prefer_favorites boost. Each sync is a full pass from the top (~50 breweries per call), adding new likes and — once the pass finishes — dropping unliked ones (a partial pass never deletes). Resumable: saves progress every page; run again until another_run_needed is false (reports cached/total and percent). Stops BEFORE the ~100 calls/hour rate limit (or cleanly on a 429) with stopped_for_rate_limit and rate_limit.resume_at. Only reads Untappd. Untappd has NO followed/favorite VENUE list, so venue favorites stay derived + manual. (brewery/info's follow_status is the signed-in account's, never another user's — this list is the way to see theirs.) Omit username for your own account.

NameTypeReqDescription
max_pagesinteger–Pages (~50 breweries each) to fetch this run (default 10, max 50).
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_sync_checkins ~306

Fetch a user's detailed check-ins (venue, date, comment) into the cache from user/checkins. Incremental and resumable: pages backwards up to max_pages per call, persisting progress every page; run again until another_run_needed is false. NOTE: Untappd only returns the ~50 most recent check-ins for accounts other than your own and will not page further — such a sync reports history_truncated and you should use untappd_sync_user_beers for full has-had coverage. backfill_complete is only reported once ~all of total_checkins is cached. Pass force_backfill: true to reset a cache wrongly marked complete and re-page the whole history (cached rows are kept). Stops BEFORE the ~100 calls/hour rate limit (or cleanly on a 429) with stopped_for_rate_limit and rate_limit.resume_at — progress is saved; re-run after that time. Omit username for your own account.

NameTypeReqDescription
force_backfillboolean–Reset the sync state (clear backfill_complete + cursors) but KEEP cached rows, then re-page the whole history from newest. Use to recover a cache wrongly marked complete.
max_pagesinteger–Pages (50 check-ins each) to fetch this run (default 10). Keep modest to respect the ~100 calls/hour rate limit.
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_sync_user_beers ~249

Fetch a user's COMPLETE distinct-beers list (every unique beer they've ever had, with their rating, times-had count, and first/last dates) into the cache from user/beers. This is the cheapest way to get full "has had" coverage — thousands of beers instead of tens of thousands of check-ins — and, unlike user/checkins, it pages fully for any public/friend account. Offset-paged and resumable: fetches max_pages per call and persists progress; run again until another_run_needed is false. Feeds the same untappd_cache_has_had / has_had_many / not_had tools. Stops BEFORE the ~100 calls/hour rate limit (or cleanly on a 429) with stopped_for_rate_limit and rate_limit.resume_at — progress is saved; re-run after that time. Omit username for your own account.

NameTypeReqDescription
max_pagesinteger–Pages (50 beers each) to fetch this run (default 10). Keep modest to respect the ~100 calls/hour rate limit.
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_sync_user_venues ~294

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.

NameTypeReqDescription
max_pagesinteger–Pages (25 venues each) to fetch this run (default 10, max 50). Keep modest to respect the ~100 calls/hour rate limit.
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_sync_venue_drinks ~340

OPT-IN, costs API calls: for a user's cached venue history (run untappd_sync_user_venues first), fetch the FIRST and MOST-RECENT visit check-ins of each venue via checkin/view (works for any public check-in) and cache the beer + date — a PARTIAL "what did they drink there" (two check-ins per venue at most, never the full list). One call per check-in, most-visited venues first, at most max_calls per run (default 10, max 50); already-cached check-ins are never re-fetched, and deleted/private ones (404) are remembered and skipped. Narrow with venue_ids and which. Stops BEFORE the ~100 calls/hour rate limit (or cleanly on a 429) with stopped_for_rate_limit and rate_limit.resume_at; run again until another_run_needed is false. Results appear in untappd_cache_has_visited under matches[].drinks. Stores only beer, brewery and date — never comments. Omit username for your own account.

NameTypeReqDescription
max_callsinteger–checkin/view calls this run (default 10, max 50). Each is one of the ~100 hourly calls.
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
venue_idsarray–Only these venues (from untappd_cache_has_visited). Default: every cached venue, most-visited first.
whichstring–Fetch each venue's first-visit check-in, most-recent one, or both (default both).

No output schema declared.

No examples provided.

untappd_sync_wishlist ~224

Mirror a user's Untappd wishlist (user/wishlist) into the local cache, so pick tools can boost wishlisted beers without an API call. Each sync is a full pass from the top (~25 beers per call; wishlists are small), adding new beers and — once the pass finishes — dropping ones no longer wishlisted (a partial pass never deletes). Resumable: saves progress every page; run again until another_run_needed is false. Stops BEFORE the ~100 calls/hour rate limit (or cleanly on a 429) with stopped_for_rate_limit and rate_limit.resume_at. Only reads Untappd — never changes the wishlist (that is untappd_wishlist_add / _remove). Omit username for your own account; another user's wishlist needs a public account or friendship.

NameTypeReqDescription
max_pagesinteger–Pages (~25 beers each) to fetch this run (default 10, max 50).
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_toast ~199

Toast (like) a check-in on YOUR account. This endpoint is a TOGGLE: calling it on a check-in you have already toasted removes the toast. Writes to your Untappd account and is visible to others. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

NameTypeReqDescription
checkin_idintegeryesUntappd check-in id
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…

No output schema declared.

No examples provided.

untappd_top_not_had ~589

The "what should I order off this tap list?" tool. From a list of candidate beer ids, return the top N the user has NOT yet had, ranked by Untappd global rating, with an optional style filter. Not-had filtering uses the cache only (both sources, no API call). Beer ratings/styles come from a metadata cache; a beer/info API call is made only on a cache miss or if the cached metadata is >30 days old, capped at api_budget calls per run (~100 calls/hour limit) — if more are needed it returns partial: true / another_run_needed: true, so re-running fills the rest. A beer whose refresh is deferred or fails is still ranked on its older cached metadata and marked stale: true. Reports the same freshness/caveat block as untappd_cache_not_had. Omit username for your own account. For a GROUP pass usernames: mode "none_had" (default) ranks only beers new to everyone, "any_not_had" ranks beers at least one of them still needs (each ranked beer lists not_had_by / had_by). prefer_favorites (default true) lifts wishlisted beers (+0.5) and beers from a favorite brewery (+0.25) — liked on Untappd, derived or manual, any user's in a group; the wishlist needs untappd_sync_wishlist and Untappd likes untappd_sync_brewery_likes — and says so per beer (score, boosted_by, wishlisted, brewery_favorite/favorite).

NameTypeReqDescription
api_budgetinteger–Max beer/info API calls this run for uncached/stale metadata (default 25). Keep modest to respect the ~100 calls/hour rate limit.
bidsarrayyesCandidate beer ids (1–100)
modestring–With usernames: "none_had" (default) keeps beers NONE of them has had (new to everyone); "any_not_had" keeps beers at least one of them has not had.
prefer_favoritesboolean–Boost beers on the wishlist (+0.5) or from a favorite brewery (+0.25) when ranking (default true). false ranks by global rating alone.
stylestring–Case-insensitive substring filter; matches EITHER the beer style or its parent style (e.g. "ipa")
top_ninteger–How many top beers to return (default 2, max 10)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
usernamesarray–Check a GROUP of users (1–10) instead of one — e.g. everyone at the table. Use instead of username; each must be synced (untappd_sync_user_beers).

No output schema declared.

No examples provided.

untappd_trending ~46

Get the beers trending on Untappd right now, split into macro (big/widely-available) and micro (craft/independent) lists. Read-only.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

untappd_trip_check ~663

Plan a brewery/bar crawl in ONE call: for each place (venue_id, name + city/state, lat/lng, and/or brewery_id) return whether the user has been there (dates, total visits, matched venues incl. "(duplicate of …)" copies — from the cached venue history, run untappd_sync_user_venues first), and for a brewery_id: how many of its beers they have had and the top 4 (top_n) NOT-had beers by Untappd global rating, optionally filtered by style (out-of-production beers skipped unless include_out_of_production). Has-had and visits come from the cache ONLY; the only API calls are brewery/beer_list fetches for a brewery whose list is not cached or is past its 7-day TTL, at most api_budget (default 5; 0 = strictly cache-only, a stale list is then used and flagged) under the ~100 calls/hour guard — a missing list sets another_run_needed. Beer lists are global facts: Untappd's have_had on that endpoint is the AUTHENTICATED account's and is never used. Favorites (breweries liked on Untappd via untappd_sync_brewery_likes, derived from the cached history, or added with untappd_favorite_add) are flagged on matched venues, the brewery and beers; prefer_favorites (default true) lifts wishlisted beers (+0.5) and a favorite brewery's beers (+0.25); and a stop within near_favorite_radius_m (default 2000 m) of a favorite venue gets near_favorites + a "Near a favorite" hint. For a GROUP pass usernames + mode ("none_had" default / "any_not_had"). Returns has-had and venue freshness blocks.

NameTypeReqDescription
api_budgetinteger–Max brewery/beer_list calls for missing or stale lists (default 5; 0 = cache only)
include_out_of_productionboolean–Also rank beers Untappd marks out of production (default false)
max_matchesinteger–Most matched venues listed per user per stop (default 5)
modestring–With usernames: "none_had" (default) lists beers new to everyone; "any_not_had" beers someone still needs
near_favorite_radius_mnumber–Radius for the "near a favorite" hint in metres (default 2000)
placesarrayyesThe stops (1–25); each needs venue_id, name, lat+lng, or brewery_id
prefer_favoritesboolean–Boost wishlisted beers (+0.5) and favorite-brewery beers (+0.25) (default true)
stylestring–Case-insensitive substring filter on the beer style (e.g. "ipa")
top_ninteger–Not-had beers listed per brewery stop (default 4)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
usernamesarray–Check a GROUP (1–10) instead of one user; use instead of username

No output schema declared.

No examples provided.

untappd_user_badges ~92

Get the badges a user has earned, most recent first. Omit username for your own account. Read-only.

NameTypeReqDescription
limitinteger–Max badges (1–50, default 25)
offsetinteger–Result offset for paging (default 0)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_user_beers ~221

Get the distinct (unique) beers a user has ever checked in, with their rating and check-in count per beer. Supports sorting and paging. Omit username for your own account. Read-only.

NameTypeReqDescription
limitinteger–Max beers (1–50, default 25)
offsetinteger–Result offset for paging (default 0)
sortstring–Sort order (default date, most recent first)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact projects each distinct beer to {bid, name, style,…

No output schema declared.

No examples provided.

untappd_user_checkins ~250

Get a user's recent check-ins (most recent first): the beer, rating, comment, venue, and toasts/comments. Page backwards with max_id (the pagination.max_id from a prior call). Only your OWN history pages fully: for any other user Untappd returns just the ~50 most recent check-ins and ignores max_id — use untappd_user_beers (has had) or untappd_user_venues (has been) for their full history. Omit username for your own. Read-only.

NameTypeReqDescription
limitinteger–Max check-ins (1–50, default 25)
max_idinteger–Return check-ins older than this id (for paging)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact projects each check-in to {id, user, beer, brewery…

No output schema declared.

No examples provided.

untappd_user_friends ~86

Get a user's friend list. Omit username for your own account. Read-only.

NameTypeReqDescription
limitinteger–Max friends (1–50, default 25)
offsetinteger–Result offset for paging (default 0)
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

untappd_user_info ~129

Get an Untappd user's profile: bio, location, total check-ins, distinct beers, badges, and stats. Omit username for your own account. Read-only.

NameTypeReqDescription
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).
viewstring–Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact also asks Untappd for its own slim record, droppin…

No output schema declared.

No examples provided.

untappd_user_venues ~244

Get the venues a user has checked in at, most recent first, with per-venue first/recent visit and check-in counts. Pages fully for any public/friend account (unlike user check-ins, which stop at ~50 for other users). Untappd returns at most 25 venues per page whatever limit you ask for — advance by the returned pagination offset. Omit username for your own account. Read-only.

NameTypeReqDescription
limitinteger–Max venues (1–50; Untappd caps a page at 25)
offsetinteger–Result offset for paging (default 0)
sortstring–Sort order (default most recent). Untappd keys: date, recent, date_asc, venue_name_asc, venue_name_desc, highest_checkin, lowest_checkin. Aliases: name = venue_name_asc, checkin = highest_checkin. hi…
usernamestring–Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME).

No output schema declared.

No examples provided.

Install

How do I install the io.github.chrischall/untappd-mcp server?

io.github.chrischall/untappd-mcp runs locally as an npm package, launched with npx -y untappd-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · untappd-mcp

# add to Claude Code
claude mcp add chrischall-untappd-mcp -- npx -y untappd-mcp
Common questions

What is the io.github.chrischall/untappd-mcp server?

io.github.chrischall/untappd-mcp is listed in the public MCP registry as io.github.chrischall/untappd-mcp. Untappd MCP, search beers/breweries/venues, read check-ins & wishlists, post check-ins. This page covers its npm package (untappd-mcp).

Is the io.github.chrischall/untappd-mcp server safe to use?

io.github.chrischall/untappd-mcp scores 93 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.chrischall/untappd-mcp server expose?

io.github.chrischall/untappd-mcp exposes 58 tools: untappd_search_beer, untappd_beer_info, untappd_beer_activity, untappd_search_brewery, untappd_brewery_info, and 53 more. Their descriptions and schemas cost roughly 13,411 tokens of context every time the server is loaded.

Is the io.github.chrischall/untappd-mcp server still maintained?

io.github.chrischall/untappd-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.chrischall/untappd-mcp server under?

io.github.chrischall/untappd-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.