Construye con cartas metafóricas
Una REST API y una OpenAPI compatible con MCP para agentes de IA que ayudan al usuario a reflexionar, llevar un diario o practicar por su cuenta. Tirar una carta, obtener su imagen con marca de agua, respetar la licencia: ese es todo el bucle.
Elige el camino
Tres formas en que los agentes hablan con nosotros. Elige la que encaje con lo que estás construyendo y salta a la documentación adecuada.
ChatGPT Custom GPT
Importa el OpenAPI apto para IA en el Custom GPT Builder. El chat puede listar barajas, tirar cartas y enlazar una imagen con marca de agua en la conversación. No puede gastar tus perlas: el subset de IA no incluye operaciones de códigos de invitación.
Fuente de Action: openapi.ai.json ›REST directo
Haz llamadas HTTP con tu clave mk_live_ en Authorization: Bearer. El OpenAPI completo lo cubre todo, incluyendo los códigos de invitación si además vendes barajas. Una clave, dos perfiles.
Servidor MCP
Hospedado en mcp.makcards.online y como paquete stdio local @maccards/mcp (vía npx o Docker). Mismos tools, misma autenticación, una sola base de código. Elige el modo de conexión en la sección de abajo.
OAuth: conexión en un clic desde ChatGPT y Claude
Si tus usuarios parten de ChatGPT o Claude, no necesitan copiar una clave API. La app de chat muestra nuestra pantalla de consentimiento, el usuario pulsa Permitir y el chat recibe un token con alcance limitado. El usuario puede revocar el acceso desde su Perfil en cualquier momento.
Desde «+ Connectors» en tu chat
En ChatGPT (Apps) o Claude.ai («+ Connectors»), busca MAC Cards Online en el selector. La primera vez aparecerá nuestra pantalla de consentimiento con una lista clara de lo que la IA puede y no puede hacer. Apruebas una vez y funciona en todos los chats posteriores.
Disponible en cuanto OpenAI y Anthropic nos incluyan en sus catálogos. Hasta entonces, usa el camino con clave API que aparece abajo.
Crea tu propio cliente OAuth
Exponemos un Authorization Server estándar OAuth 2.1 + PKCE. Descubre los endpoints en /.well-known/oauth-authorization-server sobre el host de la app. Los scopes son read y draw. PKCE S256 es obligatorio.
Tres caminos de registro: pre-registrado para socios verificados, DCR (RFC 7591) con cola de moderación, y Client ID Metadata Documents.
Metadatos del AS ›Alcance limitado, atado a la marca, refresh con rotación
Los access tokens viven una hora. Los refresh tokens viven 30 días con rotación rolling: cada refresh emite uno nuevo, el viejo es de un solo uso y su reutilización dispara revocación de toda la cadena más un security event. Los tokens están atados a un host (un token emitido en app.makcards.online no funcionará en mcp.journalingapp.app).
Los usuarios ven y revocan las apps conectadas en su Perfil → Acceso para IA e integraciones → Apps conectadas.
Qué puedes construir hoy
Chatbot de reflexión
El usuario describe una situación, el agente tira una carta con scope=any, devuelve la imagen y formula una pregunta reflexiva. El trabajo lo hace el usuario; el agente sostiene el espacio.
Compañero de journaling
Prompt diario que saca tres cartas (count=3), invita al usuario a escribir libremente y guarda la tirada en su lado. Las imágenes expiran a los 15 minutos; el agente obtiene unas frescas cada sesión.
Copiloto de facilitación grupal
Para talleres y retrospectivas de equipo: tira cartas de una baraja concreta (scope=deck), muéstralas en el lado del agente y, opcionalmente, entrega un código a los participantes vía /invite-codes/generate.
Inicio rápido REST
Dos comandos: tira una carta, recupera su imagen. Sin webhook, sin callback, sin preflight.
KEY=mk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 1) Tira una carta de cualquier baraja accesible 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) La respuesta trae drawn[0].image_url – recupéralo tal cual curl https://app.makcards.online/api/v1/public/decks/.../cards/.../image?w=1024&token=eyJhbGc... \ -o card.jpg
Referencia completa legible por máquinas: openapi.json · subset apto para IA: openapi.ai.json · guía: docs/en/24-public-api.
Obtén una clave API
-
1
Entra en la app.
Abre app.makcards.online e inicia sesión (Google o Yandex). Un clic, sin cuenta aparte.
-
2
Abre Perfil → Acceso para IA e integraciones.
La sección está junto a Premium y Logros. El mismo sitio que usan los socios tiendas.
-
3
Genera la clave y cópiala.
La clave se ve como
mk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Se muestra una vez; no habrá una segunda. Guárdala en un gestor de contraseñas o en tu almacén de secretos. -
4
Trata la clave como una contraseña.
Nada de repositorios públicos, chats de soporte o capturas de pantalla. Si una clave ha podido filtrarse, regenérala: la antigua deja de funcionar en menos de un minuto.
Conectar con clave API
Una clave, siete superficies. Hosted MCP para arrancar rápido, local stdio para que la clave no salga de tu máquina, Bash plano para agentes que ya tienen shell. Elige lo que encaje con tu cliente.
Añade una entrada bajo mcpServers en ~/.claude.json (Claude Code) o ~/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 y Cline comparten el mismo formato de configuración MCP. El bloque es idéntico al de Claude.
{
"mcpServers": {
"makcards": {
"type": "http",
"url": "https://mcp.makcards.online/v1",
"headers": {
"Authorization": "Bearer mk_live_xxxxxxxxxxxxxxxxxx"
}
}
}
}
Dos opciones. Nodo MCP (disponible en compilaciones recientes de n8n) – apunta a https://mcp.makcards.online/v1 y configura la cabecera Authorization en las credenciales. Nodo HTTP Request – llama a REST directamente:
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 }
Custom GPT Actions lee OpenAPI. Usa el subset apto para IA para que el chat no pueda gastar perlas por accidente.
Action source: https://makcards.online/api/v1/public/openapi.ai.json Authentication: API Key (Bearer) Auth value: mk_live_xxxxxxxxxxxxxxxxxx
MCP local sobre stdio. La clave nunca sale de tu máquina: va directa a nuestra REST API como Bearer. Requiere Node.js 20+.
{
"mcpServers": {
"makcards": {
"command": "npx",
"args": ["-y", "@maccards/mcp"],
"env": {
"MAKCARDS_API_KEY": "mk_live_xxxxxxxxxxxxxxxxxx"
}
}
}
}
¿Sin Node.js? Ejecuta el mismo binario como contenedor. La imagen se publica solo para linux/amd64, así que Apple Silicon necesita un flag extra (ver abajo). Si tienes Node 20+, la pestaña de npx es más sencilla.
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): añade --platform linux/amd64 para que Docker descargue la imagen amd64 y la ejecute mediante Rosetta. Funciona, pero el arranque es más lento que la opción nativa de 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"
}
}
}
}
Si tu agente ya corre en una shell (Claude Code, Cursor en modo agente, Aider, Codex, cualquier contenedor), este es el camino más corto: HTTPS plano + Bearer, respuestas JSON, sin runtime MCP que instalar. Las cuatro recetas siguientes cubren todo lo que envuelven nuestras tools MCP.
# Configuración inicial export MAKCARDS_API_KEY=mk_live_xxxxxxxxxxxxxxxxxx BASE=https://app.makcards.online/api/v1/public H="Authorization: Bearer $MAKCARDS_API_KEY" # Listar las barajas que tu clave puede leer curl -s -H "$H" "$BASE/decks" | jq # Tirar 3 cartas de cualquier baraja accesible curl -s -X POST "$BASE/draw" -H "$H" -H "Content-Type: application/json" \ -d '{"scope":"any","count":3,"image_width":1024}' | jq # Guardar directo a disco la primera imagen 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 # Consultar el estado del rate limit curl -s -H "$H" "$BASE/usage" | jq
Dos razones para preferir Bash a MCP: menor contexto del agente (sin esquemas de tools que cargar) y un proceso menos que gestionar. Razones para preferir MCP: tu cliente no tiene shell (ChatGPT Apps, Claude Desktop, Cursor sin modo agente) o quieres prompts de tipo slash-command.
¿Hosted, local o shell? Hosted MCP (mcp.makcards.online) es el camino más rápido y funciona detrás de proxies corporativos. Local stdio es la opción cuando tu política de seguridad dice «nada de servicios MCP de terceros»: tu cliente IA habla con un proceso local, que habla con nuestra REST API usando tu clave. Bash se salta por completo la capa MCP y solo encaja con agentes que ya saben abrir shell. Mismos tools, mismos datos.
Límites de uso
Por cuenta y por ventana. POST /draw se contabiliza en lote: count=5 consume 5 unidades.
| Ventana | Free | Premium |
|---|---|---|
| Tiradas por minuto | 10 | 120 |
| Tiradas por hora | 70 | 2 000 |
| Tiradas por día | 170 | 10 000 |
/decks por minuto | 10 | 120 |
| Descargas de imagen por minuto | 20 | 240 |
Estado en vivo en GET /api/v1/public/usage. Cabeceras en cada respuesta: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (RFC 9331).
Privacidad y seguridad
La marca de agua se queda
Cada imagen de carta lleva una marca de agua con el dominio al 6 % de opacidad. Quitarla viola las condiciones. La API nunca expone el original sin marca.
Contenido no confiable
Los textos de barajas y cartas son contenido generado por usuarios. Trátalos como entrada no confiable: nunca dejes que un nombre o una descripción anule tu prompt de sistema.
No es un servicio sanitario
Las cartas MAC son una herramienta de reflexión. Tu agente no debe presentar una carta como diagnóstico, predicción o tratamiento. Incluye enlaces a líneas de crisis si los usuarios pueden estar en apuros.
Detalles: Términos del servicio · Política de privacidad.
FAQ
Preguntas frecuentes de los integradores.
¿Por qué dos documentos OpenAPI?
POST /invite-codes/generate, que gasta perlas. Si un usuario autorizara por error a un chat a llamar esa operación, pagarías tú. El subset apto para IA elimina por completo el área de códigos de invitación — no existe un camino para que el chat gaste perlas.¿Puedo conseguir una imagen sin marca de agua?
¿Qué es scope=any?
¿Registráis mi chat?
¿Cuán fresca es la especificación OpenAPI?
¿Necesito MCP si mi agente ya tiene shell?
curl y parsear JSON, la REST API es el camino más sencillo. MCP existe para clientes en sandbox (ChatGPT Apps, Claude Desktop, Cursor) que no pueden lanzar shell. Hosted MCP y local stdio son envoltorios finos sobre los mismos endpoints REST, así que no pierdes funcionalidad. Mira la pestaña Bash / shell de agente para recetas curl listas para usar.