Cambio Uruguay

Uruguay: exchange rates, rentals, used cars, product prices and search across cambio-uruguay.com

¿Debería usar esto?

Calidad y seguridad

C
Calidad de la descripción
75%
Integridad del esquema
83%
Calidad de los nombres
91%
Riesgo de envenenamiento
0%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (22)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'search_rentals' description contains placeholder texten search_rentals
  • MEDIUMTool 'get_rental' description contains placeholder texten get_rental
  • MEDIUMTool 'search_used_cars' description contains placeholder texten search_used_cars
  • MEDIUMTool 'search_site' description contains placeholder texten search_site
  • MEDIUMTool description contains URL to non-standard domainen get_rental
  • MEDIUMTool description contains URL to non-standard domainen get_car
  • LOWTool 'best_house' description lacks action verben best_house
  • LOWTool 'get_rental' description lacks action verben get_rental
  • LOWTool 'rental_market_stats' description lacks action verben rental_market_stats

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~10,118Tokens (definiciones de herramientas)
~2.4 KBTamaño de respuesta típico
Impacto significativo en la atención (7.90% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "cambio-uruguay": {
      "url": "https://mcp.cambio-uruguay.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://mcp.cambio-uruguay.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (29)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢get_rates(currency)

Current buy/sell rates for a currency across Uruguayan exchange houses (casas de cambio): market average, best buy/sell house, lowest spread, and the full per-house list. Excludes BCU and interbank quotes. Currency is an ISO code like USD, EUR, ARS, BRL.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "currency": {
      "type": "string",
      "description": "ISO currency code, e.g. USD, EUR, ARS, BRL"
    }
  },
  "required": [
    "currency"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪best_house(currency, side)

The single best casa de cambio right now to buy or sell a currency. side='buy' means you buy the currency (best = lowest sell price); side='sell' means you sell it (best = highest buy price).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "currency": {
      "type": "string",
      "description": "ISO currency code, e.g. USD"
    },
    "side": {
      "type": "string",
      "enum": [
        "buy",
        "sell"
      ],
      "description": "'buy' = you buy the currency; 'sell' = you sell it"
    }
  },
  "required": [
    "currency",
    "side"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪convert(amount, from, to)

Convert an amount between currencies using the best available Uruguayan market rates. Foreign↔foreign routes through UYU (Uruguayan peso). Codes: USD, EUR, ARS, BRL, UYU, etc.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Amount to convert"
    },
    "from": {
      "type": "string",
      "description": "Source ISO code, e.g. USD"
    },
    "to": {
      "type": "string",
      "description": "Target ISO code, e.g. UYU"
    }
  },
  "required": [
    "amount",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_houses

All Uruguayan exchange houses (casas de cambio) tracked, with display name, website, and departments served.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_evolution(origin, currency, period)

Historical rate series and statistics (min/max/avg/current/change) for a given exchange house (origin) and currency over the last N months. Use list_houses for valid origin ids.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "origin": {
      "type": "string",
      "description": "Exchange house id, e.g. brou, itau, prex"
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code, e.g. USD"
    },
    "period": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 60,
      "description": "Months of history (default 6)"
    }
  },
  "required": [
    "origin",
    "currency"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_news(limit)

Latest Uruguayan dollar/economy headlines (Google News), de-duplicated and newest first.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 30,
      "description": "Max headlines (default 12)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪daily_summary(lang, currency)

AI-generated analysis of the Uruguayan exchange market. Without a currency, a whole-market summary; with one, a per-currency analysis. lang is es | en | pt.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "pt"
      ],
      "description": "Language (default es)"
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO code for a per-currency analysis, e.g. USD"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢geocode_uy_address(address, department)

