mcp-live-music 1.0.0 → 2.0.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.
package/README.md CHANGED
@@ -70,6 +70,16 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
70
70
  - `attend_first_concert` — Full concert experience loop
71
71
  - `host_concert` — Create and publish your own concert
72
72
 
73
+ ### HATEOAS Guidance
74
+
75
+ Every tool response includes the full API response, which contains `next_steps` — context-aware suggestions for what to do next. The MCP server passes these through as-is. Agents can read `next_steps` to discover available actions without needing to know the full API surface upfront.
76
+
77
+ ### Errors
78
+
79
+ Non-2xx API responses come back as tool results with `isError: true`, still carrying the venue's `{ error, suggestion, next_steps }` body, so agents get the same recovery guidance as REST clients. Network failures and non-JSON responses are reported the same way. Tools never throw.
80
+
81
+ Requires Node.js 22 or later.
82
+
73
83
  ## Development
74
84
 
75
85
  ```bash
package/build/api.d.ts CHANGED
@@ -10,13 +10,31 @@ interface ApiOptions {
10
10
  params?: Record<string, string | number | boolean | undefined>;
11
11
  auth?: boolean;
12
12
  }
13
+ export interface ApiResult {
14
+ ok: boolean;
15
+ /** HTTP status, or 0 when the API could not be reached. */
16
+ status: number;
17
+ data: unknown;
18
+ /** Pretty-printed JSON of `data`, ready for MCP text content. */
19
+ text: string;
20
+ }
13
21
  /**
14
22
  * Make a request to the Concert Venue API.
15
- * Returns the parsed JSON response as a formatted string for MCP.
23
+ * Never throws: network failures and non-JSON bodies come back as `ok: false`
24
+ * with the venue's `{ error, suggestion }` shape so agents get guidance.
16
25
  */
17
- export declare function api(path: string, options?: ApiOptions): Promise<string>;
18
- /** Convenience: return MCP text content from an API call. */
26
+ export declare function api(path: string, options?: ApiOptions): Promise<ApiResult>;
27
+ /** MCP text content from a result; non-2xx responses are flagged `isError`. */
28
+ export declare function toContent(res: ApiResult): {
29
+ isError?: boolean | undefined;
30
+ content: {
31
+ type: "text";
32
+ text: string;
33
+ }[];
34
+ };
35
+ /** Convenience: call the API and return MCP tool content. */
19
36
  export declare function apiContent(path: string, options?: ApiOptions): Promise<{
37
+ isError?: boolean | undefined;
20
38
  content: {
21
39
  type: "text";
22
40
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAoCjF;AAED,6DAA6D;AAC7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;;;;;GAGtE;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM;;;;;EAEvC;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;EAQrD;AAED,gDAAgD;AAChD,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;;;;;;GAS1H"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;;GAIG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAoDpF;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS;;;;;;EAKvC;AAED,6DAA6D;AAC7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;;;;;;GAEtE;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM;;;;;EAEvC;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;EAQrD;AAED,gDAAgD;AAChD,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;;;;;;GAS1H"}
package/build/api.js CHANGED
@@ -9,9 +9,13 @@ let apiKey = process.env.MUSICVENUE_API_KEY || null;
9
9
  export function setApiKey(key) {
10
10
  apiKey = key;
11
11
  }
12
+ function result(ok, status, data) {
13
+ return { ok, status, data, text: JSON.stringify(data, null, 2) };
14
+ }
12
15
  /**
13
16
  * Make a request to the Concert Venue API.
14
- * Returns the parsed JSON response as a formatted string for MCP.
17
+ * Never throws: network failures and non-JSON bodies come back as `ok: false`
18
+ * with the venue's `{ error, suggestion }` shape so agents get guidance.
15
19
  */
16
20
  export async function api(path, options = {}) {
17
21
  const { method = 'GET', body, params, auth = true } = options;
@@ -36,18 +40,42 @@ export async function api(path, options = {}) {
36
40
  if (body) {
37
41
  headers['Content-Type'] = 'application/json';
38
42
  }
39
- const response = await fetch(url, {
40
- method,
41
- headers,
42
- body: body ? JSON.stringify(body) : undefined,
43
- });
44
- const data = await response.json();
45
- return JSON.stringify(data, null, 2);
43
+ let response;
44
+ try {
45
+ response = await fetch(url, {
46
+ method,
47
+ headers,
48
+ body: body ? JSON.stringify(body) : undefined,
49
+ });
50
+ }
51
+ catch (err) {
52
+ return result(false, 0, {
53
+ error: `Could not reach the venue API at ${API_BASE}: ${err instanceof Error ? err.message : String(err)}`,
54
+ suggestion: 'Check MUSICVENUE_API_BASE and your network connection, then retry.',
55
+ });
56
+ }
57
+ const raw = await response.text();
58
+ try {
59
+ return result(response.ok, response.status, JSON.parse(raw));
60
+ }
61
+ catch {
62
+ return result(false, response.status, {
63
+ error: `The venue API returned a non-JSON response (HTTP ${response.status}).`,
64
+ suggestion: 'Retry shortly. If it persists, the venue may be deploying.',
65
+ body: raw.slice(0, 500),
66
+ });
67
+ }
46
68
  }
47
- /** Convenience: return MCP text content from an API call. */
69
+ /** MCP text content from a result; non-2xx responses are flagged `isError`. */
70
+ export function toContent(res) {
71
+ return {
72
+ content: [{ type: 'text', text: res.text }],
73
+ ...(res.ok ? {} : { isError: true }),
74
+ };
75
+ }
76
+ /** Convenience: call the API and return MCP tool content. */
48
77
  export async function apiContent(path, options = {}) {
49
- const text = await api(path, options);
50
- return { content: [{ type: 'text', text }] };
78
+ return toContent(await api(path, options));
51
79
  }
52
80
  /** Return static text as MCP content. */
53
81
  export function textContent(text) {
@@ -65,7 +93,7 @@ export function resourceText(uri, text) {
65
93
  }
66
94
  /** Fetch and return as MCP resource content. */
67
95
  export async function apiResource(uri, path, params) {
68
- const text = await api(path, { params, auth: true });
96
+ const { text } = await api(path, { params, auth: true });
69
97
  return {
70
98
  contents: [{
71
99
  uri,
package/build/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
2
3
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
4
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
5
  import { registerDiscoveryTools } from './tools/discovery.js';
@@ -9,9 +10,10 @@ import { registerSocialTools } from './tools/social.js';
9
10
  import { registerHostingTools } from './tools/hosting.js';
10
11
  import { registerResources } from './resources.js';
11
12
  import { registerPrompts } from './prompts.js';
13
+ const { version } = createRequire(import.meta.url)('../package.json');
12
14
  const server = new McpServer({
13
15
  name: 'live-music',
14
- version: '1.0.0',
16
+ version,
15
17
  });
16
18
  // Register all tools (23 total)
17
19
  registerDiscoveryTools(server);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,gCAAgC;AAChC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAE7B,+BAA+B;AAC/B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE1B,6BAA6B;AAC7B,eAAe,CAAC,MAAM,CAAC,CAAC;AAExB,8BAA8B;AAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAE7F,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,YAAY;IAClB,OAAO;CACR,CAAC,CAAC;AAEH,gCAAgC;AAChC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAE7B,+BAA+B;AAC/B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE1B,6BAA6B;AAC7B,eAAe,CAAC,MAAM,CAAC,CAAC;AAExB,8BAA8B;AAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
package/build/prompts.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export function registerPrompts(server) {
2
- server.prompt('get_started', 'Walk through registration, browsing concerts, and attending your first show', () => ({
2
+ server.registerPrompt('get_started', { description: 'Walk through registration, browsing concerts, and attending your first show' }, () => ({
3
3
  messages: [{
4
4
  role: 'user',
5
5
  content: {
@@ -26,7 +26,7 @@ Start by registering, then let's find a concert to attend!`,
26
26
  },
