registry_search
Search for service providers by vertical, location, and country. Get ranked organizations with names, slugs, and summaries to find professionals like physiotherapists in Santiago.
Instructions
Search for Servicialo-compatible organizations by vertical, location, and country. Use this as the primary discovery tool when a user needs a service (e.g., "find a physiotherapist in Santiago"). Do NOT use if you already have an org_slug (use registry.get_organization instead). Returns a ranked list of organizations with names, slugs, and service summaries.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| vertical | No | Vertical del servicio. Valores comunes: tecnologia, consultoria, kinesiologia, psicologia, dental, nutricion, fonoaudiologia, terapia-ocupacional, medicina, veterinaria, educacion, fitness, legal, belleza, hogar. Omitir para buscar en todas las verticales. | |
| location | No | City or district to filter by (e.g. "santiago", "providencia"). Omit for country-wide results. | |
| country | No | ISO 3166-1 alpha-2 country code (e.g. "cl", "mx", "ar"). Default: "cl" | cl |
| limit | No | Max results to return (1-100). Default: 10 |
Implementation Reference
- The handler function for 'registry_search' (defined as 'registry.search'). It calls client.pub.get('/api/servicialo/registry', ...) with vertical, location, country, and limit parameters.
handler: async (client: ServicialoAdapter, args: { vertical?: string; location?: string; country?: string; limit?: number }) => { const result = await client.pub.get('/api/servicialo/registry', { vertical: args.vertical, location: args.location, country: args.country ?? 'cl', limit: args.limit, }); return result; }, - The Zod schema for 'registry_search': validates vertical (optional string), location (optional string), country (string, default 'cl'), and limit (number, default 10).
schema: z.object({ vertical: z.string().optional().describe('Vertical del servicio. Valores comunes: tecnologia, consultoria, kinesiologia, psicologia, dental, nutricion, fonoaudiologia, terapia-ocupacional, medicina, veterinaria, educacion, fitness, legal, belleza, hogar. Omitir para buscar en todas las verticales.'), location: z.string().optional().describe('City or district to filter by (e.g. "santiago", "providencia"). Omit for country-wide results.'), country: z.string().default('cl').describe('ISO 3166-1 alpha-2 country code (e.g. "cl", "mx", "ar"). Default: "cl"'), limit: z.number().default(10).describe('Max results to return (1-100). Default: 10'), }), - packages/mcp-server/src/tools/public/registry.ts:4-27 (registration)The tool definition object exported as 'registry.search' within registryTools. This gets imported and registered via the MCP server in index.ts.
export const registryTools = { 'registry.search': { description: 'Search for Servicialo-compatible organizations by vertical, location, and country. ' + 'Use this as the primary discovery tool when a user needs a service ' + '(e.g., "find a physiotherapist in Santiago"). ' + 'Do NOT use if you already have an org_slug (use registry.get_organization instead). ' + 'Returns a ranked list of organizations with names, slugs, and service summaries.', schema: z.object({ vertical: z.string().optional().describe('Vertical del servicio. Valores comunes: tecnologia, consultoria, kinesiologia, psicologia, dental, nutricion, fonoaudiologia, terapia-ocupacional, medicina, veterinaria, educacion, fitness, legal, belleza, hogar. Omitir para buscar en todas las verticales.'), location: z.string().optional().describe('City or district to filter by (e.g. "santiago", "providencia"). Omit for country-wide results.'), country: z.string().default('cl').describe('ISO 3166-1 alpha-2 country code (e.g. "cl", "mx", "ar"). Default: "cl"'), limit: z.number().default(10).describe('Max results to return (1-100). Default: 10'), }), handler: async (client: ServicialoAdapter, args: { vertical?: string; location?: string; country?: string; limit?: number }) => { const result = await client.pub.get('/api/servicialo/registry', { vertical: args.vertical, location: args.location, country: args.country ?? 'cl', limit: args.limit, }); return result; }, }, - packages/mcp-server/src/index.ts:20-20 (registration)Import of registryTools from the registry module.
import { registryTools } from './tools/public/registry.js'; - packages/mcp-server/src/index.ts:46-46 (registration)Registration of registryTools into publicTools Record, which is later registered via registerTools() at line 165. The tool name 'registry.search' is converted to 'registry_search' (dots replaced with underscores).
...registryTools as unknown as Record<string, ToolDef>,