QRSalt

Crea, redirige y rastrea códigos QR y enlaces cortos, y lee imágenes QR, desde tu asistente de IA. Servidor remoto en https://app.qrsalt.com/api/mcp con inicio de sesión OAuth; nada que instalar.

Servidor MCP alojado

npx add-mcp 'https://app.qrsalt.com/api/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Un servidor MCP de códigos QR para tu asistente

Pegas un bloque en Claude Code, Cursor o VS Code, una sola vez. Después de eso no hay nada que escribir: tus códigos están en la ventana del chat, y los pides de la misma manera que se lo pedirías a un colega. La clave que entregas, o las casillas que marcas al iniciar sesión, establecen el límite de lo que el asistente puede alcanzar.

Conéctalo → Ver las 13 herramientas →

Ejemplo práctico — no es una sesión en vivo

Pídeselo

Créame un código QR para la jornada de puertas abiertas de mañana y muéstreme la imagen.

En esta página

Qué puedes pedirle

La conversación anterior es una demo preescrita, y hacer clic en ella no envía nada a ningún sitio. Aquí hay más solicitudes que la gente escribe, y qué hace el asistente con cada una.

  • “¿Cuáles de mis códigos siguen apuntando al dominio antiguo?” Busca en los destinos de tus códigos y responde con los nombres que les diste a esos códigos.
  • “Acórtalo y llámalo Folleto de primavera.” Crea un enlace corto llamado Folleto de primavera. El enlace cuenta sus clics y puede reorientarse más tarde, porque es un código dinámico sin la imagen.
  • “Alguien me envió este código QR. ¿Qué contiene?” Añade la imagen al chat y lee el texto del código. Envías el archivo de imagen en sí; el asistente no puede obtener una imagen desde una dirección web.
  • “Pausa el código del banner de la feria hasta marzo.” Pausa el código. Quien lo escanee verá una página que dice que el código no está disponible, hasta que pidas que se reactive.
  • “¿Hacia dónde apunta ahora el código del expositor de mesa?” Muestra lo que tu espacio de trabajo registra sobre ese código: su destino, su enlace corto, sus escaneos y cuándo fue escaneado por última vez.

Cómo conectarlo

Elige Claude Code, Cursor o VS Code y obtienes lo único que necesitas pegar. Copiamos cada bloque de la documentación MCP de ese proveedor y pusimos la fecha en que lo leímos debajo. La app de Claude, y cualquier cliente que inicie sesión, solo necesita la URL del servidor. Cualquier otro cliente necesita dos valores: la URL del servidor y la cabecera.

Un comando en la terminal, en el proyecto donde quieras que esté disponible.

claude mcp add --transport http qrsalt https://app.qrsalt.com/api/mcp --header "Authorization: Bearer qr_live_YOUR_KEY"

Verificado contra la documentación de Claude Code sobre MCP, leída el 18 de septiembre de 2026.

Cambia qr_live_YOUR_KEY por una clave que crees en Panel → API, una que el asistente no comparta con un script ni con nada más. Cópiala antes de cerrar el diálogo, porque solo la mostramos una vez. VS Code funciona de manera diferente: el editor te pide la clave y la almacena, así que .vscode/mcp.json nunca la contiene y puedes confirmar el archivo.

Con una clave no hay pantalla de inicio de sesión. Quien tenga la clave tiene el acceso, así que para cortar el acceso a un asistente, revocas su clave.

Iniciar sesión funciona sin clave. El cliente abre una página de QRSalt donde eliges el espacio de trabajo y marcas lo que el asistente puede hacer; eliminar nunca está marcado por ti. Solo un propietario o un administrador puede conectar un asistente de esta manera, y actúa como la persona que lo conectó. Deja de funcionar cuando lo revocas en Panel → API → Aplicaciones conectadas, o cuando esa persona abandona el espacio de trabajo o deja de ser administradora. El diálogo de conexión de la app de Claude se conecta de esta manera: deja vacíos su ID de cliente OAuth y su secreto. Verificado contra el centro de ayuda de Claude sobre conectores personalizados, leído el 18 de septiembre de 2026.

