QR for Agent
QR Agent Core
API de QR-as-a-Service creada para agentes de IA. Crea, actualiza y rastrea códigos QR dinámicos mediante programación a través de la API REST o MCP (37 herramientas).
Los códigos QR apuntan a URLs cortas (/r/:shortId) que puedes redirigir en cualquier momento: la imagen del QR nunca cambia, pero al escanearla se dirige al nuevo destino. Multitenant por diseño, con análisis completo de escaneos.
API en vivo: api.qragentcore.com | Sitio: qrforagent.com | MCP: qr-for-agent
Características
Códigos QR dinámicos — cambia la URL de destino sin regenerar la imagen
11 tipos de QR — URL, vCard, WiFi, Email, SMS, Teléfono, Evento, Texto, Ubicación, Redes Sociales, App Store
Estilos personalizados — formas de puntos (cuadrado, redondeado, puntos, classy-rounded), estilos de esquina, colores, degradados, incrustación de logotipos, marcos con texto CTA
SVG y PNG — salida vectorial y de mapa de bits
Análisis enriquecido — tipo de dispositivo, navegador, SO, país, ciudad, referente, escaneos por día
Webhooks en tiempo real — cargas útiles firmadas con HMAC-SHA256 con registro de entrega
Rastreo UTM — añade automáticamente parámetros UTM a las URLs de redirección
Soporte GTM — página intermedia con fragmentos de Google Tag Manager
Redirecciones condicionales — enruta por dispositivo, SO, país, idioma, rango de tiempo o división A/B
Dominios personalizados — los usuarios Pro pueden marcar sus URLs cortas con su propio dominio (
qr.tumarca.com/r/abc123)Expiración y programación — expira automáticamente códigos QR o programa cambios de URL
Rastreo de conversiones — píxel de seguimiento + API para eventos post-escaneo (compras, registros) con análisis de ROI
Marcos y plantillas — marcos decorativos alrededor de los códigos QR (banner_top, banner_bottom, redondeado) con texto CTA
Operaciones masivas — crea, actualiza o elimina hasta 50 códigos QR por solicitud, o hasta 500 mediante carga de CSV (Pro)
Multitenant — cada clave de API solo ve sus propios datos
Servidor MCP —
qr-for-agentcon 37 herramientas para Claude Desktop, Cursor, etc.Cuotas basadas en planes — Gratis (10 QR, 1K escaneos/mes) y Pro ($19/mes, ilimitado)
Registro autoservicio —
POST /api/registercon correo electrónico, sin tarjeta de créditoIntegración con Stripe — checkout, portal de facturación, gestión de planes basada en webhooks
Documentación OpenAPI — Swagger UI en
/documentationDescubrible por IA —
/.well-known/ai-plugin.jsony/.well-known/mcp.jsonCódigo abierto — licencia MIT, autohospedable mediante Docker
Related MCP server: QR Code Generator MCP
Inicio rápido
git clone https://github.com/benswel/qr-agent-core.git
cd qr-agent-core
npm install
npm run devEn el primer inicio, se genera automáticamente una clave de API que se imprime en la consola.
curl -X POST http://localhost:3100/api/qr \
-H "Content-Type: application/json" \
-H "X-API-Key: qr_YOUR_KEY_HERE" \
-d '{"target_url": "https://example.com", "label": "My first QR"}'Endpoints de la API
Gestión de códigos QR (requiere X-API-Key)
Método | Ruta | Descripción |
|
| Crea un código QR (11 tipos, estilo personalizado) |
|
| Lista todos los códigos QR (paginado) |
|
| Obtiene detalles del código QR |
|
| Actualiza URL de destino, etiqueta, UTM, GTM, reglas de redirección |
|
| Elimina el código QR y sus análisis |
|
| Descarga la imagen del QR (regenerada con el estilo guardado) |
|
| Crea hasta 50 códigos QR (todo o nada) |
|
| Actualiza hasta 50 códigos QR (éxito parcial) |
|
| Elimina hasta 50 códigos QR (éxito parcial) |
|
| Crea hasta 500 códigos QR desde CSV (solo Pro) |
Análisis (requiere X-API-Key)
Método | Ruta | Descripción |
|
| Estadísticas de escaneo con desglose de dispositivo, navegador, SO, país, ciudad + conversiones |
Conversiones (requiere X-API-Key)
Método | Ruta | Descripción |
|
| Registra un evento de conversión para un código QR de tu propiedad |
|
| Obtiene estadísticas de conversión (totales, por_evento, por_día, recientes) |
Webhooks (requiere X-API-Key)
Método | Ruta | Descripción |
|
| Registra un endpoint de webhook (devuelve secreto HMAC) |
|
| Lista todos los webhooks |
|
| Elimina un webhook |
Dominio personalizado (requiere X-API-Key, solo Pro)
Método | Ruta | Descripción |
|
| Obtiene el dominio personalizado actual y el estado de DNS |
|
| Establece un dominio personalizado |
|
| Elimina el dominio personalizado |
Cuenta (requiere X-API-Key)
Método | Ruta | Descripción |
|
| Uso actual y cuota |
|
| Crea una sesión de Stripe Checkout (actualizar a Pro) |
|
| Abre el portal de facturación de Stripe |
Público (sin autenticación)
Método | Ruta | Descripción |
|
| Registro de clave de API autoservicio (limitado por tasa) |
|
| Redirige a la URL de destino (registra escaneo) |
|
| Píxel de seguimiento de conversiones (devuelve GIF 1×1) |
|
| Sirve la imagen del QR (cacheable) |
|
| Comprobación de estado |
|
| Swagger UI |
|
| Manifiesto del plugin de IA |
|
| Manifiesto de descubrimiento MCP |
Administrador (requiere cabecera X-Admin-Secret)
Método | Ruta | Descripción |
|
| Lista todas las claves de API registradas |
|
| Métricas del panel |
Autenticación
Todos los endpoints /api/* requieren una cabecera X-API-Key.
Formato:
qr_+ cadena aleatoria de 32 caracteresGenerado automáticamente: en el primer inicio si no existen claves
Multitenant: cada clave solo ve sus propios códigos QR
Crear una clave:
npm run key:create "mi-etiqueta"Listar claves:
npm run key:list
Los endpoints públicos (/r/*, /i/*, /health, /documentation, /.well-known/*) no requieren autenticación.
Servidor MCP
Publicado como qr-for-agent en npm. 37 herramientas para que los agentes de IA gestionen códigos QR de forma nativa.
npx qr-for-agentClaude Desktop / Cursor
Añade a tu configuración de MCP (claude_desktop_config.json o .cursor/mcp.json):
{
"mcpServers": {
"qr-for-agent": {
"command": "npx",
"args": ["-y", "qr-for-agent"],
"env": {
"API_KEY": "your-api-key",
"BASE_URL": "https://api.qragentcore.com"
}
}
}
}Herramientas disponibles (37)
Herramienta | Descripción |
| Crea un código QR de URL con estilo personalizado opcional |
| Obtiene detalles del código QR por ID corto |
| Cambia a dónde redirige un código QR |
| Lista todos los códigos QR con paginación |
| Elimina un código QR y sus análisis |
| Obtiene estadísticas de escaneo y desgloses |
| Crea hasta 50 códigos QR a la vez |
| Actualiza hasta 50 códigos QR a la vez |
| Elimina hasta 50 códigos QR a la vez |
| Crea un código QR de contacto vCard |
| Crea un código QR de credenciales WiFi |
| Crea un código QR de correo electrónico (mailto:) |
| Crea un código QR de SMS |
| Crea un código QR de llamada telefónica |
| Crea un código QR de evento de calendario |
| Crea un código QR de texto plano |
| Crea un código QR de geolocalización |
| Crea un código QR de enlaces a redes sociales |
| Crea un código QR de redirección inteligente a App Store |
| Actualiza un código QR vCard |
| Actualiza un código QR WiFi |
| Actualiza un código QR de redes sociales |
| Actualiza un código QR de App Store |
| Registra un endpoint de webhook |
| Lista todos los webhooks registrados |
| Elimina un webhook |
| Regístrate para obtener una clave de API |
| Obtiene el uso actual y la cuota |
| Crea una sesión de Stripe Checkout |
| Abre el portal de facturación de Stripe |
| Establece parámetros de seguimiento UTM en un código QR |
| Establece reglas de redirección condicional en un código QR |
| Establece o elimina un dominio personalizado (Pro) |
| Obtiene el dominio personalizado actual y el estado de DNS |
| Crea hasta 500 códigos QR desde datos CSV (Pro) |
| Registra un evento de conversión post-escaneo |
| Obtiene estadísticas de conversión para un código QR |
Configuración
Copia .env.example a .env y edita:
Variable | Predeterminado | Descripción |
|
| Puerto HTTP |
|
| Dirección de enlace |
|
| URL pública (usada en URLs cortas) |
|
| Ruta del archivo SQLite |
|
| Longitud de los IDs cortos generados |
| (ninguno) | Secreto para endpoints de administración (cabecera |
| (ninguno) | Clave secreta de la API de Stripe |
| (ninguno) | Secreto de firma de webhook de Stripe |
| (ninguno) | ID de precio de Stripe para el plan Pro |
Base de datos
SQLite con Drizzle ORM. Seis tablas:
api_keys— almacenamiento de claves con etiqueta, correo electrónico, plan (gratis/pro), IDs de Stripe, dominio personalizadoqr_codes— metadatos de QR, URLs de destino, tipo/datos_tipo, opciones de estilo, UTM, GTM, reglas de redirección, expiración/programaciónscan_events— seguimiento de escaneo: marca de tiempo, agente de usuario, referente, IP, dispositivo, navegador, SO, país, ciudadwebhooks— endpoints de webhook por clave de API, secreto HMAC, eventos suscritoswebhook_deliveries— registro de entrega: estado, código de respuesta, mensajes de errorconversion_events— seguimiento de conversiones: nombre del evento, valor, metadatos, referente, IP, marca de tiempo
npm run db:generate # Generate migration from schema changes
npm run db:migrate # Apply pending migrations
npm run db:studio # Open Drizzle Studio (web UI)Las migraciones se ejecutan automáticamente al iniciar el servidor.
Despliegue
Docker
docker compose up -dLa base de datos persiste en un volumen de Docker.
Railway
El proyecto incluye railway.toml y un Dockerfile multietapa. Conecta tu repositorio de GitHub a Railway: se construye y despliega automáticamente con comprobaciones de estado en /health.
Pruebas
195 pruebas de integración que cubren todos los endpoints, autenticación, aislamiento multitenant, tipos de QR, webhooks, operaciones masivas, dominios personalizados, marcos, conversiones, carga de CSV y análisis.
npm test # Run all tests
npm run test:watch # Watch modeScripts
Script | Descripción |
| Inicia el servidor de desarrollo con recarga automática |
| Compila TypeScript |
| Ejecuta el servidor de producción |
| Ejecuta la suite de pruebas |
| Pruebas en modo de vigilancia |
| Crea una clave de API |
| Lista las claves de API |
| Genera migración |
| Ejecuta migraciones |
| Abre Drizzle Studio |
Licencia
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/benswel/qr-agent-core'
If you have feedback or need assistance with the MCP directory API, please join our Discord server