@live-context/mcp 0.3.0 → 0.4.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.
Files changed (2) hide show
  1. package/dist/index.js +40 -0
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -171,8 +171,48 @@ If you know the knowledge type, pass it in type_hint for higher classification a
171
171
  notebook: z.string().optional().describe('Target Notebook name (personal scope)'),
172
172
  source: z.string().optional().describe('Origin source identifier. For doc migrations, the relative file path.'),
173
173
  metadata: z.record(z.string(), z.unknown()).optional().describe('Arbitrary metadata key/value pairs'),
174
+ trigger_message: z.string().optional().describe('Required when target Space is in review_required mode. Explain why this should be added (min 10 chars).'),
174
175
  },
175
176
  }, (args) => callMcpApi('write-context', args));
177
+ server.registerTool('propose_space', {
178
+ description: `Propose a new team Space (knowledge container). When the caller is a team admin of the resolved owner_team, the proposal is auto-approved and the Space is created immediately. Otherwise the proposal goes to a queue for admin review.
179
+
180
+ trigger_message is REQUIRED — explain WHY this Space should exist (min 10 chars). Surfaced verbatim to the admin reviewing.
181
+
182
+ Use this when the user asks for a new container that doesn't fit any existing Space — never create silently.`,
183
+ inputSchema: {
184
+ name: z.string().describe('Space name (e.g. "design-system", "engineering")'),
185
+ description: z.string().optional().describe('Short description of what goes in this Space.'),
186
+ owner_team_id: z.string().optional().describe('Owner team ID. Defaults to the calling team.'),
187
+ is_restricted: z.boolean().optional().describe('Hide from non-owner teams unless explicitly shared. Default false.'),
188
+ trigger_message: z.string().describe('Why this Space should exist (min 10 chars). Required.'),
189
+ },
190
+ }, (args) => callMcpApi('propose-space', args));
191
+ server.registerTool('propose_project', {
192
+ description: `Propose a new Project — a cross-team workspace with goal/due_at/status. Members are picked individually from any team (not auto-included by team membership). When the caller is a team admin, the proposal auto-approves; otherwise it queues for review.
193
+
194
+ trigger_message is REQUIRED — explain WHY this Project should exist (min 10 chars).
195
+
196
+ Use for time-bound work (launches, fundraises, redesigns). For ongoing knowledge containers, use propose_space instead.`,
197
+ inputSchema: {
198
+ name: z.string().describe('Project name (e.g. "Q3 launch", "API redesign")'),
199
+ description: z.string().optional().describe('Short description.'),
200
+ goal: z.string().optional().describe('Project objective or outcome.'),
201
+ due_at: z.string().optional().describe('ISO 8601 due date (optional).'),
202
+ initial_members: z.array(z.string()).optional().describe('User IDs to add as initial contributors. Caller is auto-added.'),
203
+ owner_team_id: z.string().optional().describe('Owner team ID for governance. Defaults to caller home team. Hidden from project UI.'),
204
+ trigger_message: z.string().describe('Why this Project should exist (min 10 chars). Required.'),
205
+ },
206
+ }, (args) => callMcpApi('propose-project', args));
207
+ server.registerTool('list_my_proposals', {
208
+ description: 'List your proposals (Spaces + Projects you proposed) plus any proposals you can see based on team_visible setting. Filter by status.',
209
+ inputSchema: {
210
+ status: z
211
+ .enum(['pending', 'approved', 'rejected', 'auto_approved'])
212
+ .optional()
213
+ .describe('Filter by proposal status.'),
214
+ },
215
+ }, (args) => callMcpApi('list-my-proposals', args));
176
216
  server.registerTool('health_check', {
177
217
  description: 'Returns server health status and resolved team identity',
178
218
  }, () => callMcpApi('health-check', undefined, 'GET'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-context/mcp",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "private": false,
5
5
  "description": "Live Context MCP — stdio proxy to live-context.com hosted API. Customer-side has no Supabase dependency.",
6
6
  "type": "module",