Skip to content
En esta página

Referencia del servidor MCP

Revolink admite el Model Context Protocol (MCP): un estándar abierto que permite a los asistentes de IA (Claude, Cursor, Windsurf y otros) interactuar con servicios externos como herramientas.

Una vez configurado, tu asistente de IA puede crear enlaces, actualizar reglas de enrutamiento y consultar la analítica sin que tengas que salir del chat.

Endpoint

POST https://api.revolink.link/apiv1/mcp

Transporte: Streamable HTTP (sin estado, una petición por cada llamada a una herramienta).


Autenticación

MCP de Revolink admite dos formas de conectarse. Elige la que mejor encaje en tu caso:

Clave de APIOAuth 2.0
Ideal paraScripts, herramientas de desarrollo, automatizaciónclaude.ai web, apps, equipos
ConfiguraciónGenera una clave y pégala en la configuraciónSolo pega la URL y aprueba el acceso
Gestión de clavesTú gestionas la claveNinguna: se hace automáticamente

Método 1: clave de API

Genera una clave en Perfil → Integraciones, activa los permisos (scopes) de MCP que necesites y pásala en la configuración de tu cliente. Consulta Configuración más abajo para las instrucciones de cada cliente.

Errores:

HTTPCausa
401Falta la clave de API o no es válida, o la clave ha caducado
403La clave existe pero no tiene permisos de MCP activados

Método 2: OAuth 2.0

Para clientes como claude.ai (web) que admiten OAuth: no hace falta clave. Apruebas el acceso una vez y el cliente se encarga de todo automáticamente.

Cómo conectar (claude.ai web):

  1. Ve a Settings → Integrations en claude.ai.
  2. Haz clic en Add MCP server.
  3. Pega: https://api.revolink.link/apiv1/mcp
  4. Haz clic en Connect: te redirigirá a Revolink para aprobar el acceso.
  5. Listo. Las herramientas de Revolink ya están disponibles en tu chat.

Para revocar el acceso en cualquier momento: Perfil → Aplicaciones conectadas → Revocar.


Permisos de MCP

Los permisos de MCP son independientes de los permisos normales de la API. Una clave puede tener acceso completo a la API pero ninguno a MCP, o al revés. Permisos (scopes) disponibles:

PermisoQué desbloquea
links:readlist_links, get_link
links:writecreate_link, update_link
links:deletedelete_link
links:bulkbulk_create_links
analytics:readget_link_analytics, get_workspace_analytics

Con autenticación por clave de API, los permisos se configuran por clave en Perfil → Integraciones → MCP dentro de la aplicación.

Con OAuth, los permisos los solicita el cliente y los aprueba el usuario durante el flujo de consentimiento.


Configuración

Clave de API: paso a paso

  1. Ve a Perfil → Integraciones en la aplicación de Revolink.
  2. Haz clic en Crear clave de API.
  3. Ponle un nombre a la clave (p. ej. Claude MCP).
  4. En MCP, activa los permisos que quieras conceder. Cada permiso se puede activar de forma independiente.
  5. Haz clic en Crear y copia la clave: se muestra una sola vez.

Una clave con MCP activado pero sin permisos de MCP seleccionados será rechazada en el endpoint de MCP con un error 403.

Configura tu cliente de IA (clave de API)

Claude Desktop (claude_desktop_config.json)

Claude Desktop usa transporte stdio. Usa el puente mcp-remote para conectar con el endpoint HTTP de Revolink.

json
{
  "mcpServers": {
    "revolink": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://api.revolink.link/apiv1/mcp",
        "--header",
        "X-Api-Key:YOUR_API_KEY"
      ]
    }
  }
}

Ábrelo desde: menú de Claude → Settings → Developer → Edit Config. Reinicia Claude Desktop después de guardar.

Claude Code (CLI)
bash
claude mcp add --transport http revolink https://api.revolink.link/apiv1/mcp \
  --header "X-Api-Key: YOUR_API_KEY"

O añádelo a .claude/settings.json:

json
{
  "mcpServers": {
    "revolink": {
      "type": "http",
      "url": "https://api.revolink.link/apiv1/mcp",
      "headers": {
        "X-Api-Key": "YOUR_API_KEY"
      }
    }
  }
}
Cursor / Windsurf (.cursor/mcp.json or .codeium/windsurf/mcp_config.json)
json
{
  "mcpServers": {
    "revolink": {
      "url": "https://api.revolink.link/apiv1/mcp",
      "headers": {
        "X-Api-Key": "YOUR_API_KEY"
      }
    }
  }
}
VS Code (.vscode/mcp.json)
json
{
  "servers": {
    "revolink": {
      "type": "http",
      "url": "https://api.revolink.link/apiv1/mcp",
      "headers": {
        "X-Api-Key": "${input:revolinkApiKey}"
      }
    }
  },
  "inputs": [
    {
      "id": "revolinkApiKey",
      "type": "promptString",
      "description": "Revolink API Key",
      "password": true
    }
  ]
}

Requiere VS Code 1.99+ con GitHub Copilot. El aviso ${input:revolinkApiKey} te pedirá la clave la primera vez que lo uses.

Zed (~/.config/zed/settings.json)
json
{
  "context_servers": {
    "revolink": {
      "settings": {
        "url": "https://api.revolink.link/apiv1/mcp",
        "api_key": "YOUR_API_KEY"
      }
    }
  }
}

Configura tu cliente de IA (OAuth)

claude.ai (web)

No hace falta configuración. Cuando añadas un nuevo servidor MCP en claude.ai → Settings → Integrations, introduce:

https://api.revolink.link/apiv1/mcp

Claude te redirigirá automáticamente a la página de consentimiento de Revolink.


Espacios de trabajo: selección automática

Nunca necesitas indicar un ID de espacio de trabajo a mano. Cuando envías una petición sin elegir un espacio de trabajo, el servidor devuelve la lista de tus espacios de trabajo disponibles. La IA elige el adecuado según el contexto y continúa la operación automáticamente. Desde tu punto de vista es invisible: solo describe lo que necesitas con lenguaje natural.


Herramientas disponibles

Devuelve una lista paginada de los enlaces de un espacio de trabajo.

Permiso necesario: links:read

ParámetroTipoObligatorioDescripción
pageinteger—Número de página (por defecto: 1)
limitinteger—Enlaces por página, de 1 a 100 (por defecto: 20)
searchstring—Filtra por nombre o slug
tagIdsstring[]—Filtra por ID de etiquetas

Devuelve todos los detalles de un enlace, incluidas sus reglas de enrutamiento.

Permiso necesario: links:read

ParámetroTipoObligatorioDescripción
linkIdstring✅ID del enlace

Crea un enlace inteligente nuevo con reglas de enrutamiento.

Permiso necesario: links:write

ParámetroTipoObligatorioDescripción
namestring✅Nombre del enlace (máx. 255 caracteres)
rulesRule[]✅Reglas de enrutamiento: consulta el Objeto de regla más abajo. Exactamente una debe tener isDefault: true
slugstring—Slug personalizado (minúsculas, se permiten guiones). Se genera automáticamente si se omite
domainstring—Dominio personalizado. Por defecto, el del espacio de trabajo
descriptionstring—Nota interna (máx. 1000 caracteres)
activeboolean—Si el enlace está activo (por defecto: true)
tagIdsstring[]—ID de las etiquetas que se asocian
clicksLimitinteger—Desactiva el enlace tras N clics. 0 = sin límite
expirationDatestring—Fecha y hora ISO 8601. El enlace se desactiva después de esta fecha
conversionTrackingboolean—Activa el píxel de conversión
gpsTrackingboolean—Activa la captura de ubicación GPS al hacer clic
abTestAbTest—Configuración de la prueba A/B: consulta el Objeto de prueba A/B más abajo

Ejemplo de petición:

«Crea un enlace llamado "Product Hunt Launch" que envíe a los visitantes de escritorio a la landing de escritorio y a los visitantes móviles a la landing móvil.»


Actualiza un enlace existente. Incluye solo los campos que quieras cambiar.

Permiso necesario: links:write

Los mismos parámetros que create_link, además de:

