untappd-mcp 1.10.0 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/dist/bundle.js +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/skills/untappd-mcp/SKILL.md +89 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "MCP server for Untappd — beers, breweries, venues, check-ins, wishlists, and your friend feed",
|
|
10
|
-
"version": "1.10.
|
|
10
|
+
"version": "1.10.1"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "Untappd",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "MCP server for Untappd — search beers/breweries/venues, read profiles/check-ins/wishlists, and post check-ins, toasts, and comments",
|
|
18
|
-
"version": "1.10.
|
|
18
|
+
"version": "1.10.1",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "untappd-mcp",
|
|
3
3
|
"displayName": "Untappd",
|
|
4
|
-
"version": "1.10.
|
|
4
|
+
"version": "1.10.1",
|
|
5
5
|
"description": "MCP server for Untappd — search beers/breweries/venues, read check-ins and wishlists, and post check-ins, toasts, and comments",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
package/dist/bundle.js
CHANGED
|
@@ -35675,7 +35675,7 @@ function toolAnnotations(opts = {}) {
|
|
|
35675
35675
|
}
|
|
35676
35676
|
|
|
35677
35677
|
// src/version.ts
|
|
35678
|
-
var VERSION = "1.10.
|
|
35678
|
+
var VERSION = "1.10.1";
|
|
35679
35679
|
|
|
35680
35680
|
// src/client.ts
|
|
35681
35681
|
import { dirname, join } from "path";
|
package/dist/version.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
// json's `extra-files`), and `versionSyncTest` guards that it stays equal to
|
|
4
4
|
// package.json. Import VERSION wherever the version is needed rather than
|
|
5
5
|
// re-declaring it.
|
|
6
|
-
export const VERSION = '1.10.
|
|
6
|
+
export const VERSION = '1.10.1'; // x-release-please-version
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "untappd-mcp",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"mcpName": "io.github.chrischall/untappd-mcp",
|
|
5
5
|
"description": "Untappd MCP server for Claude — developed and maintained by AI (Claude Code)",
|
|
6
6
|
"author": "Claude Code (AI) <https://www.anthropic.com/claude>",
|
package/server.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/chrischall/untappd-mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "1.10.
|
|
9
|
+
"version": "1.10.1",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "untappd-mcp",
|
|
14
|
-
"version": "1.10.
|
|
14
|
+
"version": "1.10.1",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
|
@@ -40,6 +40,95 @@ Run `untappd_healthcheck` to confirm login works.
|
|
|
40
40
|
|
|
41
41
|
Most user tools default `username` to your configured account when omitted.
|
|
42
42
|
|
|
43
|
+
## Response shape (`view`)
|
|
44
|
+
|
|
45
|
+
Twelve of this server's 45 tools take `view: "compact" | "full"`, and
|
|
46
|
+
**`compact` is the DEFAULT** — the slim rung is what you get without asking
|
|
47
|
+
for it.
|
|
48
|
+
|
|
49
|
+
**If you were told to pass `compact: true`, that advice is stale.** It used to
|
|
50
|
+
be true: the projection shipped as an opt-in boolean defaulting to `false`,
|
|
51
|
+
and the tool descriptions asked the caller to please turn it on. An efficiency
|
|
52
|
+
you have to request is one that mostly is not requested — and the caller
|
|
53
|
+
paying for the fat record was the one least able to know a slim rung existed.
|
|
54
|
+
So it flipped. The old parameter is gone; it is not declared anywhere, so zod
|
|
55
|
+
drops the unknown key and the call succeeds. You get the compact rung — right
|
|
56
|
+
answer, wrong reason. **The same silence bites the other way**: `compact:
|
|
57
|
+
false` no longer buys you the full record either. It is dropped identically
|
|
58
|
+
and you still get compact. `view: "full"` is the only way back.
|
|
59
|
+
|
|
60
|
+
Compact comes in two tiers here, and they are not the same thing:
|
|
61
|
+
|
|
62
|
+
**A hand-written field projection — 8 tools.**
|
|
63
|
+
|
|
64
|
+
- Check-ins (`untappd_activity_feed`, `untappd_user_checkins`,
|
|
65
|
+
`untappd_beer_activity`, `untappd_venue_activity`,
|
|
66
|
+
`untappd_local_checkins`): each ~5 KB record becomes `{checkin_id,
|
|
67
|
+
created_at, user, rating, comment, beer{bid, name, style, abv}, brewery,
|
|
68
|
+
venue, toasts, comments, has_photo}`. A default page of 25 was upwards of
|
|
69
|
+
100 KB to learn what someone drank.
|
|
70
|
+
- `untappd_search_beer`: each ~1.2 KB match becomes `{bid, name, style, abv,
|
|
71
|
+
ibu, brewery, checkin_count, have_had}` — the long `beer_description` and
|
|
72
|
+
the nested brewery record go.
|
|
73
|
+
- `untappd_user_wishlist`: the same beer core plus `added_at`.
|
|
74
|
+
- `untappd_user_beers`: the same beer core plus `your_count`, `your_rating`,
|
|
75
|
+
`global_rating`, `last_had`.
|
|
76
|
+
|
|
77
|
+
**An upstream request for less — 4 tools.** `untappd_user_info`,
|
|
78
|
+
`untappd_beer_info`, `untappd_brewery_info` and `untappd_venue_info` forward
|
|
79
|
+
`compact=true` to Untappd's own endpoint, which drops the embedded
|
|
80
|
+
activity/list blocks server side. **There is no local projection on these**:
|
|
81
|
+
the entity's own fields are byte-identical on both rungs. What compact saves
|
|
82
|
+
is Untappd's embedded blocks — and the bandwidth, not just the context. Do not
|
|
83
|
+
expect a shorter beer record from `untappd_beer_info`; expect the recent-
|
|
84
|
+
activity block to be absent.
|
|
85
|
+
|
|
86
|
+
The projectors are **drift-safe**. Each keys off a documented container
|
|
87
|
+
(`checkins.items`, `beers.items`); if that array is not where it is expected —
|
|
88
|
+
this is a reverse-engineered API — the projector warns on stderr and returns
|
|
89
|
+
the RAW response rather than an empty or wrong one. A short answer is never
|
|
90
|
+
silently manufactured.
|
|
91
|
+
|
|
92
|
+
`view: "full"` returns Untappd's response untouched. There is deliberately
|
|
93
|
+
**no `raw` rung**: nothing here re-serialises or normalises a payload, so
|
|
94
|
+
`full` already IS the upstream response and a third value would silently alias
|
|
95
|
+
one that exists.
|
|
96
|
+
|
|
97
|
+
### The 33 tools without `view`
|
|
98
|
+
|
|
99
|
+
Each for its own reason — and none of them will tell you it ignored the
|
|
100
|
+
parameter, because an undeclared key is dropped by zod without a warning:
|
|
101
|
+
|
|
102
|
+
- **The 11 confirm-gated writes** (`untappd_checkin`, `untappd_toast`,
|
|
103
|
+
`untappd_add_comment`, the two deletes, the wishlist pair, the four friend
|
|
104
|
+
actions) answer with a dry-run preview or a receipt. Nothing in a receipt is
|
|
105
|
+
decoration.
|
|
106
|
+
- **`untappd_sync_checkins` / `untappd_sync_user_beers`** answer with sync
|
|
107
|
+
PROGRESS — pages walked, `another_run_needed`, `backfill_complete`. Slimming
|
|
108
|
+
a progress report is how you lose the field that says it is not finished.
|
|
109
|
+
- **The five cache tools** (`untappd_cache_has_had`, `…_has_had_many`,
|
|
110
|
+
`…_not_had`, `untappd_cache_query`, `untappd_top_not_had`) answer from the
|
|
111
|
+
local SQLite mirror in a shape this repo already wrote — a verdict plus the
|
|
112
|
+
`freshness` block that says whether a "not found" might be a false negative.
|
|
113
|
+
There is no upstream payload behind them to project away from.
|
|
114
|
+
- **`untappd_checkin_info`** exists to return the FULL record for one check-in
|
|
115
|
+
— photos, badges earned, toasts, comments. The ~5 KB the check-in projection
|
|
116
|
+
removes is exactly what you called this tool to get.
|
|
117
|
+
- **`untappd_venue_menu`** is already its own hand-written projection, with a
|
|
118
|
+
per-call page budget and a resumable `next_section_offset` contract. A
|
|
119
|
+
second projection on top of it would fight the first.
|
|
120
|
+
- **`untappd_resolve`, `untappd_open_url`, `untappd_healthcheck`** return a
|
|
121
|
+
verdict or a diagnostic.
|
|
122
|
+
- **The remaining ten reads** — `untappd_trending`, `untappd_notifications`,
|
|
123
|
+
`untappd_brewery_beers`, `untappd_search_brewery`, `untappd_search_venue`,
|
|
124
|
+
`untappd_user_badges`, `untappd_user_friends`, `untappd_user_venues`,
|
|
125
|
+
`untappd_pending_friends`, `untappd_venue_by_foursquare` — hand back
|
|
126
|
+
Untappd's payload as it arrived. No projector has been written for their
|
|
127
|
+
shapes, so there is no rung to ask for and **no slim option exists**.
|
|
128
|
+
`untappd_brewery_beers` is the one worth budgeting for: it returns a beer
|
|
129
|
+
list, which is the shape the beer projectors handle, but it is not wired to
|
|
130
|
+
one — a 50-beer page arrives as 50 full records.
|
|
131
|
+
|
|
43
132
|
## Write tools (confirm-gated — these post to your public account)
|
|
44
133
|
|
|
45
134
|
Each returns a dry-run preview and makes NO network call unless called with
|