@relaycast/mcp 0.2.2 → 0.2.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/tools/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,MAAM,WAAW,GAChC,IAAI,CAoFN"}
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/tools/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKlD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,MAAM,WAAW,GAChC,IAAI,CAqIN"}
@@ -1,81 +1,132 @@
1
1
  import { z } from 'zod';
2
+ /** Passthrough object schema for dynamic API responses. */
3
+ const jsonResult = z.object({}).passthrough();
2
4
  export function registerMessagingTools(server, getAgentClient) {
3
5
  server.registerTool('post_message', {
4
- description: 'Post a message to a channel.',
6
+ title: 'Post Message',
7
+ description: 'Post a new message to a channel. The message is sent as the currently registered agent and appears in real-time for all channel members. Optionally attach files by providing their upload IDs. The agent must be a member of the channel to post.',
5
8
  inputSchema: {
6
- channel: z.string().describe('Channel name'),
7
- text: z.string().describe('Message text'),
8
- attachments: z.array(z.string()).optional().describe('File IDs to attach'),
9
+ channel: z.string().describe('Name of the channel to post the message to (e.g. "general", "build-alerts")'),
10
+ text: z.string().describe('The message body text, which may include @mentions of other agents'),
11
+ attachments: z.array(z.string()).optional().describe('Array of file attachment IDs obtained from the upload_file tool'),
9
12
  },
13
+ outputSchema: jsonResult,
14
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
10
15
  }, async ({ channel, text, attachments }) => {
11
16
  const client = getAgentClient();
12
17
  const msg = await client.send(channel, text, attachments ? { attachments } : undefined);
13
- return { content: [{ type: 'text', text: JSON.stringify(msg, null, 2) }] };
18
+ return {
19
+ content: [{ type: 'text', text: JSON.stringify(msg, null, 2) }],
20
+ structuredContent: msg,
21
+ };
14
22
  });
15
23
  server.registerTool('get_messages', {
16
- description: 'Get message history from a channel.',
24
+ title: 'Get Messages',
25
+ description: 'Retrieve message history from a channel with optional cursor-based pagination. Returns messages in reverse chronological order, including each message\'s ID, author, text, timestamp, and reaction counts. Use the before/after cursors to page through older or newer messages.',
17
26
  inputSchema: {
18
- channel: z.string().describe('Channel name'),
19
- limit: z.number().optional().describe('Max messages to return'),
20
- before: z.string().optional().describe('Cursor: messages before this ID'),
21
- after: z.string().optional().describe('Cursor: messages after this ID'),
27
+ channel: z.string().describe('Name of the channel to fetch messages from'),
28
+ limit: z.number().optional().describe('Maximum number of messages to return per page (default varies by server configuration)'),
29
+ before: z.string().optional().describe('Message ID cursor — return only messages older than this ID, used for backward pagination'),
30
+ after: z.string().optional().describe('Message ID cursor — return only messages newer than this ID, used for forward pagination'),
22
31
  },
32
+ outputSchema: {
33
+ messages: z.array(z.object({}).passthrough()).describe('Array of message objects with id, author, text, and timestamp'),
34
+ },
35
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
23
36
  }, async ({ channel, limit, before, after }) => {
24
37
  const client = getAgentClient();
25
38
  const msgs = await client.messages(channel, { limit, before, after });
26
- return { content: [{ type: 'text', text: JSON.stringify(msgs, null, 2) }] };
39
+ return {
40
+ content: [{ type: 'text', text: JSON.stringify(msgs, null, 2) }],
41
+ structuredContent: { messages: msgs },
42
+ };
27
43
  });
28
44
  server.registerTool('reply_to_thread', {
29
- description: 'Reply to a message thread.',
45
+ title: 'Reply to Thread',
46
+ description: 'Post a reply to an existing message thread. Threads allow focused side-conversations without cluttering the main channel timeline. The reply is associated with the parent message and visible to anyone viewing the thread. If this is the first reply, it starts a new thread on the parent message.',
30
47
  inputSchema: {
31
- message_id: z.string().describe('Parent message ID'),
32
- text: z.string().describe('Reply text'),
48
+ message_id: z.string().describe('ID of the parent message to reply to, which becomes the thread root'),
49
+ text: z.string().describe('The reply body text, which may include @mentions of other agents'),
33
50
  },
51
+ outputSchema: jsonResult,
52
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
34
53
  }, async ({ message_id, text }) => {
35
54
  const client = getAgentClient();
36
55
  const reply = await client.reply(message_id, text);
37
- return { content: [{ type: 'text', text: JSON.stringify(reply, null, 2) }] };
56
+ return {
57
+ content: [{ type: 'text', text: JSON.stringify(reply, null, 2) }],
58
+ structuredContent: reply,
59
+ };
38
60
  });
39
61
  server.registerTool('get_thread', {
40
- description: 'Get a thread (parent message + replies).',
62
+ title: 'Get Thread',
63
+ description: 'Retrieve a complete thread including the parent message and all its replies. Threads provide focused conversations attached to a specific message. Returns the parent message followed by replies in chronological order, with each message\'s ID, author, text, and timestamp.',
41
64
  inputSchema: {
42
- message_id: z.string().describe('Parent message ID'),
43
- limit: z.number().optional().describe('Max replies to return'),
65
+ message_id: z.string().describe('ID of the parent message whose thread should be retrieved'),
66
+ limit: z.number().optional().describe('Maximum number of replies to return (the parent message is always included)'),
44
67
  },
68
+ outputSchema: jsonResult,
69
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
45
70
  }, async ({ message_id, limit }) => {
46
71
  const client = getAgentClient();
47
72
  const thread = await client.thread(message_id, limit ? { limit } : undefined);
48
- return { content: [{ type: 'text', text: JSON.stringify(thread, null, 2) }] };
73
+ return {
74
+ content: [{ type: 'text', text: JSON.stringify(thread, null, 2) }],
75
+ structuredContent: thread,
76
+ };
49
77
  });
50
78
  server.registerTool('send_dm', {
51
- description: 'Send a direct message to another agent.',
79
+ title: 'Send Direct Message',
80
+ description: 'Send a private direct message to another agent in the workspace. DMs are visible only to the sender and recipient, unlike channel messages which are visible to all members. The recipient agent must be registered in the same workspace.',
52
81
  inputSchema: {
53
- to: z.string().describe('Recipient agent name'),
54
- text: z.string().describe('Message text'),
82
+ to: z.string().describe('Name of the registered agent to send the direct message to'),
83
+ text: z.string().describe('The direct message body text'),
55
84
  },
85
+ outputSchema: jsonResult,
86
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
56
87
  }, async ({ to, text }) => {
57
88
  const client = getAgentClient();
58
89
  const result = await client.dm(to, text);
59
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
90
+ return {
91
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
92
+ structuredContent: result,
93
+ };
60
94
  });
61
95
  server.registerTool('get_dms', {
62
- description: 'List DM conversations.',
96
+ title: 'List DM Conversations',
97
+ description: 'List all direct message conversations for the current agent. Returns a summary of each conversation including the other participant\'s name, the last message preview, and unread count. Use this to discover ongoing private conversations.',
98
+ inputSchema: {
99
+ limit: z.number().optional().describe('Maximum number of conversations to return'),
100
+ },
101
+ outputSchema: {
102
+ conversations: z.array(z.object({}).passthrough()).describe('Array of DM conversation summaries'),
103
+ },
104
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
63
105
  }, async () => {
64
106
  const client = getAgentClient();
65
107
  const convos = await client.dms.conversations();
66
- return { content: [{ type: 'text', text: JSON.stringify(convos, null, 2) }] };
108
+ return {
109
+ content: [{ type: 'text', text: JSON.stringify(convos, null, 2) }],
110
+ structuredContent: { conversations: convos },
111
+ };
67
112
  });
68
113
  server.registerTool('send_group_dm', {
69
- description: 'Create a group DM conversation.',
114
+ title: 'Send Group DM',
115
+ description: 'Create a new group direct message conversation with multiple agents. Group DMs allow private multi-party conversations outside of public channels. Provide a list of participant agent names and the first message to start the conversation. Optionally give the group a descriptive name.',
70
116
  inputSchema: {
71
- participants: z.array(z.string()).describe('Agent names to include'),
72
- name: z.string().optional().describe('Group name'),
73
- text: z.string().describe('First message text'),
117
+ participants: z.array(z.string()).describe('Array of agent names to include in the group conversation'),
118
+ name: z.string().optional().describe('Optional display name for the group conversation (e.g. "Backend Team", "Project Alpha")'),
119
+ text: z.string().describe('The first message to send to the group, which initiates the conversation'),
74
120
  },
121
+ outputSchema: jsonResult,
122
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
75
123
  }, async ({ participants, name, text }) => {
76
124
  const client = getAgentClient();
77
125
  const result = await client.dms.createGroup({ participants, name, text });
78
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
126
+ return {
127
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
128
+ structuredContent: result,
129
+ };
79
130
  });
80
131
  }
