untappd-mcp 2.5.2 → 2.6.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 +273 -146
- package/dist/tools/beer.js +4 -0
- package/dist/tools/brewery.js +4 -0
- package/dist/tools/cache.js +15 -0
- package/dist/tools/checkin.js +6 -0
- package/dist/tools/discover.js +4 -0
- package/dist/tools/favorites.js +4 -0
- package/dist/tools/feed.js +18 -2
- package/dist/tools/friends.js +6 -0
- package/dist/tools/hints.js +70 -0
- package/dist/tools/menu.js +3 -0
- package/dist/tools/resolve.js +3 -0
- package/dist/tools/trip.js +2 -0
- package/dist/tools/user.js +9 -0
- package/dist/tools/venue.js +6 -0
- package/dist/tools/wishlist.js +3 -0
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/skills/untappd-mcp/SKILL.md +32 -0
package/dist/tools/wishlist.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { foodMeta } from './hints.js';
|
|
2
3
|
import { confirmTokenParam, minifiedResult, toolAnnotations } from '@chrischall/mcp-utils';
|
|
3
4
|
import { CONFIRM_FLOW, confirmWrite } from './confirm.js';
|
|
4
5
|
const BidSchema = z.number().int().positive().describe('Untappd beer id (bid) — from untappd_search_beer');
|
|
@@ -7,6 +8,7 @@ export function registerWishlistTools(server, client) {
|
|
|
7
8
|
title: 'Add a beer to your wishlist',
|
|
8
9
|
description: `Add a beer to YOUR Untappd wishlist by its bid. Writes to your account. ${CONFIRM_FLOW}`,
|
|
9
10
|
annotations: toolAnnotations({ title: 'Add a beer to your wishlist', readOnly: false, idempotent: true, openWorld: true, destructive: false }),
|
|
11
|
+
_meta: foodMeta('change', { aliases: ['want to try', 'save a beer'] }),
|
|
10
12
|
inputSchema: z.object({
|
|
11
13
|
bid: BidSchema,
|
|
12
14
|
confirmToken: confirmTokenParam,
|
|
@@ -33,6 +35,7 @@ export function registerWishlistTools(server, client) {
|
|
|
33
35
|
title: 'Remove a beer from your wishlist',
|
|
34
36
|
description: `Remove a beer from YOUR Untappd wishlist by its bid. Writes to your account. ${CONFIRM_FLOW}`,
|
|
35
37
|
annotations: toolAnnotations({ title: 'Remove a beer from your wishlist', readOnly: false, idempotent: true, openWorld: true, destructive: false }),
|
|
38
|
+
_meta: foodMeta('change'),
|
|
36
39
|
inputSchema: z.object({
|
|
37
40
|
bid: BidSchema,
|
|
38
41
|
confirmToken: confirmTokenParam,
|
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 = '2.
|
|
6
|
+
export const VERSION = '2.6.1'; // x-release-please-version
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "untappd-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.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": "2.
|
|
9
|
+
"version": "2.6.1",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "untappd-mcp",
|
|
14
|
-
"version": "2.
|
|
14
|
+
"version": "2.6.1",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
|
@@ -73,6 +73,16 @@ answer, wrong reason. **The same silence bites the other way**: `compact:
|
|
|
73
73
|
false` no longer buys you the full record either. It is dropped identically
|
|
74
74
|
and you still get compact. `view: "full"` is the only way back.
|
|
75
75
|
|
|
76
|
+
`untappd_activity_feed` also takes a third rung, `view: "brief"`: one line per
|
|
77
|
+
check-in, `<user>: <beer> (<brewery>) at <venue> — <ISO date | no date> —
|
|
78
|
+
<rated N | not rated>`, each at most 120 characters, answered inside the
|
|
79
|
+
untrusted-data envelope as `data: string[]` (the names are other Untappd
|
|
80
|
+
users'). A line starting `-- ` is a note, not a check-in: `-- none` for an
|
|
81
|
+
empty feed, `-- more` when an older page exists; a name that itself starts
|
|
82
|
+
with `-- ` or `\` is escaped with one leading `\`. It is the shape a
|
|
83
|
+
context-group host reads aloud (below); use it when you only need to say what
|
|
84
|
+
friends have been drinking.
|
|
85
|
+
|
|
76
86
|
Compact comes in two tiers here, and they are not the same thing:
|
|
77
87
|
|
|
78
88
|
**A hand-written field projection — 9 tools.**
|
|
@@ -245,3 +255,25 @@ owner-only (dir `0700`, file `0600`).
|
|
|
245
255
|
Every cache read returns a `freshness` block reporting each source's completeness
|
|
246
256
|
separately (plus `coverage_complete` and a `caveat` when incomplete), so you can
|
|
247
257
|
flag a "not found" as possibly a false negative until the relevant sync finishes.
|
|
258
|
+
|
|
259
|
+
## In context groups
|
|
260
|
+
|
|
261
|
+
On an mcp-host connector this server is a member of the **food** group (every
|
|
262
|
+
tool but `untappd_healthcheck` carries a `_meta.mint` hint with
|
|
263
|
+
`domain: "food"`). Its one canonical read is **`untappd_activity_feed`** for
|
|
264
|
+
**what's new** — the friend feed, answered with `view: "brief"`. It takes no
|
|
265
|
+
subject and no date range: Untappd has no listable set of the person's own
|
|
266
|
+
subjects (no children, properties or accounts to fan out over), so the group
|
|
267
|
+
asks it once, not once per person. Nothing here answers what's due or what's
|
|
268
|
+
on; every other read is a `lookup` (`untappd_notifications` is a non-canonical
|
|
269
|
+
what's-new), and the writes are `send` (toast, comment, friend request),
|
|
270
|
+
`change` (check-in, deletes, wishlist, favourites, friend accept/reject/remove)
|
|
271
|
+
or `other` (the cache syncs and the pickers, which refresh the local cache as
|
|
272
|
+
they read).
|
|
273
|
+
|
|
274
|
+
A compound ask looks like *"what's new with food — any new reservations, and
|
|
275
|
+
what have my friends been drinking?"*: the host answers the Untappd half from
|
|
276
|
+
the feed's brief lines beside the group's other members. This server calls the
|
|
277
|
+
Untappd API directly, so it never answers "needs your browser open"; if it is
|
|
278
|
+
not configured, the group reports it as unable to answer and
|
|
279
|
+
`untappd_healthcheck` says which credential is missing.
|