Las herramientas y qué necesita cada una

Aquí están las 13, en el orden en que tools/list las devuelve. Cada descripción a continuación es el texto exacto que el servidor envía a tu asistente, escrito para que lo lea un modelo. La lista se reduce a lo que tu clave puede llamar, así que el asistente no ofrecerá hacer algo y luego recibirá un rechazo a mitad de camino.

Imágenes — necesita Renderizar imágenes

En todos los planes, incluido el gratuito. Ninguna herramienta guarda nada ni lee tu cuenta.

  • render_qr_code Convierte texto o un enlace en una imagen QR. No se guarda nada ni se lee nada: esto es el renderizador, no la cuenta. El código no se puede editar ni rastrear después — create_code crea uno que sí puede.
  • read_qr_image Lee el texto de una imagen QR. Envía el archivo PNG, JPEG o WebP en sí, codificado en Base64, en "image". No hay forma de darle a esta herramienta una URL para obtener. No se almacena nada.

Lectura de la cuenta — necesita Leer

Tus códigos y carpetas y con qué frecuencia se escaneó cada código. Plan Starter o superior.

  • list_codes Lista los códigos QR y enlaces cortos en este espacio de trabajo, del más reciente al más antiguo. Devuelve el id, nombre, destino, enlace corto y recuento de escaneos de cada código. Usa el id con las otras herramientas.
  • get_code Todo lo que este espacio de trabajo registra sobre un código QR o enlace corto.
  • list_folders Las carpetas de este espacio de trabajo, con cuántos códigos activos hay en cada una. El id es lo que create_code toma como su folderId.
  • get_scan_analytics Totales de escaneos y una serie diaria, para un código o para todo el espacio de trabajo. Lee las cifras diarias consolidadas, que es lo que esta cuenta conserva; los eventos de escaneo individuales no se retienen. El rango se acorta a lo que el plan conserva, y la respuesta dice cuándo ocurrió eso. Para saber qué códigos se escanean más, pide topCodes aquí en lugar de llamar esto una vez por código; "series": false deja fuera las cifras diarias cuando solo se quieren los totales.
  • get_code_image La imagen de un código guardado, con los colores, formas y logotipo con los que se guardó. El PNG vuelve como imagen, el SVG como marcado. Otros formatos y exportaciones más grandes están en la API REST.

Cambios — necesita Crear y cambiar

Una clave nueva ya tiene esta casilla marcada. Desmárcala si quieres un asistente que pueda mirar pero no tocar. Plan Starter o superior.

  • create_code Crea un nuevo código QR. Contiene un enlace por defecto; "type" también crea un código que lleva texto plano, abre un correo electrónico, marca un número o inicia un mensaje de texto. Un código dinámico puede reorientarse después y cuenta sus escaneos — ese es el valor por defecto para un enlace; los otros tipos van dentro del patrón y son estáticos por defecto, que nunca se pueden cambiar. Las redes Wi-Fi, tarjetas de contacto, eventos y pagos tienen varios campos cada uno y se crean en el panel o mediante la API REST, no aquí. El destino se examina y el código cuenta contra la cuota del plan.
  • update_code Cambia el enlace que abre un código dinámico, lo renombra, lo archiva, lo etiqueta, o lo pausa y reanuda. El código impreso y su enlace corto permanecen exactamente igual; solo se mueve el destino detrás de ellos. El destino anterior se conserva en el historial del código y se puede restaurar desde el panel. Un código estático no se puede reorientar. Las etiquetas reemplazan las etiquetas del código en lugar de añadirse a ellas, y un código pausado envía los escaneos a una página que dice que no está disponible.
  • create_short_link Acorta un enlace. El resultado es un código dinámico, así que puede reorientarse más tarde y cuenta sus clics; también tiene una imagen QR, que get_code_image devolverá.
  • set_gs1_link Da a un código dinámico existente una dirección GS1 Digital Link, para que un paquete impreso con /01/09506000134352\ se resuelva a través de nosotros y pueda reorientarse después. ai\ es la clave primaria GS1 — 01 para un GTIN, 00 para un SSCC, 414 para un GLN, y las demás que define GS1 — y value\ es el número en sí; un GTIN se verifica contra su dígito de control y el rechazo dice qué dígito se esperaba. batch\ y serial\ son opcionales y solo se aplican a un GTIN o un ITIP. Llamar esto de nuevo mueve el código a una dirección diferente, lo que detiene la resolución de la anterior. Solo planes de pago: un código GS1 estático, que lleva la dirección dentro del patrón y no se resuelve cerca de nosotros, no necesita nada de esto y es gratuito en todos los planes.

