untappd-mcp 1.3.1 → 1.5.0

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.
@@ -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.3.1"
10
+ "version": "1.5.0"
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.3.1",
18
+ "version": "1.5.0",
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.3.1",
4
+ "version": "1.5.0",
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/README.md CHANGED
@@ -82,18 +82,19 @@ Writes (confirm-gated — return a dry-run preview unless called with
82
82
  `untappd_wishlist_add`, `untappd_wishlist_remove`, `untappd_delete_checkin`,
83
83
  `untappd_add_friend`, `untappd_accept_friend`, `untappd_reject_friend`, `untappd_remove_friend`.
84
84
 
85
- Local check-in cache (stdio/local only — needs a filesystem, so not available on
86
- the remote connector): `untappd_sync_checkins`, `untappd_cache_has_had`,
87
- `untappd_cache_has_had_many`, `untappd_cache_query`.
85
+ Check-in cache: `untappd_sync_checkins`, `untappd_cache_has_had`,
86
+ `untappd_cache_has_had_many`, `untappd_cache_not_had`, `untappd_cache_query`.
88
87
 
89
- ## Local check-in cache
88
+ ## Check-in cache
90
89
 
91
90
  The Untappd API only exposes paged, most-recent-first check-in lists (50 per
92
91
  page) and has **no** "has this user ever had beer X?" lookup — answering that
93
92
  from the API alone means paging an entire history (often 11k+ check-ins) against
94
- a tight ~100-calls/hour rate limit. These tools maintain a local SQLite mirror
95
- of a user's check-ins so the question is answered instantly, offline, with zero
96
- API calls.
93
+ a tight ~100-calls/hour rate limit. These tools maintain a SQLite mirror of a
94
+ user's check-ins so the question is answered instantly, offline, with zero API
95
+ calls. The mirror is a local file on the stdio/desktop server (`node:sqlite`,
96
+ path via `UNTAPPD_CACHE_DB`) and a per-user Durable Object on the remote
97
+ connector — the tools and behaviour are identical either way.
97
98
 
98
99
  **Recommended workflow — sync first, then query:**
99
100
 
@@ -113,6 +114,8 @@ API calls.
113
114
  date, and the matching check-ins.
114
115
  - `untappd_cache_has_had_many` — cross-check a whole list of `bids` in one
115
116
  call (e.g. a venue's menu) → had/not-had per beer.
117
+ - `untappd_cache_not_had` — given a list of `bids`, return just the ones the
118
+ user has **not** had — the "what's new to me on this menu?" filter.
116
119
  - `untappd_cache_query` — filter cached check-ins by brewery, style,
117
120
  `min_rating`, venue, and/or date range, with sorting and a limit.
118
121
 
@@ -126,6 +129,14 @@ Syncing **another** user goes through the same authed endpoint as
126
129
  account is public or your friend. Otherwise the sync returns a clear error
127
130
  telling you to add them as a friend first.
128
131
 
132
+ On the remote connector each logged-in user gets their **own** durable cache
133
+ (keyed by their account), holding only the check-ins their account was allowed
134
+ to fetch — one user can never read another's cache. See
135
+ [`docs/DEPLOY-CONNECTOR.md`](docs/DEPLOY-CONNECTOR.md) for the one-time deploy
136
+ step this adds. `untappd_healthcheck` reports the running version and the exact
137
+ tool set (count + names + a stable hash), so you can confirm which build a
138
+ connector is serving.
139
+
129
140
  ## Development
130
141
 
131
142
  ```sh
package/SKILL.md CHANGED
@@ -46,13 +46,13 @@ Each returns a dry-run preview and makes NO network call unless called with
46
46
 
47
47
  Photo attachment and wishlist add/remove are not yet supported.
48
48
 
49
- ## Local check-in cache (stdio/local only)
49
+ ## Check-in cache
50
50
 
51
51
  The API can't answer "has this user ever had beer X?" without paging their whole
52
- history (50/page, rate-limited). These tools keep a local SQLite mirror so that
53
- question is answered instantly with **no** API calls. `UNTAPPD_CACHE_DB` sets the
54
- db path (default `~/.untappd-mcp/checkins.db`). Not available on the remote
55
- connector (no filesystem).
52
+ history (50/page, rate-limited). These tools keep a SQLite mirror so that
53
+ question is answered instantly with **no** API calls. On the stdio server the
54
+ mirror is a local file (`UNTAPPD_CACHE_DB`, default `~/.untappd-mcp/checkins.db`);
55
+ on the remote connector it's a per-user Durable Object. Same tools either way.
56
56
 
57
57
  **Sync first, then query:**
58
58
 
@@ -68,6 +68,8 @@ connector (no filesystem).
68
68
  case-insensitive `beer_name` substring.
69
69
  - `untappd_cache_has_had_many` — batch had/not-had for a list of `bids` in one
70
70
  call (venue-menu cross-check).
71
+ - `untappd_cache_not_had` — given a list of `bids`, return only the ones the user
72
+ has NOT had ("what's new to me on this menu?").
71
73
  - `untappd_cache_query` — filter cached check-ins by brewery, style, `min_rating`,
72
74
  venue, and date range, with sort + limit.
73
75