SudoMock

API de renderização de mockups de produtos. Carregue templates

Documentação

Servidor MCP SudoMock

Gere maquetes de produtos fotorrealistas a partir do Claude, Cursor, Windsurf e VS Code.

Servidor Model Context Protocol para a API de geração de maquetes SudoMock. Envie templates PSD, coloque artes em objetos inteligentes, edite camadas de texto suportadas e obtenha URLs de imagens renderizadas — tudo por meio de linguagem natural.

Início rápido

Este é um servidor local stdio: seu cliente MCP o inicia como um processo filho via npx e autentica com sua SUDOMOCK_API_KEY.

claude mcp add sudomock \
  -e SUDOMOCK_API_KEY=sm_your_key_here \
  -- npx -y @sudomock/mcp

Obtenha sua chave de API em sudomock.com/dashboard/api-keys.

Configuração JSON para outros clientes (Cursor, Windsurf, VS Code)
{
  "mcpServers": {
    "sudomock": {
      "command": "npx",
      "args": ["-y", "@sudomock/mcp"],
      "env": {
        "SUDOMOCK_API_KEY": "sm_your_key_here"
      }
    }
  }
}

Observação: Um transporte remoto hospedado (HTTP/OAuth) ainda não está disponível. Este pacote inclui apenas o servidor stdio local mostrado acima.

Ferramentas

FerramentaDescriçãoCréditos
list_mockupsListe seus templates de maquete enviados0
get_mockup_detailsObtenha UUIDs de objetos inteligentes, dimensões, modos de mesclagem0
render_mockupRenderize uma maquete com arte e/ou texto editável1
remove_backgroundObtenha um recorte PNG transparente por meio de uma URL assinada de 7 dias25
list_fontsListe as fontes disponíveis para camadas de texto, incluindo seus envios0
create_upload_urlObtenha uma URL de envio para um arquivo local e a URL do arquivo que ele terá0
create_2d_mockupCrie uma maquete de foto e detecte superfícies imprimíveis automaticamente25
render_2d_surfaceImprima arte em toda a superfície de um produto (all-over)5
render_2d_print_areaImprima arte em uma área de impressão salva (uma zona desenhada)5
render_videoAnime uma maquete em um clipe de vídeo (sempre assíncrono)baseado em custo (um por conta sem custo, depois baseado em custo)
upload_psdEnvie um template Photoshop PSD/PSB (síncrono ou assíncrono)0
list_2d_mockupsListe templates de maquete de foto salvos; use customizable_only para itens prontos para compradores0
get_2d_mockupObtenha as áreas de impressão salvas de uma maquete de foto e suas superfícies de produto0
update_2d_print_areasSubstitua a geometria da área de impressão de uma maquete de foto0
delete_2d_mockupExclua um template de maquete de foto0
get_jobVerifique o status de um trabalho assíncrono por job_id0
wait_for_jobConsulte um trabalho assíncrono até que ele tenha sucesso ou falhe0
list_jobsListe trabalhos assíncronos de renderização, vídeo, envio e maquete de foto0
get_accountVerifique plano, créditos, saldo pré-pago e uso0
update_mockupRenomeie um template de maquete0
delete_mockupExclua um template de maquete0
create_webhook_endpointRegistre um webhook para conclusão de trabalhos assíncronos, fixado em uma nomenclatura de evento0
list_webhook_endpointsListe seus endpoints de webhook0
update_webhook_endpointEdite ou habilite/desabilite um endpoint de webhook0
delete_webhook_endpointExclua um endpoint de webhook0
rotate_webhook_secretGire um segredo de assinatura de webhook0
test_webhook_endpointEnvie um evento webhook.test assinado0
list_webhook_deliveriesListe tentativas de entrega para um endpoint0
replay_webhook_deliveryReproduza uma única entrega com falha0
replay_failed_webhook_deliveriesReproduza todas as entregas com falha para um endpoint0

Ambas as grafias funcionam

