QR for Agent

Servidor MCP de QR code dinâmico para agentes de IA — criar, atualizar, rastrear QR codes

Documentação

QR for Agent

benswel/qr-for-agent-api MCP server

API QR-as-a-Service construída para agentes de IA. Crie, atualize e acompanhe QR codes dinâmicos programaticamente via REST API ou MCP (37 ferramentas).

QR codes apontam para URLs curtas (/r/:shortId) que você pode redirecionar a qualquer momento — a imagem do QR nunca muda, mas a leitura leva ao novo destino. Multi-tenant por design, com análises completas de leituras.

API ao vivo: api.qrforagent.com  |  Site: qrforagent.com  |  MCP: qr-for-agent

Recursos

  • QR codes dinâmicos — altere a URL de destino sem regenerar a imagem
  • 11 tipos de QR — URL, vCard, WiFi, E-mail, SMS, Telefone, Evento, Texto, Localização, Redes Sociais, App Store
  • Estilo personalizado — formatos de pontos (quadrado, arredondado, pontos, arredondado-clássico), estilos de cantos, cores, gradientes, incorporação de logotipo, molduras com texto de CTA
  • SVG & PNG — saída vetorial e bitmap
  • Análises enriquecidas — tipo de dispositivo, navegador, SO, país, cidade, referenciador, leituras por dia
  • Webhooks em tempo real — payloads assinados com HMAC-SHA256 com registro de entrega
  • Rastreamento UTM — anexa automaticamente parâmetros UTM às URLs de redirecionamento
  • Suporte a GTM — página intermediária com snippets do Google Tag Manager
  • Redirecionamentos condicionais — roteie por dispositivo, SO, país, idioma, intervalo de tempo ou divisão A/B
  • Domínios personalizados — usuários Pro personalizam URLs curtas com seu próprio domínio (qr.yourbrand.com/r/abc123)
  • Expiração e agendamento — expire QR codes automaticamente ou agende trocas de URL
  • Rastreamento de conversões — pixel de rastreamento + API para eventos pós-leitura (compras, inscrições) com análises de ROI
  • Molduras e modelos — molduras decorativas ao redor dos QR codes (banner_top, banner_bottom, arredondado) com texto de CTA
  • Operações em lote — crie, atualize ou exclua até 50 QR codes por solicitação, ou até 500 via upload de CSV (Pro)
  • Multi-tenant — cada chave de API vê apenas seus próprios dados
  • Servidor MCPqr-for-agent com 37 ferramentas para Claude Desktop, Cursor, etc.
  • Cotas baseadas em plano — Gratuito (10 QR, 1K leituras/mês) e Pro ($19/mês, ilimitado)
  • Registro self-servicePOST /api/register com e-mail, sem cartão de crédito
  • Integração Stripe — checkout, portal de cobrança, gerenciamento de plano orientado por webhook
  • Documentação OpenAPI — Swagger UI em /documentation
  • Detectável por IA/.well-known/ai-plugin.json e /.well-known/mcp.json
  • Código aberto — licença MIT, hospedável via Docker

Início Rápido

git clone https://github.com/benswel/qr-for-agent-api.git
cd qr-for-agent-api
npm install
npm run dev

Na primeira inicialização, uma chave de API é gerada automaticamente e exibida no console.

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 da API

Gerenciamento de QR Codes (X-API-Key obrigatório)

MétodoCaminhoDescrição
POST/api/qrCriar um QR code (11 tipos, estilo personalizado)
GET/api/qrListar todos os QR codes (paginado)
GET/api/qr/:shortIdObter detalhes do QR code
PATCH/api/qr/:shortIdAtualizar URL de destino, rótulo, UTM, GTM, regras de redirecionamento
DELETE/api/qr/:shortIdExcluir QR code e suas análises
GET/api/qr/:shortId/imageBaixar imagem do QR (regenerada com o estilo armazenado)
POST/api/qr/bulkCriar até 50 QR codes (tudo ou nada)
PATCH/api/qr/bulkAtualizar até 50 QR codes (sucesso parcial)
DELETE/api/qr/bulkExcluir até 50 QR codes (sucesso parcial)
POST/api/qr/bulk/csvCriar até 500 QR codes a partir de CSV (somente Pro)

