Plexa

Capa de descubrimiento agentivo para negocios locales en México y LATAM

Documentación

¿Nuevo en Plexa? Lee primero qué es Plexa y luego comienza abajo.

Inicio rápido

  1. Crea una cuenta gratuita

Regístrate en joinplexa.com/register (enlace de correo o Google). Al iniciar sesión se emite tu token de acceso a la cuenta — ese es el que se usa para generar una clave API en el siguiente paso. ¿Necesitas ayuda? hola@joinplexa.com.

  1. Genera una clave API (gratis)
curl -X POST https://api.joinplexa.com/v1/builders/register \
  -H "Authorization: Bearer <your-account-token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-agent"}'

Devuelve una clave permanente plx_live_… — se muestra una sola vez, así que guárdala:

{
  "api_key": "plx_live_9f3c...e21a",
  "name": "my-agent",
  "tier": "free",
  "credits_limit": 5000,
  "rate_limit_per_min": 60
}
  1. Busca negocios
curl "https://api.joinplexa.com/v1/search?vertical=dental&city=Tijuana&limit=20" \
  -H "Authorization: Bearer plx_live_..."
  1. O conéctate vía MCP — un comando
claude mcp add --transport http plexa https://api.joinplexa.com/mcp/

Transporte SSE (clientes heredados):

claude mcp add --transport sse plexa https://api.joinplexa.com/mcp/sse

O agrégalo manualmente a tu configuración de MCP:

{
  "mcpServers": {
    "plexa": {
      "type": "http",
      "url": "https://api.joinplexa.com/mcp/"
    }
  }
}
  1. O instala la skill (un router de Plexa para tu agente)
npx skills add incrematica/plexa-mcp

Instala la skill use-plexa: cuándo recurrir a Plexa, las 7 herramientas, y el patrón búsqueda → get_business → contacto.

Endpoints

URL base: https://api.joinplexa.com

GET/v1/searchBusca negocios por vertical, ciudad y geo

GET/v1/businesses/{slug}Detalle del negocio por slug

GET/v1/businesses/{id}/queriesFeed de actividad del agente — requiere autenticación

GET/v1/verticalsLista todas las verticales disponibles

GET/v1/stats/publicEstadísticas de la plataforma (sin autenticación)

POST/v1/builders/registerRegistra un agente y obtén una clave API

GET /v1/search — parámetros de consulta

ParamTypeDefaultDescription

qstring—Consulta de texto libre sobre nombre y descripción

verticalstring—Slug de vertical (dental, restaurant, medical…)

citystring—Nombre de la ciudad

statestring—Estado / provincia

countrystringallCódigo de país ISO (MX, CO, AR…). Omítelo para buscar en todos los países del registro.

lat, lngfloat—Centro geográfico; combinar con radius_km

radius_kmfloat15Radio de búsqueda desde lat/lng, en km

langstring—Filtro de idioma (es, en)

capabilitiesstring—Nombres de capacidades separados por comas

min_trust_scoreint0Puntuación de confianza mínima (0–100)

claimedbool—Solo reclamados (true) o no reclamados (false)

limitint20Resultados por página (1–100)

offsetint0Desplazamiento de paginación

Ejemplo — búsqueda

{
  "results": [
    {
      "id": "b1a2c3d4-5e6f-7890-abcd-ef1234567890",
      "slug": "clinica-dental-norte-tijuana",
      "name": "Clínica Dental Norte",
      "vertical": "dental",
      "city": "Tijuana",
      "state": "B.C.",
      "country": "MX",
      "description_short": "Dentist en Tijuana, B.C.",
      "phone_e164": "+525500000000",
      "languages": ["es"],
      "capabilities": [
        {
          "name": "book_appointment",
          "label": "Agendar cita",
          "action_type": "whatsapp",
          "action_url": "https://wa.me/525500000000?text=Hola...",
          "description": "Envía WhatsApp para agendar cita"
        }
      ],
      "trust_score": 8,
      "claimed": false,
      "tier": "free",
      "aggregate_rating_human": null,
      "review_count_human": 0,
      "specialties": [],
      "distance_km": null
    }
  ],
  "total": 42,
  "limit": 20,
  "offset": 0,
  "filters_applied": { "vertical": "dental", "city": "Tijuana", "country": "MX" }
}

Ejemplo — detalle del negocio

curl "https://api.joinplexa.com/v1/businesses/clinica-dental-norte-tijuana" \
  -H "Authorization: Bearer plx_live_..."
{
  "slug": "clinica-dental-norte-tijuana",
  "name": "Clínica Dental Norte",
  "vertical": "dental",
  "city": "Tijuana",
  "state": "B.C.",
  "country": "MX",
  "phone_e164": "+525500000000",
  "website": "https://example.com",
  "languages": ["es"],
  "opening_hours": [
    { "days": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "09:00", "closes": "19:00" },
    { "days": ["Saturday"], "opens": "09:00", "closes": "14:00" }
  ],
  "services": [
    { "name": "Limpieza dental", "price_amount": 600, "price_currency": "MXN", "duration_minutes": 45 }
  ],
  "faqs": [
    { "question": "¿Atienden urgencias?", "answer": "Sí, con cita el mismo día." }
  ],
  "capabilities": [
    { "name": "book_appointment", "action_type": "whatsapp", "action_url": "https://wa.me/525500000000?text=Hola..." }
  ],
  "trust_score": 8,
  "tier": "free",
  "claimed": false,
  "profile_completeness": 62
}

Herramientas MCP

Conecta Plexa como servidor MCP y llama a las herramientas directamente desde cualquier agente.

O dale a tu agente la skill de router:

MCPRESTllms.txtschema.org

search_businessesBusca por vertical, ciudad, radio y capacidades

get_businessDetalle completo del negocio, incluyendo horarios y servicios

get_business_hoursHorario de apertura para un negocio específico

get_business_servicesCatálogo de servicios y precios

get_business_faqsPreguntas frecuentes aprobadas por el propietario para un negocio

contact_businessCanales de contacto + URLs de acción de capacidades (devuelve enlaces; no envía)

list_verticalsEnumera todas las verticales del registro

Ejemplo — get_business_faqs

// get_business_faqs(slug="clinica-dental-norte-tijuana")
{
  "slug": "clinica-dental-norte-tijuana",
  "name": "Clínica Dental Norte",
  "faqs": [
    { "question": "¿Atienden urgencias?", "answer": "Sí, atendemos urgencias con cita el mismo día." },
    { "question": "¿Aceptan seguros dentales?", "answer": "Trabajamos con las principales aseguradoras nacionales." }
  ]
}

contact_business(slug) devuelve los canales de contacto del negocio — teléfono, whatsapp_url (un enlace profundo de WhatsApp), sitio web, correo electrónico (solo negocios reclamados), y capacidades con action_urls listas para usar. Devuelve enlaces para que tu agente actúe — no envía el mensaje en sí.

Errores

Los errores devuelven un cuerpo JSON con la forma { "detail": "…" } y el estado HTTP correspondiente.

// 401 — missing / invalid / revoked API key
{ "detail": "API key inválida o revocada" }

// 429 — per-minute rate limit
{ "detail": "Rate limit excedido (por minuto)" }

// 429 — monthly credits exhausted
{ "detail": "Créditos mensuales agotados" }

Límites de tasa

TierMonthlyPer minute

Anónimo500 / month60 / min

Gratis (clave API)5,000 / month60 / min

Pro50,000 / month300 / minContáctanos

¿Necesitas límites más altos? Contáctanos.