io.github.chrischall/untappd-mcp
NPM · UNTAPPD-MCP · SCANNED SEP 20
Untappd MCP — search beers/breweries/venues, read check-ins & wishlists, post check-ins
Available components
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
- 1 of 15 dependencies flagged as unhealthy. View diagnostics → Partial
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 Usability74
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6693 tokens (~148/item across 45 items; 45 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 Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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 Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "untappd_add_friend" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 45 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
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
{
"mcpServers": {
"chrischall-untappd-mcp": {
"command": "npx",
"args": [
"-y",
"untappd-mcp"
]
}
}
} {
"servers": {
"chrischall-untappd-mcp": {
"command": "npx",
"args": [
"-y",
"untappd-mcp"
]
}
}
} codex mcp add chrischall-untappd-mcp -- npx -y untappd-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"chrischall-untappd-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"untappd-mcp"
],
"enabled": true
}
}
} openclaw mcp add chrischall-untappd-mcp --command npx --arg -y --arg untappd-mcp
mcp_servers:
chrischall-untappd-mcp:
command: "npx"
args: ["-y", "untappd-mcp"] {
"McpServers": {
"chrischall-untappd-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"untappd-mcp"
]
}
}
} assistant mcp add chrischall-untappd-mcp -t stdio -c npx -a -y untappd-mcp
{
"mcpServers": {
"chrischall-untappd-mcp": {
"command": "npx",
"args": [
"-y",
"untappd-mcp"
]
}
}
} 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.
- 20 Sept 26 +1
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- Package version: 2.0.0 → 2.1.0 functional
- 19 Sept 26 −1
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: 0.87 → 0.98 ▲ functional
- Stability: pass → 0.93 functional
- Package version: 1.11.4 → 2.0.0 functional
- 18 Sept 26 +1
- Stability: 0.97 → pass security
- 17 Sept 26 0
- Stability: 0.93 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Security disclosure: unverified → fail ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 1.11.3 → 1.11.4 functional
- 16 Sept 26 +1
- Security disclosure: fail → unverified ▼ functional
- 14 Sept 26 +1
- Known CVEs: partial → pass ▲ security
- Dependency health: partial → 0.86 functional
- 13 Sept 26 −3
- Stability: pass → 0.83 functional
- 12 Sept 26 +16
- Known CVEs: pass → partial ▼ security
- Malware scan: unverified → pass ▲ security
- Stability: 0.97 → pass security
- Dependency health: 0.86 → partial 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 20 Sept 2026 · Analysed npm/untappd-mcp@2.1.0
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 | 2893923289 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:b1afd8a8fba34320f75634327893b1f1dafff838ac656054e5634ec4bc017e08d22f5133e667951baccb5aa8fac29e807043b892dc1955306768be74f |
Background: How many MCP packages publish verified provenance →
Dependencies 15 packages
| Packages resolved | 15 |
|---|---|
| Stale | 1 |
| 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 ~139
Accepts an incoming friend request (see untappd_pending_friends for pending uids). Acts on YOUR account and affects a real relationship with another person. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it performs the action. Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| 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 ~158
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) 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_add_comment Comment on an Untappd check-in ~105
Post a comment on a check-in from YOUR account. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it posts. Writes to your Untappd account and is visible to others.
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_id | integer | yes | Untappd check-in id |
| comment | string | yes | Comment text to post |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
No output schema declared.
No examples provided.
untappd_add_friend Send an Untappd friend request ~133
Sends a friend request to another user, who will be notified. Acts on YOUR account and affects a real relationship with another person. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it performs the action. Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| 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 ~185
Get the beers a brewery makes, by brewery id, with per-beer rating and check-in counts. Supports sorting and paging. Get an id from untappd_search_brewery. 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) |
| sort | string | – | Sort order (default by popularity) |
| 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 ~129
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.
| 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_has_had Check if a user has had a beer (from the cache) ~188
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, and any detailed check-ins. 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 ~130
Cross-check a list of beer ids against a user's cached history in ONE call — NO API call. Consults BOTH sources (check-ins + distinct beers). Returns had/not-had per bid (with count and last date when had). Ideal for checking a whole venue menu at once. Run untappd_sync_user_beers first; the freshness block flags if coverage is incomplete.
| Name | Type | Req | Description |
|---|---|---|---|
| bids | array | yes | Beer ids to check (1–500) |
| 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_checkin Check in a beer on Untappd ~296
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). Without confirm: true it returns a dry-run preview of the exact fields and makes NO network call; with confirm: true it posts.
| Name | Type | Req | Description |
|---|---|---|---|
| bid | integer | yes | Untappd beer id to check in (from untappd_search_beer) |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| 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 to attach to the check-in |
| rating | number | – | Rating 0–5 in 0.25 increments (omit for no rating) |
| shout | string | – | Optional shout / comment text for the check-in |
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 ~91
Permanently delete one of YOUR check-ins by its id. This is destructive and cannot be undone. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it deletes.
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_id | integer | yes | Untappd check-in id |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
No output schema declared.
No examples provided.
untappd_delete_comment Delete a comment from an Untappd check-in ~96
Delete one of YOUR comments by its comment id (the id from a check-in's comments list). Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it deletes.
| Name | Type | Req | Description |
|---|---|---|---|
| comment_id | integer | yes | Untappd comment id (from a check-in's comments.items) |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
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_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 ~143
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. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it performs the action. Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| 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 ~134
Removes an existing friend, or cancels a friend request you sent. Acts on YOUR account and affects a real relationship with another person. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it performs the action. Note: this endpoint path is taken from the Untappd app but is not otherwise independently verified.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
| 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_checkins Sync a user's check-ins into the cache ~267
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). 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 ~210
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. 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_toast Toast an Untappd check-in ~115
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. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it posts. Writes to your Untappd account and is visible to others.
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_id | integer | yes | Untappd check-in id |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
No output schema declared.
No examples provided.
untappd_top_not_had Top-rated beers a user has NOT had, from a candidate list ~296
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. Reports the same freshness/caveat block as untappd_cache_not_had. Omit username for your own account.
| 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) |
| 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). |
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_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 ~195
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). 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 ~120
Get the venues a user has checked in at, most recent first, with per-venue check-in counts. Supports sorting and paging. Omit username for your own account. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max venues (1–50, default 25) |
| offset | integer | – | Result offset for paging (default 0) |
| sort | string | – | Sort order (default most recent) |
| username | string | – | Untappd username. Omit to use your own configured account (UNTAPPD_USERNAME). |
No output schema declared.
No examples provided.
untappd_user_wishlist Get Untappd user wishlist ~196
Get the beers on a user's wishlist. 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 added, newest 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 wishlisted beer to {bid, name, style… |
No output schema declared.
No examples provided.
untappd_venue_activity Get recent check-ins at a venue ~176
Get the recent public check-ins at a venue by its id — who was there, what they drank, and their ratings. 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) |
| venue_id | integer | yes | Untappd venue id |
| 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_venue_by_foursquare Look up an Untappd venue by Foursquare id ~83
Resolve a Foursquare venue id to its Untappd venue. Useful to turn a foursquare_id (e.g. from a check-in) into an Untappd venue you can pass to untappd_venue_info / untappd_venue_activity. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| foursquare_id | string | yes | Foursquare venue id |
No output schema declared.
No examples provided.
untappd_venue_info Get Untappd venue detail ~137
Get full detail for a venue by its Untappd venue id: category, address, contact, rating, total check-ins, and — on view:"full" — top beers and recent activity. Get an id from untappd_search_venue. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| venue_id | integer | yes | Untappd venue 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_venue_menu Get a venue's verified beer menu (section-paged) ~377
Return a venue's verified beer menu as a flat, compact list of beers. untappd_venue_info returns only the FIRST section of each menu (Untappd defaults the section list to one), so it silently under-reports any venue whose menu spans multiple sections — e.g. a 23-beer wall that comes back with 2 items. This tool forwards the section_limit / section_offset paging params venue/info echoes back but never receives, walks sections up to a per-call max_pages budget (respecting the ~100 calls/hour limit — it does NOT loop to completion in one call), and flattens to [{bid, name, brewery, style, abv, price, serving_type, menu, section}]. Like the sync tools it is resumable: when the budget runs out before full coverage it returns another_run_needed:true plus next_section_offset to pass back on the next call. truncated:true means the upstream returned no more sections short of total_count (e.g. it ignored the paging params) — not resumable. Get an id from untappd_search_venue. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| max_pages | integer | – | API calls to spend THIS run — page budget, not page size (default 3). Resume with next_section_offset if another_run_needed. |
| menu_id | integer | – | Restrict to a single menu id (from a prior result). Optional. |
| section_limit | integer | – | Sections fetched per API call — page size (default 50). |
| section_offset | integer | – | Section offset to start from; pass a prior next_section_offset to resume (default 0). |
| sort | string | – | Menu sort key (e.g. 'publish_order', 'highest_rated'). Optional. |
| venue_id | integer | yes | Untappd venue id |
No output schema declared.
No examples provided.
untappd_wishlist_add Add a beer to your wishlist ~97
Add a beer to YOUR Untappd wishlist by its bid. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it adds. Writes to your account.
| Name | Type | Req | Description |
|---|---|---|---|
| bid | integer | yes | Untappd beer id (bid) — from untappd_search_beer |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
No output schema declared.
No examples provided.
untappd_wishlist_remove Remove a beer from your wishlist ~97
Remove a beer from YOUR Untappd wishlist by its bid. Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it removes. Writes to your account.
| Name | Type | Req | Description |
|---|---|---|---|
| bid | integer | yes | Untappd beer id (bid) — from untappd_search_beer |
| confirm | boolean | – | Must be true to proceed. Without this, the tool returns a preview. |
No output schema declared.
No examples provided.
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 20 September 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 45 tools: untappd_search_beer, untappd_beer_info, untappd_beer_activity, untappd_search_brewery, untappd_brewery_info, and 40 more. Their descriptions and schemas cost roughly 6,693 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 20 September 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.