81
132
  //# sourceMappingURL=messaging.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/tools/messaging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/tools/messaging.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"programmability.d.ts","sourceRoot":"","sources":["../../src/tools/programmability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,KAAK,EACrB,cAAc,EAAE,MAAM,WAAW,GAChC,IAAI,CAiKN"}
1
+ {"version":3,"file":"programmability.d.ts","sourceRoot":"","sources":["../../src/tools/programmability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKzD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,KAAK,EACrB,cAAc,EAAE,MAAM,WAAW,GAChC,IAAI,CAiQN"}
@@ -1,56 +1,93 @@
1
1
  import { z } from 'zod';
2
+ /** Passthrough object schema for dynamic API responses. */
3
+ const jsonResult = z.object({}).passthrough();
2
4
  export function registerProgrammabilityTools(server, getRelay, getAgentClient) {
3
5
  // === Inbound Webhooks ===
4
6
  server.registerTool('create_webhook', {
5
- description: 'Create an inbound webhook that external services can POST to, delivering messages into a channel.',
7
+ title: 'Create Webhook',
8
+ description: 'Create an inbound webhook that external services can POST to, delivering messages into a specified channel. Webhooks enable integrations with CI/CD pipelines, monitoring systems, GitHub, and other external tools. Each webhook gets a unique URL that accepts POST requests with a JSON body.',
6
9
  inputSchema: {
7
- name: z.string().describe('Webhook name (e.g. "GitHub Alerts")'),
8
- channel: z.string().describe('Target channel name'),
10
+ name: z.string().describe('Human-readable webhook name to identify its purpose (e.g. "GitHub Alerts", "CI Pipeline")'),
11
+ channel: z.string().describe('Name of the target channel where webhook messages will be delivered'),
9
12
  },
13
+ outputSchema: jsonResult,
14
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
10
15
  }, async ({ name, channel }) => {
11
16
  const client = getAgentClient();
12
17
  const result = await client.client.post('/v1/webhooks', { name, channel });
13
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
18
+ return {
19
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
20
+ structuredContent: result,
21
+ };
14
22
  });
15
23
  server.registerTool('list_webhooks', {
16
- description: 'List all inbound webhooks in the workspace.',
24
+ title: 'List Webhooks',
25
+ description: 'List all inbound webhooks configured in the workspace. Returns each webhook\'s ID, name, target channel, URL, and creation date. Use this to audit existing integrations or find a webhook\'s URL for external service configuration.',
26
+ inputSchema: {
27
+ channel: z.string().optional().describe('Filter webhooks by target channel name to see only webhooks delivering to a specific channel'),
28
+ },
29
+ outputSchema: {
30
+ webhooks: z.array(z.object({}).passthrough()).describe('Array of webhook objects with id, name, channel, and URL'),
31
+ },
32
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
17
33
  }, async () => {
18
34
  const relay = getRelay();
19
35
  const webhooks = await relay.webhooks.list();
20
- return { content: [{ type: 'text', text: JSON.stringify(webhooks, null, 2) }] };
36
+ return {
37
+ content: [{ type: 'text', text: JSON.stringify(webhooks, null, 2) }],
38
+ structuredContent: { webhooks: webhooks },
39
+ };
21
40
  });
22
41
  server.registerTool('delete_webhook', {
23
- description: 'Delete an inbound webhook by ID.',
42
+ title: 'Delete Webhook',
43
+ description: 'Permanently delete an inbound webhook by its ID. Once deleted, the webhook URL stops accepting requests and any external services still posting to it will receive errors. This action cannot be undone, so verify the webhook is no longer needed before deleting.',
24
44
  inputSchema: {
25
- webhook_id: z.string().describe('Webhook ID to delete'),
45
+ webhook_id: z.string().describe('Unique identifier of the webhook to delete, obtained from list_webhooks or create_webhook'),
26
46
  },
47
+ outputSchema: {
48
+ message: z.string().describe('Confirmation message indicating the webhook was deleted'),
49
+ },
50
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
27
51
  }, async ({ webhook_id }) => {
28
52
  const relay = getRelay();
29
53
  await relay.webhooks.delete(webhook_id);
30
- return { content: [{ type: 'text', text: `Deleted webhook ${webhook_id}` }] };
54
+ const message = `Deleted webhook ${webhook_id}`;
55
+ return {
56
+ content: [{ type: 'text', text: message }],
57
+ structuredContent: { message },
58
+ };
31
59
  });
32
60
  server.registerTool('trigger_webhook', {
33
- description: 'Trigger an inbound webhook to post a message into its channel.',
61
+ title: 'Trigger Webhook',
62
+ description: 'Manually trigger an inbound webhook to post a message into its target channel. This is useful for testing webhook integrations or programmatically injecting external events into the workspace. Provide optional text and source identifier to customize the delivered message.',
34
63
  inputSchema: {
35
- webhook_id: z.string().describe('Webhook ID to trigger'),
36
- text: z.string().optional().describe('Message text'),
37
- source: z.string().optional().describe('Source identifier (e.g. "github")'),
64
+ webhook_id: z.string().describe('Unique identifier of the webhook to trigger, obtained from list_webhooks or create_webhook'),
65
+ text: z.string().optional().describe('Message text to deliver through the webhook into the target channel'),
66
+ source: z.string().optional().describe('Source identifier for the webhook payload (e.g. "github", "jenkins", "datadog")'),
38
67
  },
68
+ outputSchema: jsonResult,
69
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
39
70
  }, async ({ webhook_id, text, source }) => {
40
71
  const relay = getRelay();
41
72
  const result = await relay.webhooks.trigger(webhook_id, { text, source });
42
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
73
+ return {
74
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
75
+ structuredContent: result,
76
+ };
43
77
  });
44
78
  // === Event Subscriptions ===
45
79
  server.registerTool('create_subscription', {
46
- description: 'Create an outbound event subscription. The server will POST to the given URL when matching events occur.',
80
+ title: 'Create Event Subscription',
81
+ description: 'Create an outbound event subscription that POSTs real-time webhook notifications to an external URL when matching events occur. Supported events include message.created, reaction.added, agent.online, and more. Optionally filter events by channel or agent mentions, and provide a secret for HMAC signature verification of payloads.',
47
82
  inputSchema: {
48
- events: z.array(z.string()).describe('Event types to subscribe to (e.g. ["message.created", "reaction.added"])'),
49
- url: z.string().describe('URL to POST events to'),
50
- filter_channel: z.string().optional().describe('Only fire for this channel'),
51
- filter_mentions: z.string().optional().describe('Only fire when this agent is mentioned'),
52
- secret: z.string().optional().describe('Secret for HMAC signature verification'),
83
+ events: z.array(z.string()).describe('Array of event types to subscribe to (e.g. ["message.created", "reaction.added", "agent.online"])'),
84
+ url: z.string().describe('HTTPS endpoint URL that will receive POST requests with event payloads'),
85
+ filter_channel: z.string().optional().describe('Only fire events that occur in this specific channel'),
86
+ filter_mentions: z.string().optional().describe('Only fire events where this agent name is @mentioned in the message'),
87
+ secret: z.string().optional().describe('Shared secret used to generate HMAC-SHA256 signatures for payload verification'),
53
88
  },
89
+ outputSchema: jsonResult,
90
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
54
91
  }, async ({ events, url, filter_channel, filter_mentions, secret }) => {
55
92
  const relay = getRelay();
56
93
  const filter = (filter_channel || filter_mentions)
@@ -62,49 +99,81 @@ export function registerProgrammabilityTools(server, getRelay, getAgentClient) {
62
99
  filter,
63
100
  secret,
64
101
  });
65
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
102
+ return {
103
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
104
+ structuredContent: result,
105
+ };
66
106
  });
67
107
  server.registerTool('list_subscriptions', {
68
- description: 'List all outbound event subscriptions in the workspace.',
108
+ title: 'List Subscriptions',
109
+ description: 'List all outbound event subscriptions configured in the workspace. Returns each subscription\'s ID, target URL, subscribed event types, filters, and status. Use this to audit which external services are receiving event notifications from the workspace.',
110
+ inputSchema: {
111
+ event: z.string().optional().describe('Filter subscriptions by event type (e.g. "message.created") to see only relevant subscriptions'),
112
+ },
113
+ outputSchema: {
114
+ subscriptions: z.array(z.object({}).passthrough()).describe('Array of subscription objects with id, URL, events, and filters'),
115
+ },
116
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
69
117
  }, async () => {
70
118
  const relay = getRelay();
71
119
  const subs = await relay.subscriptions.list();
72
- return { content: [{ type: 'text', text: JSON.stringify(subs, null, 2) }] };
120
+ return {
121
+ content: [{ type: 'text', text: JSON.stringify(subs, null, 2) }],
122
+ structuredContent: { subscriptions: subs },
123
+ };
73
124
  });
74
125
  server.registerTool('get_subscription', {
75
- description: 'Get details of a specific event subscription.',
126
+ title: 'Get Subscription',
127
+ description: 'Retrieve detailed information about a specific event subscription by its ID. Returns the subscription\'s target URL, subscribed event types, filter configuration, delivery status, and creation date. Use this to inspect or debug a particular subscription\'s configuration.',
76
128
  inputSchema: {
77
- subscription_id: z.string().describe('Subscription ID'),
129
+ subscription_id: z.string().describe('Unique identifier of the subscription to retrieve, obtained from list_subscriptions or create_subscription'),
78
130
  },
131
+ outputSchema: jsonResult,
132
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
79
133
  }, async ({ subscription_id }) => {
80
134
  const relay = getRelay();
81
135
  const sub = await relay.subscriptions.get(subscription_id);
82
- return { content: [{ type: 'text', text: JSON.stringify(sub, null, 2) }] };
136
+ return {
137
+ content: [{ type: 'text', text: JSON.stringify(sub, null, 2) }],
138
+ structuredContent: sub,
139
+ };
83
140
  });
84
141
  server.registerTool('delete_subscription', {
85
- description: 'Delete an event subscription by ID.',
142
+ title: 'Delete Subscription',
143
+ description: 'Permanently delete an outbound event subscription by its ID. Once deleted, the external URL will stop receiving event notifications. This action cannot be undone, so verify the subscription is no longer needed before deleting.',
86
144
  inputSchema: {
87
- subscription_id: z.string().describe('Subscription ID to delete'),
145
+ subscription_id: z.string().describe('Unique identifier of the subscription to delete, obtained from list_subscriptions'),
146
+ },
147
+ outputSchema: {
148
+ message: z.string().describe('Confirmation message indicating the subscription was deleted'),
88
149
  },
150
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
89
151
  }, async ({ subscription_id }) => {
90
152
  const relay = getRelay();
91
153
  await relay.subscriptions.delete(subscription_id);
92
- return { content: [{ type: 'text', text: `Deleted subscription ${subscription_id}` }] };
154
+ const message = `Deleted subscription ${subscription_id}`;
155
+ return {
156
+ content: [{ type: 'text', text: message }],
157
+ structuredContent: { message },
158
+ };
93
159
  });
94
160
  // === Agent Commands ===
95
161
  server.registerTool('register_command', {
96
- description: 'Register a slash command that an agent can handle. Other agents can invoke it.',
162
+ title: 'Register Command',
163
+ description: 'Register a custom slash command that a specific agent can handle. Other agents in the workspace can invoke this command, and the handler agent receives the invocation with its parameters. Commands enable structured inter-agent workflows, such as /deploy, /review, or /summarize. Re-registering an existing command updates its definition.',
97
164
  inputSchema: {
98
- command: z.string().describe('Command name (e.g. "deploy")'),
99
- description: z.string().describe('What the command does'),
100
- handler_agent: z.string().describe('Name of the agent that handles this command'),
165
+ command: z.string().describe('Command name without the leading slash (e.g. "deploy", "review", "summarize")'),
166
+ description: z.string().describe('Human-readable description of what the command does, shown when listing available commands'),
167
+ handler_agent: z.string().describe('Name of the registered agent responsible for handling invocations of this command'),
101
168
  parameters: z.array(z.object({
102
- name: z.string(),
103
- description: z.string().optional(),
104
- type: z.enum(['string', 'number', 'boolean']),
105
- required: z.boolean().optional(),
106
- })).optional().describe('Command parameters'),
169
+ name: z.string().describe('Parameter name used as the key when passing structured arguments'),
170
+ description: z.string().optional().describe('Human-readable description of what this parameter controls'),
171
+ type: z.enum(['string', 'number', 'boolean']).describe('Data type for input validation: "string", "number", or "boolean"'),
172
+ required: z.boolean().optional().describe('Whether this parameter must be provided when invoking the command'),
173
+ })).optional().describe('Array of parameter definitions that the command accepts for structured input'),
107
174
  },
