Construa com cartas metafóricas
Uma REST API e uma OpenAPI compatível com MCP para agentes de IA que ajudam o usuário a refletir, registrar um diário ou praticar sozinho. Puxar uma carta, obter sua imagem com marca d'água, respeitar a licença: é todo o loop.
Escolha um caminho
Três formas de os agentes conversarem com a gente. Escolha a que combina com o que você está construindo e vá direto à doc certa.
ChatGPT Custom GPT
Importe a OpenAPI segura para IA no Custom GPT Builder. O chat consegue listar baralhos, puxar cartas e exibir uma imagem com marca d'água na conversa. Ele não pode gastar suas pérolas: o subset de IA não traz operações de códigos de convite.
Fonte do Action: openapi.ai.json ›REST direto
Faça chamadas HTTP com sua chave mk_live_ em Authorization: Bearer. A OpenAPI completa cobre tudo, inclusive os códigos de convite caso você também venda baralhos. Uma chave, dois perfis.
Servidor MCP
Hospedado em mcp.makcards.online e como pacote stdio local @maccards/mcp (via npx ou Docker). Mesmas tools, mesma autenticação, uma única base de código. Escolha o estilo de conexão na seção abaixo.
OAuth: conexão em um clique a partir do ChatGPT e do Claude
Se seus usuários começam pelo ChatGPT ou pelo Claude, não precisam copiar nenhuma chave de API. O app de chat exibe nossa tela de consentimento, o usuário clica em Permitir e o chat recebe um token com escopo limitado. O usuário pode revogar o acesso no Perfil a qualquer momento.
Pelo «+ Connectors» do seu chat
No ChatGPT (Apps) ou no Claude.ai («+ Connectors»), procure MAC Cards Online no seletor. Na primeira vez aparece nossa tela de consentimento com uma lista clara do que a IA pode e do que não pode fazer. Você aprova uma vez e funciona em todos os chats seguintes.
Em breve, assim que OpenAI e Anthropic nos listarem em seus catálogos. Até lá, use o caminho com chave de API abaixo.
Monte seu próprio cliente OAuth
Expomos um Authorization Server padrão OAuth 2.1 + PKCE. Descubra os endpoints em /.well-known/oauth-authorization-server no host da app. Os scopes são read e draw. PKCE S256 é obrigatório.
Três caminhos de registro: pré-registrado para parceiros verificados, DCR (RFC 7591) com fila de moderação e Client ID Metadata Documents.
Metadados do AS ›Escopo limitado, atrelado ao host, refresh com rotação
Os access tokens vivem uma hora. Os refresh tokens vivem 30 dias com rolling rotation: cada refresh emite um novo refresh, o antigo é de uso único, e a reutilização dispara revogação de toda a cadeia mais um security event. Os tokens são vinculados a um host (um token emitido em app.makcards.online não funciona em mcp.journalingapp.app).
Os usuários veem e revogam apps conectados no Perfil → Acesso para IA e integrações → Apps conectados.
O que dá para construir hoje
Chatbot de reflexão
O usuário descreve uma situação, o agente puxa uma carta com scope=any, envia a imagem de volta e faz uma pergunta reflexiva. O trabalho é do usuário; o agente segura o espaço.
Companheiro de journaling
Convite diário que puxa três cartas (count=3), convida o usuário a escrever livremente e guarda o spread do lado dele. As imagens expiram em 15 minutos; o agente busca novas a cada sessão.
Copiloto de facilitação em grupo
Para workshops e retrospectivas de time: puxe cartas de um baralho específico (scope=deck), exiba do lado do agente e, opcionalmente, entregue um código aos participantes via /invite-codes/generate.
Início rápido REST
Dois comandos: puxe uma carta, busque a imagem. Sem webhook, sem callback, sem preflight.
KEY=mk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 1) Puxa uma carta de qualquer baralho acessível curl -X POST https://app.makcards.online/api/v1/public/draw \ -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ -d '{"scope":"any","count":1,"image_width":1024}' # 2) A resposta traz drawn[0].image_url – busque-a como está curl https://app.makcards.online/api/v1/public/decks/.../cards/.../image?w=1024&token=eyJhbGc... \ -o card.jpg
Referência completa legível por máquinas: openapi.json · subset seguro para IA: openapi.ai.json · guia: docs/en/24-public-api.
Obtenha uma chave de API
-
1
Entre no app.
Abra app.makcards.online e faça login (Google ou Yandex). Um clique, sem conta separada.
-
2
Abra Perfil → Acesso para IA e integrações.
A seção fica ao lado de Premium e Conquistas. Mesmo lugar que os parceiros lojistas usam.
-
3
Gere a chave e copie-a.
A chave aparece como
mk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Ela é mostrada uma vez; não há segunda visualização. Cole em um gerenciador de senhas ou no seu cofre de segredos. -
4
Trate a chave como senha.
Nada de repositórios públicos, chats de suporte ou capturas de tela. Se houver suspeita de vazamento, regenere a chave: a antiga deixa de funcionar em até um minuto.
Conectar com chave de API
Uma chave, sete superfícies. Hosted MCP para começar rápido, local stdio para manter a chave na sua máquina, Bash simples para agentes que já têm shell. Escolha o que combinar com seu cliente.
Adicione uma entrada em mcpServers dentro de ~/.claude.json (Claude Code) ou ~/Library/Application Support/Claude/claude_desktop_config.json (Desktop).
{
"mcpServers": {
"makcards": {
"type": "http",
"url": "https://mcp.makcards.online/v1",
"headers": {
"Authorization": "Bearer mk_live_xxxxxxxxxxxxxxxxxx"
}
}
}
}
Cursor e Cline compartilham o mesmo formato de config MCP. O bloco é idêntico ao do Claude.
{
"mcpServers": {
"makcards": {
"type": "http",
"url": "https://mcp.makcards.online/v1",
"headers": {
"Authorization": "Bearer mk_live_xxxxxxxxxxxxxxxxxx"
}
}
}
}
Duas opções. Nó MCP (disponível em builds recentes do n8n) – aponte para https://mcp.makcards.online/v1 e configure o header Authorization nas credenciais. Nó HTTP Request – chame REST diretamente:
URL: https://app.makcards.online/api/v1/public/draw
Method: POST
Headers: Authorization: Bearer mk_live_xxxxxxxxxxxxxxxxxx
Content-Type: application/json
Body: { "scope": "any", "count": 1, "image_width": 1024 }
O Custom GPT Actions lê OpenAPI. Use o subset seguro para IA para que o chat não consiga gastar pérolas por engano.
Action source: https://makcards.online/api/v1/public/openapi.ai.json Authentication: API Key (Bearer) Auth value: mk_live_xxxxxxxxxxxxxxxxxx
MCP local em stdio. A chave nunca sai da sua máquina: vai direto para nossa REST API como Bearer. Exige Node.js 20+.
{
"mcpServers": {
"makcards": {
"command": "npx",
"args": ["-y", "@maccards/mcp"],
"env": {
"MAKCARDS_API_KEY": "mk_live_xxxxxxxxxxxxxxxxxx"
}
}
}
}
Sem Node.js? Rode o mesmo binário como container. A imagem é publicada apenas para linux/amd64, então Apple Silicon precisa de uma flag extra (veja abaixo). Se você tem Node 20+, a aba npx acima é mais simples.
Hosts linux/amd64 (Mac Intel, Linux Intel/AMD, Windows WSL2):
{
"mcpServers": {
"makcards": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "MAKCARDS_API_KEY",
"ghcr.io/makcards/mcp:latest",
"node", "dist/transports/stdio.js"
],
"env": {
"MAKCARDS_API_KEY": "mk_live_xxxxxxxxxxxxxxxxxx"
}
}
}
}
Apple Silicon (M1 / M2 / M3 / M4): adicione --platform linux/amd64 para que o Docker baixe a imagem amd64 e a execute via Rosetta. Funciona, mas a inicialização é mais lenta do que a opção nativa via npx.
{
"mcpServers": {
"makcards": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--platform", "linux/amd64",
"-e", "MAKCARDS_API_KEY",
"ghcr.io/makcards/mcp:latest",
"node", "dist/transports/stdio.js"
],
"env": {
"MAKCARDS_API_KEY": "mk_live_xxxxxxxxxxxxxxxxxx"
}
}
}
}
Se seu agente já roda em um shell (Claude Code, Cursor em modo agente, Aider, Codex, qualquer container), este é o caminho mais curto: HTTPS simples + Bearer, respostas em JSON, sem runtime MCP para instalar. As quatro receitas abaixo cobrem tudo que nossas tools MCP empacotam.
# Configuração inicial export MAKCARDS_API_KEY=mk_live_xxxxxxxxxxxxxxxxxx BASE=https://app.makcards.online/api/v1/public H="Authorization: Bearer $MAKCARDS_API_KEY" # Listar baralhos que a chave pode ler curl -s -H "$H" "$BASE/decks" | jq # Puxar 3 cartas de qualquer baralho acessível curl -s -X POST "$BASE/draw" -H "$H" -H "Content-Type: application/json" \ -d '{"scope":"any","count":3,"image_width":1024}' | jq # Salvar a primeira imagem direto no disco curl -s -X POST "$BASE/draw" -H "$H" -H "Content-Type: application/json" \ -d '{"scope":"any","count":1,"image_width":1024}' \ | jq -r '.drawn[0].image_url' \ | xargs curl -s -o card.jpg # Verificar o estado do rate-limit curl -s -H "$H" "$BASE/usage" | jq
Duas razões para preferir Bash a MCP: contexto do agente menor (sem schemas de tools para carregar) e um processo a menos para gerenciar. Razões para preferir MCP: seu cliente não tem shell (ChatGPT Apps, Claude Desktop, Cursor sem modo agente), ou você quer prompts via slash-commands.
Hosted, local ou shell? Hosted MCP (mcp.makcards.online) é o caminho mais rápido e funciona atrás de proxies corporativos. Local stdio é a opção quando sua política de segurança diz «sem serviços MCP de terceiros»: seu cliente de IA conversa com um processo local, que conversa com nossa REST API usando sua chave. Bash pula a camada MCP inteira e só serve para agentes que já abrem shell. Mesmas tools, mesmos dados.
Limites de uso
Por conta e por janela. POST /draw é contabilizado em lote: count=5 consome 5 unidades.
| Janela | Free | Premium |
|---|---|---|
| Tiragens por minuto | 10 | 120 |
| Tiragens por hora | 70 | 2 000 |
| Tiragens por dia | 170 | 10 000 |
/decks por minuto | 10 | 120 |
| Downloads de imagem por minuto | 20 | 240 |
Estado em tempo real em GET /api/v1/public/usage. Headers em cada resposta: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (RFC 9331).
Privacidade e segurança
A marca d'água fica
Toda imagem de carta carrega uma marca d'água do domínio com 6 % de opacidade. Remover viola os termos. A API nunca expõe o original sem marca.
Conteúdo não confiável
Textos de baralhos e cartas são gerados por usuários. Trate-os como entrada não confiável: nunca permita que um nome ou descrição sobrescreva seu system prompt.
Não é um serviço de saúde
As cartas MAC são uma ferramenta de reflexão. Seu agente não deve apresentar uma carta puxada como diagnóstico, previsão ou tratamento. Inclua links para canais de ajuda em crise se houver risco de o usuário estar em sofrimento.
Detalhes: Termos de serviço · Política de privacidade.
FAQ
Perguntas comuns de integradores.
Por que dois documentos OpenAPI?
POST /invite-codes/generate, que gasta pérolas. Se um usuário autorizasse o chat a chamar essa operação por acidente, quem pagaria seria você. O subset seguro para IA remove totalmente a área de códigos de convite — não existe caminho de código para o chat gastar pérolas.Posso obter uma imagem sem marca d'água?
O que é scope=any?
Vocês registram meu chat?
Quão atual é a spec OpenAPI?
Preciso de MCP se meu agente já tem shell?
curl e parsear JSON, a REST API é o caminho mais simples. MCP existe para clientes em sandbox (ChatGPT Apps, Claude Desktop, Cursor) que não conseguem usar shell. Hosted MCP e local stdio são wrappers finos sobre os mesmos endpoints REST, então você não perde funcionalidade. Veja a aba Bash / shell de agente para receitas de curl prontas.