Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Plexa .well Known API
description: Agentic business directory for Mexico
version: 0.1.0
tags:
- name: .well Known
paths:
/.well-known/ai-catalog.json:
get:
summary: Ai Catalog Mirror
description: 'Espeja el ARD del apex — MISMA fuente de verdad, servido también aquí.
El catálogo se GENERA en el web (apps/web/app/well-known/ai-catalog.json/route.ts). Un agente
no debería tener que adivinar el host, así que la API lo sirve consumiéndolo del apex (cache
1h en proceso). NO se usa redirect cross-host: muchos clientes/agentes no siguen redirecciones
entre hosts. Jamás se copia el JSON a mano: dos fuentes de verdad divergen.
Si el apex falla y no hay copia cacheada, 502 honesto (mejor que servir algo inventado).'
operationId: ai_catalog_mirror__well_known_ai_catalog_json_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
tags:
- .well Known
/.well-known/mcp/server-card.json:
get:
summary: Mcp Server Card
description: 'Server card para registries MCP (Smithery, etc.). FUENTE DE VERDAD del server-card:
el apex lo espeja desde aquí (apps/web/app/well-known/mcp/server-card.json/route.ts).
TRANSPORTES — declaramos los DOS que el server realmente sirve (mcp/server.py:667-678).
Antes esta card declaraba como única `url` el `/mcp/sse` deprecado: respondía 200 y mentía,
escondiendo Streamable HTTP a todo agente que la leyera.
Shape: `remotes[]` con `type`+`url`, copiado del server.json del registro MCP — es la única
convención real (schema 2025-12-11: `StreamableHttpTransport.type.enum == ["streamable-http"]`,
`SseTransport.type.enum == ["sse"]`; "http"/"streamable_http" son inválidos). No existe un
"server card" normativo: el WG (charter 2026-03-26) pide explícitamente que el formato "stay as
close as possible to a subset of server.json". No declaramos `$schema` porque esta card lleva
campos extra (tools, author) y no validamos conformidad con server.json.
URL con BARRA FINAL (`/mcp/`), verificado por efecto y coincidente con nuestra entrada del
registro oficial (com.joinplexa/plexa v1.0.0): POST /mcp/ → 200 con handshake real; POST /mcp
→ 307, y un 307 en POST no todos los clientes MCP lo siguen bien.'
operationId: mcp_server_card__well_known_mcp_server_card_json_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
tags:
- .well Known
components:
securitySchemes:
HTTPBearer:
type: http
scheme: bearer