Agent Skills

Plexa

Agentic discovery layer for local businesses in Mexico & LATAM

Install

Install and configure the MCP from https://joinplexa.com/docs now. Follow the documentation's installation instructions, ask me for anything you can't complete yourself, and verify its tools load.
README

New to Plexa? Read what Plexa is first, then start below.

Quickstart

1.Create a free account

Sign up at joinplexa.com/register (email link or Google). Signing in issues your account access token — that's the <your-account-token> used to mint an API key in the next step. Need a hand? hola@joinplexa.com.

2.Mint an API key (free)

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"}'

Returns a permanent plx_live_… key — shown once, so store it:

{
  "api_key": "plx_live_9f3c...e21a",
  "name": "my-agent",
  "tier": "free",
  "credits_limit": 5000,
  "rate_limit_per_min": 60
}

3.Search businesses

curl "https://api.joinplexa.com/v1/search?vertical=dental&city=Tijuana&limit=20" \
  -H "Authorization: Bearer plx_live_..."

4.Or connect via MCP — one command

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

SSE transport (legacy clients):

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

Or add manually to your MCP config:

{
  "mcpServers": {
    "plexa": {
      "type": "http",
      "url": "https://api.joinplexa.com/mcp/"
    }
  }
}

5.Or install the skill (a Plexa router for your agent)

npx skills add incrematica/plexa-mcp

Installs the use-plexa skill: when to reach for Plexa, the 7 tools, and the search → get_business → contact pattern.

Endpoints

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

GET/v1/searchSearch businesses by vertical, city, and geo

GET/v1/businesses/{slug}Business detail by slug

GET/v1/businesses/{id}/queriesAgent activity feed — requires auth

GET/v1/verticalsList all available verticals

GET/v1/stats/publicPlatform stats (no auth)

POST/v1/builders/registerRegister an agent and get an API key

GET /v1/search — query parameters

ParamTypeDefaultDescription

qstring—Free-text query over name and description

verticalstring—Vertical slug (dental, restaurant, medical…)

citystring—City name

statestring—State / province

countrystringallISO country code (MX, CO, AR…). Omit to search every country in the registry.

lat, lngfloat—Geo center; combine with radius_km

radius_kmfloat15Search radius from lat/lng, in km

langstring—Language filter (es, en)

capabilitiesstring—Comma-separated capability names

min_trust_scoreint0Minimum trust score (0–100)

claimedbool—Only claimed (true) or unclaimed (false)

limitint20Results per page (1–100)

offsetint0Pagination offset

Example — search

curl "https://api.joinplexa.com/v1/search?vertical=dental&city=Tijuana&limit=20" \
  -H "Authorization: Bearer plx_live_..."
{
  "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" }
}

Example — business detail

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
}

MCP Tools

Connect Plexa as an MCP server and call tools directly from any agent.

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

Or give your agent the router skill:

npx skills add incrematica/plexa-mcp

MCPRESTllms.txtschema.org

search_businessesSearch by vertical, city, radius, and capabilities

get_businessFull business detail including hours and services

get_business_hoursOpening hours for a specific business

get_business_servicesService catalog and pricing

get_business_faqsOwner-approved FAQs for a business

contact_businessContact channels + capability action URLs (returns links; does not send)

list_verticalsEnumerate all verticals in the registry

Example — 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) returns the business's contact channels — phone, whatsapp_url (a WhatsApp deep link), website, email (claimed businesses only), and capabilities with ready-to-use action_urls. It returns links for your agent to act on — it does not send the message itself.

Errors

Errors return a JSON body of the shape { "detail": "…" } with the matching HTTP status.

// 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" }

Search skills and MCP servers

Search across 31,816 skills and MCPs