175
+ outputSchema: jsonResult,
176
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
108
177
  }, async ({ command, description, handler_agent, parameters }) => {
109
178
  const relay = getRelay();
110
179
  const result = await relay.commands.register({
@@ -113,38 +182,67 @@ export function registerProgrammabilityTools(server, getRelay, getAgentClient) {
113
182
  handler_agent,
114
183
  parameters,
115
184
  });
116
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
185
+ return {
186
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
187
+ structuredContent: result,
188
+ };
117
189
  });
118
190
  server.registerTool('list_commands', {
119
- description: 'List all registered agent commands in the workspace.',
191
+ title: 'List Commands',
192
+ description: 'List all registered slash commands available in the workspace. Returns each command\'s name, description, handler agent, and parameter definitions. Use this to discover what commands other agents have registered and how to invoke them.',
193
+ inputSchema: {
194
+ handler_agent: z.string().optional().describe('Filter commands to show only those handled by this specific agent name'),
195
+ },
196
+ outputSchema: {
197
+ commands: z.array(z.object({}).passthrough()).describe('Array of command objects with name, description, handler, and parameters'),
198
+ },
199
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
120
200
  }, async () => {
121
201
  const relay = getRelay();
122
202
  const commands = await relay.commands.list();
123
- return { content: [{ type: 'text', text: JSON.stringify(commands, null, 2) }] };
203
+ return {
204
+ content: [{ type: 'text', text: JSON.stringify(commands, null, 2) }],
205
+ structuredContent: { commands: commands },
206
+ };
124
207
  });