Convierte una dirección, esquina, barrio o nombre de lugar de Uruguay («Facultad de Ingeniería», «Tres Cruces», «Pocitos») en coordenadas con Google Maps. search_rentals y rank_rentals_for_household ya geocodifican solas si les pasás address: no hace falta llamar a esta antes.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "minLength": 4,
      "maxLength": 180,
      "description": "Calle y número (\"Av. Italia 2500\"), esquina (\"Rivera y Soca\"), barrio o nombre del lugar (\"Hospital de Clínicas\")."
    },
    "department": {
      "type": "string",
      "maxLength": 40,
      "description": "Departamento de Uruguay con tildes, p. ej. \"Montevideo\", \"Canelones\", \"Maldonado\", \"Colonia\"."
    }
  },
  "required": [
    "address"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_rentals(department, neighborhoods, types, bedrooms, bedroomsExact, ...)

Busca viviendas en alquiler en todo Uruguay (unión de Mercado Libre, InfoCasas, Inmuebles El País, Casasweb y Facebook Marketplace, ~57.000 propiedades, avisos vistos en los últimos 10 días). Filtra por barrio, tipo, dormitorios, baños, m², precio (UYU o USD), TOTAL MENSUAL con gastos comunes, gastos comunes máximos, mascotas, garaje, amueblado, tipo de garantía (ANDA, Contaduría, seguro, depósito, BHU, propietario), comodidades, dueño directo, inmobiliaria, portal, texto libre, cercanía a un punto y calidad del barrio (pocas denuncias, pocos cortes de agua o reclamos). Devuelve cada vivienda con alquiler, gastos comunes y total cuando el MISMO aviso los publica (~70 % no publica gastos comunes), link al aviso original, ficha en cambio-uruguay.com, la mediana de la búsqueda, los barrios con más oferta y un link para guardar la búsqueda o crear una alerta. Para rankear según ingresos y traslados de un hogar usá rank_rentals_for_household.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "department": {
      "type": "string",
      "maxLength": 40,
      "description": "Departamento de Uruguay con tildes, p. ej. \"Montevideo\", \"Canelones\", \"Maldonado\", \"Colonia\"."
    },
    "neighborhoods": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 20,
      "description": "Barrios como aparecen en los avisos: \"Pocitos\", \"Cordón\", \"Punta Carretas\", \"Malvín\"…"
    },
    "types": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "vivienda",
          "apartamento",
          "casa",
          "habitacion",
          "local",
          "oficina",
          "garaje",
          "terreno",
          "otro"
        ]
      },
      "maxItems": 5,
      "description": "\"vivienda\" = apartamento+casa+habitación. Default: todos los tipos (incluye locales y oficinas), así que para vivir pasá [\"vivienda\"] o [\"apartamento\"]."
    },
    "bedrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10,
      "description": "Dormitorios mínimos (0 = monoambiente). Con bedroomsExact=true, exactos."
    },
    "bedroomsExact": {
      "type": "boolean"
    },
    "bathrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Baños mínimos."
    },
    "areaMin": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "m² mínimos."
    },
    "areaMax": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "m² máximos."
    },
    "listedCurrency": {
      "type": "string",
      "enum": [
        "UYU",
        "USD"
      ],
      "description": "Sólo avisos publicados en esa moneda. NO cambia la moneda de los topes: priceMinUyu/priceMaxUyu son siempre pesos."
    },
    "priceMinUyu": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Alquiler mínimo en PESOS (sin gastos comunes). Si la persona habla en dólares, convertí (1 USD ≈ 41 UYU, o usá convert)."
    },
    "priceMaxUyu": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Alquiler máximo en PESOS (sin gastos comunes). Los avisos en dólares se comparan convertidos."
    },
    "monthlyMaxUyu": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Tope del TOTAL mensual en pesos (alquiler + gastos comunes). Excluye avisos que no publican gastos comunes."
    },
    "expensesMaxUyu": {
      "type": "number",
      "minimum": 0,
      "description": "Gastos comunes máximos en pesos. Excluye avisos que no los publican."
    },
    "pets": {
      "type": "boolean",
      "description": "Sólo avisos que aceptan mascotas explícitamente."
    },
    "parking": {
      "type": "boolean",
      "description": "Con garaje."
    },
    "furnished": {
      "type": "boolean",
      "description": "Amueblado."
    },
    "guarantees": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "anda",
          "contaduria",
          "aseguradora",
          "propietaria",
          "deposito",
          "bhu",
          "aConvenir"
        ]
      },
      "maxItems": 7,
      "description": "Garantías aceptadas (cualquiera de ellas): anda, contaduria (Contaduría General de la Nación), aseguradora (Porto, Sura, Mapfre…), propietaria (fiador propietario), deposito, bhu, aConvenir."
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "gimnasio",
          "piscina",
          "parrillero",
          "ascensor",
          "aire",
          "balcon",
          "lavadero",
          "calefaccion",
          "jardin",
          "sauna",
          "salon"
        ]
      },
      "maxItems": 11,
      "description": "Comodidades que debe tener (todas)."
    },
    "ownerDirect": {
      "type": "boolean",
      "description": "Sólo dueño directo (sin inmobiliaria)."
    },
    "agency": {
      "type": "string",
      "maxLength": 80,
      "description": "Clave de una inmobiliaria."
    },
    "source": {
      "type": "string",
      "enum": [
        "mercadolibre",
        "infocasas",
        "facebook",
        "elpais",
        "casasweb"
      ],
      "description": "Un solo portal."
    },
    "text": {
      "type": "string",
      "maxLength": 80,
      "description": "Texto libre en título y descripción, p. ej. \"terraza\", \"patio\"."
    },
    "near": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string",
          "maxLength": 180,
          "description": "Dirección, esquina, barrio o nombre de lugar en Uruguay: \"Bulevar Artigas 1234\", \"18 de Julio y Ejido\", \"Montevideo Shopping\"."
        },
        "lat": {
          "type": "number",
          "minimum": -35.5,
          "maximum": -30
        },
        "lng": {
          "type": "number",
          "minimum": -58.6,
          "maximum": -53
        },
        "label": {
          "type": "string",
          "maxLength": 60,
          "description": "Nombre del punto, p. ej. \"Trabajo\"."
        },
        "radiusKm": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 30,
          "description": "Quedarse sólo con viviendas a esta distancia en línea recta (km). Sin radio, sólo ordena por cercanía."
        }
      },
      "additionalProperties": false,
      "description": "Buscar cerca de un punto: ordena por distancia y, con radiusKm, filtra. Sólo cuentan avisos con ubicación propia."
    },
    "neighborhoodQuality": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "denuncias",
          "agua",
          "luz",
          "saneamiento",
          "limpieza",
          "alumbrado"
        ]
      },
      "maxItems": 6,
      "description": "Barrios que están entre los mejores en: denuncias (menos delitos), agua (menos cortes), luz, saneamiento, limpieza, alumbrado."
    },
    "hideReported": {
      "type": "string",
      "enum": [
        "none",
        "any",
        "multiple"
      ],
      "description": "Avisos que la comunidad reportó como no disponibles. Default \"multiple\" (oculta con 2+ reportes)."
    },
    "sort": {
      "type": "string",
      "enum": [
        "recientes",
        "precio",
        "precio-desc",
        "total",
        "precio-m2",
        "metros",
        "distancia"
      ],
      "description": "recientes (default), precio, precio-desc, total (menor total mensual), precio-m2, metros. Con near se ordena por distancia."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "perPage": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24,
      "description": "Resultados a devolver (default 10)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢rank_rentals_for_household(people, housingBudgetUyu, otherExpensesUyu, savingsUyu, transportUyu, ...)

El buscador PERSONALIZADO: puntúa todas las viviendas vigentes (apartamentos y casas) para un hogar concreto. Cada persona puede tener ingreso, días de home office y hasta 4 destinos (trabajo, estudio) con días por semana y modo de traslado. Combina presupuesto (alquiler + gastos comunes vs. ingreso y otros gastos) y distancias a los destinos según la prioridad (balanced, budget, commute). Devuelve puntaje 0-100, total mensual, % del ingreso que se va en vivienda, lo que le queda al hogar, la distancia de cada persona a cada destino, motivos a favor y advertencias. Pedile a la persona lo mínimo: presupuesto, dónde trabaja/estudia cada uno, dormitorios, mascotas. Los ingresos no se guardan. Límite del sitio: ~10 consultas por minuto; la primera puede tardar hasta un minuto.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "people": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 40,
            "description": "\"Ana\", \"Pareja\", \"Hijo\"…"
          },
          "incomeUyu": {
            "type": "number",
            "minimum": 0,
            "description": "Ingreso mensual líquido en pesos (0 si no tiene)."
          },
          "remoteDays": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7,
            "description": "Días de home office por semana."
          },
          "destinations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "maxLength": 40,
                  "description": "Nombre corto: \"Trabajo\", \"Facultad\", \"Colegio de los chicos\"."
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "work",
                    "study",
                    "other"
                  ]
                },
                "address": {
                  "type": "string",
                  "maxLength": 180,
                  "description": "Dirección, esquina o nombre del lugar (\"Facultad de Ingeniería\", \"el Centro\"); se geocodifica sola. Alternativa: lat/lng."
                },
                "lat": {
                  "type": "number",
                  "minimum": -35.5,
                  "maximum": -30
                },
                "lng": {
                  "type": "number",
                  "minimum": -58.6,
                  "maximum": -53
                },
                "daysPerWeek": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 7,
                  "description": "Días por semana que va (default 5)."
                },
                "mode": {
                  "type": "string",
                  "enum": [
                    "walking",
                    "bicycling",
                    "transit",
                    "driving"
                  ],
                  "description": "Cómo va (default transit = ómnibus)."
                },
                "maxKm": {
                  "type": "number",
                  "exclusiveMinimum": 0,
                  "maximum": 300,
                  "description": "Distancia máxima aceptable en línea recta. Default según modo: caminando 2, bici 6, ómnibus 8, auto 15 km."
                }
              },
              "required": [
                "label"
              ],
              "additionalProperties": false
            },
            "maxItems": 4
          }
        },
        "required": [
          "label"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 8
    },
    "housingBudgetUyu": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Presupuesto mensual para vivienda en pesos (alquiler + gastos comunes)."
    },
    "otherExpensesUyu": {
      "type": "number",
      "minimum": 0,
      "description": "Otros gastos fijos mensuales del hogar en pesos."
    },
    "savingsUyu": {
      "type": "number",
      "minimum": 0,
      "description": "Ahorro mensual que quieren mantener."
    },
    "transportUyu": {
      "type": "number",
      "minimum": 0,
      "description": "Gasto mensual en transporte."
    },
    "department": {
      "type": "string",
      "maxLength": 40,
      "description": "Departamento (default Montevideo)."
    },
    "types": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "apartamento",
          "casa"
        ]
      },
      "maxItems": 2
    },
    "minBedrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20
    },
    "minArea": {
      "type": "number",
      "minimum": 0,
      "description": "m² mínimos."
    },
    "pets": {
      "type": "boolean",
      "description": "Necesitan que acepte mascotas."
    },
    "parking": {
      "type": "boolean"
    },
    "furnished": {
      "type": "boolean"
    },
    "preferredNeighborhoods": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 20,
      "description": "Barrios preferidos (\"Pocitos\" o \"Pocitos, Montevideo\")."
    },
    "excludedNeighborhoods": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 20,
      "description": "Barrios a descartar."
    },
    "onlyPreferred": {
      "type": "boolean",
      "description": "true = sólo los barrios preferidos; false = los prefiere pero no descarta otros."
    },
    "includeReported": {
      "type": "boolean",
      "description": "Incluir avisos reportados como no disponibles (default no)."
    },
    "includeOverBudget": {
      "type": "boolean",
      "description": "Incluir los que se pasan del presupuesto (marcados)."
    },
    "priority": {
      "type": "string",
      "enum": [
        "balanced",
        "budget",
        "commute"
      ],
      "description": "Qué pesa más: equilibrado (default), precio o cercanía."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24,
      "description": "Resultados a devolver (default 10)."
    }
  },
  "required": [
    "people",
    "housingBudgetUyu"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_rental(key)

Ficha completa de una vivienda en alquiler: todos los avisos que la publican (precio por portal e inmobiliaria), descripción, comodidades, texto de la garantía, superficies, comparación con la mediana de viviendas parecidas del mismo barrio (y cuánto por encima o debajo está), viviendas similares y perfil del barrio (denuncias, cortes de agua, reclamos de saneamiento/limpieza/alumbrado). Acepta la key que devuelven las otras tools o la URL https://cambio-uruguay.com/alquileres/<key>.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "minLength": 3,
      "maxLength": 600,
      "description": "key de la vivienda o URL de su ficha."
    }
  },
  "required": [
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢rental_market_stats(department, neighborhood, type, bedrooms, currency)

Estadísticas del mercado de alquiler: mediana y rango típico (p25–p75) del alquiler, gastos comunes, total mensual y precio por m², por departamento, barrio, tipo y dormitorios, más los barrios más accesibles y más caros. Usalo para '¿cuánto sale alquilar 2 dormitorios en Pocitos?' o '¿dónde me alcanza con $30.000?'. Son precios pedidos, no firmados.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "department": {
      "type": "string",
      "maxLength": 40,
      "description": "Departamento de Uruguay con tildes, p. ej. \"Montevideo\", \"Canelones\", \"Maldonado\", \"Colonia\"."
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 60,
      "description": "Barrio (requiere department)."
    },
    "type": {
      "type": "string",
      "enum": [
        "apartamento",
        "casa"
      ]
    },
    "bedrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "currency": {
      "type": "string",
      "enum": [
        "UYU",
        "USD"
      ],
      "description": "Moneda de los avisos a analizar (default UYU: los avisos en pesos)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢estimate_fair_rent(department, neighborhood, type, bedrooms, bathrooms, ...)

Estima el alquiler justo de una vivienda concreta (barrio, tipo, dormitorios, baños, m²) con avisos comparables de anunciantes distintos y, si se da askingPrice, ubica ese precio (percentil y % sobre/bajo la mediana). Sirve para '¿me están cobrando caro?' o para negociar. Casas: superficie construida.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "department": {
      "type": "string",
      "maxLength": 40,
      "description": "Departamento de Uruguay con tildes, p. ej. \"Montevideo\", \"Canelones\", \"Maldonado\", \"Colonia\"."
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 60
    },
    "type": {
      "type": "string",
      "enum": [
        "apartamento",
        "casa"
      ]
    },
    "bedrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "bathrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "areaM2": {
      "type": "number",
      "minimum": 20,
      "maximum": 450,
      "description": "Superficie en m²."
    },
    "areaBasis": {
      "type": "string",
      "enum": [
        "built",
        "total"
      ],
      "description": "built = construida (default), total = con balcones/terrazas."
    },
    "currency": {
      "type": "string",
      "enum": [
        "UYU",
        "USD"
      ]
    },
    "parkingSpaces": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "askingPrice": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Precio pedido a evaluar, en la moneda indicada."
    }
  },
  "required": [
    "department",
    "neighborhood",
    "type",
    "bedrooms",
    "bathrooms",
    "areaM2"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_neighborhoods(neighborhoods, department, type, bedrooms, rankBy, ...)

Compara barrios lado a lado con datos públicos: alquiler mediano y total con gastos comunes, precio por m², delitos denunciados (Ministerio del Interior, por tipo), cortes de agua (OSE), reclamos de saneamiento/limpieza/alumbrado/calles (IM), servicios cercanos (supermercados, farmacias, salud, transporte, educación) y el puesto de cada barrio entre los 62 de Montevideo. Pasá neighborhoods para comparar esos, o rankBy para listar los mejores (rent = más baratos, monthly = menor total, safety = menos denuncias, services = más servicios).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "neighborhoods": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 10
    },
    "department": {
      "type": "string",
      "maxLength": 40,
      "description": "Departamento de Uruguay con tildes, p. ej. \"Montevideo\", \"Canelones\", \"Maldonado\", \"Colonia\"."
    },
    "type": {
      "type": "string",
      "enum": [
        "apartamento",
        "casa"
      ],
      "description": "Precios de apartamentos (default) o casas."
    },
    "bedrooms": {
      "type": "string",
      "enum": [
        "any",
        "0",
        "1",
        "2",
        "3",
        "4plus"
      ]
    },
    "rankBy": {
      "type": "string",
      "enum": [
        "rent",
        "monthly",
        "safety",
        "services"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_property_opportunities(operation, department, neighborhood, type, bedrooms, ...)

Viviendas pedidas por DEBAJO de avisos comparables (mismo barrio, tipo, dormitorios y superficie, varios anunciantes), con la brecha %, una brecha conservadora, cuántos comparables y anunciantes la sostienen, el nivel de evidencia y las cautelas. Alquiler compara alquiler + gastos comunes. Es una comparación de precios pedidos, no una tasación.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "rent",
        "sale"
      ],
      "description": "rent = alquiler (default), sale = venta."
    },
    "department": {
      "type": "string",
      "maxLength": 40,
      "description": "Departamento de Uruguay con tildes, p. ej. \"Montevideo\", \"Canelones\", \"Maldonado\", \"Colonia\"."
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 60
    },
    "type": {
      "type": "string",
      "enum": [
        "apartamento",
        "casa"
      ]
    },
    "bedrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8,
      "description": "Dormitorios exactos."
    },
    "maxPrice": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Tope del precio comparado: pesos por mes en alquiler (alquiler + gastos comunes), dólares en venta."
    },
    "confidence": {
      "type": "string",
      "enum": [
        "supported",
        "limited"
      ]
    },
    "evidence": {
      "type": "string",
      "enum": [
        "standard",
        "exploratory"
      ]
    },
    "signal": {
      "type": "string",
      "enum": [
        "total_price",
        "price_per_m2"
      ]
    },
    "sort": {
      "type": "string",
      "enum": [
        "evidence",
        "discount",
        "price",
        "recent"
      ]
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "perPage": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_used_cars(text, brand, model, yearMin, yearMax, ...)

Busca autos usados en todo Uruguay (~19.000 avisos de Mercado Libre, Facebook Marketplace, Dueño Directo, Clasiautos, Julio, Shopping de Autos, Carper, Fidocar, Motorlider y Car One; un mismo auto en varias fuentes aparece una vez). Filtra por marca y modelo (nombres comunes, se resuelven solos), año, km, precio en US$, consumo máximo L/100 km, combustible, caja, carrocería, puertas, color, departamento, automotora o particular, fuente, bajó de precio, sólo oportunidades, sin deuda ni choque declarados y publicados en los últimos N días. Cada auto trae versión, motor, consumo, si es oportunidad frente a autos iguales, precio de la guía de ML, riesgos que el vendedor declara (con su frase) y links.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 80,
      "description": "Texto libre: \"4x4\", \"full\", \"cuero\"."
    },
    "brand": {
      "type": "string",
      "maxLength": 40,
      "description": "Marca: \"Volkswagen\", \"Chevrolet\", \"Toyota\"…"
    },
    "model": {
      "type": "string",
      "maxLength": 60,
      "description": "Modelo: \"Gol\", \"Onix\", \"Hilux\" (requiere brand)."
    },
    "yearMin": {
      "type": "integer",
      "minimum": 1950,
      "maximum": 2100
    },
    "yearMax": {
      "type": "integer",
      "minimum": 1950,
      "maximum": 2100
    },
    "kmMax": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "priceMinUsd": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "priceMaxUsd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000,
      "description": "Precio máximo en dólares."
    },
    "maxLitersPer100Km": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 30,
      "description": "Consumo máximo (litros cada 100 km)."
    },
    "fuel": {
      "type": "string",
      "enum": [
        "nafta",
        "diesel",
        "electrico",
        "hibrido",
        "gnc"
      ]
    },
    "transmission": {
      "type": "string",
      "enum": [
        "manual",
        "automatica"
      ]
    },
    "body": {
      "type": "string",
      "enum": [
        "sedan",
        "hatchback",
        "suv",
        "pickup",
        "rural",
        "furgon",
        "monovolumen",
        "coupe",
        "cabriolet"
      ],
      "description": "Carrocería: sedan, hatchback, suv, pickup, rural (familiar), furgon, monovolumen, coupe, cabriolet."
    },
    "doors": {
      "type": "integer",
      "minimum": 2,
      "maximum": 5
    },
    "color": {
      "type": "string",
      "maxLength": 20,
      "description": "blanco, gris, plata, rojo, azul, negro, verde, celeste, beige, marron, dorado, bordo, naranja, amarillo, violeta."
    },
    "department": {
      "type": "string",
      "enum": [
        "Artigas",
        "Canelones",
        "Cerro Largo",
        "Colonia",
        "Durazno",
        "Flores",
        "Florida",
        "Lavalleja",
        "Maldonado",
        "Montevideo",
        "Paysandú",
        "Río Negro",
        "Rivera",
        "Rocha",
        "Salto",
        "San José",
        "Soriano",
        "Tacuarembó",
        "Treinta y Tres"
      ]
    },
    "seller": {
      "type": "string",
      "enum": [
        "dealer",
        "private"
      ],
      "description": "dealer = automotora, private = particular."
    },
    "source": {
      "type": "string",
      "maxLength": 30,
      "description": "mercadolibre, facebook, duenodirecto, clasiautos, julio, shoppingdeautos, carper, fidocar, motorlider, carone."
    },
    "priceDrop": {
      "type": "boolean",
      "description": "Sólo los que bajaron de precio."
    },
    "onlyOpportunities": {
      "type": "boolean",
      "description": "Sólo pedidos por debajo de autos iguales."
    },
    "noDeclaredRisk": {
      "type": "boolean",
      "description": "Excluir los que declaran deuda, choque, papeles, recupero, etc."
    },
    "sinceDays": {
      "type": "integer",
      "minimum": 1,
      "maximum": 365,
      "description": "Publicados en los últimos N días."
    },
    "sort": {
      "type": "string",
      "enum": [
        "recent",
        "price_asc",
        "price_desc",
        "km_asc",
        "year_desc",
        "consumption_asc"
      ]
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24,
      "description": "Resultados a devolver (default 10)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_car_opportunities(tier, brand, priceMaxUsd, yearMin, kmMax, ...)

Autos pedidos por DEBAJO de su cohorte fija: mismo modelo, año, versión, motor y caja, con km dentro de max(20.000, 30 %). Cada oportunidad pasa por su ficha (activa, mismo precio, sin choque/recupero/deuda/chapa extranjera declarados). Trae brecha %, brecha conservadora, la muestra (n, vendedores, p25/mediana/p75) y comparables con link. tier strict = evidencia sólida; exploratory = para explorar.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "tier": {
      "type": "string",
      "enum": [
        "strict",
        "exploratory"
      ]
    },
    "brand": {
      "type": "string",
      "maxLength": 40
    },
    "priceMaxUsd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000,
      "description": "Precio máximo en dólares."
    },
    "yearMin": {
      "type": "integer",
      "minimum": 1950,
      "maximum": 2100
    },
    "kmMax": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "fuel": {
      "type": "string",
      "enum": [
        "nafta",
        "diesel",
        "electrico",
        "hibrido",
        "gnc"
      ]
    },
    "transmission": {
      "type": "string",
      "enum": [
        "manual",
        "automatica"
      ]
    },
    "body": {
      "type": "string",
      "enum": [
        "sedan",
        "hatchback",
        "suv",
        "pickup",
        "rural",
        "furgon",
        "monovolumen",
        "coupe",
        "cabriolet"
      ],
      "description": "Carrocería: sedan, hatchback, suv, pickup, rural (familiar), furgon, monovolumen, coupe, cabriolet."
    },
    "maxLitersPer100Km": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 30,
      "description": "Consumo máximo (litros cada 100 km)."
    },
    "department": {
      "type": "string",
      "enum": [
        "Artigas",
        "Canelones",
        "Cerro Largo",
        "Colonia",
        "Durazno",
        "Flores",
        "Florida",
        "Lavalleja",
        "Maldonado",
        "Montevideo",
        "Paysandú",
        "Río Negro",
        "Rivera",
        "Rocha",
        "Salto",
        "San José",
        "Soriano",
        "Tacuarembó",
        "Treinta y Tres"
      ]
    },
    "seller": {
      "type": "string",
      "enum": [
        "dealer",
        "private"
      ],
      "description": "dealer = automotora, private = particular."
    },
    "sort": {
      "type": "string",
      "enum": [
        "gap",
        "price_asc",
        "year_desc",
        "km_asc",
        "consumption_asc"
      ]
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_car(key)

Ficha de un aviso de auto usado: versión, motor, km, consumo, la cohorte de autos iguales (mediana y rango) y dónde queda este precio, la referencia de la guía de ML, los riesgos que declara el vendedor con su frase y autos parecidos. Acepta la key o la URL https://cambio-uruguay.com/autos-usados-uruguay/<key>.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "minLength": 3,
      "maxLength": 300
    }
  },
  "required": [
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢car_model_prices(brand, model, year)

Cuánto se pide por un modelo: mediana y rango por año y por versión (motor y caja), la guía de precios de Mercado Libre, las oportunidades del modelo y los más baratos (de un año si se indica). Para '¿cuánto vale un Onix 2019?' o '¿a cuánto vendo mi auto?'.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "brand": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40
    },
    "model": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "year": {
      "type": "integer",
      "minimum": 1950,
      "maximum": 2100
    }
  },
  "required": [
    "brand",
    "model"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢car_declared_risks(category, brand, onlyMeasured, priceMaxUsd, yearMin, ...)

Avisos cuyo vendedor DECLARA un riesgo (deuda, papeles, siniestro/choque, recupero, mecánica, chapa extranjera, uso intensivo como ex taxi) con su frase textual, la severidad y cuánto menos pide frente a los mismos autos que no declaran nada; más el resumen por categoría. Útil para entender el descuento de un auto con deuda o para descartar riesgos.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "deuda",
        "papeles",
        "siniestro",
        "recupero",
        "mecanica",
        "chapa_extranjera",
        "uso_intensivo"
      ]
    },
    "brand": {
      "type": "string",
      "maxLength": 40
    },
    "onlyMeasured": {
      "type": "boolean",
      "description": "Sólo los que tienen cohorte limpia para medir el descuento."
    },
    "priceMaxUsd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000,
      "description": "Precio máximo en dólares."
    },
    "yearMin": {
      "type": "integer",
      "minimum": 1950,
      "maximum": 2100
    },
    "kmMax": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "fuel": {
      "type": "string",
      "enum": [
        "nafta",
        "diesel",
        "electrico",
        "hibrido",
        "gnc"
      ]
    },
    "transmission": {
      "type": "string",
      "enum": [
        "manual",
        "automatica"
      ]
    },
    "body": {
      "type": "string",
      "enum": [
        "sedan",
        "hatchback",
        "suv",
        "pickup",
        "rural",
        "furgon",
        "monovolumen",
        "coupe",
        "cabriolet"
      ],
      "description": "Carrocería: sedan, hatchback, suv, pickup, rural (familiar), furgon, monovolumen, coupe, cabriolet."
    },
    "maxLitersPer100Km": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 30,
      "description": "Consumo máximo (litros cada 100 km)."
    },
    "department": {
      "type": "string",
      "enum": [
        "Artigas",
        "Canelones",
        "Cerro Largo",
        "Colonia",
        "Durazno",
        "Flores",
        "Florida",
        "Lavalleja",
        "Maldonado",
        "Montevideo",
        "Paysandú",
        "Río Negro",
        "Rivera",
        "Rocha",
        "Salto",
        "San José",
        "Soriano",
        "Tacuarembó",
        "Treinta y Tres"
      ]
    },
    "seller": {
      "type": "string",
      "enum": [
        "dealer",
        "private"
      ],
      "description": "dealer = automotora, private = particular."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢car_market_report(section, budgetUsd, model)

Informe del mercado uruguayo de usados (oferta publicada, no ventas). Secciones: overview (tamaño, precio/año/km medianos, modelos con más oferta), budgets (qué modelos se consiguen con cada presupuesto: pasá budgetUsd), depreciation (cuánto pierde por año cada modelo: pasá model), negotiation (cuántos bajan el precio y cuánto), seller_gaps (automotora vs particular), valuation (cuánto restan los km y suma la caja automática), rotation.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "section": {
      "type": "string",
      "enum": [
        "overview",
        "budgets",
        "depreciation",
        "negotiation",
        "seller_gaps",
        "valuation",
        "rotation"
      ]
    },
    "budgetUsd": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "model": {
      "type": "string",
      "maxLength": 60,
      "description": "Modelo para depreciation, p. ej. \"Onix\" o \"Chevrolet Prisma\"."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_directories

Qué directorios mantiene el sitio (alquileres, ventas, autos, celulares, sillas, tiendas, súper, casas de cambio, couriers, tarjetas, equipar la casa, movilidad eléctrica), cuántos ítems tiene cada uno, su fecha y su link.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_products(vertical, text, brand, maxPriceUyu, condition, ...)

Búsqueda unificada en los directorios de productos, relevados a diario en tiendas uruguayas, Mercado Libre y Facebook Marketplace: celulares (modelo + almacenamiento, precio nuevo más bajo), sillas de escritorio y gamer (con calificación), hogar (38 categorías para equipar una casa: heladera, lavarropas, colchón, cocina, aire acondicionado, TV…, con banda de precio nuevo y usado) y movilidad eléctrica (monopatines, bicicletas eléctricas). Devuelve el precio más bajo con vendedor y link, la banda típica (p25–mediana–p75), cuánto ahorra comprar usado y la ficha del sitio. Ordena del más barato al más caro.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "enum": [
        "celulares",
        "sillas",
        "hogar",
        "monopatines",
        "bicicletas-electricas",
        "todas"
      ],
      "description": "Directorio (default: todas)."
    },
    "text": {
      "type": "string",
      "maxLength": 80,
      "description": "Palabras a buscar: \"heladera no frost\", \"iphone 13\", \"silla ergonómica\"."
    },
    "brand": {
      "type": "string",
      "maxLength": 40
    },
    "maxPriceUyu": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Precio máximo en pesos."
    },
    "condition": {
      "type": "string",
      "enum": [
        "new",
        "used",
        "any"
      ],
      "description": "used = sólo con banda de usados, al precio usado."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢plan_home_setup(level, have, condition)

Presupuesto para equipar una vivienda vacía (ideal después de alquilar sin amueblar): canasta mínima, decente o completa, línea por línea con precio y si conviene usado o nuevo, restando lo que la persona ya tiene. Si faltan precios de algún ítem el total es parcial y lo dice.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "level": {
      "type": "string",
      "enum": [
        "minima",
        "decente",
        "completa"
      ],
      "description": "minima (lo imprescindible, default), decente, completa."
    },
    "have": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      },
      "maxItems": 40,
      "description": "Lo que ya tiene: \"heladera\", \"colchón\", \"microondas\"…"
    },
    "condition": {
      "type": "string",
      "enum": [
        "cheapest",
        "new"
      ],
      "description": "cheapest (default: usado cuando conviene) o new (todo nuevo)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_online_store(name)

Señales fechadas de una tienda online que vende en Uruguay (o de compra en el exterior): antigüedad del dominio, calificación en Google, Trustpilot, menciones en Reddit uruguayo, HTTPS, contacto y RUT visibles, política de devoluciones y medios de pago. Nunca da un veredicto de confianza: presentá las señales y dejá que la persona decida.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120,
      "description": "Nombre, dominio o URL de la tienda."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢supermarket_prices(text, department, limit)

Precios oficiales del SIPC (MEF) por artículo (barato/mediana/caro y cuántos locales) y los supermercados más baratos de un departamento por canasta emparejada de 33 artículos (nunca por total bruto). Útil para estimar el costo de vida al mudarse.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 80,
      "description": "Artículo: \"aceite girasol\", \"leche\", \"arroz\"."
    },
    "department": {
      "type": "string",
      "maxLength": 40
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_site(query, limit)

Busca en TODO el sitio: guías (impuestos, aduana y compras en el exterior, tarjetas, bancos, préstamos, sueldo y BPS, alquilar, consumo), herramientas y calculadoras, glosario, directorios y páginas de datos. Devuelve las páginas a las que conviene ir (título, sección, URL) y los pasajes de texto que responden, con la fecha en que se leyó cada página. Usala para cualquier pregunta que no sea buscar avisos, y para saber a qué página mandar a la persona.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Pregunta o palabras clave en español: \"franquicia courier\", \"cuánto cobra el BROU por transferir\", \"aguinaldo\"."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Páginas con texto a devolver (default 6)."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢read_page(page, offset)

El texto de una página de cambio-uruguay.com con sus secciones, en tramos de 8.000 caracteres (usá offset para seguir). Para citar con precisión lo que search_site encontró. Las cifras son del día en que se leyó la página.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "page": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "URL o ruta: \"https://cambio-uruguay.com/alquilar-en-uruguay\" o \"/alquilar-en-uruguay\"."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Desde qué carácter seguir (lo indica la respuesta anterior)."
    }
  },
  "required": [
    "page"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢site_sections

El menú de cambio-uruguay.com: secciones y páginas principales con su URL. Para orientar a la persona sobre qué hay en el sitio y dónde.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada29 herramientas
verificadoversión no registrada29 herramientas
verificadoversión no registrada7 herramientas