Skip to main content
Glama

search_ideas

Find ideas by searching titles and summaries, with filters for status, source, and result limits to support product feedback management.

Instructions

Search ideas by text query. Searches title and summary fields.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text
statusNoFilter by status
sourceNoFilter by source
limitNoNumber of results to return

Implementation Reference

  • Definition and registration of the 'search_ideas' tool in proxyTools.ts. The tool is proxied to the main application's MCP handler via handleProxyTool.
      name: 'search_ideas',
      description: 'Search ideas by text query. Searches title and summary fields.',
      inputSchema: {
        type: 'object' as const,
        properties: {
          query: { type: 'string', description: 'Search query text' },
          status: {
            type: 'string',
            enum: ['new', 'accepted', 'rejected', 'snoozed', 'expired'],
            description: 'Filter by status',
          },
          source: { type: 'string', description: 'Filter by source' },
          limit: { type: 'number', description: 'Number of results to return', default: 20 },
        },
        required: ['query'],
      },
      annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
      _meta: { 'openai/visibility': 'public' },
    },
  • The handleProxyTool function acts as the handler for 'search_ideas' (and other proxied tools), forwarding the call to the main IdeaLift app 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) }],
          isError: false,
        };
      } catch (error) {
        console.error(`[ProxyTool] Error calling ${toolName}:`, error);
        return {
          content: [{ type: 'text', text: `Proxy error: ${(error as Error).message}` }],
          isError: true,
        };
      }
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Startvest-LLC/idealift-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server