ParámetroTipoObligatorioDescripción
linkIdstring✅ID del enlace que se va a actualizar
ogTitlestring—Título OG que se muestra al compartir el enlace en redes sociales (máx. 255 caracteres)
ogDescriptionstring—Descripción OG para las vistas previas en redes sociales (máx. 500 caracteres)
appearanceColorstring—Color de marca en hex (p. ej. #FF5733)

Cuando se indica rules, todo el array de reglas se sustituye. Incluye todas las reglas que quieras conservar, no solo las modificadas. La IA obtiene internamente los ID de las reglas existentes antes de actualizar.


Elimina un enlace de forma permanente.

Permiso necesario: links:delete

ParámetroTipoObligatorioDescripción
linkIdstring✅ID del enlace que se va a eliminar

Crea varios enlaces en una sola petición. Sujeto a la cuota de enlaces del plan.

Permiso necesario: links:bulk

ParámetroTipoObligatorioDescripción
linksLinkInput[]✅Array de objetos de enlace (de 1 a 100). Cada uno tiene los mismos campos que create_link

La respuesta incluye los arrays created (correctos) y failed (fallidos, con el motivo), por lo que es posible un éxito parcial.


Devuelve la analítica de clics de un enlace, desglosada por país, dispositivo, navegador, sistema operativo, regla de enrutamiento y variante A/B.

Permiso necesario: analytics:read

ParámetroTipoObligatorioDescripción
linkIdstring✅ID del enlace
fromstring—Fecha de inicio YYYY-MM-DD (por defecto: todo el tiempo)
tostring—Fecha de fin YYYY-MM-DD (por defecto: hoy)

get_workspace_analytics

Devuelve la analítica de clics agregada de todos los enlaces de un espacio de trabajo.

Permiso necesario: analytics:read

ParámetroTipoObligatorioDescripción
fromstring—Fecha de inicio YYYY-MM-DD (por defecto: todo el tiempo)
tostring—Fecha de fin YYYY-MM-DD (por defecto: hoy)

Objeto de regla

Todo enlace debe tener al menos una regla. Exactamente una regla debe tener isDefault: true: es el respaldo cuando no se cumplen las condiciones de ninguna otra regla. La regla predeterminada no puede tener ninguna condición.

CampoTipoDescripción
targetUrlstringURL de destino (obligatorio)
isDefaultbooleantrue para la regla de respaldo (obligatorio)
countrystring[]Códigos ISO 3166-1 alpha-2, p. ej. ["UA", "DE"]
citystring[]Nombres de ciudad. Requiere indicar country
devicestring[]"desktop" "mobile" "tablet" "console" "smarttv" "wearable" "embedded"
osstring[]"Windows" "macOS" "Linux" "iOS" "Android"
browserstring[]"Chrome" "Firefox" "Safari" "Edge" "Opera" "Brave"
timeStartstringInicio de la franja activa "HH:MM" UTC. Debe ir con timeEnd
timeEndstringFin de la franja activa "HH:MM" UTC. Debe ir con timeStart
daysOfWeekinteger[]Días: 0 = domingo … 6 = sábado
localestring[]Códigos de idioma del navegador, p. ej. ["uk", "en"]
namestringEtiqueta opcional para esta regla

Objeto de prueba A/B

Cuando abTest.enabled es true, los clics se reparten entre las variantes según sus pesos. Las reglas de enrutamiento se siguen aplicando primero: el reparto A/B solo ocurre para los visitantes que coinciden con una regla determinada.

CampoTipoDescripción
enabledbooleantrue para activar las pruebas A/B
variantsVariant[]Se requieren al menos 2 variantes cuando está activada

Variante:

CampoTipoDescripción
urlstringURL de destino de esta variante
weightnumberPorcentaje relativo del tráfico. P. ej. 70 y 30 significa un reparto 70 %/30 %

Gestión de errores

El servidor MCP devuelve errores JSON-RPC estándar. Los errores a nivel de herramienta usan estos códigos:

CódigoSignificado
-32602Parámetros no válidos: entrada incorrecta (error de validación, slug ocupado, etc.)
-32603Error interno: fallo del lado del servidor

Errores a nivel HTTP (antes de llamar a la herramienta):

HTTPCausa
401Falta la clave de API / token Bearer o no es válido
403La clave no tiene permisos de MCP activados, o el propietario de la clave no tiene acceso al espacio de trabajo
404Espacio de trabajo no encontrado

Ejemplos de llamadas a herramientas

Lista tus enlaces:

«Muéstrame todos los enlaces de mi espacio de trabajo con la etiqueta summer-sale.»

Crea un enlace con segmentación geográfica:

«Crea un enlace llamado "App Download". Envía a los usuarios de iOS a la App Store, a los de Android a Google Play y a todos los demás al sitio web.»

Actualiza las reglas de enrutamiento:

«Actualiza el enlace 664a1b2c…: añade una regla que redirija a los visitantes de Alemania a https://de.example.com.»

Obtén la analítica de la semana pasada:

«¿Cuáles fueron los países principales del enlace 664a1b2c… la semana pasada?»