get-signals
Retrieve and filter signals from Seq's logging and monitoring system using owner ID, shared status, and partial match criteria.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ownerId | No | Owner ID to filter signals by | |
| shared | No | Whether to include only shared signals (true) or private signals (false) | |
| partial | No | Whether to include partial signal matches |
Implementation Reference
- src/seq-server.ts:100-127 (handler)The handler function for the 'get-signals' tool. It constructs API 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)Input schema for the get-signals tool using Zod validators for optional parameters: ownerId (string), shared (boolean), partial (boolean). Includes descriptions for each.{ 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)Registration of the 'get-signals' tool via server.tool(), including the tool 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 makeSeqRequest used by get-signals to perform HTTP requests to the SEQ API, handling URL construction, API key, parameters, headers, and error handling.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 Signal defining the structure of signal objects returned by the SEQ API and used in get-signals.interface Signal { id: string; title: string; description?: string; filters: unknown; ownerId?: string; shared: boolean; }