mercader

Para desarrolladores y agentes

API y MCP para editar tu escaparate

Conecta Claude, ChatGPT, Cursor o tu propio script a tu escaparate de Mercader. Pueden leer y editar tu perfil, tus productos, tus eventos y tus enlaces, y cada cambio se publica al momento.

Empieza en un minuto

Elige tu cliente. Con OAuth no copias ningún token: tu asistente abre la pantalla de permisos de Mercader y tú apruebas el acceso.

Claude.ai o ChatGPT

Añade un conector personalizado y pega esta URL:

https://web.mercader.app/api/mcp/me

Claude Code

claude mcp add --transport http mercader https://web.mercader.app/api/mcp/me

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "mercader": {
      "url": "https://web.mercader.app/api/mcp/me"
    }
  }
}

curl o tu propio código

Crea un token personal en el panel y envíalo como Bearer:

curl https://web.mercader.app/api/v1/me \
  -H "Authorization: Bearer mk_live_…"

Autenticación

Todas las peticiones llevan la cabecera Authorization: Bearer <token>. Un token solo da acceso al escaparate de la persona que lo creó.

OAuth 2.1 (recomendado para asistentes)

  • Registro dinámico de clientes (RFC 7591) y código de autorización con PKCE S256. Solo clientes públicos, sin secreto.
  • Descubrimiento: el 401 del MCP incluye WWW-Authenticate con la URL de los metadatos del recurso protegido.
  • El token de acceso dura 1 hora y el de refresco 30 días. Cada refresco rota los dos.
  • Revocación (RFC 7009) en /oauth/revoke, o desde el panel en cualquier momento.

Tokens personales

  • Créalos en el panel, en Admin › Asistentes de IA. Empiezan por mk_live_ y solo se muestran una vez.
  • No caducan: revócalos desde el panel cuando ya no los uses.
  • Útiles para scripts, curl y clientes que no admiten OAuth.
https://web.mercader.app/.well-known/oauth-protected-resource
https://web.mercader.app/.well-known/oauth-authorization-server

Permisos (scopes)

Permisos (scopes)
PermisoQué hace
profile:writeNombre, presentación, color, idioma, moneda, logo, portada y enlaces.
catalog:writeProductos, eventos y ferias, y sus imágenes.

API REST

JSON sobre HTTPS. Los campos que no envías no cambian; una cadena vacía borra un campo opcional.

https://web.mercader.app/api/v1
API REST
MétodoRutaPermisoQué hace
GET/mecualquieraPerfil, plan y límites, productos, eventos y enlaces, con sus id.
PATCH/profileprofile:writeCambia nombre, presentación, color, idioma, país, moneda, logo o portada.
GET/productscualquieraLista los productos.
POST/productscatalog:writeCrea un producto (name y price obligatorios).
PATCH/products/{id}catalog:writeCambia precio, foto, disponibilidad u otros campos.
DELETE/products/{id}catalog:writeBorra un producto.
GET/eventscualquieraLista los eventos y ferias.
POST/eventscatalog:writeCrea un evento (title y start_date en ISO 8601).
PATCH/events/{id}catalog:writeCambia un evento.
DELETE/events/{id}catalog:writeBorra un evento.
GET/social-linkscualquieraLista los enlaces sociales y de contacto.
POST/social-linksprofile:writeAñade un enlace (Instagram, WhatsApp, Website, Email…).
PATCH/social-links/{id}profile:writeCambia un enlace.
DELETE/social-links/{id}profile:writeBorra un enlace.
POST/uploadssegún el tipoDevuelve una URL firmada para subir una imagen.

Ejemplo: crear un producto

curl -X POST https://web.mercader.app/api/v1/products \
  -H "Authorization: Bearer mk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"name": "Taza de gres", "price": 22, "description": "300 ml"}'

Esquemas completos en la especificación OpenAPI 3.1

Subir imágenes

  1. Pide una subida con kind (product, event, avatar o header) y content_type (image/jpeg, image/png o image/webp).
  2. Envía los bytes de la imagen con PUT a upload_url. La URL caduca en 2 horas.
  3. Usa public_url como image_url del producto o del evento, o como avatar_url o header_url del perfil.

Servidor MCP

Streamable HTTP, sin estado. Mismas operaciones, validación y límites que la API REST.

https://web.mercader.app/api/mcp/me
Servidor MCP
HerramientaQué hace
get_my_storefrontEstado actual del escaparate: perfil, URL pública, plan, límites y todos los elementos con sus id.
update_profileCambia solo los campos del perfil que recibe. La dirección (slug) no se puede cambiar.
create_productupdate_productdelete_productcreate_eventupdate_eventdelete_eventcreate_social_linkupdate_social_linkdelete_social_linkCrea, cambia o borra productos, eventos y enlaces. Las herramientas de borrado están marcadas como destructivas.
create_image_uploadPrepara la subida de una imagen y devuelve upload_url y public_url.

MCP público de solo lectura

Para buscar en todos los escaparates publicados, sin autenticación:

https://web.mercader.app/api/mcp

Límites y errores

  • 120 peticiones por minuto y token. Al superarlo, 429 con Retry-After.
  • Los límites de tu plan se aplican igual que en el panel: al llegar al máximo, 403 plan_limit.
  • Las respuestas llevan Cache-Control: no-store.

Formato de error

Todos los errores devuelven un JSON con un código estable y una descripción legible:

{
  "error": "plan_limit",
  "error_description": "…"
}
Formato de error
CódigoHTTPSignificado
invalid_input400Falta un campo, sobra uno o tiene un formato no válido.
invalid_token401Token ausente, desconocido, revocado o caducado.
insufficient_scope403El token no tiene el permiso que pide la operación.
plan_limit403Se ha alcanzado el límite del plan o la prueba ha terminado.
not_found404El elemento no existe en tu escaparate.
no_profile409La cuenta aún no ha terminado el onboarding.
rate_limited429Demasiadas peticiones en el último minuto.

Seguridad y privacidad

  • Guardamos solo un hash de cada token. Si lo pierdes, crea otro.
  • Un token no puede leer tus contactos, tus reseñas ni tu facturación, ni cambiar la dirección de tu escaparate.
  • Los cambios se publican al momento para tus clientes: pide a tu asistente que confirme antes de borrar.

¿Todavía no tienes escaparate?

Crea el tuyo y conecta tu asistente después. Mercader tiene 14 días de prueba.