attach_signal
Link external feedback signals to specific product ideas for better context and decision-making in idea management workflows.
Instructions
Link a signal to an idea. This associates external feedback with a specific product idea.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| signalId | Yes | The ID of the signal to attach | |
| ideaId | Yes | The ID of the idea to attach the signal to |
Implementation Reference
- src/mcp/tools/proxyTools.ts:369-400 (handler)The 'attach_signal' tool is a proxied tool. The handler function 'handleProxyTool' in 'src/mcp/tools/proxyTools.ts' manages calls for all tools defined in the 'proxyTools' array by forwarding them to the main application's MCP handler via 'idealiftClient.mcpProxy'.
export async function handleProxyTool( toolName: string, args: Record<string, unknown>, chatgptSubjectId: string ): Promise<{ content: Array<{ type: string; text: string }>; isError: boolean }> { try { const response = await idealiftClient.mcpProxy( chatgptSubjectId, 'tools/call', { name: toolName, arguments: args } ); if (response.error) { return { content: [{ type: 'text', text: `Error: ${response.error.message}` }], isError: true, }; } // The result from handleJsonRpcRequest for tools/call is { content: [...], isError?: boolean } const result = response.result as { content?: Array<{ type: string; text: string }>; isError?: boolean } | undefined; if (result?.content) { return { content: result.content, isError: result.isError || false, }; } // Fallback: wrap the result as text return { content: [{ type: 'text', text: JSON.stringify(response.result, null, 2) }], - src/mcp/tools/proxyTools.ts:232-245 (schema)Definition and input schema for the 'attach_signal' tool.
{ name: 'attach_signal', description: 'Link a signal to an idea. This associates external feedback with a specific product idea.', inputSchema: { type: 'object' as const, properties: { signalId: { type: 'string', description: 'The ID of the signal to attach' }, ideaId: { type: 'string', description: 'The ID of the idea to attach the signal to' }, }, required: ['signalId', 'ideaId'], }, annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true }, _meta: { 'openai/visibility': 'public' }, },