@flowrelay/mcp-server 0.1.0 → 0.2.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/dist/api.d.ts CHANGED
@@ -20,7 +20,10 @@ export declare class FlowRelayAPI {
20
20
  updated_at: string;
21
21
  }>;
22
22
  }>;
23
- generateHandoff(sources?: string[]): Promise<{
23
+ generateHandoff(sources?: string[], filters?: Record<string, {
24
+ projects?: string[];
25
+ eventTypes?: string[];
26
+ }>): Promise<{
24
27
  handoff: {
25
28
  id: string;
26
29
  title: string;
package/dist/api.js CHANGED
@@ -28,10 +28,15 @@ export class FlowRelayAPI {
28
28
  async listHandoffs(status = 'active', limit = 10) {
29
29
  return this.request(`/handoffs?status=${status}&limit=${limit}`);
30
30
  }
31
- async generateHandoff(sources) {
31
+ async generateHandoff(sources, filters) {
32
+ const body = {};
33
+ if (sources?.length)
34
+ body.sources = sources;
35
+ if (filters && Object.keys(filters).length > 0)
36
+ body.filters = filters;
32
37
  return this.request('/handoffs', {
33
38
  method: 'POST',
34
- body: JSON.stringify(sources?.length ? { sources } : {}),
39
+ body: JSON.stringify(body),
35
40
  });
36
41
  }
37
42
  async listIntegrations() {
package/dist/index.js CHANGED
@@ -39,13 +39,17 @@ server.tool('list_handoffs', 'List your Flow Relay handoffs. Returns recent hand
39
39
  return { content: [{ type: 'text', text }] };
40
40
  });
41
41
  // ── Tool: generate handoff ───────────────────────────────────────────
42
- server.tool('generate_handoff', 'Generate a new context handoff from your connected integrations. Summarizes recent activity into decisions, open questions, and next steps.', {
42
+ server.tool('generate_handoff', 'Generate a new context handoff from your connected integrations. Summarizes recent activity into decisions, open questions, and next steps. Optionally filter by specific projects/repos/channels and event types per source.', {
43
43
  sources: z.array(z.enum(['github', 'slack', 'linear', 'notion', 'jira', 'gitlab']))
44
44
  .optional()
45
45
  .describe('Specific sources to include (omit for all connected sources)'),
46
- }, async ({ sources }) => {
46
+ filters: z.record(z.string(), z.object({
47
+ projects: z.array(z.string()).optional().describe('Filter to specific repos, channels, projects, or teams'),
48
+ eventTypes: z.array(z.string()).optional().describe('Filter to specific event types (e.g. "push", "issue_created")'),
49
+ })).optional().describe('Per-source advanced filters'),
50
+ }, async ({ sources, filters }) => {
47
51
  try {
48
- const { handoff } = await api.generateHandoff(sources);
52
+ const { handoff } = await api.generateHandoff(sources, filters);
49
53
  let text = `# ${handoff.title}\n\n${handoff.summary}\n`;
50
54
  text += `\n**Sources:** ${handoff.sources.join(', ')}\n`;
51
55
  if (handoff.decisions.length)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowrelay/mcp-server",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Flow Relay MCP Server for Claude Desktop and Claude Code — handoffs, integrations, and context events via natural conversation.",
5
5
  "type": "module",
6
6
  "license": "MIT",