search_colombia
Find information about Colombian departments, cities, and tourist attractions by entering a search query for geographical or tourism data.
Instructions
Herramienta de búsqueda general que intenta encontrar información sobre departamentos, ciudades o lugares turísticos.
Args:
query (string): Término de búsqueda (nombre de departamento, ciudad o lugar)
Returns: Resultados de búsqueda con la información encontrada.
Ejemplo de uso:
"Busca Medellín"
"Información sobre el Parque Tayrona"
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Término de búsqueda |
Implementation Reference
- src/index.ts:1054-1126 (handler)The handler function for the 'search_colombia' tool. It performs searches for departments and tourist attractions in Colombia using API requests based on the provided query, formats the results, and returns them as JSON or appropriate error messages.async ({ query }) => { try { const resultados: { tipo: string; datos: unknown; }[] = []; // Buscar en departamentos try { const dept = await apiRequest<Department>(`/Department/name/${encodeURIComponent(query)}`); if (dept) { resultados.push({ tipo: "departamento", datos: { id: dept.id, nombre: dept.name, descripcion: dept.description, capital: dept.cityCapital?.name, poblacion: dept.population, }, }); } } catch { // No encontrado como departamento } // Buscar en atracciones turísticas try { const attractions = await apiRequest<TouristAttraction[]>(`/TouristAttraction/search/${encodeURIComponent(query)}`); if (attractions && attractions.length > 0) { resultados.push({ tipo: "atracciones_turisticas", datos: attractions.slice(0, 5).map(a => ({ id: a.id, nombre: a.name, descripcion: a.description?.substring(0, 200) + "...", })), }); } } catch { // No encontrado } if (resultados.length === 0) { return { content: [ { type: "text", text: `No se encontraron resultados para "${query}". Intenta con otro término.`, }, ], }; } return { content: [ { type: "text", text: JSON.stringify({ query, resultados }, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error en la búsqueda: ${error instanceof Error ? error.message : "Error desconocido"}`, }, ], }; } }
- src/index.ts:1044-1046 (schema)The input schema for the 'search_colombia' tool, defining the 'query' parameter as a string with minimum length 2 and a description.inputSchema: { query: z.string().min(2).describe("Término de búsqueda"), },
- src/index.ts:1029-1127 (registration)The registration of the 'search_colombia' tool using server.registerTool, including title, description, input schema, annotations, and the handler function.server.registerTool( "search_colombia", { title: "Buscar en Colombia", description: `Herramienta de búsqueda general que intenta encontrar información sobre departamentos, ciudades o lugares turísticos. Args: - query (string): Término de búsqueda (nombre de departamento, ciudad o lugar) Returns: Resultados de búsqueda con la información encontrada. Ejemplo de uso: - "Busca Medellín" - "Información sobre el Parque Tayrona"`, inputSchema: { query: z.string().min(2).describe("Término de búsqueda"), }, annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true, }, }, async ({ query }) => { try { const resultados: { tipo: string; datos: unknown; }[] = []; // Buscar en departamentos try { const dept = await apiRequest<Department>(`/Department/name/${encodeURIComponent(query)}`); if (dept) { resultados.push({ tipo: "departamento", datos: { id: dept.id, nombre: dept.name, descripcion: dept.description, capital: dept.cityCapital?.name, poblacion: dept.population, }, }); } } catch { // No encontrado como departamento } // Buscar en atracciones turísticas try { const attractions = await apiRequest<TouristAttraction[]>(`/TouristAttraction/search/${encodeURIComponent(query)}`); if (attractions && attractions.length > 0) { resultados.push({ tipo: "atracciones_turisticas", datos: attractions.slice(0, 5).map(a => ({ id: a.id, nombre: a.name, descripcion: a.description?.substring(0, 200) + "...", })), }); } } catch { // No encontrado } if (resultados.length === 0) { return { content: [ { type: "text", text: `No se encontraron resultados para "${query}". Intenta con otro término.`, }, ], }; } return { content: [ { type: "text", text: JSON.stringify({ query, resultados }, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error en la búsqueda: ${error instanceof Error ? error.message : "Error desconocido"}`, }, ], }; } } );