io.github.chrischall/untappd-mcp
NPM · UNTAPPD-MCP
Untappd MCP — search beers/breweries/venues, read check-ins & wishlists, post check-ins
Available components
Last scanned (8 hours ago)
Scores higher than 96% of npm servers
Category Entertainment and Games
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
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
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 →
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 →
untappd_accept_friend Accept an Untappd friend request ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmToken | string | – | 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_uid | integer | yes | The 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 Get Untappd friend 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max check-ins (1–50, default 25) |
| max_id | integer | – | Return check-ins older than this id (for paging) |
| view | string | – | 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 Comment on an Untappd check-in ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_id | integer | yes | Untappd check-in id |
| comment | string | yes | Comment text to post |
| confirmToken | string | – | 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 Send an Untappd friend request ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmToken | string | – | 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_uid | integer | yes | The 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 Get recent check-ins for a beer ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| bid | integer | yes | Untappd beer id (bid) |
| limit | integer | – | Max check-ins (1–50, default 25) |
| max_id | integer | – | Return check-ins older than this id (for paging) |
| view | string | – | 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 Get Untappd beer detail ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| bid | integer | yes | Untappd beer id (bid) |
| view | string | – | 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 Get a brewery's beer list ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| brewery_id | integer | yes | Untappd brewery id |
| limit | integer | – | Max beers (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
| refresh | boolean | – | Re-fetch from Untappd even if a fresh cached list exists (default false) |
| sort | string | – | Sort order (default by popularity) |
| username | string | – | Whose favorites to mark (cache only; default your configured account) |
| view | string | – | 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 Get Untappd brewery detail ~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").
| Name | Type | Req | Description |
|---|---|---|---|
| brewery_id | integer | yes | Untappd brewery id |
| view | string | – | 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 Forget a user's cached check-ins ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| confirmToken | string | – | 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… |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_cache_has_had Check if a user has had a beer (from the cache) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| beer_name | string | – | Case-insensitive substring match on the beer name |
| bid | integer | – | Exact Untappd beer id to look for |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_cache_has_had_many Batch-check many beers against the cache ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| bids | array | yes | Beer ids to check (1–500) |
| mode | string | – | 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. |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| usernames | array | – | 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 Check if a user has been to a venue (from the cache) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_matches | integer | – | Most matched venues listed per query (default 10) |
| queries | array | yes | Places to check (1–50); each needs venue_ids, name, or lat+lng |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_cache_not_had From a list of beers, return the ones a user has 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bids | array | yes | Candidate beer ids to filter (1–500) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_cache_query Query cached check-ins with filters ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| brewery | string | – | Case-insensitive substring match on brewery name |
| brewery_id | integer | – | Exact brewery id |
| date_from | string | – | Only check-ins on/after this date (YYYY-MM-DD, UTC) |
| date_to | string | – | Only check-ins on/before this date (YYYY-MM-DD, UTC) |
| limit | integer | – | Max rows (1–200, default 25) |
| min_rating | number | – | Only check-ins you rated at least this (0–5) |
| sort | string | – | Sort order (default recent first) |
| style | string | – | Case-insensitive substring match on beer style (e.g. "IPA") |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| venue | string | – | Case-insensitive substring match on venue name |
| venue_id | integer | – | Exact venue id |
No output schema declared.
No examples provided.
untappd_cache_status Show the local cache location, schema and per-user coverage ~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 Check in a beer on Untappd ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| bid | integer | yes | Untappd beer id to check in (from untappd_search_beer) |
| confirmToken | string | – | 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_id | integer | – | Optional serving container id (e.g. 1 = draft, 2 = bottle, 3 = can) |
| foursquare_id | string | – | Optional Foursquare venue id to tag the check-in location |
| geolat | number | – | Optional latitude of the check-in |
| geolng | number | – | Optional longitude of the check-in |
| photo_path | string | – | 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… |
| rating | number | – | Rating 0–5 in 0.25 increments (omit for no rating) |
| shout | string | – | Optional shout / comment text for the check-in |
| timezone | string | – | 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 Get Untappd check-in detail ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_id | integer | yes | Untappd check-in id |
No output schema declared.
No examples provided.
untappd_delete_checkin Delete an Untappd check-in ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_id | integer | yes | Untappd check-in id |
| confirmToken | string | – | 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 Delete a comment from an Untappd check-in ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| comment_id | integer | yes | Untappd comment id (from a check-in's comments.items) |
| confirmToken | string | – | 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 Mark a beer, brewery or venue as a favorite (local) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The Untappd bid / brewery_id / venue_id |
| kind | string | yes | What the id is: a beer (bid), brewery (brewery_id) or venue (venue_id) |
| note | string | – | Why it is a favorite (shown as the reason) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_favorite_remove Remove a manual favorite (local) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The Untappd bid / brewery_id / venue_id |
| kind | string | yes | What the id is: a beer (bid), brewery (brewery_id) or venue (venue_id) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_favorites_list List a user's favorite beers, breweries and venues ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Only this kind (default all three) |
| limit | integer | – | Most items per kind (default 50) |
| source | string | – | Only favorites carrying this source |
| thresholds | object | – | Override the derived-favorite thresholds (each optional; omitted ones keep their defaults). |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_healthcheck 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 Get nearby Untappd check-ins ~170
Get recent check-ins near a location (lat/lng) — what people are drinking nearby right now. Optionally widen the search radius. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Latitude of the location |
| limit | integer | – | Max check-ins (1–50, default 25) |
| lng | number | yes | Longitude of the location |
| radius | integer | – | Search radius (default per Untappd) |
| view | string | – | 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 Pick beers off a tap list that a user hasn't had ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| api_budget | integer | – | 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… |
| items | array | yes | Raw menu lines as read from the menu, e.g. ["JACKALOPE FENNARIO IPA $7", "BLACK ABBEY SEASONAL", "ROTATING CIDER"]. |
| refresh_resolutions | boolean | – | Ignore cached line→beer matches and re-search every line (default false). |
| style_filter | string | – | Case-insensitive substring filter on the beer style or parent style for the picks (e.g. "ipa", "stout"). |
| top_n | integer | – | How many picks to return (default 2, max 10). |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| venue_city | string | – | 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 Get your Untappd notifications ~71
Get your Untappd notifications — toasts, comments, friend requests, and badges earned on YOUR account, plus news items. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max notifications (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
No output schema declared.
No examples provided.
untappd_open_url Open an Untappd URL (resolve + fetch) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | An untappd.com URL to resolve and fetch |
No output schema declared.
No examples provided.
untappd_pending_friends Get your pending friend requests ~67
Get the incoming friend requests waiting on YOUR account — the users who have requested to be your friend. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max requests (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
No output schema declared.
No examples provided.
untappd_reject_friend Reject an Untappd friend request ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmToken | string | – | 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_uid | integer | yes | The 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 Remove an Untappd 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmToken | string | – | 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_uid | integer | yes | The 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 Resolve an Untappd URL ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | An untappd.com URL to resolve |
No output schema declared.
No examples provided.
untappd_search_beer Search Untappd beers ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
| query | string | yes | Beer name to search for |
| sort | string | – | Sort order: checkin (relevance, default), name, or count |
| view | string | – | 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 Search Untappd breweries ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
| query | string | yes | Brewery name to search for |
No output schema declared.
No examples provided.
untappd_search_venue Search Untappd venues ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (1–50, default 25) |
| query | string | yes | Venue name to search for |
No output schema declared.
No examples provided.
untappd_sync_brewery_likes Sync a user's liked (followed) breweries into the cache ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_pages | integer | – | Pages (~50 breweries each) to fetch this run (default 10, max 50). |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_sync_checkins Sync a user's check-ins into the cache ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| force_backfill | boolean | – | 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_pages | integer | – | Pages (50 check-ins each) to fetch this run (default 10). Keep modest to respect the ~100 calls/hour rate limit. |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_sync_user_beers Sync a user's complete distinct-beers list into the cache ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_pages | integer | – | Pages (50 beers each) to fetch this run (default 10). Keep modest to respect the ~100 calls/hour rate limit. |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_sync_user_venues Sync a user's complete venue history into the cache ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_pages | integer | – | Pages (25 venues each) to fetch this run (default 10, max 50). Keep modest to respect the ~100 calls/hour rate limit. |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_sync_venue_drinks Fetch what a user drank on their first/latest visit to each venue (opt-in) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_calls | integer | – | checkin/view calls this run (default 10, max 50). Each is one of the ~100 hourly calls. |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| venue_ids | array | – | Only these venues (from untappd_cache_has_visited). Default: every cached venue, most-visited first. |
| which | string | – | 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 Sync a user's wishlist into the cache ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_pages | integer | – | Pages (~25 beers each) to fetch this run (default 10, max 50). |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_toast Toast an Untappd check-in ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_id | integer | yes | Untappd check-in id |
| confirmToken | string | – | 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 Top-rated beers a user has NOT had, from a candidate list ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| api_budget | integer | – | Max beer/info API calls this run for uncached/stale metadata (default 25). Keep modest to respect the ~100 calls/hour rate limit. |
| bids | array | yes | Candidate beer ids (1–100) |
| mode | string | – | 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_favorites | boolean | – | Boost beers on the wishlist (+0.5) or from a favorite brewery (+0.25) when ranking (default true). false ranks by global rating alone. |
| style | string | – | Case-insensitive substring filter; matches EITHER the beer style or its parent style (e.g. "ipa") |
| top_n | integer | – | How many top beers to return (default 2, max 10) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| usernames | array | – | 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 Get trending beers ~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 Check a list of trip stops against a user’s history (cache) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| api_budget | integer | – | Max brewery/beer_list calls for missing or stale lists (default 5; 0 = cache only) |
| include_out_of_production | boolean | – | Also rank beers Untappd marks out of production (default false) |
| max_matches | integer | – | Most matched venues listed per user per stop (default 5) |
| mode | string | – | With usernames: "none_had" (default) lists beers new to everyone; "any_not_had" beers someone still needs |
| near_favorite_radius_m | number | – | Radius for the "near a favorite" hint in metres (default 2000) |
| places | array | yes | The stops (1–25); each needs venue_id, name, lat+lng, or brewery_id |
| prefer_favorites | boolean | – | Boost wishlisted beers (+0.5) and favorite-brewery beers (+0.25) (default true) |
| style | string | – | Case-insensitive substring filter on the beer style (e.g. "ipa") |
| top_n | integer | – | Not-had beers listed per brewery stop (default 4) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| usernames | array | – | Check a GROUP (1–10) instead of one user; use instead of username |
No output schema declared.
No examples provided.
untappd_user_badges Get Untappd user badges ~92
Get the badges a user has earned, most recent first. Omit username for your own account. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max badges (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_user_beers Get Untappd distinct 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max beers (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
| sort | string | – | Sort order (default date, most recent first) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| view | string | – | 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 Get Untappd user check-ins ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max check-ins (1–50, default 25) |
| max_id | integer | – | Return check-ins older than this id (for paging) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| view | string | – | 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 Get Untappd user friends ~86
Get a user's friend list. Omit username for your own account. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max friends (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_user_info Get Untappd user profile ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
| view | string | – | 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 Get venues a user has checked in at ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max venues (1–50; Untappd caps a page at 25) |
| offset | integer | – | Result offset for paging (default 0) |
| sort | string | – | 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… |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
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
claude mcp add chrischall-untappd-mcp -- npx -y untappd-mcp
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.