SudoMock
API de renderizado de maquetas de productos. Sube plantillas PSD, renderiza maquetas fotorrealistas con 9 herramientas MCP, incluyendo renderizado por IA.
Documentación
Servidor MCP de SudoMock
Genera maquetas de productos fotorrealistas desde Claude, Cursor, Windsurf y VS Code.
Servidor de Model Context Protocol para la API de generación de maquetas de SudoMock. Sube plantillas PSD, coloca obras de arte en objetos inteligentes, edita capas de texto compatibles y obtén URLs de imágenes renderizadas, todo mediante lenguaje natural.
Inicio rápido
Este es un servidor local stdio: tu cliente MCP lo lanza como un proceso hijo
a través de npx y se autentica con tu SUDOMOCK_API_KEY.
claude mcp add sudomock \
-e SUDOMOCK_API_KEY=sm_your_key_here \
-- npx -y @sudomock/mcp
Obtén tu clave de API en sudomock.com/dashboard/api-keys.
Configuración JSON para otros clientes (Cursor, Windsurf, VS Code)
{
"mcpServers": {
"sudomock": {
"command": "npx",
"args": ["-y", "@sudomock/mcp"],
"env": {
"SUDOMOCK_API_KEY": "sm_your_key_here"
}
}
}
}
Nota: Aún no está disponible un transporte remoto alojado (HTTP/OAuth). Este paquete solo incluye el servidor stdio local que se muestra arriba.
Herramientas
| Herramienta | Descripción | Créditos |
|---|---|---|
list_mockups | Lista tus plantillas de maquetas subidas | 0 |
get_mockup_details | Obtén UUIDs de objetos inteligentes, dimensiones, modos de fusión | 0 |
render_mockup | Renderiza una maqueta con obra de arte y/o texto editable | 1 |
remove_background | Obtén un recorte PNG transparente mediante una URL firmada de 7 días | 25 |
list_fonts | Lista las fuentes disponibles para capas de texto, incluidas tus subidas | 0 |
create_upload_url | Obtén una URL de subida para un archivo local y la URL del archivo que tendrá | 0 |
create_2d_mockup | Crea una maqueta de foto y detecta superficies imprimibles automáticamente | 25 |
render_2d_surface | Imprime obra de arte en toda la superficie de un producto (all-over) | 5 |
render_2d_print_area | Imprime obra de arte en un área de impresión guardada (una zona dibujada) | 5 |
render_video | Anima una maqueta en un clip de video (siempre asíncrono) | basado en costo (uno por cuenta sin cargo, luego basado en costo) |
upload_psd | Sube una plantilla PSD/PSB de Photoshop (síncrono o asíncrono) | 0 |
list_2d_mockups | Lista plantillas de maquetas de foto guardadas; usa customizable_only para artículos listos para compradores | 0 |
get_2d_mockup | Obtén las áreas de impresión guardadas de una maqueta de foto y sus superficies de producto | 0 |
update_2d_print_areas | Reemplaza la geometría del área de impresión de una maqueta de foto | 0 |
delete_2d_mockup | Elimina una plantilla de maqueta de foto | 0 |
get_job | Verifica el estado de un trabajo asíncrono por job_id | 0 |
wait_for_job | Consulta un trabajo asíncrono hasta que tenga éxito o falle | 0 |
list_jobs | Lista trabajos asíncronos de renderizado, video, subida y maquetas de foto | 0 |
get_account | Verifica plan, créditos, saldo prepagado y uso | 0 |
update_mockup | Renombra una plantilla de maqueta | 0 |
delete_mockup | Elimina una plantilla de maqueta | 0 |
create_webhook_endpoint | Registra un webhook para la finalización de trabajos asíncronos, fijado a una nomenclatura de eventos | 0 |
list_webhook_endpoints | Lista tus endpoints de webhook | 0 |
update_webhook_endpoint | Edita o habilita/deshabilita un endpoint de webhook | 0 |
delete_webhook_endpoint | Elimina un endpoint de webhook | 0 |
rotate_webhook_secret | Rota un secreto de firma de webhook | 0 |
test_webhook_endpoint | Envía un evento webhook.test firmado | 0 |
list_webhook_deliveries | Lista intentos de entrega para un endpoint | 0 |
replay_webhook_delivery | Reproduce una sola entrega fallida | 0 |
replay_failed_webhook_deliveries | Reproduce cada entrega fallida para un endpoint | 0 |
Ambas grafías funcionan
El producto llama a sus dos tipos de plantillas maquetas PSD y maquetas de foto, y las herramientas también responden a esos nombres. Nada de lo anterior fue renombrado: cada nombre en la tabla sigue funcionando exactamente como siempre, y la grafía junto a él es la misma herramienta con los mismos argumentos. Usa cualquiera.
| Nombre en la tabla | También responde a |
|---|---|
list_mockups | list_psd_mockups |
get_mockup_details | get_psd_mockup |
update_mockup | update_psd_mockup |
delete_mockup | delete_psd_mockup |
render_mockup | render_psd_mockup |
create_2d_mockup | create_photo_mockup |
list_2d_mockups | list_photo_mockups |
get_2d_mockup | get_photo_mockup |
update_2d_print_areas | update_photo_mockup_print_areas |
delete_2d_mockup | delete_photo_mockup |
render_2d_surface, render_2d_print_area | render_photo_mockup |
get_2d_mockup | get_2d_mockup_details |
test_webhook_endpoint | send_webhook_test_event |
render_photo_mockup | render_2d_mockup |
render_photo_mockup es el que no es simplemente un segundo nombre para una sola
herramienta. Renderiza cualquier tipo de objetivo desde una herramienta: pasa la maqueta como
mockup_id y nombra exactamente uno de surface_uuid (dimensionado por coverage o un
width + height explícito) o print_area_uuid (dimensionado por fit o un
width + height explícito). Elegir el objetivo eligiendo una herramienta, con
mockup_uuid, es lo que render_2d_surface y render_2d_print_area todavía hacen.
render_2d_mockup es render_photo_mockup bajo un segundo nombre, con la
maqueta pasada como mockup_uuid.
Trabajos asíncronos
render_mockup, upload_psd, create_2d_mockup y ambas herramientas de renderizado de maquetas de foto
aceptan is_async: true, y render_video siempre es asíncrono. Estos devuelven un
job_id inmediatamente (HTTP 202) en lugar de un resultado final. (create_2d_mockup
y las herramientas de renderizado de maquetas de foto son síncronas por defecto y devuelven la maqueta /
renderizado directamente.) Consúltalo con get_job, o deja que wait_for_job se bloquee hasta que el trabajo
alcance un estado terminal y devuelva result_url, mockup_uuid,
credits_charged y payg ({credits, unit_price, cost} para trabajos de pago por uso,
de lo contrario null).
Para un renderizado de maqueta de foto, elige la herramienta que coincida con el objetivo que leíste de
get_2d_mockup. Cada producto imprimible en la foto es una superficie con su propio
surface_uuid: render_2d_surface imprime en toda la extensión de una, y toma
ya sea un porcentaje coverage o un width + height explícito. Un área de impresión
es una zona delimitada que alguien dibujó en un producto, como un logo en el pecho:
render_2d_print_area toma su print_area_uuid, y ya sea un fit o un
width + height explícito. Un producto puede tener ambos, y son objetivos
separados: un área de impresión guardada no cierra la superficie sobre la que se encuentra.
El dimensionado tiene una respuesta por renderizado: envía la opción relativa o la caja exacta,
nunca ambas, y envía width y height juntos. position, offset_x,
offset_y y rotation colocan la obra de arte en cualquier tipo de objetivo. Cualquier cosa
que omitas queda fuera de la solicitud, por lo que se aplica el valor predeterminado del propio
renderizador en lugar de una copia guardada aquí.
Eliminación de fondo
remove_background devuelve una URL PNG transparente válida por 7 días. Puedes
pasar esa URL directamente de vuelta como artwork_url durante esa ventana. Para limpiar
obra de arte en línea durante un solo renderizado, pasa
remove_background: true a render_mockup o a cualquiera de las herramientas de renderizado de maquetas de foto. De cualquier manera,
cuesta 25 créditos por obra de arte, reembolsados automáticamente si el procesamiento falla.
Webhooks
Registra un endpoint con create_webhook_endpoint para recibir notificaciones cuando los trabajos
asíncronos terminen. Las entregas están firmadas con DOS encabezados: X-SudoMock-Signature
(un HMAC-SHA256 hexadecimal sobre ${timestamp}.${rawBody} usando el secreto devuelto en la
creación/rotación) y X-SudoMock-Timestamp (segundos Unix). Verifica en tiempo
constante y rechaza si |now - timestamp| > 300s.
Las entregas de trabajos de renderizado, subida y video usan
{event, job_id, kind, status, result_url, error, created_at}. Los eventos tipados de creación de maquetas de foto agregan version, mockup_id, name y ya sea
print_areas (ready) o reason (rejected). Los eventos tipados de renderizado de maquetas de foto
llevan mockup_id, result_url, un {error_code, message} público de fallo
cuando corresponda, y export_format / duration_ms opcionales. Tipos de eventos:
render.succeeded, render.failed, upload.succeeded, video.succeeded,
video.failed, photo_mockup.ready, photo_mockup.rejected,
photo_mockup.failed, photo_mockup_render.succeeded,
photo_mockup_render.failed, webhook.test.
Los cinco eventos de maquetas de foto también tienen una grafía heredada: 2d_mockup.ready,
2d_mockup.rejected, 2d_mockup.failed, 2d_render.succeeded,
2d_render.failed (con kind 2d_create / 2d_render en el payload).
Qué grafía recibe un endpoint es su fijación event_naming, establecida en
create_webhook_endpoint y devuelta en cada endpoint: current (los nombres
anteriores) o legacy. Una creación sin fijación toma current solo cuando
event_types nombra eventos de maquetas de foto por sus nombres de familia únicamente, y
legacy de lo contrario, incluida una lista vacía. Los endpoints registrados antes de que existiera la fijación
permanecen en legacy, por lo que un receptor escrito con los nombres antiguos sigue
funcionando sin cambios. Una vez que ese receptor maneja los nuevos nombres, muévelo con
update_webhook_endpoint y event_naming: "current"; enviada por sí sola, la
re-fijación reformula la lista de suscripciones almacenada del endpoint para que coincida.
Registros
Cada llamada de herramienta escribe una línea JSON en stderr, que tu host MCP mantiene en su
archivo de registro: el nombre de la herramienta, cuánto tiempo tomó la llamada y si tuvo éxito, por
ejemplo {"event":"mcp_tool_call","tool":"list_mockups","duration_ms":312,"ok":true}.
Los argumentos, claves de API, contenidos de archivos y respuestas de API nunca se registran. Cada
solicitud de API identifica este paquete como mcp-stdio/<version> en sus
encabezados User-Agent y X-SudoMock-Client.
Precios y límites de cuenta
Suscripciones desde $0.002 por renderizado. Sin una, $0.05 por renderizado, la misma tarifa que las APIs de maquetas independientes cobran en un plan de pago. Financiar el saldo requiere un primer pago mínimo de $5. Las maquetas de foto y los videos se precian por lo que cuesta producirlos en lugar de la tarifa plana de renderizado, por eso la columna de Créditos arriba no es uniforme.
Una cuenta nueva comienza con 500 créditos, otorgados una vez, y no necesita tarjeta para gastarlos. Hasta que se verifique una tarjeta y se financie el mínimo de $5, esa cuenta está en prueba, y cada renderizado que hace lleva marca de agua y está limitado a 1,024 px. Puede mantener 5 plantillas PSD, ejecutar un renderizado a la vez, y una plantilla que haya pasado 13 días sin un renderizado se elimina.
Financiar el saldo elimina todo eso de una vez. La marca de agua y el límite de ancho se quitan, las plantillas almacenadas van a 150, los renderizados se ejecutan 25 a la vez junto con 10 subidas concurrentes, y las plantillas dejan de eliminarse por estar inactivas.
La prueba no es un plan separado. Es el estado no financiado del nivel de pago por uso, por lo que
get_account reporta el mismo nivel antes y después de financiar; el saldo es lo que
cambia.
Debido a eso, una cuenta que paga a medida que usa no tiene asignación mensual, y
get_account reporta credits_limit y credits_remaining como 0 mientras la
cuenta es perfectamente capaz de pagar. Lee prepaid_balance junto con ellos, o lee
funding_summary, que indica ambos en una línea y nunca reporta una cuenta financiada
como 0 / 0.
Ejemplos de solicitudes
- "Lista mis plantillas de maquetas"
- "Renderiza la maqueta de camiseta con este diseño: https://example.com/logo.png"
- "Reemplaza el texto del titular editable, luego renderiza la maqueta"
- "Recorta el fondo de esta foto de producto, luego renderízala en la bolsa de tela"
- "Lista mis maquetas de foto, luego renderiza la primera con esta obra de arte: https://example.com/logo.png"
- "Renderiza este diseño de forma asíncrona y espera a que termine"
- "Pon en cola ese renderizado de maqueta de foto de forma asíncrona y dame el id del trabajo para rastrearlo"
- "Anima la maqueta de sudadera en un clip de video de 5 segundos"
- "Sube este PSD como nueva plantilla: https://example.com/mockup.psd"
- "Configura un webhook en https://example.com/hooks para que me notifiquen cuando terminen los renderizados"
- "¿Cuántos créditos me quedan?"
Enlaces
- Panel de control -- Administra maquetas y claves de API
- Documentación de API -- Referencia completa de la API REST
- Precios
- Estado -- Tiempo de actividad del servicio
Licencia
MIT