O produto chama seus dois tipos de templates de maquetes PSD e maquetes de foto, e as ferramentas também respondem a esses nomes. Nada acima foi renomeado: cada nome na tabela continua funcionando exatamente como sempre funcionou, e a grafia ao lado é a mesma ferramenta com os mesmos argumentos. Use qualquer uma.

Nome na tabelaTambém 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 é a única que não é simplesmente um segundo nome para uma única ferramenta. Ela renderiza qualquer tipo de alvo a partir de uma ferramenta: passe a maquete como mockup_id e nomeie exatamente um de surface_uuid (dimensionado por coverage ou um width + height explícito) ou print_area_uuid (dimensionado por fit ou um width + height explícito). Escolher o alvo escolhendo uma ferramenta, com mockup_uuid, é o que render_2d_surface e render_2d_print_area ainda fazem. render_2d_mockup é render_photo_mockup sob um segundo nome, com a maquete passada como mockup_uuid.

Trabalhos assíncronos

render_mockup, upload_psd, create_2d_mockup e ambas as ferramentas de renderização de maquete de foto aceitam is_async: true, e render_video é sempre assíncrono. Elas retornam um job_id imediatamente (HTTP 202) em vez de um resultado final. (create_2d_mockup e as ferramentas de renderização de maquete de foto são síncronas por padrão e retornam a maquete / renderização diretamente.) Consulte-o com get_job, ou deixe wait_for_job bloquear até que o trabalho atinja um status terminal e devolva result_url, mockup_uuid, credits_charged e payg ({credits, unit_price, cost} para trabalhos pay-as-you-go, caso contrário null).

Para uma renderização de maquete de foto, escolha a ferramenta que corresponde ao alvo que você leu de get_2d_mockup. Cada produto imprimível na foto é uma superfície com seu próprio surface_uuid: render_2d_surface imprime em toda a extensão de uma, e aceita uma porcentagem coverage ou um width + height explícito. Uma área de impressão é uma zona delimitada que alguém desenhou em um produto, como um logotipo no peito: render_2d_print_area aceita seu print_area_uuid e um fit ou um width + height explícito. Um produto pode ter ambos, e são alvos separados — uma área de impressão salva não fecha a superfície em que está.

O dimensionamento tem uma resposta por renderização: envie a opção relativa ou a caixa exata, nunca ambas, e envie width e height juntos. position, offset_x, offset_y e rotation colocam a arte em qualquer tipo de alvo. Qualquer coisa que você omitir é deixada de fora da solicitação, então o padrão do próprio renderizador se aplica em vez de uma cópia mantida aqui.

Remoção de fundo

remove_background retorna uma URL PNG transparente válida por 7 dias. Você pode passar essa URL diretamente de volta como artwork_url durante essa janela. Para limpar arte inline durante uma única renderização, passe remove_background: true para render_mockup ou qualquer ferramenta de renderização de maquete de foto. De qualquer forma, custa 25 créditos por arte, reembolsados automaticamente se o processamento falhar.

Webhooks

Registre um endpoint com create_webhook_endpoint para ser notificado quando trabalhos assíncronos terminarem. As entregas são assinadas com DOIS cabeçalhos: X-SudoMock-Signature (um HMAC-SHA256 hexadecimal sobre ${timestamp}.${rawBody} usando o segredo retornado na criação/rotação) e X-SudoMock-Timestamp (segundos unix). Verifique em tempo constante e rejeite se |now - timestamp| > 300s.

As entregas de trabalhos de renderização, envio e vídeo usam {event, job_id, kind, status, result_url, error, created_at}. Os eventos de criação de maquete de foto tipados adicionam version, mockup_id, name e print_areas (ready) ou reason (rejected). Os eventos de renderização de maquete de foto tipados carregam mockup_id, result_url, uma falha pública {error_code, message} quando aplicável e export_format / duration_ms opcionais. Tipos de evento: 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.

