Directorio Systema
Directorio hispano Miami-Centroamérica: busca negocios, reserva citas reales y ordena comida.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"directorio": {
"url": "https://scalesystema.app/api/mcp"
}
}
}远程端点
https://scalesystema.app/api/mcpstreamable-http它能做什么
工具清单
工具(13)
🟢buscar_negocios(ubicacion, ciudad, categoria, texto)
ES: Busca negocios del directorio público (Miami–Centroamérica) por ubicación {lat,lng}, ciudad, categoría o texto libre. Con ubicación o ciudad busca en un radio dinámico (5 a 50 millas) alrededor de ese punto y lo informa en "alcance". Sin ubicación ni ciudad devuelve el listado por país/global. / EN: Search the public business directory (Miami–Central America) by location {lat,lng}, city, category or free text. With a location or city it searches a dynamic radius (5 to 50 miles) around that point and reports it in "alcance". Without a location or city it returns the country/global listing.
输入模式
{
"type": "object",
"properties": {
"ubicacion": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"precisionMetros": {
"type": "integer",
"minimum": 0,
"maximum": 100000,
"description": "Precisión de la ubicación en metros, si se conoce. Con más de 1000 m no se dan distancias / Location accuracy in meters, if known"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false,
"description": "Ubicación del USUARIO (no la del agente) / The USER's location (not the agent's)"
},
"ciudad": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Ciudad alrededor de la cual buscar, p.ej. \"Miami\" / City to search around"
},
"categoria": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Categoría: restaurante, tienda, belleza, salud, fitness, hotel… / Category"
},
"texto": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Búsqueda libre en nombre y descripción / Free-text search"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪ver_negocio(slug)
ES: Ficha completa de un negocio por slug: horarios, rating y reseñas, catálogo con precios y variantes, promociones vigentes, eventos próximos y enlaces útiles. / EN: Full business profile by slug: hours, rating and reviews, catalog with prices and variants, active promotions, upcoming events and useful links.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
}
},
"required": [
"slug"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪consultar_disponibilidad(slug, servicio, fecha)
ES: Horarios libres para cita en una fecha (opcionalmente para un servicio). Devuelve horas por profesional con su staffId, listo para reservar_cita. / EN: Free appointment slots for a date (optionally for one service). Returns hours per staff member with staffId, ready for reservar_cita.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"servicio": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Nombre del servicio (como sale en ver_negocio) / Service name (as shown by ver_negocio)"
},
"fecha": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Fecha YYYY-MM-DD"
}
},
"required": [
"slug",
"fecha"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪reservar_cita(slug, servicio, fecha, hora, nombre, ...)
ES: Reserva una cita REAL como invitado (nombre + teléfono). La confirmación llega por WhatsApp/SMS al teléfono dado. Usá consultar_disponibilidad primero para elegir hora y staffId. / EN: Books a REAL appointment as a guest (name + phone). Confirmation arrives via WhatsApp/SMS to the given phone. Use consultar_disponibilidad first to pick a time and staffId.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"servicio": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Nombre del servicio / Service name"
},
"fecha": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Fecha YYYY-MM-DD"
},
"hora": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$",
"description": "Hora HH:MM (24h), de consultar_disponibilidad"
},
"nombre": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Nombre del cliente / Customer name"
},
"telefono": {
"type": "string",
"minLength": 6,
"maxLength": 25,
"description": "Teléfono del cliente (con código de país si es posible) / Customer phone"
},
"staffId": {
"type": "string",
"format": "uuid",
"description": "staffId de consultar_disponibilidad (opcional: sin él se asigna el primer profesional con esa hora libre) / staffId from consultar_disponibilidad (optional: otherwise the first staff member free at that time is assigned)"
},
"notas": {
"type": "string",
"maxLength": 500
},
"direccion": {
"type": "string",
"maxLength": 300,
"description": "Dirección donde se presta el servicio, si es a domicilio (ver_negocio indica qué servicios lo son) / Address where the service is performed, for at-home services"
}
},
"required": [
"slug",
"servicio",
"fecha",
"hora",
"nombre",
"telefono"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡pedir_comida(slug, items, entrega, direccion, nombre, ...)
ES: Crea un pedido REAL de comida/productos que se paga EN EFECTIVO al recoger (pickup) o al recibir (delivery). Mandá los nombres de los ítems tal como salen en ver_negocio; el servidor resuelve los productos reales y nunca inventa precios. Delivery exige direccion y que el negocio lo tenga habilitado. / EN: Places a REAL food/product order paid IN CASH on pickup or on delivery. Send item names as shown by ver_negocio; the server resolves the real products and never invents prices. Delivery requires an address and the business having delivery enabled.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nombre": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Nombre del ítem como sale en ver_negocio / Item name as shown by ver_negocio"
},
"cantidad": {
"type": "integer",
"minimum": 1,
"maximum": 99,
"default": 1
},
"variante": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Variante elegida (talla/color/tamaño), si el ítem tiene / Chosen variant, if any"
}
},
"required": [
"nombre"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 20
},
"entrega": {
"type": "string",
"enum": [
"pickup",
"delivery"
],
"description": "pickup = recoger en el local (paga en efectivo al recoger); delivery = a domicilio (paga en efectivo al recibir)"
},
"direccion": {
"type": "string",
"minLength": 5,
"maxLength": 500,
"description": "Dirección completa de entrega (obligatoria si entrega=delivery)"
},
"nombre": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Nombre del cliente / Customer name"
},
"telefono": {
"type": "string",
"minLength": 6,
"maxLength": 20,
"description": "Teléfono del cliente / Customer phone"
},
"notas": {
"type": "string",
"maxLength": 400,
"description": "Notas de entrega (solo aplican a delivery)"
}
},
"required": [
"slug",
"items",
"entrega",
"nombre",
"telefono"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢buscar_por_servicio(consulta, ubicacion, ciudad)
ES: Busca negocios por lo que OFRECEN — un servicio, producto o clase concreta ("clases de zumba", "corte de caballero", "pupusas") — y devuelve cada negocio con los ítems que matchearon y su precio (o "cotizar"). Complementa buscar_negocios, que busca por nombre/categoría. / EN: Search businesses by what they OFFER — a specific service, product or class ("zumba classes", "men's haircut") — returning each business with its matched items and price (or "quote"). Complements buscar_negocios, which searches by name/category.
输入模式
{
"type": "object",
"properties": {
"consulta": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Qué busca el usuario: \"clases de zumba\", \"corte de caballero\", \"pupusas\"… / What the user wants"
},
"ubicacion": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"precisionMetros": {
"type": "integer",
"minimum": 0,
"maximum": 100000,
"description": "Precisión de la ubicación en metros, si se conoce. Con más de 1000 m no se dan distancias / Location accuracy in meters, if known"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false,
"description": "Ubicación del USUARIO (no la del agente) / The USER's location (not the agent's)"
},
"ciudad": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Ciudad alrededor de la cual buscar / City to search around"
}
},
"required": [
"consulta"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪reservar_clase(slug, clase, fecha, nombre, telefono)
ES: Apunta al cliente a una clase REAL (gimnasio/academia) como invitado (nombre + teléfono) en una fecha. Valida que la clase se dé ese día y que haya cupo. Las clases salen en ver_negocio. / EN: Books the customer into a REAL class (gym/academy) as a guest (name + phone) on a date. Validates the class runs that day and has capacity. Classes are listed by ver_negocio.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"clase": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Nombre de la clase (como sale en ver_negocio) / Class name (as shown by ver_negocio)"
},
"fecha": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Fecha YYYY-MM-DD"
},
"nombre": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Nombre del cliente / Customer name"
},
"telefono": {
"type": "string",
"minLength": 6,
"maxLength": 25,
"description": "Teléfono del cliente / Customer phone"
}
},
"required": [
"slug",
"clase",
"fecha",
"nombre",
"telefono"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢reservar_habitacion(slug, habitacion, checkIn, checkOut, huespedes, ...)
ES: Reserva una habitación de hotel REAL como invitado: nombre de la habitación (de ver_negocio), check-in/check-out y huéspedes. Devuelve noches y total; se paga en el hotel. / EN: Books a REAL hotel room as a guest: room name (from ver_negocio), check-in/check-out dates and guest count. Returns nights and total; payment at the hotel.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"habitacion": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Nombre/tipo de la habitación (como sale en ver_negocio) / Room name (as shown by ver_negocio)"
},
"checkIn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Fecha de entrada YYYY-MM-DD / Check-in date"
},
"checkOut": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Fecha de salida YYYY-MM-DD / Check-out date"
},
"huespedes": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Cantidad de huéspedes / Guest count"
},
"nombre": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Nombre del huésped / Guest name"
},
"telefono": {
"type": "string",
"minLength": 6,
"maxLength": 25,
"description": "Teléfono del huésped / Guest phone"
},
"notas": {
"type": "string",
"maxLength": 500,
"description": "Pedidos especiales / Special requests"
}
},
"required": [
"slug",
"habitacion",
"checkIn",
"checkOut",
"huespedes",
"nombre",
"telefono"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪solicitar_estimado(slug, nombre, telefono, descripcion, servicio, ...)
ES: Envía una solicitud de estimado REAL a un negocio de servicios (contractor: pisos, plomería, pintura, limpieza…) — el negocio recibe notificación y puede llamar al cliente al teléfono dado. / EN: Sends a REAL estimate request to a services business (contractor: flooring, plumbing, painting, cleaning…) — the business is notified and may call the customer at the given phone.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"nombre": {
"type": "string",
"minLength": 2,
"maxLength": 100,
"description": "Nombre del cliente / Customer name"
},
"telefono": {
"type": "string",
"minLength": 7,
"maxLength": 25,
"description": "Teléfono del cliente (el negocio lo usará para llamarlo) / Customer phone (the business will call it)"
},
"descripcion": {
"type": "string",
"minLength": 5,
"maxLength": 2000,
"description": "Qué trabajo necesita el cliente / What work the customer needs"
},
"servicio": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Servicio de interés (como sale en ver_negocio) / Service of interest"
},
"fechaPreferida": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Fecha preferida YYYY-MM-DD / Preferred date"
},
"direccion": {
"type": "string",
"minLength": 5,
"maxLength": 300,
"description": "Dirección donde se haría el trabajo / Job address"
}
},
"required": [
"slug",
"nombre",
"telefono",
"descripcion"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪solicitar_visita_inmobiliaria(slug, nombre, telefono, email, propiedad, ...)
ES: Envía una solicitud REAL a una inmobiliaria (interés en una propiedad, presupuesto, fecha de mudanza, mascotas) — la inmobiliaria recibe el lead y contacta al cliente para coordinar la visita. / EN: Sends a REAL inquiry to a real-estate business (property of interest, budget, move-in date, pets) — the realtor receives the lead and contacts the customer to arrange a visit.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"nombre": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Nombre del cliente / Customer name"
},
"telefono": {
"type": "string",
"minLength": 6,
"maxLength": 25,
"description": "Teléfono del cliente / Customer phone"
},
"email": {
"type": "string",
"format": "email",
"maxLength": 200
},
"propiedad": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Propiedad que le interesa (como sale en ver_negocio) / Property of interest"
},
"presupuesto": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Presupuesto, texto libre p.ej. \"$2,500\" / Budget, free text"
},
"fechaMudanza": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Fecha de mudanza YYYY-MM-DD / Move-in date"
},
"habitaciones": {
"type": "string",
"minLength": 1,
"maxLength": 10,
"description": "Habitaciones deseadas, p.ej. \"2\" / Desired bedrooms"
},
"mascotas": {
"type": "string",
"enum": [
"ninguna",
"perro",
"gato",
"ambos"
],
"description": "Mascotas del cliente / Customer's pets"
},
"adultos": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"ninos": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"description": "Niños / Kids"
},
"mensaje": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"slug",
"nombre",
"telefono"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪dejar_resena(slug, nombre, telefono, rating, texto)
ES: Publica una reseña PÚBLICA real (1-5 estrellas + texto) a nombre del cliente en la ficha del negocio. Solo con consentimiento explícito del cliente; máx. 1 por teléfono cada 24 h por negocio. / EN: Publishes a real PUBLIC review (1-5 stars + text) under the customer's name on the business profile. Only with the customer's explicit consent; max 1 per phone per business per 24 h.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "Slug del negocio (de buscar_negocios) / Business slug (from buscar_negocios)"
},
"nombre": {
"type": "string",
"minLength": 2,
"maxLength": 80,
"description": "Nombre del cliente que firma la reseña (se publica) / Customer name signing the review (published)"
},
"telefono": {
"type": "string",
"minLength": 6,
"maxLength": 30,
"description": "Teléfono del cliente (NO se publica; evita duplicados) / Customer phone (NOT published; dedup only)"
},
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "Calificación 1-5 estrellas / 1-5 star rating"
},
"texto": {
"type": "string",
"minLength": 1,
"maxLength": 800,
"description": "Texto de la reseña / Review text"
}
},
"required": [
"slug",
"nombre",
"telefono",
"rating"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪buscar_eventos(texto, ubicacion, ciudad, dias)
ES: Cartelera de eventos públicos próximos (conciertos, ferias, shows) de los negocios del directorio, filtrable por texto, ubicación {lat,lng} o ciudad (radio dinámico de 5 a 50 millas alrededor de ese punto) y días. Los boletos se compran en la página web del evento (urlBoletos). / EN: Upcoming public events (concerts, fairs, shows) from directory businesses, filterable by text, location {lat,lng} or city (dynamic 5 to 50 mile radius around that point) and days ahead. Tickets are purchased on the event's web page (urlBoletos).
输入模式
{
"type": "object",
"properties": {
"texto": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Filtro libre: nombre del evento, lugar o negocio / Free-text filter"
},
"ubicacion": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"precisionMetros": {
"type": "integer",
"minimum": 0,
"maximum": 100000,
"description": "Precisión de la ubicación en metros, si se conoce. Con más de 1000 m no se dan distancias / Location accuracy in meters, if known"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false,
"description": "Ubicación del USUARIO (no la del agente) / The USER's location (not the agent's)"
},
"ciudad": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Ciudad alrededor de la cual buscar / City to search around"
},
"dias": {
"type": "integer",
"minimum": 1,
"maximum": 90,
"description": "Solo eventos dentro de N días (sin esto: todos los futuros) / Only events within N days"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪ver_promociones(ubicacion, ciudad)
ES: Promociones vigentes de los negocios del directorio, por ubicación {lat,lng} o ciudad (radio dinámico de 5 a 50 millas alrededor de ese punto). Sin ubicación ni ciudad devuelve el alcance país/global. / EN: Active promotions from directory businesses, by location {lat,lng} or city (dynamic 5 to 50 mile radius around that point). Without a location or city it returns the country/global scope.
输入模式
{
"type": "object",
"properties": {
"ubicacion": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"precisionMetros": {
"type": "integer",
"minimum": 0,
"maximum": 100000,
"description": "Precisión de la ubicación en metros, si se conoce. Con más de 1000 m no se dan distancias / Location accuracy in meters, if known"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false,
"description": "Ubicación del USUARIO (no la del agente) / The USER's location (not the agent's)"
},
"ciudad": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Ciudad alrededor de la cual buscar / City to search around"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}社区
证据