vibo-mcp 1.7.0 → 1.7.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.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "MCP server for Vibo (vibodj.com) — plan & manage event music, song requests, ideas, guests, and playlists via natural language",
10
- "version": "1.7.0"
10
+ "version": "1.7.1"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "Vibo",
16
16
  "source": "./",
17
17
  "description": "MCP server for Vibo — browse & manage events, timeline, songs, the DJ song ideas/questions, guests, and exports to Spotify/Apple Music",
18
- "version": "1.7.0",
18
+ "version": "1.7.1",
19
19
  "author": {
20
20
  "name": "Chris Hall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vibo-mcp",
3
3
  "displayName": "Vibo",
4
- "version": "1.7.0",
4
+ "version": "1.7.1",
5
5
  "description": "MCP server for Vibo (vibodj.com) — plan & manage event music, song requests, ideas, guests, and playlists via natural language",
6
6
  "author": {
7
7
  "name": "Chris Hall",
package/dist/bundle.js CHANGED
@@ -35790,7 +35790,7 @@ function toolAnnotations(opts = {}) {
35790
35790
  }
35791
35791
 
35792
35792
  // src/version.ts
35793
- var VERSION = "1.7.0";
35793
+ var VERSION = "1.7.1";
35794
35794
 
35795
35795
  // src/client.ts
35796
35796
  import { dirname as dirname2, join as join3 } from "path";
package/dist/version.js CHANGED
@@ -2,4 +2,4 @@
2
2
  // literal on the line carrying the release marker; every manifest and the MCP
3
3
  // server banner import VERSION from here, so there is exactly one place to keep
4
4
  // in sync (and one release-please extra-files entry).
5
- export const VERSION = '1.7.0'; // x-release-please-version
5
+ export const VERSION = '1.7.1'; // x-release-please-version
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibo-mcp",
3
- "version": "1.7.0",
3
+ "version": "1.7.1",
4
4
  "mcpName": "io.github.chrischall/vibo-mcp",
5
5
  "description": "Vibo (vibodj.com) MCP server for Claude — host/couple event music planning & management. 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/vibo-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.7.0",
9
+ "version": "1.7.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "vibo-mcp",
14
- "version": "1.7.0",
14
+ "version": "1.7.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -85,6 +85,66 @@ you get a dry-run preview of exactly what would be sent.
85
85
  - `vibo_mark_notifications_read`.
86
86
  - `vibo_export_event_to_spotify` / `vibo_export_event_to_apple_music`.
87
87
 
88
+ ## Response shape (`view`)
89
+
90
+ Exactly one of this server's 39 tools takes `view: "compact" | "full"` —
91
+ **`vibo_search_songs`** — and on it **`compact` is the DEFAULT**. You get the
92
+ slim rung without asking for it.
93
+
94
+ **Compact here is media stripping, not a field projection.** `src/view.ts`
95
+ writes no field list, because this repo holds no captured Vibo payload to
96
+ derive one from honestly; instead it removes keys whose value is a picture,
97
+ which is subtractive and so cannot drop a field nobody knew about.
98
+
99
+ Why `vibo_search_songs` is the tool that got it: `annotateSearchResults`
100
+ SPREADS Vibo's own song objects (`{ ...song, quality }`), so it is a
101
+ pass-through with a verdict attached rather than a projection — and the search
102
+ query selects `thumbnails { s180x180 original }` per track, so every cover-art
103
+ URL in the catalog was coming straight back to the caller. Compact removes
104
+ those.
105
+
106
+ What compact does **not** touch on that tool is the point of the tool:
107
+ `songUrl`, the `links` block (`spotify` / `youtube` / `appleMusic`) and the
108
+ `quality` verdict all survive. A streaming link is this server's product, not
109
+ decoration — `vibo_add_song_to_section` cannot add anything without `songUrl`,
110
+ and the quality verdict is computed from how many services carry a track. A
111
+ `null` link survives too: an absent key and a null one are the same to
112
+ `JSON.parse` but not to a reader deciding whether a service was checked.
113
+
114
+ `view: "full"` returns Vibo's payload untouched, cover art included. There is
115
+ deliberately **no `raw` rung**: nothing here re-serialises or normalises the
116
+ GraphQL response, so `full` already IS the upstream payload and a third value
117
+ would silently alias one that exists.
118
+
119
+ ### The other 38 tools have no `view` — and one group of them matters
120
+
121
+ - **The 24 mutating tools** (every confirm-gated write, plus
122
+ `vibo_capture_session`) answer with a dry-run preview or a receipt — an id,
123
+ a count, a status. Nothing in a receipt is decoration, and slimming one is
124
+ how you lose the field that says what actually happened.
125
+ - **`vibo_healthcheck`** answers with a connectivity/auth diagnostic, for the
126
+ same reason.
127
+ - **The 13 remaining reads hand back Vibo's GraphQL payload as it arrived.**
128
+ No rung is declared on them, so there is no slim option to ask for — and a
129
+ `view` passed anyway is dropped by zod without a warning, so a successful
130
+ call is not evidence the rung was honoured.
131
+
132
+ That last group is not a neutral fact, so budget for it. **Five of those reads
133
+ select media fields from Vibo and return them in full:**
134
+
135
+ | Tool | What arrives per record |
136
+ | --- | --- |
137
+ | `vibo_get_section_songs` | `thumbnails { s180x180 original }` per song |
138
+ | `vibo_list_song_ideas_songs` | `thumbnails { s180x180 original }` per song |
139
+ | `vibo_list_event_users` | `imageUrl` per person |
140
+ | `vibo_list_notifications` | `imageUrl` per notification |
141
+ | `vibo_get_me` | `imageUrl` |
142
+
143
+ `vibo_get_section_songs` is the one to watch: it returns the same catalog's
144
+ song records that `vibo_search_songs` returns, carrying the same per-track
145
+ cover art — but with no rung to drop it. Page it with `limit` rather than
146
+ reaching for a `view` that is not there.
147
+
88
148
  ## Typical flow
89
149
 
90
150
  1. `vibo_list_events` → pick an event id.