Eliminación — necesita Eliminar

Una clave nueva viene con esta casilla desmarcada, y dejaríamos que siguiera así. Elimina un código y deja de redirigir, y su terminación de enlace corto nunca va a nadie más.

  • remove_gs1_link Elimina la dirección GS1 Digital Link de un código. El código, su enlace corto, sus escaneos y su historial permanecen; lo que deja de funcionar es la dirección impresa en el paquete, de inmediato y para cada copia ya existente, y nada aquí puede llegar a esos paquetes para avisarles. Envía el nombre del código, o su terminación de enlace corto, como "confirm"; get_code devuelve ambos. Cuando nadie ha dicho de qué paquete se trata, pregunta primero.
  • delete_code Elimina un código QR o enlace corto guardado, de forma permanente. Lo que cuesta depende del tipo, y la respuesta dice cuál era. Eliminar un código DINÁMICO detiene el funcionamiento del código impreso en el momento en que esto regresa: el escaneo pasa por nosotros, así que llega a una página de no encontrado, y su enlace corto nunca se da a nadie más. Eliminar un código ESTÁTICO elimina nuestro registro de él — el nombre, el diseño y el historial — y nada más: el destino está dentro del patrón impreso, así que cada copia ya existente sigue funcionando y esto no puede revocarlo. De cualquier manera, el registro desaparece para siempre. Los enlaces cortos son códigos dinámicos, así que esto también los elimina. Requiere que "confirm" sea el nombre exacto del código, o su "slug" — ambos están en lo que get_code y list_codes devuelven. Si la persona que pregunta no ha nombrado qué código quiere decir, pregúntale antes de llamar esto. Un código por llamada.

Con qué está hablando tu cliente

Lee esto si tu cliente se conecta pero no lista herramientas.

Cada mensaje que envía tu cliente es una solicitud completa, y nuestra respuesta la termina. El servidor no mantiene sesión ni sostiene ninguna conexión abierta en segundo plano, así que no hay nada que reiniciar cuando tu portátil se duerme. Si cierras el editor a mitad de una solicitud, lo siguiente que escribas funciona con normalidad.

Qué herramientas ves depende de la clave o el inicio de sesión en la solicitud. La lista no es fija: una clave que solo puede dibujar imágenes obtiene las 2 herramientas de imágenes y ninguna más. Si marcas otra casilla en la clave o subes de plan, las otras herramientas aparecen en aproximadamente un minuto, porque se les dice a los clientes que mantengan la lista durante un minuto como máximo. Un cliente en una revisión más antigua las muestra la próxima vez que se conecta.

Los clientes más antiguos reciben respuesta en su propia revisión. La revisión 2026-07-28 no tiene apretón de manos inicial, pero las anteriores comienzan con una llamada llamada initialize. El servidor responde a esa llamada en la revisión que el cliente pide, desde 2024-11-05 hasta 2025-06-18, así que un cliente que no se ha puesto al día con 2026-07-28 aún se conecta.

Sin una clave válida o inicio de sesión, el servidor no responde nada, ni siquiera la lista de herramientas. Su rechazo nombra la dirección donde un cliente descubre cómo iniciar sesión. Si tu cliente muestra una lista vacía donde debería haber herramientas, verifica la clave que está enviando. La única excepción es un espacio de trabajo suspendido: no recibe herramientas y una frase que dice que el espacio de trabajo está suspendido, para que un problema de cuenta no parezca un conector que no arranca.

Lo que no hará

Un asistente solo puede hacer lo que su clave permite, y las herramientas pueden hacer menos que la API detrás de ellas.

