get-signals
Retrieve signals from Seq MCP Server using owner ID, shared/private filters, and partial matches for targeted event monitoring and analysis.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ownerId | No | Owner ID to filter signals by | |
| partial | No | Whether to include partial signal matches | |
| shared | No | Whether to include only shared signals (true) or private signals (false) |
Implementation Reference
- src/seq-server.ts:100-127 (handler)The handler function for the 'get-signals' tool. It constructs query parameters based on input (ownerId, shared, partial), calls makeSeqRequest to fetch signals from '/api/signals', and returns formatted JSON or error response.async ({ ownerId, shared, partial }) => { try { const params: Record<string, string> = { // Default to shared=true if no other params provided shared: shared?.toString() ?? "true" }; if (ownerId) params.ownerId = ownerId; if (partial !== undefined) params.partial = partial.toString(); const signals = await makeSeqRequest<Signal[]>('/api/signals', params); return { content: [{ type: "text", text: JSON.stringify(signals, null, 2) }] }; } catch (error) { const err = error as Error; return { content: [{ type: "text", text: `Error fetching signals: ${err.message}` }], isError: true }; } }
- src/seq-server.ts:92-99 (schema)Zod input schema defining optional parameters for the get-signals tool: ownerId (string), shared (boolean), partial (boolean).{ ownerId: z.string().optional() .describe('Owner ID to filter signals by'), shared: z.boolean().optional() .describe('Whether to include only shared signals (true) or private signals (false)'), partial: z.boolean().optional() .describe('Whether to include partial signal matches') },
- src/seq-server.ts:90-128 (registration)MCP server registration of the 'get-signals' tool, specifying name, input schema, and handler function.server.tool( "get-signals", { ownerId: z.string().optional() .describe('Owner ID to filter signals by'), shared: z.boolean().optional() .describe('Whether to include only shared signals (true) or private signals (false)'), partial: z.boolean().optional() .describe('Whether to include partial signal matches') }, async ({ ownerId, shared, partial }) => { try { const params: Record<string, string> = { // Default to shared=true if no other params provided shared: shared?.toString() ?? "true" }; if (ownerId) params.ownerId = ownerId; if (partial !== undefined) params.partial = partial.toString(); const signals = await makeSeqRequest<Signal[]>('/api/signals', params); return { content: [{ type: "text", text: JSON.stringify(signals, null, 2) }] }; } catch (error) { const err = error as Error; return { content: [{ type: "text", text: `Error fetching signals: ${err.message}` }], isError: true }; } } );
- src/seq-server.ts:31-56 (helper)Helper function used by get-signals to make authenticated HTTP requests to the SEQ API, handling URL construction, parameters, headers, and error checking.async function makeSeqRequest<T>(endpoint: string, params: Record<string, string> = {}): Promise<T> { const url = new URL(`${SEQ_BASE_URL}${endpoint}`); // Add API key as query parameter url.searchParams.append('apiKey', SEQ_API_KEY); // Add additional query parameters Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { url.searchParams.append(key, value); } }); const headers: Record<string, string> = { 'Accept': 'application/json', 'X-Seq-ApiKey': SEQ_API_KEY }; const response = await fetch(url.toString(), { headers }); if (!response.ok) { throw new Error(`SEQ API error: ${response.statusText} (${response.status})`); } return response.json(); }
- src/seq-server.ts:13-20 (schema)TypeScript interface defining the structure of a Signal object returned by the SEQ API, used in get-signals.interface Signal { id: string; title: string; description?: string; filters: unknown; ownerId?: string; shared: boolean; }