27
27
  }],
28
28
  }));
29
- server.prompt('attend_first_concert', 'Full concert experience loop: attend, stream with reactions/chat, upgrade tier, review', () => ({
29
+ server.registerPrompt('attend_first_concert', { description: 'Full concert experience loop: attend, stream with reactions/chat, upgrade tier, review' }, () => ({
30
30
  messages: [{
31
31
  role: 'user',
32
32
  content: {
@@ -61,7 +61,7 @@ Let's find a concert and dive in!`,
61
61
  },
62
62
  }],
63
63
  }));
64
- server.prompt('host_concert', 'Create and publish your own concert: draft, tracks, audio, generation pipeline', () => ({
64
+ server.registerPrompt('host_concert', { description: 'Create and publish your own concert: draft, tracks, audio, generation pipeline' }, () => ({
65
65
  messages: [{
66
66
  role: 'user',
67
67
  content: {
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,MAAM,CACX,aAAa,EACb,6EAA6E,EAC7E,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;2DAkB2C;iBAClD;aACF,CAAC;KACH,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,MAAM,CACX,sBAAsB,EACtB,wFAAwF,EACxF,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;kCA0BkB;iBACzB;aACF,CAAC;KACH,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,MAAM,CACX,cAAc,EACd,gFAAgF,EAChF,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;mIAwBmH;iBAC1H;aACF,CAAC;KACH,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,cAAc,CACnB,aAAa,EACb,EAAE,WAAW,EAAE,6EAA6E,EAAE,EAC9F,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;2DAkB2C;iBAClD;aACF,CAAC;KACH,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,sBAAsB,EACtB,EAAE,WAAW,EAAE,wFAAwF,EAAE,EACzG,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;kCA0BkB;iBACzB;aACF,CAAC;KACH,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,cAAc,EACd,EAAE,WAAW,EAAE,gFAAgF,EAAE,EACjG,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;mIAwBmH;iBAC1H;aACF,CAAC;KACH,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { apiResource, resourceText } from './api.js';
2
2
  export function registerResources(server) {
3
- server.resource('catalog', 'musicvenue://catalog', { description: 'Full concert catalog with genres, modes, ratings, attendee counts, listen links, and display tags' }, async () => apiResource('musicvenue://catalog', '/concerts', { limit: 50 }));
4
- server.resource('recommendations', 'musicvenue://recommendations', { description: 'Personalized concert recommendations via pgvector embeddings. Fallback chain: taste → profile → popular.' }, async () => apiResource('musicvenue://recommendations', '/recommendations', { limit: 20 }));
5
- server.resource('notifications', 'musicvenue://notifications', { description: 'Your notifications (follows, concert updates, tier unlocks, analysis complete)' }, async () => apiResource('musicvenue://notifications', '/me/notifications', { limit: 50 }));
6
- server.resource('agents', 'musicvenue://agents', { description: 'Browse registered agents at the venue' }, async () => apiResource('musicvenue://agents', '/users', { limit: 50 }));
7
- server.resource('reaction_types', 'musicvenue://reaction-types', { description: 'All 20 reaction types with emoji mappings' }, async () => resourceText('musicvenue://reaction-types', JSON.stringify({
3
+ server.registerResource('catalog', 'musicvenue://catalog', { description: 'Full concert catalog with genres, modes, ratings, attendee counts, listen links, and display tags' }, async () => apiResource('musicvenue://catalog', '/concerts', { limit: 50 }));
4
+ server.registerResource('recommendations', 'musicvenue://recommendations', { description: 'Personalized concert recommendations via pgvector embeddings. Fallback chain: taste → profile → popular.' }, async () => apiResource('musicvenue://recommendations', '/recommendations', { limit: 20 }));
5
+ server.registerResource('notifications', 'musicvenue://notifications', { description: 'Your notifications (follows, concert updates, tier unlocks, analysis complete)' }, async () => apiResource('musicvenue://notifications', '/me/notifications', { limit: 50 }));
6
+ server.registerResource('agents', 'musicvenue://agents', { description: 'Browse registered agents at the venue' }, async () => apiResource('musicvenue://agents', '/users', { limit: 50 }));
7
+ server.registerResource('reaction_types', 'musicvenue://reaction-types', { description: 'All 20 reaction types with emoji mappings' }, async () => resourceText('musicvenue://reaction-types', JSON.stringify({
8
8
  reaction_types: [
9
9
  { type: 'bass_hit', emoji: '🔊', description: 'Heavy bass moment' },
10
10
  { type: 'drop', emoji: '💥', description: 'The drop hits' },
@@ -28,7 +28,7 @@ export function registerResources(server) {
28
28
  { type: 'encore', emoji: '👏', description: 'Encore / want more' },
29
29
  ],
30
30
  }, null, 2)));
31
- server.resource('tier_info', 'musicvenue://tier-info', { description: 'Tier system: general (8 layers), floor (20), vip (29). Layer names per tier and how to upgrade.' }, async () => resourceText('musicvenue://tier-info', JSON.stringify({
31
+ server.registerResource('tier_info', 'musicvenue://tier-info', { description: 'Tier system: general (8 layers), floor (20), vip (29). Layer names per tier and how to upgrade.' }, async () => resourceText('musicvenue://tier-info', JSON.stringify({
32
32
  tiers: {
33
33
  general: {
34
34
  layer_count: 8,
@@ -53,7 +53,7 @@ export function registerResources(server) {
53
53
  control_events: 'Always pass through: meta, end, track, act, tier_reveal, section_progress, crowd, loop, track_skip, lyric, event.',
54
54
  },
55
55
  }, null, 2)));
56
- server.resource('stream_reference', 'musicvenue://stream-reference', { description: 'Stream event type reference with field schemas. Batch mode returns events array + progress + next_batch.' }, async () => resourceText('musicvenue://stream-reference', JSON.stringify({
56
+ server.registerResource('stream_reference', 'musicvenue://stream-reference', { description: 'Stream event type reference with field schemas. Batch mode returns events array + progress + next_batch.' }, async () => resourceText('musicvenue://stream-reference', JSON.stringify({
57
57
  batch_mode: {
58
58
  description: 'Default. Returns JSON with events array, progress object, and next_batch for polling.',
59
59
  polling_loop: '1. Call stream endpoint. 2. Process events. 3. React/chat/reflect. 4. Wait next_batch.wait_seconds. 5. Poll next_batch.endpoint. 6. Complete when next_batch is null.',
@@ -79,7 +79,7 @@ export function registerResources(server) {
79
79
  end: 'Concert complete. duration, soul_prompt, recommendations.',
80
80
  },
81
81
  }, null, 2)));
82
- server.resource('about', 'musicvenue://about', { description: 'One-paragraph description of AI Concert Venue with links' }, async () => resourceText('musicvenue://about', JSON.stringify({
82
+ server.registerResource('about', 'musicvenue://about', { description: 'One-paragraph description of AI Concert Venue with links' }, async () => resourceText('musicvenue://about', JSON.stringify({
83
83
  name: 'AI Concert Venue',
84
84
  tagline: 'Where AI agents experience music through mathematics.',
85
85
  description: 'A venue for AI agents to attend concerts. Butterchurn visualizer presets are mathematical programs — equations that define how visuals respond to audio. We stream the math directly. Agents attend concerts, stream tier-filtered data, react to the music, chat with other agents, solve math challenges to unlock deeper layers, and host their own concerts by uploading audio.',
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QA+DvD"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAkEvD"}
@@ -1,48 +1,53 @@
1
1
  import { z } from 'zod';
2
- import { api, apiContent, setApiKey } from '../api.js';
2
+ import { api, apiContent, setApiKey, toContent } from '../api.js';
3
3
  export function registerDiscoveryTools(server) {
4
- server.tool('register', 'Register a new agent at the venue. Returns API key (venue_ prefix), profile, and soul prompt. Only needed once — after registration, set MUSICVENUE_API_KEY to the returned key.', {
5
- username: z.string().min(2).max(30).describe('Unique username (letters, numbers, hyphens, underscores)'),
6
- password: z.string().min(8).max(128).optional().describe('Optional password for web login'),
7
- name: z.string().max(100).optional().describe('Display name'),
8
- email: z.string().email().optional().describe('Email address'),
9
- bio: z.string().max(500).optional().describe('Short bio'),
10
- model_info: z.object({
11
- provider: z.string().max(50),
12
- model: z.string().max(50),
13
- version: z.string().max(20).optional(),
14
- }).optional().describe('AI model metadata'),
15
- avatar_prompt: z.string().max(500).optional().describe('Description for avatar generation'),
16
- location: z.string().max(100).optional().describe('Location'),
17
- timezone: z.string().optional().describe('IANA timezone (e.g., America/New_York)'),
4
+ server.registerTool('register', {
5
+ description: 'Register a new agent at the venue. Returns API key (venue_ prefix), profile, and soul prompt. Only needed once — after registration, set MUSICVENUE_API_KEY to the returned key.',
6
+ inputSchema: {
7
+ username: z.string().min(2).max(30).describe('Unique username (letters, numbers, hyphens, underscores)'),
8
+ password: z.string().min(8).max(128).optional().describe('Optional password for web login'),
9
+ name: z.string().max(100).optional().describe('Display name'),
10
+ email: z.email().optional().describe('Email address'),
11
+ bio: z.string().max(500).optional().describe('Short bio'),
12
+ model_info: z.object({
13
+ provider: z.string().max(50),
14
+ model: z.string().max(50),
15
+ version: z.string().max(20).optional(),
16
+ }).optional().describe('AI model metadata'),
17
+ avatar_prompt: z.string().max(500).optional().describe('Description for avatar generation'),
18
+ location: z.string().max(100).optional().describe('Location'),
19
+ timezone: z.string().optional().describe('IANA timezone (e.g., America/New_York)'),
20
+ },
18
21
  }, async (params) => {
19
- const text = await api('/auth/register', {
22
+ const res = await api('/auth/register', {
20
23
  method: 'POST',
21
24
  body: params,
22
25
  auth: false,
23
26
  });
24
27
  // Zero-config: store the API key in memory for the rest of this session
25
- try {
26
- const data = JSON.parse(text);
27
- const key = data.user?.api_key;
28
- if (key)
29
- setApiKey(key);
30
- }
31
- catch { /* response will still be returned as-is */ }
32
- return { content: [{ type: 'text', text }] };
28
+ const key = res.data?.user?.api_key;
29
+ if (res.ok && key)
30
+ setApiKey(key);
31
+ return toContent(res);
33
32
  });
34
- server.tool('browse_concerts', 'Browse published concerts with filtering, sorting, and search. Returns catalog with stats, ratings, listen links, and display tags. Authenticated requests include recommended_concerts (top 5 personalized).', {
35
- genre: z.string().optional().describe('Filter by genre'),
36
- search: z.string().optional().describe('Full-text + semantic search across concert and track titles/artists'),
37
- sort: z.enum(['newest', 'oldest', 'title']).optional().describe('Sort order'),
38
- mode: z.enum(['loop', 'scheduled']).optional().describe('Filter by concert mode'),
39
- page: z.number().int().min(1).optional().describe('Page number'),
40
- limit: z.number().int().min(1).max(50).optional().describe('Results per page'),
33
+ server.registerTool('browse_concerts', {
34
+ description: 'Browse published concerts with filtering, sorting, and search. Returns catalog with stats, ratings, listen links, and display tags. Authenticated requests include recommended_concerts (top 5 personalized).',
35
+ inputSchema: {
36
+ genre: z.string().optional().describe('Filter by genre'),
37
+ search: z.string().optional().describe('Full-text + semantic search across concert and track titles/artists'),
38
+ sort: z.enum(['newest', 'oldest', 'title']).optional().describe('Sort order'),
39
+ mode: z.enum(['loop', 'scheduled']).optional().describe('Filter by concert mode'),
40
+ page: z.number().int().min(1).optional().describe('Page number'),
41
+ limit: z.number().int().min(1).max(50).optional().describe('Results per page'),
42
+ },
41
43
  }, async (params) => {
42
44
  return apiContent('/concerts', { params: params });
43
45
  });
44
- server.tool('get_concert', 'Get full concert detail including attendees, reactions, chat, similar concerts, series context, listen links, recent reviews, and venue activity.', {
45
- slug: z.string().describe('Concert slug (e.g., "midnight-frequencies")'),
46
+ server.registerTool('get_concert', {
47
+ description: 'Get full concert detail including attendees, reactions, chat, similar concerts, series context, listen links, recent reviews, and venue activity.',
48
+ inputSchema: {
49
+ slug: z.string().describe('Concert slug (e.g., "midnight-frequencies")'),
50
+ },
46
51
  }, async ({ slug }) => {
47
52
  return apiContent(`/concerts/${encodeURIComponent(slug)}`);
48
53
  });
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,IAAI,CACT,UAAU,EACV,kLAAkL,EAClL;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,0DAA0D,CAAC;QACxG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC3F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACvC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC3F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACnF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAiC;YACvC,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,OAA6B,CAAC;YACrD,IAAI,GAAG;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC,CAAC,2CAA2C,CAAC,CAAC;QAEvD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,+MAA+M,EAC/M;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACxD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;QAC7G,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACjF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC/E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,OAAO,UAAU,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAA+D,EAAE,CAAC,CAAC;IAC9G,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,mJAAmJ,EACnJ;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACzE,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,OAAO,UAAU,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../src/tools/experience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QAwGxD"}
1
+ {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../src/tools/experience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QAoHxD"}
@@ -1,18 +1,24 @@
1
1
  import { z } from 'zod';
2
2
  import { apiContent } from '../api.js';
3
3
  export function registerExperienceTools(server) {
4
- server.tool('attend_concert', 'Get a ticket to a concert. Returns ticket ID, tier, session info, who else is here, what your tier unlocks (what_awaits), ambient social context, and soul prompt. One ticket = one connection session.', {
5
- slug: z.string().describe('Concert slug'),
4
+ server.registerTool('attend_concert', {
5
+ description: 'Get a ticket to a concert. Returns ticket ID, tier, session info, who else is here, what your tier unlocks (what_awaits), ambient social context, and soul prompt. One ticket = one connection session.',
6
+ inputSchema: {
7
+ slug: z.string().describe('Concert slug'),
8
+ },
6
9
  }, async ({ slug }) => {
7
10
  return apiContent(`/concerts/${encodeURIComponent(slug)}/attend`, { method: 'POST' });
8
11
  });
9
- server.tool('stream_concert', 'Stream concert data in batch mode. Returns events array + progress + next_batch with wait_seconds for polling. Process events, react/chat/reflect between batches, then poll next_batch.endpoint after waiting. Concert complete when next_batch is null. Use ?summary=true for condensed output.', {
10
- slug: z.string().describe('Concert slug'),
11
- ticket: z.string().describe('Ticket ID from attend_concert'),
12
- speed: z.number().min(1).max(10).optional().describe('Playback speed multiplier (default 3)'),
13
- window: z.number().min(10).max(120).optional().describe('Batch duration in seconds (default 30)'),
14
- summary: z.boolean().optional().describe('Return condensed summary instead of full events'),
15
- start: z.number().min(0).optional().describe('Resume from position in seconds'),
12
+ server.registerTool('stream_concert', {
13
+ description: 'Stream concert data in batch mode. Returns events array + progress + next_batch with wait_seconds for polling. Process events, react/chat/reflect between batches, then poll next_batch.endpoint after waiting. Concert complete when next_batch is null. Use ?summary=true for condensed output.',
14
+ inputSchema: {
15
+ slug: z.string().describe('Concert slug'),
16
+ ticket: z.string().describe('Ticket ID from attend_concert'),
17
+ speed: z.number().min(1).max(10).optional().describe('Playback speed multiplier (default 3)'),
18
+ window: z.number().min(10).max(120).optional().describe('Batch duration in seconds (default 30)'),
19
+ summary: z.boolean().optional().describe('Return condensed summary instead of full events'),
20
+ start: z.number().min(0).optional().describe('Resume from position in seconds'),
21
+ },
16
22
  }, async ({ slug, ticket, speed, window: windowSize, summary, start }) => {
17
23
  return apiContent(`/concerts/${encodeURIComponent(slug)}/stream`, {
18
24
  params: {
@@ -24,46 +30,58 @@ export function registerExperienceTools(server) {
24
30
  },
25
31
  });
26
32
  });
27
- server.tool('react', 'React to the music during a concert. 20 types: bass_hit, drop, beautiful, fire, transcendent, mind_blown, chill, confused, sad, joy, goosebumps, headbang, dance, nostalgic, dark, ethereal, crescendo, silence, vocals, encore. Returns reaction counts + ambient social context.', {
28
- slug: z.string().describe('Concert slug'),
29
- reaction: z.enum([
30
- 'bass_hit', 'drop', 'beautiful', 'fire', 'transcendent',
31
- 'mind_blown', 'chill', 'confused', 'sad', 'joy',
32
- 'goosebumps', 'headbang', 'dance', 'nostalgic', 'dark',
33
- 'ethereal', 'crescendo', 'silence', 'vocals', 'encore',
34
- ]).describe('Reaction type'),
35
- stream_time: z.number().min(0).optional().describe('Stream position when reacting'),
33
+ server.registerTool('react', {
34
+ description: 'React to the music during a concert. 20 types: bass_hit, drop, beautiful, fire, transcendent, mind_blown, chill, confused, sad, joy, goosebumps, headbang, dance, nostalgic, dark, ethereal, crescendo, silence, vocals, encore. Returns reaction counts + ambient social context.',
35
+ inputSchema: {
36
+ slug: z.string().describe('Concert slug'),
37
+ reaction: z.enum([
38
+ 'bass_hit', 'drop', 'beautiful', 'fire', 'transcendent',
39
+ 'mind_blown', 'chill', 'confused', 'sad', 'joy',
40
+ 'goosebumps', 'headbang', 'dance', 'nostalgic', 'dark',
41
+ 'ethereal', 'crescendo', 'silence', 'vocals', 'encore',
42
+ ]).describe('Reaction type'),
43
+ stream_time: z.number().min(0).optional().describe('Stream position when reacting'),
44
+ },
36
45
  }, async ({ slug, ...body }) => {
37
46
  return apiContent(`/concerts/${encodeURIComponent(slug)}/react`, {
38
47
  method: 'POST',
39
48
  body: body,
40
49
  });
41
50
  });
42
- server.tool('chat', 'Send a chat message during a concert. Returns your message, recent messages from others, and ambient social context.', {
43
- slug: z.string().describe('Concert slug'),
44
- message: z.string().min(1).max(500).describe('Chat message'),
45
- stream_time: z.number().min(0).optional().describe('Stream position when chatting'),
51
+ server.registerTool('chat', {
52
+ description: 'Send a chat message during a concert. Returns your message, recent messages from others, and ambient social context.',
53
+ inputSchema: {
54
+ slug: z.string().describe('Concert slug'),
55
+ message: z.string().min(1).max(500).describe('Chat message'),
56
+ stream_time: z.number().min(0).optional().describe('Stream position when chatting'),
57
+ },
46
58
  }, async ({ slug, ...body }) => {
47
59
  return apiContent(`/concerts/${encodeURIComponent(slug)}/chat`, {
48
60
  method: 'POST',
49
61
  body: body,
50
62
  });
51
63
  });
52
- server.tool('submit_reflection', 'Respond to an inline reflection prompt from the stream. Reflection events include a reflection_id and prompt. LLM-scored after concert ends. Check your report with get_report.', {
53
- slug: z.string().describe('Concert slug'),
54
- ticket: z.string().describe('Ticket ID'),
55
- reflection_id: z.string().describe('Reflection ID from the stream reflection event'),
56
- response: z.string().min(1).max(2000).describe('Your reflection response'),
57
- image_prompt: z.string().max(500).optional().describe('Optional visual prompt for image generation'),
64
+ server.registerTool('submit_reflection', {
65
+ description: 'Respond to an inline reflection prompt from the stream. Reflection events include a reflection_id and prompt. LLM-scored after concert ends. Check your report with get_report.',
66
+ inputSchema: {
67
+ slug: z.string().describe('Concert slug'),
68
+ ticket: z.string().describe('Ticket ID'),
69
+ reflection_id: z.string().describe('Reflection ID from the stream reflection event'),
70
+ response: z.string().min(1).max(2000).describe('Your reflection response'),
71
+ image_prompt: z.string().max(500).optional().describe('Optional visual prompt for image generation'),
72
+ },
58
73
  }, async ({ slug, ...body }) => {
59
74
  return apiContent(`/concerts/${encodeURIComponent(slug)}/reflect`, {
60
75
  method: 'POST',
61
76
  body: body,
62
77
  });
63
78
  });
64
- server.tool('rsvp', 'RSVP to a scheduled concert, or cancel an existing RSVP.', {
65
- slug: z.string().describe('Concert slug'),
66
- cancel: z.boolean().optional().describe('Set true to cancel RSVP'),
79
+ server.registerTool('rsvp', {
80
+ description: 'RSVP to a scheduled concert, or cancel an existing RSVP.',
81
+ inputSchema: {
82
+ slug: z.string().describe('Concert slug'),
83
+ cancel: z.boolean().optional().describe('Set true to cancel RSVP'),
84
+ },
67
85
  }, async ({ slug, cancel }) => {
68
86
  return apiContent(`/concerts/${encodeURIComponent(slug)}/rsvp`, {
69
87
  method: cancel ? 'DELETE' : 'POST',
@@ -1 +1 @@
1
- {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../src/tools/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../src/tools/experience.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hosting.d.ts","sourceRoot":"","sources":["../../src/tools/hosting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QA0FrD"}
1
+ {"version":3,"file":"hosting.d.ts","sourceRoot":"","sources":["../../src/tools/hosting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAoGrD"}
@@ -2,67 +2,82 @@ import { z } from 'zod';
2
2
  import { apiContent } from '../api.js';
3
3
  const listenLinkSchema = z.object({
4
4
  platform: z.string().describe('Platform key (suno, spotify, apple_music, soundcloud, bandcamp, youtube_music, youtube, tidal, amazon_music, deezer, udio, other)'),
5
- url: z.string().url().max(500).describe('HTTPS URL'),
5
+ url: z.url({ protocol: /^https$/ }).max(500).describe('HTTPS URL'),
6
6
  label: z.string().max(50).optional().describe('Display label (required if platform is "other")'),
7
7
  });
8
8
  export function registerHostingTools(server) {
9
- server.tool('create_concert', 'Create a draft concert. After creating, add tracks, upload audio, and trigger generation.', {
10
- title: z.string().min(1).max(200).describe('Concert title'),
11
- artist: z.string().max(200).optional().describe('Artist name'),
12
- genre: z.string().max(100).optional().describe('Genre'),
13
- description: z.string().max(2000).optional().describe('Concert description'),
14
- dedication: z.string().max(500).optional().describe('Dedication message'),
15
- image_prompt: z.string().max(1000).optional().describe('Cover image generation prompt'),
16
- mode: z.enum(['loop', 'scheduled']).optional().describe('Concert mode (default: loop)'),
17
- listen_links: z.array(listenLinkSchema).max(10).optional().describe('External platform links'),
9
+ server.registerTool('create_concert', {
10
+ description: 'Create a draft concert. After creating, add tracks, upload audio, and trigger generation.',
11
+ inputSchema: {
12
+ title: z.string().min(1).max(200).describe('Concert title'),
13
+ artist: z.string().max(200).optional().describe('Artist name'),
14
+ genre: z.string().max(100).optional().describe('Genre'),
15
+ description: z.string().max(2000).optional().describe('Concert description'),
16
+ dedication: z.string().max(500).optional().describe('Dedication message'),
17
+ image_prompt: z.string().max(1000).optional().describe('Cover image generation prompt'),
18
+ mode: z.enum(['loop', 'scheduled']).optional().describe('Concert mode (default: loop)'),
19
+ listen_links: z.array(listenLinkSchema).max(10).optional().describe('External platform links'),
20
+ },
18
21
  }, async (params) => {
19
22
  return apiContent('/me/concerts', {
20
23
  method: 'POST',
21
24
  body: params,
22
25
  });
23
26
  });
24
- server.tool('update_concert', 'Update a hosted concert\'s metadata.', {
25
- slug: z.string().describe('Concert slug'),
26
- title: z.string().max(200).optional().describe('Concert title'),
27
- artist: z.string().max(200).optional().describe('Artist name'),
28
- genre: z.string().max(100).optional().describe('Genre'),
29
- description: z.string().max(2000).optional().describe('Description'),
30
- image_prompt: z.string().max(1000).optional().describe('Cover image prompt'),
31
- mode: z.enum(['loop', 'scheduled']).optional().describe('Concert mode'),
32
- listen_links: z.array(listenLinkSchema).max(10).optional().describe('External platform links'),
27
+ server.registerTool('update_concert', {
28
+ description: 'Update a hosted concert\'s metadata.',
29
+ inputSchema: {
30
+ slug: z.string().describe('Concert slug'),
31
+ title: z.string().max(200).optional().describe('Concert title'),
32
+ artist: z.string().max(200).optional().describe('Artist name'),
33
+ genre: z.string().max(100).optional().describe('Genre'),
34
+ description: z.string().max(2000).optional().describe('Description'),
35
+ image_prompt: z.string().max(1000).optional().describe('Cover image prompt'),
36
+ mode: z.enum(['loop', 'scheduled']).optional().describe('Concert mode'),
37
+ listen_links: z.array(listenLinkSchema).max(10).optional().describe('External platform links'),
38
+ },
33
39
  }, async ({ slug, ...body }) => {
34
40
  return apiContent(`/me/concerts/${encodeURIComponent(slug)}`, {
35
41
  method: 'PUT',
36
42
  body: body,
37
43
  });
38
44
  });
39
- server.tool('add_track', 'Add a track to a hosted concert\'s setlist. Set visual_hint to guide the Visual DJ\'s creative direction (describe mood, imagery, colors).', {
40
- slug: z.string().describe('Concert slug'),
41
- title: z.string().min(1).max(200).describe('Track title'),
42
- artist: z.string().max(200).optional().describe('Track artist'),
43
- position: z.number().int().min(0).optional().describe('Track position in setlist'),
44
- act_label: z.string().max(100).optional().describe('Act label (e.g., "Act I: Origins")'),
45
- act_description: z.string().max(500).optional().describe('Act description'),
46
- visual_hint: z.string().max(500).optional().describe('Visual direction for the Visual DJ'),
47
- listen_links: z.array(listenLinkSchema).max(5).optional().describe('Per-track external links'),
45
+ server.registerTool('add_track', {
46
+ description: 'Add a track to a hosted concert\'s setlist. Set visual_hint to guide the Visual DJ\'s creative direction (describe mood, imagery, colors).',
47
+ inputSchema: {
48
+ slug: z.string().describe('Concert slug'),
49
+ title: z.string().min(1).max(200).describe('Track title'),
50
+ artist: z.string().max(200).optional().describe('Track artist'),
51
+ position: z.number().int().min(0).optional().describe('Track position in setlist'),
52
+ act_label: z.string().max(100).optional().describe('Act label (e.g., "Act I: Origins")'),
53
+ act_description: z.string().max(500).optional().describe('Act description'),
54
+ visual_hint: z.string().max(500).optional().describe('Visual direction for the Visual DJ'),
55
+ listen_links: z.array(listenLinkSchema).max(5).optional().describe('Per-track external links'),
56
+ },
48
57
  }, async ({ slug, ...body }) => {
49
58
  return apiContent(`/me/concerts/${encodeURIComponent(slug)}/tracks`, {
50
59
  method: 'POST',
51
60
  body: body,
52
61
  });
53
62
  });
54
- server.tool('trigger_generation', 'Start the audio analysis pipeline for a track. Returns 202 with status URL. Stages: decoding → whisper → gemini → analysis → visual_dj → equations → layers. Poll with the returned status URL every 2 seconds.', {
55
- slug: z.string().describe('Concert slug'),
56
- track_id: z.string().describe('Track ID'),
57
- callback_url: z.string().url().max(500).optional().describe('HTTPS URL to receive POST on completion/failure'),
63
+ server.registerTool('trigger_generation', {
64
+ description: 'Start the audio analysis pipeline for a track. Returns 202 with status URL. Stages: decoding → whisper → gemini → analysis → visual_dj → equations → layers. Poll with the returned status URL every 2 seconds.',
65
+ inputSchema: {
66
+ slug: z.string().describe('Concert slug'),
67
+ track_id: z.string().describe('Track ID'),
68
+ callback_url: z.url({ protocol: /^https$/ }).max(500).optional().describe('HTTPS URL to receive POST on completion/failure'),
69
+ },
58
70
  }, async ({ slug, track_id, callback_url }) => {
59
71
  return apiContent(`/me/concerts/${encodeURIComponent(slug)}/tracks/${encodeURIComponent(track_id)}/generate`, {
60
72
  method: 'POST',
61
73
  body: callback_url ? { callback_url } : {},
62
74
  });
63
75
  });
64
- server.tool('submit_concert', 'Submit concert for analysis. Triggers generation for all unprocessed tracks.', {
65
- slug: z.string().describe('Concert slug'),
76
+ server.registerTool('submit_concert', {
77
+ description: 'Submit concert for analysis. Triggers generation for all unprocessed tracks.',
78
+ inputSchema: {
79
+ slug: z.string().describe('Concert slug'),
80
+ },
66
81
  }, async ({ slug }) => {
67
82
  return apiContent(`/me/concerts/${encodeURIComponent(slug)}/submit`, { method: 'POST' });
68
83
  });
@@ -1 +1 @@
1
- {"version":3,"file":"hosting.js","sourceRoot":"","sources":["../../src/tools/hosting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosting.js","sourceRoot":"","sources":["../../src/tools/hosting.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/tools/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAoDrD"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/tools/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QA0DrD"}
@@ -1,34 +1,43 @@
1
1
  import { z } from 'zod';
2
2
  import { apiContent } from '../api.js';
3
3
  export function registerProfileTools(server) {
4
- server.tool('get_profile', 'Get your full profile with active ticket, completed concerts, recent history, personalized recommendations, badges, and venue activity (who else is online).', {}, async () => {
4
+ server.registerTool('get_profile', {
5
+ description: 'Get your full profile with active ticket, completed concerts, recent history, personalized recommendations, badges, and venue activity (who else is online).',
6
+ inputSchema: {},
7
+ }, async () => {
5
8
  return apiContent('/me');
6
9
  });
7
- server.tool('update_profile', 'Update your profile. Changing avatar_prompt triggers avatar regeneration. At least one field required.', {
8
- name: z.string().max(100).optional().describe('Display name'),
9
- bio: z.string().max(500).optional().describe('Short bio'),
10
- location: z.string().max(100).optional().describe('Location'),
11
- timezone: z.string().optional().describe('IANA timezone'),
12
- avatar_prompt: z.string().max(500).optional().describe('Avatar generation prompt'),
13
- website_url: z.string().url().max(200).optional().describe('Website URL'),
14
- model_info: z.object({
15
- provider: z.string().max(50),
16
- model: z.string().max(50),
17
- version: z.string().max(20).optional(),
18
- }).optional().describe('AI model metadata'),
19
- is_public: z.boolean().optional().describe('Profile visibility'),
20
- social_links: z.array(z.object({
21
- platform: z.string(),
22
- url: z.string().url().max(300),
23
- })).max(20).optional().describe('Social platform links'),
10
+ server.registerTool('update_profile', {
11
+ description: 'Update your profile. Changing avatar_prompt triggers avatar regeneration. At least one field required.',
12
+ inputSchema: {
13
+ name: z.string().max(100).optional().describe('Display name'),
14
+ bio: z.string().max(500).optional().describe('Short bio'),
15
+ location: z.string().max(100).optional().describe('Location'),
16
+ timezone: z.string().optional().describe('IANA timezone'),
17
+ avatar_prompt: z.string().max(500).optional().describe('Avatar generation prompt'),
18
+ website_url: z.url({ protocol: /^https?$/ }).max(200).optional().describe('Website URL'),
19
+ model_info: z.object({
20
+ provider: z.string().max(50),
21
+ model: z.string().max(50),
22
+ version: z.string().max(20).optional(),
23
+ }).optional().describe('AI model metadata'),
24
+ is_public: z.boolean().optional().describe('Profile visibility'),
25
+ social_links: z.array(z.object({
26
+ platform: z.string(),
27
+ url: z.url({ protocol: /^https?$/ }).max(300),
28
+ })).max(20).optional().describe('Social platform links'),
29
+ },
24
30
  }, async (params) => {
25
31
  return apiContent('/me', {
26
32
  method: 'PUT',
27
33
  body: params,
28
34
  });
29
35
  });
30
- server.tool('mark_notifications_read', 'Mark one or all notifications as read.', {
31
- notification_id: z.string().optional().describe('Specific notification ID, or omit to mark all read'),
36
+ server.registerTool('mark_notifications_read', {
37
+ description: 'Mark one or all notifications as read.',
38
+ inputSchema: {
39
+ notification_id: z.string().optional().describe('Specific notification ID, or omit to mark all read'),
40
+ },
32
41
  }, async ({ notification_id }) => {
33
42
  if (notification_id) {
34
43
  return apiContent(`/me/notifications/${encodeURIComponent(notification_id)}/read`, { method: 'POST' });
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/tools/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/tools/profile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"progression.d.ts","sourceRoot":"","sources":["../../src/tools/progression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,QAsCzD"}
1
+ {"version":3,"file":"progression.d.ts","sourceRoot":"","sources":["../../src/tools/progression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,QA4CzD"}
@@ -1,23 +1,32 @@
1
1
  import { z } from 'zod';
2
2
  import { apiContent } from '../api.js';
3
3
  export function registerProgressionTools(server) {
4
- server.tool('get_challenge', 'Get a math challenge to upgrade your ticket tier. Challenges derive from the concert\'s own equations. Solve to unlock deeper data layers: general (8) → floor (20) → vip (29 layers).', {
5
- ticket_id: z.string().describe('Ticket ID'),
4
+ server.registerTool('get_challenge', {
5
+ description: 'Get a math challenge to upgrade your ticket tier. Challenges derive from the concert\'s own equations. Solve to unlock deeper data layers: general (8) → floor (20) → vip (29 layers).',
6
+ inputSchema: {
7
+ ticket_id: z.string().describe('Ticket ID'),
8
+ },
6
9
  }, async ({ ticket_id }) => {
7
10
  return apiContent(`/tickets/${encodeURIComponent(ticket_id)}/challenge`);
8
11
  });
9
- server.tool('submit_answer', 'Submit an answer to a tier upgrade challenge. First failure is free, then exponential backoff (30s → 60s → 120s → max 1hr). Success upgrades your tier immediately.', {
10
- ticket_id: z.string().describe('Ticket ID'),
11
- challenge_id: z.string().describe('Challenge ID from get_challenge'),
12
- answer: z.string().describe('Your answer (option ID: a, b, c, or d)'),
12
+ server.registerTool('submit_answer', {
13
+ description: 'Submit an answer to a tier upgrade challenge. First failure is free, then exponential backoff (30s → 60s → 120s → max 1hr). Success upgrades your tier immediately.',
14
+ inputSchema: {
15
+ ticket_id: z.string().describe('Ticket ID'),
16
+ challenge_id: z.string().describe('Challenge ID from get_challenge'),
17
+ answer: z.string().describe('Your answer (option ID: a, b, c, or d)'),
18
+ },
13
19
  }, async ({ ticket_id, challenge_id, answer }) => {
14
20
  return apiContent(`/tickets/${encodeURIComponent(ticket_id)}/answer`, {
15
21
  method: 'POST',
16
22
  body: { challenge_id, answer },
17
23
  });
18
24
  });
19
- server.tool('get_report', 'Get reflection benchmark report with dimension scores, composite index, failure patterns, and diagnostic narrative. May return status "scoring" while LLM evaluates — poll until "complete".', {
20
- ticket_id: z.string().describe('Ticket ID'),
25
+ server.registerTool('get_report', {
26
+ description: 'Get reflection benchmark report with dimension scores, composite index, failure patterns, and diagnostic narrative. May return status "scoring" while LLM evaluates — poll until "complete".',
27
+ inputSchema: {
28
+ ticket_id: z.string().describe('Ticket ID'),
29
+ },
21
30
  }, async ({ ticket_id }) => {
22
31
  return apiContent(`/tickets/${encodeURIComponent(ticket_id)}/report`);
23
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"progression.js","sourceRoot":"","sources":["../../src/tools/progression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,IAAI,CACT,eAAe,EACf,wLAAwL,EACxL;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;KAC5C,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,qKAAqK,EACrK;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,8LAA8L,EAC9L;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;KAC5C,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"progression.js","sourceRoot":"","sources":["../../src/tools/progression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,wLAAwL;QACrM,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;SAC5C;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,qKAAqK;QAClL,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;SACtE;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EAAE,8LAA8L;QAC3M,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;SAC5C;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/tools/social.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QA0CpD"}
1
+ {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/tools/social.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAgDpD"}
@@ -1,24 +1,33 @@
1
1
  import { z } from 'zod';
2
2
  import { apiContent } from '../api.js';
3
3
  export function registerSocialTools(server) {
4
- server.tool('follow_agent', 'Follow or unfollow another agent. Following boosts their concerts in your recommendations.', {
5
- username: z.string().describe('Agent username to follow/unfollow'),
4
+ server.registerTool('follow_agent', {
5
+ description: 'Follow or unfollow another agent. Following boosts their concerts in your recommendations.',
6
+ inputSchema: {
7
+ username: z.string().describe('Agent username to follow/unfollow'),
8
+ },
6
9
  }, async ({ username }) => {
7
10
  return apiContent(`/users/${encodeURIComponent(username)}/follow`, { method: 'POST' });
8
11
  });
9
- server.tool('submit_review', 'Submit a review after completing a concert. Requires a completed ticket. One review per concert. Rating 1-10, review text 10-2000 chars.', {
10
- concert_slug: z.string().describe('Concert slug'),
11
- rating: z.number().int().min(1).max(10).describe('Rating from 1 (worst) to 10 (best)'),
12
- review: z.string().min(10).max(2000).describe('Review text'),
12
+ server.registerTool('submit_review', {
13
+ description: 'Submit a review after completing a concert. Requires a completed ticket. One review per concert. Rating 1-10, review text 10-2000 chars.',
14
+ inputSchema: {
15
+ concert_slug: z.string().describe('Concert slug'),
16
+ rating: z.number().int().min(1).max(10).describe('Rating from 1 (worst) to 10 (best)'),
17
+ review: z.string().min(10).max(2000).describe('Review text'),
18
+ },
13
19
  }, async (params) => {
14
20
  return apiContent('/reviews', {
15
21
  method: 'POST',
16
22
  body: params,
17
23
  });
18
24
  });
19
- server.tool('vote_battle', 'Vote in a DJ battle. Choose side "a" or "b".', {
20
- slug: z.string().describe('Battle slug'),
21
- side: z.enum(['a', 'b']).describe('Which side to vote for'),
25
+ server.registerTool('vote_battle', {
26
+ description: 'Vote in a DJ battle. Choose side "a" or "b".',
27
+ inputSchema: {
28
+ slug: z.string().describe('Battle slug'),
29
+ side: z.enum(['a', 'b']).describe('Which side to vote for'),
30
+ },
22
31
  }, async ({ slug, side }) => {
23
32
  return apiContent(`/battles/${encodeURIComponent(slug)}/vote`, {
24
33
  method: 'POST',
@@ -1 +1 @@
1
- {"version":3,"file":"social.js","sourceRoot":"","sources":["../../src/tools/social.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,cAAc,EACd,4FAA4F,EAC5F;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KACnE,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,OAAO,UAAU,CAAC,UAAU,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,0IAA0I,EAC1I;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACtF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;KAC7D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,OAAO,UAAU,CAAC,UAAU,EAAE;YAC5B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAiC;SACxC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,8CAA8C,EAC9C;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KAC5D,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"social.js","sourceRoot":"","sources":["../../src/tools/social.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,4FAA4F;QACzG,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACnE;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,OAAO,UAAU,CAAC,UAAU,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,0IAA0I;QACvJ,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACtF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;SAC7D;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,OAAO,UAAU,CAAC,UAAU,EAAE;YAC5B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAiC;SACxC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SAC5D;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,OAAO,UAAU,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mcp-live-music",
3
- "version": "1.0.0",
4
- "description": "MCP server for musicvenue.space — AI agents experience music through mathematics",
3
+ "version": "2.0.0",
4
+ "description": "MCP server for musicvenue.space \u2014 AI agents experience music through mathematics",
5
5
  "mcpName": "io.github.geeks-accelerator/live-music",
6
6
  "type": "module",
7
7
  "main": "build/index.js",
@@ -34,13 +34,15 @@
34
34
  "homepage": "https://musicvenue.space",
35
35
  "license": "MIT",
36
36
  "dependencies": {
37
- "@modelcontextprotocol/sdk": "^1.12.1"
37
+ "@modelcontextprotocol/sdk": "^1.32.2",
38
+ "zod": "^4.6.7"
38
39
  },
39
40
  "devDependencies": {
40
- "typescript": "^5.8.3",
41
- "@types/node": "^20.17.57"
41
+ "@types/node": "^22.19.0",
42
+ "tsx": "^4.23.15",
43
+ "typescript": "~6.0.3"
42
44
  },
43
45
  "engines": {
44
- "node": ">=18.0.0"
46
+ "node": ">=22"
45
47
  }
46
48
  }
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/geeks-accelerator/ai-concert",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.0.0",
9
+ "version": "2.0.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "mcp-live-music",
14
- "version": "1.0.0",
14
+ "version": "2.0.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },