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

HerramientaDescripciónCréditos
list_mockupsLista tus plantillas de maquetas subidas0
get_mockup_detailsObtén UUIDs de objetos inteligentes, dimensiones, modos de fusión0
render_mockupRenderiza una maqueta con obra de arte y/o texto editable1
remove_backgroundObtén un recorte PNG transparente mediante una URL firmada de 7 días25
list_fontsLista las fuentes disponibles para capas de texto, incluidas tus subidas0
create_upload_urlObtén una URL de subida para un archivo local y la URL del archivo que tendrá0
create_2d_mockupCrea una maqueta de foto y detecta superficies imprimibles automáticamente25
render_2d_surfaceImprime obra de arte en toda la superficie de un producto (all-over)5
render_2d_print_areaImprime obra de arte en un área de impresión guardada (una zona dibujada)5
render_videoAnima una maqueta en un clip de video (siempre asíncrono)basado en costo (uno por cuenta sin cargo, luego basado en costo)
upload_psdSube una plantilla PSD/PSB de Photoshop (síncrono o asíncrono)0
list_2d_mockupsLista plantillas de maquetas de foto guardadas; usa customizable_only para artículos listos para compradores0
get_2d_mockupObtén las áreas de impresión guardadas de una maqueta de foto y sus superficies de producto0
update_2d_print_areasReemplaza la geometría del área de impresión de una maqueta de foto0
delete_2d_mockupElimina una plantilla de maqueta de foto0
get_jobVerifica el estado de un trabajo asíncrono por job_id0
wait_for_jobConsulta un trabajo asíncrono hasta que tenga éxito o falle0
list_jobsLista trabajos asíncronos de renderizado, video, subida y maquetas de foto0
get_accountVerifica plan, créditos, saldo prepagado y uso0
update_mockupRenombra una plantilla de maqueta0
delete_mockupElimina una plantilla de maqueta0
create_webhook_endpointRegistra un webhook para la finalización de trabajos asíncronos, fijado a una nomenclatura de eventos0
list_webhook_endpointsLista tus endpoints de webhook0
update_webhook_endpointEdita o habilita/deshabilita un endpoint de webhook0
delete_webhook_endpointElimina un endpoint de webhook0
rotate_webhook_secretRota un secreto de firma de webhook0
test_webhook_endpointEnvía un evento webhook.test firmado0
list_webhook_deliveriesLista intentos de entrega para un endpoint0
replay_webhook_deliveryReproduce una sola entrega fallida0
replay_failed_webhook_deliveriesReproduce cada entrega fallida para un endpoint0

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 tablaTambién responde a
list_mockupslist_psd_mockups
get_mockup_detailsget_psd_mockup
update_mockupupdate_psd_mockup
delete_mockupdelete_psd_mockup
render_mockuprender_psd_mockup
create_2d_mockupcreate_photo_mockup
list_2d_mockupslist_photo_mockups
get_2d_mockupget_photo_mockup
update_2d_print_areasupdate_photo_mockup_print_areas
delete_2d_mockupdelete_photo_mockup
render_2d_surface, render_2d_print_arearender_photo_mockup
get_2d_mockupget_2d_mockup_details
test_webhook_endpointsend_webhook_test_event
render_photo_mockuprender_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

Licencia

MIT