La eliminación está detrás de la casilla Eliminar en la clave, que no está marcada para ti. Déjala en paz y ningún asistente con esa clave puede eliminar nada. Incluso cuando está marcada, la llamada tiene que incluir el nombre propio del código o su terminación de enlace corto, así que un vago “elimínalo” no elimina nada.

Ninguna herramienta abre una dirección web que le des. Leer una imagen QR toma el archivo en sí, codificado en Base64, en cualquier nivel de permiso.

Sin diseño, sin dominios, sin facturación. Colores, formas y logotipos, reglas de enrutamiento, dominios personalizados, terminaciones de enlace corto, endpoints de webhook, tu equipo y tu suscripción están todos fuera de este servidor.

Nada nombra un espacio de trabajo. Cada llamada se ejecuta contra el espacio de trabajo al que pertenece la clave, o el elegido al iniciar sesión. Ninguna herramienta tiene un argumento que pueda apuntarla al espacio de trabajo de otra persona.

  • Renderizar imágenesmarcada por defectoCódigos QR estáticos y códigos de barras como imágenes. No se almacena ni se lee nada.
  • Leermarcada por defectoLista códigos, enlaces, carpetas, etiquetas, Menús QR, Formularios QR y sus respuestas, y lee escaneos.
  • Crear y cambiarmarcada por defectoCrea y cambia códigos, enlaces, carpetas, dominios y endpoints de webhook.
  • Eliminardesactivada a menos que la marquesElimina códigos, enlaces, dominios y endpoints de webhook. Un código eliminado no se puede restaurar.

Revisado el 18 de septiembre de 2026, contra el producto tal como funciona hoy.

Cuántos obtienes

Conectarse no cuesta nada, y no hay factura por el conector en sí. Tu plan decide cuántas herramientas muestra tu cliente. En Free son 2 de 13: render_qr_code y read_qr_image. Con ellas puedes pedir un código en una ventana de chat y recibir una imagen, o hacer que se lea un código que alguien te envió. Nada de la cuenta está al alcance, porque una clave en ese plan genera imágenes y nada más.

Las otras 11 funcionan con tu espacio de trabajo: lo que has creado, a dónde apunta cada uno, con qué frecuencia se escaneó, y las herramientas que cambian todo eso. Vienen con Starter, $5 al mes, el mismo plan que pagarías para usar una clave en un script. Si ya tienes ese plan, dale al asistente su propia clave en el mismo espacio de trabajo; no necesitas pagar dos veces. Las cifras de escaneos llegan tan atrás como tu plan las conserve. Si preguntas por un período más largo, obtienes el rango más corto y una nota indicando que se recortó. Para trabajos que deben ejecutarse sin que nadie lo pida, como un código para cada pedido nuevo, los conectores de n8n, Zapier y Make llaman a la misma API.

Preguntas sobre MCP, respondidas

¿Qué es un servidor MCP, en un párrafo?

El Protocolo de Contexto de Modelo (MCP) es una forma estándar para que un asistente de IA use un servicio con el que no fue entrenado. El servidor publica una lista de herramientas, el asistente lee esa lista, y cuando tu solicitud necesita una de ellas, el asistente la llama y te muestra la respuesta. Este servidor ofrece herramientas de códigos QR, así que puedes crear, redirigir y verificar códigos desde una ventana de chat.

¿Qué asistentes puedo conectar?

Cualquier cosa que hable el protocolo por HTTP. La configuración para Claude Code, Cursor y VS Code se muestra arriba, cada una tomada de la documentación del propio proveedor y con fecha. El diálogo de conexión de la app de Claude no tiene campo para una clave, así que toma solo la dirección e inicia sesión con QRSalt, igual que cualquier otro cliente que admita inicio de sesión MCP.

¿El asistente ve mi clave de API?

El cliente la guarda y la envía con cada llamada; el modelo no ve la clave como parte de una conversación. Aun así, vive en un archivo o en un panel de configuración en tu máquina, así que trátala como cualquier otra contraseña: crea una clave solo para el asistente. Cuando dejes de usar el asistente, revoca esa clave, y tus otras claves seguirán funcionando.

