get_top_integrations
Retrieve ranked integrations and MCP servers for an AI ecosystem, with optional filtering by use case to find relevant tools.
Instructions
Get ranked integrations and MCP servers for an AI ecosystem. Optionally filter by use case. Strata provides intelligence, not ground truth. Always verify critical decisions against the source_urls returned with each item.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ecosystem | Yes | ||
| use_case | No |
Implementation Reference
- lib/mcp-tools.ts:277-333 (handler)The handler function that executes 'get_top_integrations' logic. It checks ecosystem access, then if a use_case is provided it searches content_items via RPC with category='integrations', otherwise queries content_items directly filtered by ecosystem_slug and category='integrations'. Returns ranked integration items with source_urls.
if (name === 'get_top_integrations') { const ecosystem = args.ecosystem as string const useCase = args.use_case as string | undefined const access = await checkEcosystemAccess(supabase, ecosystem, profile.tier) if (!access.ok) { await logApiRequest(supabase, { apiKey: profile.api_key, tool: 'integrations', ecosystem, statusCode: access.response.status }) return err('Error: Ecosystem not available on free tier. Upgrade at usestrata.dev/dashboard/billing', access.response.status) } if (useCase) { const { data, error } = await supabase.rpc('search_content_items', { search_query: useCase, filter_ecosystem: access.slug, filter_category: 'integrations', user_tier: profile.tier, }) if (error) { await logApiRequest(supabase, { apiKey: profile.api_key, tool: 'integrations', ecosystem, statusCode: 500 }) return err('Error: Search error', 500) } type SearchRow = { id: string; title: string; body: string; source_url: string | null; rank: number } const rows = ((data ?? []) as SearchRow[]) const items = rows.map((r) => ({ id: r.id, title: r.title, body: r.body, source_urls: r.source_url ? [r.source_url] : [], rank: r.rank, })) await logApiRequest(supabase, { apiKey: profile.api_key, tool: 'integrations', ecosystem, statusCode: 200 }) return ok({ ecosystem, items }, rows.map(r => r.id)) } let query = supabase .from('content_items') .select('id, title, body, source_url') .eq('ecosystem_slug', access.slug) .eq('category', 'integrations') .eq('is_quarantined', false) .order('published_at', { ascending: false }) if (profile.tier === 'free') query = query.eq('is_pro_only', false) const { data, error } = await query if (error) { await logApiRequest(supabase, { apiKey: profile.api_key, tool: 'integrations', ecosystem, statusCode: 500 }) return err('Error: Database error', 500) } type Row = { id: string; title: string; body: string; source_url: string | null } const rows = ((data ?? []) as Row[]) const items = rows.map((r) => ({ id: r.id, title: r.title, body: r.body, source_urls: r.source_url ? [r.source_url] : [], })) await logApiRequest(supabase, { apiKey: profile.api_key, tool: 'integrations', ecosystem, statusCode: 200 }) return ok({ ecosystem, items }, rows.map(r => r.id)) } - lib/mcp-tools.ts:66-82 (schema)The input schema definition for 'get_top_integrations'. Defines required 'ecosystem' (string slug) and optional 'use_case' (string filter).
{ name: 'get_top_integrations', description: 'Get ranked integrations and MCP servers for an AI ecosystem. Optionally filter by use case. ' + EPISTEMIC_NOTICE, inputSchema: { type: 'object', properties: { ecosystem: { type: 'string', description: 'AI ecosystem slug' }, use_case: { type: 'string', description: 'Filter by use case e.g. coding, research, data analysis', }, }, required: ['ecosystem'], }, }, - app/mcp/route.ts:44-51 (registration)Registers 'get_top_integrations' tool on the HTTP MCP server (McpServer) with Zod schema { ecosystem: z.string(), use_case: z.string().optional() }, routing to handleToolCall.
server.registerTool( 'get_top_integrations', { description: TOOL_DEFINITIONS[2].description, inputSchema: { ecosystem: z.string(), use_case: z.string().optional() }, }, (args) => handleToolCall('get_top_integrations', args as Record<string, unknown>, req), ) - scripts/mcp-stdio.ts:52-60 (registration)Registers 'get_top_integrations' tool on the stdio MCP server (used for local/CLI testing), routing to handleToolCall with a mock request.
server.registerTool( 'get_top_integrations', { description: TOOL_DEFINITIONS[2].description, inputSchema: { ecosystem: z.string(), use_case: z.string().optional() }, }, (args) => handleToolCall('get_top_integrations', args as Record<string, unknown>, mockReq), ) - lib/mcp-tools.ts:9-21 (helper)The ToolDefinition interface used to type the TOOL_DEFINITIONS array, which contains the schema for get_top_integrations at index [2].
export interface ToolDefinition { name: string description: string inputSchema: { type: 'object' properties: Record<string, { type: string description: string items?: { type: string } }> required: string[] } }