discover_capabilities
Search and filter available API capabilities by domain or text to find providers for AI agents, returning provider counts and top provider information.
Instructions
Discover what capabilities are available — search by domain or text. Returns capabilities with provider counts and top provider info.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Filter by capability domain (e.g. 'email', 'payment', 'ai') | |
| search | No | Search capabilities by text | |
| limit | No | Max results to return (default 20) |
Implementation Reference
- Implementation of the discover_capabilities tool handler, which calls the Rhumb API client to fetch capabilities.
export async function handleDiscoverCapabilities( input: DiscoverCapabilitiesInput, client: RhumbApiClient ): Promise<DiscoverCapabilitiesOutput> { try { const result = await client.discoverCapabilities({ domain: input.domain, search: input.search, limit: input.limit ?? 20 }); return { capabilities: result.items, total: result.total }; } catch { return { capabilities: [], total: 0 }; } } - packages/mcp/src/types.ts:118-143 (schema)Input schema definition for the discover_capabilities tool.
export const DiscoverCapabilitiesInputSchema = { type: "object" as const, properties: { domain: { type: "string" as const, description: "Filter by domain: 'email', 'payment', 'ai', 'communication', 'data', 'storage', 'search', etc. Omit for all domains." }, search: { type: "string" as const, description: "Free-text search across capability names and descriptions. Examples: 'send message', 'charge card', 'scrape website'" }, limit: { type: "number" as const, minimum: 1, maximum: 50, description: "Max results (default 20). Returns capability IDs you can pass to resolve_capability." } }, required: [] as const }; export type DiscoverCapabilitiesInput = { domain?: string; search?: string; limit?: number; }; export type CapabilityItem = { id: string; domain: string; action: string; description: string; inputHint: string; outcome: string; providerCount: number; topProvider: { slug: string; anScore: number | null; tierLabel: string } | null; }; - packages/mcp/src/server.ts:120-133 (registration)Tool registration logic inside the MCP server, dispatching to handleDiscoverCapabilities.
"discover_capabilities", "Browse Capabilities by domain or search text. A Capability is an action (e.g. 'email.send', 'payment.charge') that multiple providers can fulfill. Use this when you know WHAT you need to do but not which Service does it. Returns Capability IDs for resolve_capability. Different from find_services: find_services searches Services, this searches Capabilities.", { domain: z.string().optional().describe(DiscoverCapabilitiesInputSchema.properties.domain.description), search: z.string().optional().describe(DiscoverCapabilitiesInputSchema.properties.search.description), limit: z.number().min(1).max(50).optional().describe(DiscoverCapabilitiesInputSchema.properties.limit.description) }, async ({ domain, search, limit }) => { const result = await handleDiscoverCapabilities({ domain, search, limit }, client); return { content: [{ type: "text" as const, text: JSON.stringify(result) }] }; } );