Una página web le dijo a mi asistente que cambiara un código. ¿Puede hacerlo?

Solo si la clave que le diste permite ese cambio. Una página web puede contener texto escrito para dar órdenes a un asistente. Por eso las herramientas aquí no obtienen direcciones web, ninguna toca diseño, dominios, equipo o facturación, y cada herramienta acepta menos argumentos que la misma solicitud por HTTP. Una clave que solo puede leer no se puede usar para cambiar nada.

¿Necesito un plan de pago para esto?

No para conectarte. Un espacio de trabajo Free obtiene 2 de las 13 herramientas, suficiente para pedir una imagen y hacer que se te lea una. Las otras 11, las que funcionan con tu espacio de trabajo, vienen con Starter, $5 al mes.

¿Funciona con un cliente creado para una revisión anterior del protocolo?

Sí, si el cliente se conecta por HTTP. Los clientes creados antes del 2026-07-28 abren con una llamada llamada initialize, y el servidor responde en la revisión que el cliente pida: 2025-06-18, 2025-03-26 o 2024-11-05. A un cliente que pida cualquier otra revisión se le ofrece 2025-06-18. La dirección, la clave y las herramientas son las mismas en cada revisión.

Ya tengo una clave en un script. ¿Puede el asistente usar esa?

Funcionaría, pero vale la pena crear una segunda clave. Revocas una clave completa de una vez, así que si un trabajo nocturno y una ventana de chat comparten una clave, no puedes cortar solo la ventana de chat. Crea una clave para el asistente y marca solo lo que necesita. Luego puedes revocarla con un clic y nada más deja de funcionar.

Planes detrás del conector

El conector funciona en todos los planes de pago, desde $5 al mes en Starter, y cada llamada de herramienta cuenta como una solicitud: 500 solicitudes de API al mes en Starter, 5,000 en Pro y 100,000 en Business, un límite de uso justo. En Free, el conector no lista herramientas y dice qué plan necesita.

Free

Free

Códigos estáticos ilimitados. Tres editables que nunca expiran.

  • Códigos QR estáticos ilimitados, para siempre
  • 3 elementos editables en total: los códigos QR dinámicos, los QR Menus y los QR Forms los comparten
  • Los códigos dinámicos nunca expiran, y cada uno viene con un enlace corto
  • Enlaces cortos por sí solos, sin necesidad de código QR

3códigos dinámicos

Empezar gratis

Starter

Recomendado

$5/mes

Para un negocio con códigos en el mundo.

  • 5 QR Menus
  • QR Forms
  • Digital Links GS1 que alojamos, para que un paquete impreso pueda redirigirse
  • Seguimiento y análisis avanzados

100códigos dinámicos

Elegir Starter

Pro

$15/mes

Para agencias y equipos que gestionan códigos a escala.

  • 50 QR Menus
  • Historial de análisis ilimitado
  • 10 dominios personalizados
  • 5,000 solicitudes de API al mes

600códigos dinámicos

Elegir Pro

Business

$39/mes

Para organizaciones que gestionan códigos en muchas marcas.

  • 400 QR Menus
  • 50 dominios personalizados
  • Hasta 25 miembros del equipo y gestión de equipo
  • Hasta 10 espacios de trabajo

2,000códigos dinámicos

Elegir Business

Escaneos ilimitados en todos los planes. Cancela en línea con dos clics. Compara todos los planes y funciones

El resto de la caja de herramientas

Abre una fila para ver la pantalla y qué plan la incluye.

Dominios personalizados

Enlaces cortos en tu propio dominio, elegidos código por código.

Starter y superiores

Los códigos abren go.yourbrand.com/menu en lugar de un enlace con nuestro nombre, así que la dirección bajo el código es tuya. Añades dos registros DNS y nosotros los verificamos. Luego elige el dominio para cada código al crearlo, o mueve una lista completa de códigos a él de una vez.

Starter y superiores

Códigos QR en tu propio dominio

A verified custom domain, go.fieldhousecoffee.example, with the TXT and CNAME records to copy into DNS and a button to check them again.

Dominios personalizados · datos de muestra verificados

