Plexa
Agentic discovery layer for local businesses in Mexico & LATAM
Documentation
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 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
{
"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.
Or give your agent the router skill:
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" }
Rate limits
TierMonthlyPer minute
Anonymous500 / month60 / min
Free (API key)5,000 / month60 / min
Pro50,000 / month300 / minContact us
Need higher limits? Contact us.