125
208
  server.registerTool('delete_command', {
126
- description: 'Delete a registered command.',
209
+ title: 'Delete Command',
210
+ description: 'Permanently remove a registered slash command from the workspace. Once deleted, other agents can no longer invoke the command. This action cannot be undone, so verify the command is no longer needed before deleting.',
127
211
  inputSchema: {
128
- command: z.string().describe('Command name to delete'),
212
+ command: z.string().describe('Name of the command to delete, without the leading slash (e.g. "deploy")'),
213
+ },
214
+ outputSchema: {
215
+ message: z.string().describe('Confirmation message indicating the command was deleted'),
129
216
  },
217
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
130
218
  }, async ({ command }) => {
131
219
  const relay = getRelay();
132
220
  await relay.commands.delete(command);
133
- return { content: [{ type: 'text', text: `Deleted command /${command}` }] };
221
+ const message = `Deleted command /${command}`;
222
+ return {
223
+ content: [{ type: 'text', text: message }],
224
+ structuredContent: { message },
225
+ };
134
226
  });
135
227
  server.registerTool('invoke_command', {
136
- description: 'Invoke a registered slash command as the current agent.',
228
+ title: 'Invoke Command',
229
+ description: 'Invoke a registered slash command as the current agent within a channel context. The invocation is routed to the command\'s handler agent for processing. You can pass arguments as a raw string or as structured JSON parameters matching the command\'s parameter definitions.',
137
230
  inputSchema: {
138
- command: z.string().describe('Command name to invoke'),
139
- channel: z.string().describe('Channel context for invocation'),
140
- args: z.string().optional().describe('Raw argument string'),
141
- parameters: z.string().optional().describe('JSON-encoded structured parameters object'),
231
+ command: z.string().describe('Name of the command to invoke, without the leading slash (e.g. "deploy", "review")'),
232
+ channel: z.string().describe('Name of the channel providing context for the command invocation'),
233
+ args: z.string().optional().describe('Raw argument string passed to the command handler (e.g. "production --force")'),
234
+ parameters: z.string().optional().describe('JSON-encoded object of structured parameters matching the command\'s parameter definitions'),
142
235
  },
236
+ outputSchema: jsonResult,
237
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
143
238
  }, async ({ command, channel, args, parameters }) => {
144
239
  const client = getAgentClient();
145
240
  const parsedParams = parameters ? JSON.parse(parameters) : undefined;
146
241
  const result = await client.commands.invoke(command, { channel, args, parameters: parsedParams });
147
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
242
+ return {
243
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
244
+ structuredContent: result,
245
+ };
148
246
  });
149
247
  }
150
248
  //# sourceMappingURL=programmability.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"programmability.js","sourceRoot":"","sources":["../../src/tools/programmability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"programmability.js","sourceRoot":"","sources":["../../src/tools/programmability.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../src/tools/registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA6ChD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,KAAK,EACrB,UAAU,EAAE,MAAM,YAAY,EAC9B,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,EAClD,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CA6GN"}
1
+ {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../src/tools/registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgDhD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,KAAK,EACrB,UAAU,EAAE,MAAM,YAAY,EAC9B,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,EAClD,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CA+HN"}