Cambiar muchos códigos a la vez

Marca los códigos, luego pausa, etiqueta, archiva o muévelos juntos.

Pausar y reanudar en todos los planes · carpetas y etiquetas en Starter y superiores

Marca códigos en la lista, o elige todos los códigos con una etiqueta, luego pausa o reanúdalos, añade o quita etiquetas, muévelos a una carpeta o a tu propio dominio, o añade etiquetas de campaña, todo de una vez. Por ejemplo, cuando una tienda temporal cierra, puedes pausar todos sus códigos juntos en lugar de uno por uno. La API hace lo mismo en una solicitud.

Pausar y reanudar en todos los planes · carpetas y etiquetas en Starter y superiores

An estate agent’s QR codes - yard signs for two listings, an open-house flyer and neighbourhood flyer drops - each with its short link on the agency’s own domain, its scan count and its folder.

Tus códigos QR · lista de muestra de un agente inmobiliario

Webhooks

Tu servidor se entera de cada escaneo y cada cambio.

Business

Elige los eventos que te importan (un escaneo, un código creado o cambiado, un formulario respondido, un QR Menu editado) y danos una URL. Cada uno llega como un POST firmado. Si tu servidor está caído, lo intentamos de nuevo, y cada entrega se lista con la respuesta que recibió.

Business

La API y los webhooks

A webhook endpoint that hears about every scan and code update, with who set it up, a signing secret hidden until an owner or admin reveals it, and its last deliveries, each marked delivered with the response it got.

Webhooks · entregas recientes datos de muestra

Espacios de trabajo separados

Una suscripción, un espacio de trabajo por marca o cliente.

Business

Cada espacio de trabajo tiene sus propios códigos, equipo y análisis, así que un cliente, como un dentista para el que diseñas, nunca ve los códigos de otro cliente. Hasta 10 bajo una suscripción.

Business

The Workspaces panel in settings: how many of the plan’s workspaces are in use, what happens to all of them if the subscription ends, and a field to name and create another one.

Configuración · espacios de trabajo datos de muestra

Una API para los códigos que imprimes

Usa la API para crear códigos dinámicos y enlaces cortos desde tu propio software. Puedes cambiar a dónde lleva un código, por ejemplo cuando una página de producto se mueve, y descargar códigos como SVG, PNG o PDF para la imprenta. También puedes añadir un dominio, o cambiar hasta 500 códigos en una solicitud. Si no escribes código, Zapier, Make y n8n pueden llamar a la API con un paso HTTP simple. La API viene con Starter y superiores, y cada solicitud debe incluir tu clave.

Renderizar un código · Starter y superiores

curl -o code.svg \
  -H "Authorization: Bearer $QRSALT_KEY" \
  "https://app.qrsalt.com/api/qr?data=https://example.com"

Recibes un archivo SVG, listo para una etiqueta, una plantilla o una página web.

Redirigir un código impreso · Starter y superiores

curl -X PATCH https://app.qrsalt.com/api/v1/codes/{id} \
  -H "Authorization: Bearer $QRSALT_KEY" \
  -H "content-type: application/json" \
  -d '{"destination":"https://example.com/winter"}'

El código impreso ahora abre la nueva página, y la dirección anterior se guarda en el historial del código. Una clave solo puede cambiar códigos en su propio espacio de trabajo.

Cambiar muchos códigos a la vez · JavaScript

// Move a campaign's codes onto your own domain
await fetch('https://app.qrsalt.com/api/v1/codes/bulk', {
  method: 'POST',
  headers: {
    authorization: \`Bearer ${process.env.QRSALT_KEY}\`,
    'content-type': 'application/json',
  },
  body: JSON.stringify({ ids, action: 'domain', domain: 'go.example.com' }),
})

Pausa, etiqueta, mueve o archiva códigos en carpetas en una solicitud. La respuesta lista lo que cambió y lo que se omitió.

Cada endpoint, con un playground

The API screen listing a coffee company’s keys - one for a menu sync, one for a label printer, one revoked - each with its prefix, who created it, when it was made and when it was last used.

Claves de API · una por integración datos de muestra