Os cinco eventos de maquete de foto também têm uma grafia legada: 2d_mockup.ready, 2d_mockup.rejected, 2d_mockup.failed, 2d_render.succeeded, 2d_render.failed (com kind 2d_create / 2d_render no payload). Qual grafia um endpoint recebe é sua fixação event_naming, definida em create_webhook_endpoint e retornada em cada endpoint: current (os nomes acima) ou legacy. Uma criação sem fixação aceita current apenas quando event_types nomeia eventos de maquete de foto apenas por seus nomes de família, e legacy caso contrário, incluindo uma lista vazia. Endpoints registrados antes da fixação existir permanecem em legacy, então um receptor escrito com os nomes antigos continua funcionando inalterado. Quando esse receptor lidar com os novos nomes, mova-o com update_webhook_endpoint e event_naming: "current"; enviada sozinha, a re-fixação reescreve a lista de assinaturas armazenada do endpoint para corresponder.

Logs

Cada chamada de ferramenta escreve uma linha JSON em stderr, que seu host MCP mantém em seu arquivo de log: o nome da ferramenta, quanto tempo a chamada levou e se teve sucesso, por exemplo {"event":"mcp_tool_call","tool":"list_mockups","duration_ms":312,"ok":true}. Argumentos, chaves de API, conteúdos de arquivo e respostas de API nunca são registrados. Cada solicitação de API identifica este pacote como mcp-stdio/<version> em seus cabeçalhos User-Agent e X-SudoMock-Client.

Preços e limites de conta

Assinaturas a partir de US$ 0,002 por renderização. Sem uma, US$ 0,05 por renderização, a mesma taxa que APIs de maquete independentes cobram em um plano pago. Financiar o saldo exige um primeiro pagamento mínimo de US$ 5. Maquetes de foto e vídeo são precificadas pelo que custam para produzir, em vez da taxa fixa de renderização, que é por que a coluna de Créditos acima não é uniforme.

Uma nova conta começa com 500 créditos, concedidos uma vez, e não precisa de cartão para gastá-los. Até que um cartão seja verificado e o mínimo de US$ 5 seja financiado, essa conta está em avaliação, e cada renderização que ela faz é marcada com marca d'água e limitada a 1.024 px. Ela pode manter 5 templates PSD, executar uma renderização por vez, e um template que ficou 13 dias sem renderização é removido.

Financiar o saldo remove tudo isso de uma vez. A marca d'água e o limite de largura saem, os templates armazenados vão para 150, as renderizações rodam 25 por vez junto com 10 envios simultâneos, e os templates param de ser removidos por ficarem ociosos.

A avaliação não é um plano separado. É o estado não financiado do nível pay-as-you-go, então get_account relata o mesmo nível antes e depois do financiamento; o saldo é o que muda.

Por causa disso, uma conta que paga conforme usa não tem subsídio mensal, e get_account relata credits_limit e credits_remaining como 0 enquanto a conta está perfeitamente capaz de pagar. Leia prepaid_balance junto com eles, ou leia funding_summary, que declara ambos em uma linha e nunca relata uma conta financiada como 0 / 0.

Exemplos de solicitações

  • "Liste meus templates de maquete"
  • "Renderize a maquete de camiseta com este design: https://example.com/logo.png"
  • "Substitua o texto do título editável e renderize a maquete"
  • "Recorte o fundo desta foto de produto e renderize-a na bolsa"
  • "Liste minhas maquetes de foto e renderize a primeira com esta arte: https://example.com/logo.png"
  • "Renderize este design assincronamente e aguarde terminar"
  • "Coloque essa renderização de maquete de foto na fila assíncrona e me dê o id do trabalho para acompanhar"
  • "Anime a maquete de moletom em um clipe de vídeo de 5 segundos"
  • "Envie este PSD como um novo template: https://example.com/mockup.psd"
  • "Configure um webhook em https://example.com/hooks para ser notificado quando as renderizações terminarem"
  • "Quantos créditos ainda tenho?"

Links

Licença

MIT