Análises (X-API-Key obrigatório)

MétodoCaminhoDescrição
GET/api/analytics/:shortIdEstatísticas de leitura com detalhamentos por dispositivo, navegador, SO, país, cidade + conversões

Conversões (X-API-Key obrigatório)

MétodoCaminhoDescrição
POST/api/conversionsRegistrar um evento de conversão para um QR code que você possui
GET/api/conversions/:shortIdObter estatísticas de conversão (totais, por_evento, por_dia, recentes)

Webhooks (X-API-Key obrigatório)

MétodoCaminhoDescrição
POST/api/webhooksRegistrar endpoint de webhook (retorna segredo HMAC)
GET/api/webhooksListar todos os webhooks
DELETE/api/webhooks/:idExcluir um webhook

Domínio Personalizado (X-API-Key obrigatório, somente Pro)

MétodoCaminhoDescrição
GET/api/domainObter domínio personalizado atual e status de DNS
PUT/api/domainDefinir domínio personalizado
DELETE/api/domainRemover domínio personalizado

Conta (X-API-Key obrigatório)

MétodoCaminhoDescrição
GET/api/usageUso atual e cota
POST/api/stripe/checkoutCriar sessão de checkout Stripe (upgrade para Pro)
POST/api/stripe/portalAbrir portal de cobrança Stripe

Público (sem autenticação)

MétodoCaminhoDescrição
POST/api/registerRegistro self-service de chave de API (com limite de taxa)
GET/r/:shortIdRedirecionar para URL de destino (registra leitura)
GET/t/:shortIdPixel de rastreamento de conversão (retorna GIF 1×1)
GET/i/:shortIdServir imagem QR (com cache)
GET/healthVerificação de saúde
GET/documentationSwagger UI
GET/.well-known/ai-plugin.jsonManifesto de plugin de IA
GET/.well-known/mcp.jsonManifesto de descoberta MCP

Admin (cabeçalho X-Admin-Secret obrigatório)

MétodoCaminhoDescrição
GET/api/admin/keysListar todas as chaves de API registradas
GET/api/admin/statsMétricas do painel

Autenticação

Todos os endpoints /api/* exigem um cabeçalho X-API-Key.

  • Formato: qr_ + string aleatória de 32 caracteres
  • Gerado automaticamente: na primeira inicialização se nenhuma chave existir
  • Multi-tenant: cada chave vê apenas seus próprios QR codes
  • Criar uma chave: npm run key:create "my-label"
  • Listar chaves: npm run key:list

Endpoints públicos (/r/*, /i/*, /health, /documentation, /.well-known/*) não exigem autenticação.

Servidor MCP

Publicado como qr-for-agent no npm. 37 ferramentas para agentes de IA gerenciarem QR codes nativamente.

npx qr-for-agent

Claude Desktop / Cursor

Adicione à sua configuração MCP (claude_desktop_config.json ou .cursor/mcp.json):

{
  "mcpServers": {
    "qr-for-agent": {
      "command": "npx",
      "args": ["-y", "qr-for-agent"],
      "env": {
        "API_KEY": "your-api-key",
        "BASE_URL": "https://api.qrforagent.com"
      }
    }
  }
}

Ferramentas Disponíveis (37)

FerramentaDescrição
create_qr_codeCriar um QR code de URL com estilo personalizado opcional
get_qr_codeObter detalhes do QR code por ID curto
update_qr_destinationAlterar para onde um QR code redireciona
list_qr_codesListar todos os QR codes com paginação
delete_qr_codeExcluir um QR code e suas análises
get_qr_analyticsObter estatísticas de leitura e detalhamentos
bulk_create_qr_codesCriar até 50 QR codes de uma vez
bulk_update_qr_codesAtualizar até 50 QR codes de uma vez
bulk_delete_qr_codesExcluir até 50 QR codes de uma vez
create_vcard_qrCriar um QR code de contato vCard
create_wifi_qrCriar um QR code de credenciais WiFi
create_email_qrCriar um QR code de e-mail (mailto:)
create_sms_qrCriar um QR code de SMS
create_phone_qrCriar um QR code de chamada telefônica
create_event_qrCriar um QR code de evento de calendário
create_text_qrCriar um QR code de texto simples
create_location_qrCriar um QR code de geolocalização
create_social_qrCriar um QR code de links de redes sociais
create_app_store_qrCriar um QR code inteligente de redirecionamento para app store
update_vcard_qrAtualizar um QR code vCard
update_wifi_qrAtualizar um QR code WiFi
update_social_qrAtualizar um QR code de redes sociais
update_app_store_qrAtualizar um QR code de app store
create_webhookRegistrar um endpoint de webhook
list_webhooksListar todos os webhooks registrados
delete_webhookExcluir um webhook
registerRegistrar-se para obter uma chave de API
get_usageObter uso atual e cota
upgrade_to_proCriar uma sessão de checkout Stripe
manage_billingAbrir portal de cobrança Stripe
set_utm_paramsDefinir parâmetros de rastreamento UTM em um QR code
set_redirect_rulesDefinir regras de redirecionamento condicional em um QR code
set_custom_domainDefinir ou remover domínio personalizado (Pro)
get_custom_domainObter domínio personalizado atual e status de DNS
bulk_create_from_csvCriar até 500 QR codes a partir de dados CSV (Pro)
record_conversionRegistrar um evento de conversão pós-leitura
get_conversionsObter estatísticas de conversão para um QR code

Configuração

Copie .env.example para .env e edite:

VariávelPadrãoDescrição
PORT3100Porta HTTP
HOST0.0.0.0Endereço de vinculação
BASE_URLhttp://localhost:3100URL pública (usada em URLs curtas)
DATABASE_URL./data/qr-agent.dbCaminho do arquivo SQLite
SHORT_ID_LENGTH8Comprimento dos IDs curtos gerados
ADMIN_SECRET(nenhum)Segredo para endpoints de admin (cabeçalho X-Admin-Secret)
STRIPE_SECRET_KEY(nenhum)Chave secreta da API Stripe
STRIPE_WEBHOOK_SECRET(nenhum)Segredo de assinatura de webhook Stripe
STRIPE_PRICE_ID(nenhum)ID de preço Stripe para o plano Pro

Banco de Dados

SQLite com Drizzle ORM. Seis tabelas:

  • api_keys — armazenamento de chaves com rótulo, e-mail, plano (gratuito/pro), IDs Stripe, domínio personalizado
  • qr_codes — metadados do QR, URLs de destino, tipo/type_data, opções de estilo, UTM, GTM, regras de redirecionamento, expiração/agendamento
  • scan_events — rastreamento de leituras: timestamp, user-agent, referenciador, IP, dispositivo, navegador, SO, país, cidade
  • webhooks — endpoints de webhook por chave de API, segredo HMAC, eventos inscritos
  • webhook_deliveries — registro de entrega: status, código de resposta, mensagens de erro
  • conversion_events — rastreamento de conversões: nome do evento, valor, metadados, referenciador, IP, timestamp
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)

As migrações são executadas automaticamente na inicialização do servidor.

Implantação

Docker

docker compose up -d

O banco de dados é persistido em um volume Docker.

Railway

O projeto inclui railway.toml e um Dockerfile multi-estágio. Conecte seu repositório GitHub ao Railway — ele compila e implanta automaticamente com verificações de saúde em /health.

Testes

195 testes de integração cobrindo todos os endpoints, autenticação, isolamento multi-tenant, tipos de QR, webhooks, operações em lote, domínios personalizados, molduras, conversões, upload de CSV e análises.

npm test           # Run all tests
npm run test:watch # Watch mode

Scripts

ScriptDescrição
npm run devIniciar servidor de desenvolvimento com recarga automática
npm run buildCompilar TypeScript
npm startExecutar servidor de produção
npm testExecutar suíte de testes
npm run test:watchTestes em modo de observação
npm run key:createCriar chave de API
npm run key:listListar chaves de API
npm run db:generateGerar migração
npm run db:migrateExecutar migrações
npm run db:studioAbrir Drizzle Studio

Licença

MIT