Skip to main content
Glama

sapiens_image

Operações de imagem via Sapiens (Gemini, GPT Image 2 e 2.5, Grok, Seedream/ByteDance). Sub-actions: 'upscale' (sourceImageId de uma imagem SUA pronta: a mesma peça em resolução maior vira peça nova no acervo, a original fica; cobra Sinapses, preço fixo igual ao da ficha no site; SÍNCRONA e pode passar de 2 min, então Timeout é o cliente desistindo: a peça nova entra pronta em até uns 6 min, leia action=status antes de repetir), 'sombra' (sourceImageId de uma foto SUA pronta: extrai a sombra, o mapa de profundidade colorido da foto, como peça nova no acervo, pra usar de referência de pose e volume; cobra Sinapses, preço fixo; síncrona), 'generate' (gera imagem completa imediato: prompt+model+aspectRatio+size; suporta mode=edit/variation e MULTI-REFERÊNCIA: combine até 5 imagens como referência numa geração só, igual ao modal 'Selecionar Referência' do web, via referenceImageUrls (sua galeria + Acervo + personagens públicos de sapiens_character) e/ou sourceImageIds (ids da sua galeria); quem aceita e quantas chegam ao motor saem de supportsReferences e maxReferences em action=models (a ref acima do teto do motor some sem erro); EDIÇÃO POR ÁREA: sourceImageId + maskRegions (caixas em fração da imagem) muda SÓ a região marcada e devolve o resto igual ao pixel, no nano-banana-2 e no nano-banana-max, pelo preço da geração comum; FUNDO TRANSPARENTE: transparentBackground=true devolve PNG com alpha, o recorte feito pelo próprio motor, pelo preço da geração comum e sem o Remover Fundo pago depois, só na linha GPT Image (supportsTransparentBackground em action=models; nos outros recusa sem cobrar)), 'compose' (combina persona+screen via Gemini pra app-demo Shorts; 25 sinapses, rate limit 10/min). generate=image one-shot, compose=montar start frame app-demo. 'request_generation' é legado e recusa sem cobrar: vídeo nasce inteiro em sapiens_video action=create. TEMPLATE: passe templateSlug numa generate pra usar um super-prompt travado da casa: o prompt vira só a CENA (quem + pose + objeto-conceito) e o template embrulha estilo+fundo+enquadramento+ref de traço. 'retrato-sapiens-v1' = retrato editorial cartoon de um personagem no grid verde Sapiens (mesma 'mão' dos artigos); sem ref própria, injeta a Helen como âncora de traço (passar referenceImageUrls troca quem aparece). Mutuamente exclusivo com brandSlug. Sub-action 'models' (sem custo, sem login): lista o catálogo vivo (modelos ativos + preço cobrado em 1K com override admin + resolutionAdders, o adder por resolução já clampado ao teto de cada motor + maxResolution + se aceita referência e quantas, maxReferences) pra descobrir modelo/preço em vez de chutar. O preço de uma geração é priceSinapses + resolutionAdders[size], então 2K/4K custam MAIS que o número base: nunca cite o base como se fosse o total quando o size não for 1K. O generate devolve custoSinapses, o que o extrato debitou: é esse que se cita depois. Sub-action 'loras' (somente leitura, sem custo): a lista de LoRAs da casa que a conta pode somar num generate pelo arg loras ([{id, peso}], até 3 somando as do motor), com a base de cada uma (Krea 2 ou Flux.2 Klein 9B), a faixa de peso, a frase de gatilho do autor (ponha no prompt), o crédito que a licença pede e os motores que aceitam; não muda o preço. Sub-action 'status' (somente leitura, sem custo): as gerações de imagem mais recentes da conta, a mais nova primeiro, com o estado de cada uma (gerando, pronta, falhou, bloqueada, presa) e há quantos minutos nasceu. É a leitura depois de um Timeout: mostra a peça que AINDA está gerando, que a galeria (sapiens_gallery action=list) não mostra. NOTA: generate é SÍNCRONA e cobra no disparo; modelo pesado (Pro, gpt-image-2-high, GPT Image 2.5 Sunburst, Seedream 5.0 Pro, Grok quality, 2K/4K) cai na REGRA DO TIMEOUT: leia action=status antes de repetir. gerando = ainda no servidor e já cobrada, não gere de novo; pronta = mostre essa; falhou = o débito voltou, aí sim gere de novo. Sub-actions 'trava' e 'trava_julgar' (só conta admin, sem custo): quando uma geração SUA no motor sem filtro falha com 'A trava de conteúdo leu menor de idade', 'trava' lista os casos barrados com a referência na conversa, o motivo e quantas leituras do juiz disseram menor; 'trava_julgar' (casoId + julgamento) grava o olho do dono: 'adulta' libera aquela referência exata pra próxima geração da conta, 'menor' barra. Só libere quando o dono, vendo a imagem, mandar.

Input Schema

NameRequiredDescriptionDefault
modeNoDefault 'create' (gera do zero). 'edit' aplica prompt como mudança sobre sourceImageId. 'variation' gera similar mantendo estilo. Edit/variation exigem sourceImageId e enviam a imagem como referência inline pro modelo.
sizeNoPADRÃO DO MCP: quem NÃO passa size nasce em 2K no Gemini (nano-banana-max, nano-banana-2) e na família Krea 2 da WaveSpeed, e em 1K no resto. Nesses dois grupos o 2K soma o adder ao preço (+100 hoje), e é decisão da casa pagar por ele: no Gemini o 2K não custa nada a mais pro provider, e na Krea 2 ele dobra o lado da peça (2720x1536 em 16:9) sem perder pele. Passe size='1K' explícito quando o barato importar mais que o detalhe. Resolução acima de 1K só existe nos modelos com hasResolutionAdder (o Gemini vai até 4K; grok-2-image, grok-2-image-quality e a família Krea 2 param em 2K, e pedir 4K neles entrega 2K e cobra o adder de 2K). Nos demais modelos o size é ignorado (fica em 1K): no gpt-image-2 e nos 2.5, por exemplo, quem decide o tamanho é o aspect ratio. O valor VIVO do adder por modelo sai em action=models (campo resolutionAdders, já clampado ao teto do motor): não escreva o número de cabeça, ele muda quando o provider reajusta.
lorasNoLoRA PRÓPRIA, somada às LoRAs que o motor já usa: [{id, peso}] com ids da lista da casa (sapiens_image action=loras, que dá a faixa de peso, o gatilho e os motores de cada uma). Só nos motores com endpoint de LoRA na WaveSpeed: a família Krea 2 ('wavespeed-krea2-base' deixa as 3 vagas livres; 'wavespeed-krea2-realism' e 'wavespeed-krea2' já usam 1 e 2) e os Flux.2 Klein com LoRA ('wavespeed-klein-nu', 'wavespeed-klein-anime', 'wavespeed-klein-anime-plus', 'wavespeed-klein-celular', 'wavespeed-klein-transparencia'); o 'wavespeed-flux2' (Klein Base) não aceita. A base da LoRA tem que ser a do motor (LoRA de Krea 2 não roda no Klein). Teto de 3 LoRAs por pedido CONTANDO as do motor no nível de Ousadia pedido. A frase de gatilho, quando a LoRA tem, vai no prompt por sua conta. Mesmo preço da geração sem LoRA. Recusa sem cobrar: id fora da lista, base errada, peso fora da faixa, vaga a mais, LoRA em teste numa conta que não é admin.
modelNoDefault 'nano-banana-2' (Nano Banana 2.1 com refs). 'nano-banana-max' (Pro 3) = qualidade alta. 'gpt-image-2-low/high' = GPT Image 2 nos tiers low e high. 'gpt-image-2-5-flare'/'gpt-image-2-5-sunburst' = GPT Image 2.5, a geração de set/2026, os dois em quality high e com referência: o Flare é o rápido, pra volume; o Sunburst é o de precisão, pra composição complexa e edição em várias voltas. 'gpt-image-2-6-flare'/'gpt-image-2-6-sunburst' = GPT Image 2.6, a geração de nov/2026, mesma divisão, mesmo preço e mesmas capacidades do 2.5 (quality high, referência, fundo transparente); o Flare do 2.6 é cerca de 3x mais rápido que o Sunburst. 'mai-image-2-6' (MAI Image 2.6, da Microsoft) = foto rápida no mesmo recurso do gpt-image-2, e o único da casa que cobra por ÁREA: o adder de resolução aqui é real, o teto é 2K (1536², porque acima disso o provider recusa por total de pixels) e ele não aceita referência. 'muse-image' (Muse Image, da Meta) = barato na edição por referência e bom pra segurar personagem (10 refs no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls); sem escada de resolução (o motor decide o tamanho e cobra o mesmo) e moderação apertada, NÃO serve pra +18. 'flux-3' (FLUX 3, da Black Forest Labs) = texto na arte e composição precisos, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls), resolução até 2K; com referência a proporção segue a primeira imagem; moderado, NÃO serve pra +18. 'flux-3-klein' (FLUX 3 Image Klein, o irmão leve de pesos abertos do FLUX 3) = foto e personagem rápidos (~5 s) e baratos, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls) e segura a pessoa da ref numa cena nova, resolução até 2K; moderado, NÃO serve pra +18. 'krea-3' (Krea 3, da Krea, em beta) = edição por referência que SEGURA PERSONAGEM, inclusive anime e criatura com marcador no rosto, e foto com pele crua; aceita referência (8 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls), resolução até 2K. É o ÚNICO da casa que cobra cada referência à parte: o preço sobe por ref (o valor vivo sai em action=models), então mande só as refs que a cena precisa. Escreva em linguagem simples e chame cada referência pelo que ela mostra ('a primeira imagem é o rosto, a segunda o figurino'); pra edição, a mudança primeiro e uma frase de preservação no fim. 'krea-3-high' = o MESMO Krea 3 com thinking high: monta um plano de edição a partir do prompt e das refs antes de gerar; use quando combinar várias refs ou quando o 'krea-3' errou o pedido. Moderado, NÃO serve pra +18. 'seedream-4-5'/'seedream-5-0'/'seedream-5-0-pro' = ByteDance 2K nativo, cinematográfico, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls) (o 5.0 é a geração nova, entende prompt complexo melhor; o 5.0-pro é o topo da linha). 'grok-2-image'/'grok-2-image-quality' = xAI Grok Imagine da geração anterior (moderação frouxa +18, aceita refs e aspect; quality é mais fiel pra character lock); 'grok-imagine-2' = Grok Imagine Image 2.0, a geração nova de ago/2026, que é a melhor da linha integrando desenho e foto na mesma peça. Daqui em diante, a LINHA DEGEN (sem freio de conteúdo, gate +18; o Grok fica fora dela). NUDEZ É NÍVEL, NÃO MOTOR: três escolhas têm um par com nudez, e o par vem no campo `ousadia` de action=models. Sem nudez = o id da escolha; com nudez = o id do par + loraIntensity. Não existe motor '+18', 'Nu' ou 'Livre' separado pra procurar. 'wavespeed-chroma' (fotorrealista rápido, sem referência), 'wavespeed-flux2' (Flux.2 Klein Base: foto rápida, até 4 referências, segura o rosto) · com nudez = 'wavespeed-klein-nu' (o mesmo Klein com a LoRA de nudez no registro de foto; a identidade continua vindo da referência), 'wavespeed-klein-anime' (Flux.2 Klein + LoRA anime, inteligente e controlável; o TRAÇO vem do prompt e da referência, não da LoRA: sem referência o servidor põe o anime no prompt quando ele não diz o traço; com referência, ref anime sai anime e ref de FOTO sai foto, então pra virar anime a partir de foto peça o restilo numa frase só, com a nudez dentro dela ('Redraw this woman as an anime illustration, fully nude, ... Same face, same hair, same pose, same room.'), sem 'everything else unchanged', que segura a roupa) · com nudez = 'wavespeed-klein-anime-plus', 'wavespeed-flux-nsfw' (Flux dev + LoRA NSFW, sem par: a Ousadia é dele mesmo, via loraIntensity), 'wavespeed-klein-celular' (o MESMO Klein 9B com a LoRA Phone Photography por cima: foto de celular, candid, luz de janela; no edit com a referência da personagem o rosto fica quase idêntico, e é a receita de conteúdo de perfil de criadora pra personagem FOTOGRÁFICA. Em personagem cel-shaded o edit troca o traço, então não use com a Aria. Comece o prompt com 'This is a candid photograph taken with a smartphone of' e enumere 'same face, same hair' antes da cena; sem Ousadia), 'wavespeed-klein-transparencia' (o MESMO Klein 9B com a LoRA de tecido transparente: o efeito vem da LoRA e não da descrição; segura o rosto da ref; sem Ousadia), 'wavespeed-krea2-realism' (Krea 2 Realism: base 12B com LoRA de realismo, pele crua, hospedada na WaveSpeed SEM o classificador de entrada da fal, que devolve 422 até em prompt sem palavra de nudez; img2img de verdade com 1 referência, força regulável em refStrength, e 2K) · com nudez = 'wavespeed-krea2' (o mesmo realismo + LoRA NSFW; é a antiga 'Krea 2 Livre'), 'wavespeed-krea2-transparencia' (a mesma LoRA de transparência na base Krea 2: fotografia mais rica, identidade mais frouxa que a irmã Klein; 1 referência; sem Ousadia), 'wavespeed-moss-image' (MOSS-Image, pesos abertos da OpenMOSS: foto sem freio sem LoRA nenhuma, que segue CENA com ofício, gesto e luz (a ceramista no torno, a revelação na luz vermelha); só texto, sem referência, até 2K, e sem Ousadia: a nudez e o quanto ela mostra saem do prompt, e o explícito só vem quando o prompt pede. Escreva a cena em frase; a roupa que ela 'tirou' às vezes fica no corpo, então diga onde a roupa está ('her clothes hang over the stool'); 'olha pra alguém fora do quadro' tende a virar olhar na lente; evite espelho com pose de alongamento, que duplica a pessoa) = WaveSpeed rápido. LEGADO, fora da escolha da tela e ainda gerando pelo id (não ofereça): 'wavespeed-klein-plus' (a escolha virou 'wavespeed-klein-nu'), 'wavespeed-krea2-base' (Krea 2 sem LoRA nenhuma; a escolha virou 'wavespeed-krea2-realism'), 'fal-krea2-realism-v2' (Krea 2 Realism pela fal, ~4s: aceita até 3 referências de ESTILO, paleta/luz/textura de uma série, não character lock, e com referência a LoRA não vai junto; a escolha virou 'wavespeed-krea2-realism'). 'civitai-wai-illustrious'/'civitai-nova-anime-xl' (anime), 'civitai-pony-v6' (Pony V6 XL, base nº1) = Civitai sdcpp rápido. 'civitai-anima' (Anima: 2B da CircleStone com a Comfy Org, base própria e não SDXL; entrega anime de PRODUÇÃO, linha fechada e sombra chapada, em vez do registro de ilustração dos Illustrious. O encoder é um LLM, então escreva a cena em FRASE e não em tag booru, e não cole score_9/masterpiece aqui).
todosNoPra action=trava: true traz também os casos já julgados (o padrão é só os sem julgamento).
actionYes
casoIdNoPra action=trava_julgar: o casoId que action=trava devolveu.
promptNoPrompt da imagem (obrigatório em generate). Full-bleed, sujeito oversized.
skillsNoCOMO A PEÇA FOI FEITA: os slugs das skills que dirigiram esta geração (ex: ['camarim'], ['dop','escala-gigantismo']). Metadado puro: não muda preço, motor nem resultado, e serve pra ACHAR depois tudo que saiu de uma skill. Passe sempre que a geração estiver saindo de uma skill da casa, na ordem em que elas entraram (quem escreveu o prompt primeiro). Fica no registro da peça e volta em sapiens_gallery.
ticketNoPra action=trava_julgar com julgamento='adulta': o ticket que action=trava devolveu no caso, quando ele foi inteiro pra conversa.
styleIdNoLegado, sem efeito: o servidor não lê este campo. Estilo vem de brandSlug, templateSlug ou registro.
pagarComNoDe qual saldo sai a imagem. Default 'sinapses' (o saldo do App). 'dolar' cobra no saldo em dólar da API da conta (o mesmo de Developers), sem tocar nas Sinapses: mesmo motor, mesma peça, mesmas referências e tamanhos, preço em dólar do custo do motor naquela resolução. Use quando a pessoa pedir pra pagar com o saldo da API ou estiver sem Sinapses e com saldo em dólar. Motor sem preço em dólar (os do Civitai) recusa, e saldo em dólar curto recusa sem cobrar nada. O valor cobrado volta em pagoEmDolarUsd. Sinapse nunca vira dólar nem o contrário: são duas carteiras.
registroNoREGISTRO fotografico: COMO a foto foi tirada, nao o que ela mostra. Eixo separado do motor e do templateSlug, e convive com os dois. O bloco entra ANTES da sua cena, server-side, e o `prompt` continua sendo so a cena. 'anos-90' = camera descartavel dos anos 90, flash direto, cor lavada e data queimada no canto (o mais barato de todos: nao carrega LoRA); 'candid' = retrato natural, luz do dia, pele com poro, e e o que MAIS obedece a referencia, entao e o mais seguro pra personagem da casa e pra inventar personagem novo por texto; 'noturno-intimo' = tom escuro, luz de abajur, clima de serie curta (o bloco e em chines de proposito, que e o que alcanca esse tom); 'camera-baixa' = olho de peixe no chao, perspectiva exagerada e desfoque de movimento, o registro pra still que vai virar video. AVISO medido: 'camera-baixa' troca o traco de personagem CEL-SHADED por foto, entao nele use personagem fotografica. Omitir e escolha legitima: sem registro o prompt vai intacto.
brandMarkNoMarca na imagem do brand: 'persona' (personagem do brand via character sheets, ex: Helen), 'logo' (carimba a logo no canto), 'none' (só o estilo). Default 'none'. Só aplica se brandSlug setado e o brand oferecer a marca.
brandSlugNoSlug do brand (design system) pra aplicar estilo visual. Fonte única: tabela `brands` (ex: 'sapiens', 'solarpunk', 'editorial-duotone', 'brutalista-mono'). Default: nenhum (prompt cru). NÃO herda o padrão da conta de propósito: aqui o estilo é escolha do momento, e quem só quer uma imagem pra outra coisa não deve nascer preso num visual. O padrão da pessoa (quando existe) vem em sapiens_meta action=start, campo designSystem: OFEREÇA quando a peça for da marca dela, deixe cru no resto. Vale em action=generate (mode=create).
julgamentoNoPra action=trava_julgar: 'adulta' libera a referência do caso pra próxima geração da conta (só quando o dono, vendo a imagem, mandar); 'menor' barra e tira a liberação.
aspectRatioNoDefault '1:1'. 9:16 = vertical pra story/short, 16:9 = landscape.
instructionNoPra action=compose: instrução em EN pro Gemini. Ex: 'Compose a vertical 9:16 photo: persona holding a smartphone facing the camera, the phone screen displaying the provided second image (clearly visible, sharp). Mobile photography aesthetic.'
maskRegionsNoEDIÇÃO POR ÁREA: só a região marcada muda, e o resto da peça volta igual ao pixel (a casa cola a área editada sobre a original). Caixas em FRAÇÃO da imagem, de 0 a 1, com origem no canto SUPERIOR ESQUERDO: x,y = canto superior esquerdo da caixa; w,h = largura e altura. shape 'ellipse' (default) marca a elipse inscrita na caixa, que cobre objeto sem pegar canto vazio; 'rect' marca a caixa inteira. Até 8 caixas, somadas numa área só. Exige UMA referência só (sourceImageId da sua galeria, sem sourceImageIds extra e sem templateSlug) e motor com supportsMaskEdit=true em action=models (hoje nano-banana-2 e nano-banana-max). O prompt descreve SÓ o que entra na área (ex.: 'a red umbrella held in her hand'), nunca a cena inteira. Marque com folga em volta do objeto: área justa demais corta a sombra e o reflexo. Antes, OLHE a peça (sapiens_gallery action=get) pra estimar as coordenadas. A peça sai na proporção e no tamanho da origem, lado maior até 2048 (4K vira 2K). Mesmo preço da geração comum. Recusa sem cobrar: área vazia, área que cobre quase a imagem toda (aí é edit comum, sem maskRegions) e motor sem supportsMaskEdit.
refStrengthNoForça da referência, só nas Krea 2 da WaveSpeed ('wavespeed-krea2-realism', 'wavespeed-krea2', 'wavespeed-krea2-transparencia', 'wavespeed-krea2-base'), onde a primeira referência vira a imagem-base: quanto a peça repinta. 0.2 guarda a foto quase inteira, com o rosto; 0.45 guarda pose, roupa e fundo, e o prompt muda luz e clima (o rosto sai parecido, não igual); 0.65 (o default) guarda enquadramento e roupa, e rosto e cenário saem do prompt; 0.9 guarda só a proporção. A peça sai no formato da referência, não no aspectRatio. Pra segurar rosto de personagem, o caminho é o Klein ('wavespeed-flux2' e família), não baixar a força. O campo refStrength de action=models diz quais motores aceitam e o default de cada um. Ignorado nos outros motores.
influencerIdNoID de personagem pra character-lock: a imagem sai com ESSE personagem. Descubra o id com sapiens_character.
templateSlugNoSlug de um template de imagem (super-prompt travado da casa). Quando setado, o `prompt` vira só a CENA (quem + pose + objeto-conceito) e o template embrulha com o estilo + fundo + enquadramento + ref de traço da casa. Ex: 'retrato-sapiens-v1' = retrato editorial cartoon de UM personagem no grid verde Sapiens (mesma 'mão' dos artigos). O template define model/aspect/size default (sobreponíveis) e injeta a ref da Helen como âncora de traço quando você não passa referenceImageUrls própria (passar refs = trocar quem aparece, mantendo o estilo). Mutuamente exclusivo com brandSlug. Vale em action=generate, mode=create.
loraIntensityNoOusadia: o nível de nudez. Só vale nos modelos COM Ousadia ('wavespeed-klein-nu' = Klein Base, 'wavespeed-klein-anime-plus' = Klein Anime, 'wavespeed-krea2' = Krea 2 Realism, 'wavespeed-flux-nsfw', e o legado 'wavespeed-klein-plus'): suave=insinua sem despir, medio=maduro no limite (default), forte=sem freio. Sem nudez, use o par sem Ousadia ('wavespeed-flux2', 'wavespeed-klein-anime', 'wavespeed-krea2-realism'): o par vem no campo `ousadia` de action=models. Ideal pra remixar personagem (ex: a Helen) preservando a identidade e regulando a liberdade. Ignorado nos demais modelos.
personaBase64NoPra action=compose: base64 da imagem persona (start ref). 1 dos {personaBase64, screenImage*} obrigatório.
sourceImageIdNoID de imagem do gallery do próprio user (`generatedImages:_id`). Obrigatório pra mode=edit ou mode=variation, e pra action=upscale e action=sombra (a peça de origem). Use sapiens_gallery action=list pra descobrir IDs.
negativePromptNo
screenImageUrlNoPra action=compose: URL da tela (Bunny CDN). Convex baixa server-side.
sourceImageIdsNoIDs de imagens da SUA galeria (`generatedImages:_id` via sapiens_gallery) usadas como referência. Alternativa por-id ao referenceImageUrls pras suas próprias imagens (ownership checado). Soma com referenceImageUrls: até 5 no total, e o motor corta no teto dele quando é menor (ver referenceImageUrls).
personaMimeTypeNo
screenImageBase64NoPra action=compose: base64 da tela. Alt: screenImageUrl.
referenceImageUrlsNoURLs públicas de referência pra combinar numa geração só (character/style lock), igual ao modal 'Selecionar Referência' do gerador web. Fontes: sua galeria (sapiens_gallery, campo url), o Acervo, e personagens públicos (sapiens_character action=list_public → mainImageUrl/imageUrls). Restrito a hosts do Sapiens (Bunny CDN / Convex) + Wikimedia. Requer model com refs (o campo supportsReferences em action=models é a fonte): nano-banana-*, gpt-image-2-*, muse-image, flux-3, flux-3-klein, krea-3 e krea-3-high (cada ref soma no preço), seedream-*, grok-* (até 3), a família Klein (wavespeed-flux2 e wavespeed-klein-*, até 4), wavespeed-flux-nsfw (1), a família Krea 2 da WaveSpeed (wavespeed-krea2-realism, wavespeed-krea2 e wavespeed-krea2-transparencia; img2img: a primeira referência vira a imagem-base, 1 ref, e refStrength diz quanto dela fica) ou fal-krea2-* (referência de ESTILO, teto de 3). Soma com sourceImageIds: até 5 no total (acima disso o servidor recusa a chamada), e cada motor corta no seu teto quando ele é menor, SEM erro: a ref a mais some (nano-banana-2 e Klein 4, Grok 3, Krea 2 da WaveSpeed e Flux NSFW 1; o campo maxReferences em action=models é a fonte).
screenImageMimeTypeNo
transparentBackgroundNoFUNDO TRANSPARENTE: true devolve PNG com alpha, recortado pelo próprio motor na geração, pronto pra overlay, slide, sticker ou editor de vídeo, sem pagar o Remover Fundo depois. Mesmo preço da geração comum. Só nos motores com supportsTransparentBackground=true em action=models (hoje a linha GPT Image: gpt-image-2-low, gpt-image-2-high, gpt-image-2-5-flare, gpt-image-2-5-sunburst, gpt-image-2-6-flare e gpt-image-2-6-sunburst); em qualquer outro, inclusive no default nano-banana-2, o servidor recusa sem cobrar, então passe o model junto. No prompt, descreva SÓ o sujeito isolado ('a single red ceramic teapot, isolated subject, crisp edges, no shadow'), sem cenário nem chão: fundo descrito vira fundo pintado. A peça sobe em PNG (não webp) e volta em sapiens_gallery com transparentBackground=true. Se o motor devolver fundo chapado, a geração falha e estorna. Vale em action=generate.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / model / description
      Previous value: -"Default 'nano-banana-2' (Nano Banana 2.1 com refs). 'nano-banana-max' (Pro 3) = qualidade alta. 'gpt-image-2-low/high' = GPT Image 2 nos tiers low e high. 'gpt-image-2-5-flare'/'gpt-image-2-5-sunburst' = GPT Image 2.5, a geração de set/2026, os dois em quality high e com referência: o Flare é o rápido, pra volume; o Sunburst é o de precisão, pra composição complexa e edição em várias voltas. 'mai-image-2-6' (MAI Image 2.6, da Microsoft) = foto rápida no mesmo recurso do gpt-image-2, e o único da casa que cobra por ÁREA: o adder de resolução aqui é real, o teto é 2K (1536², porque acima disso o provider recusa por total de pixels) e ele não aceita referência. 'muse-image' (Muse Image, da Meta) = barato na edição por referência e bom pra segurar personagem (10 refs no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls); sem escada de resolução (o motor decide o tamanho e cobra o mesmo) e moderação apertada, NÃO serve pra +18. 'flux-3' (FLUX 3, da Black Forest Labs) = texto na arte e composição precisos, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls), resolução até 2K; com referência a proporção segue a primeira imagem; moderado, NÃO serve pra +18. 'flux-3-klein' (FLUX 3 Image Klein, o irmão leve de pesos abertos do FLUX 3) = foto e personagem rápidos (~5 s) e baratos, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls) e segura a pessoa da ref numa cena nova, resolução até 2K; moderado, NÃO serve pra +18. 'krea-3' (Krea 3, da Krea, em beta) = edição por referência que SEGURA PERSONAGEM, inclusive anime e criatura com marcador no rosto, e foto com pele crua; aceita referência (8 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls), resolução até 2K. É o ÚNICO da casa que cobra cada referência à parte: o preço sobe por ref (o valor vivo sai em action=models), então mande só as refs que a cena precisa. Escreva em linguagem simples e chame cada referência pelo que ela mostra ('a primeira imagem é o rosto, a segunda o figurino'); pra edição, a mudança primeiro e uma frase de preservação no fim. 'krea-3-high' = o MESMO Krea 3 com thinking high: monta um plano de edição a partir do prompt e das refs antes de gerar; use quando combinar várias refs ou quando o 'krea-3' errou o pedido. Moderado, NÃO serve pra +18. 'seedream-4-5'/'seedream-5-0'/'seedream-5-0-pro' = ByteDance 2K nativo, cinematográfico, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls) (o 5.0 é a geração nova, entende prompt complexo melhor; o 5.0-pro é o topo da linha). 'grok-2-image'/'grok-2-image-quality' = xAI Grok Imagine da geração anterior (moderação frouxa +18, aceita refs e aspect; quality é mais fiel pra character lock); 'grok-imagine-2' = Grok Imagine Image 2.0, a geração nova de ago/2026, que é a melhor da linha integrando desenho e foto na mesma peça. Daqui em diante, a LINHA DEGEN (sem freio de conteúdo, gate +18; o Grok fica fora dela). NUDEZ É NÍVEL, NÃO MOTOR: três escolhas têm um par com nudez, e o par vem no campo `ousadia` de action=models. Sem nudez = o id da escolha; com nudez = o id do par + loraIntensity. Não existe motor '+18', 'Nu' ou 'Livre' separado pra procurar. 'wavespeed-chroma' (fotorrealista rápido, sem referência), 'wavespeed-flux2' (Flux.2 Klein Base: foto rápida, até 4 referências, segura o rosto) · com nudez = 'wavespeed-klein-nu' (o mesmo Klein com a LoRA de nudez no registro de foto; a identidade continua vindo da referência), 'wavespeed-klein-anime' (Flux.2 Klein + LoRA anime, inteligente e controlável; o TRAÇO vem do prompt e da referência, não da LoRA: sem referência o servidor põe o anime no prompt quando ele não diz o traço; com referência, ref anime sai anime e ref de FOTO sai foto, então pra virar anime a partir de foto peça o restilo numa frase só, com a nudez dentro dela ('Redraw this woman as an anime illustration, fully nude, ... Same face, same hair, same pose, same room.'), sem 'everything else unchanged', que segura a roupa) · com nudez = 'wavespeed-klein-anime-plus', 'wavespeed-flux-nsfw' (Flux dev + LoRA NSFW, sem par: a Ousadia é dele mesmo, via loraIntensity), 'wavespeed-klein-celular' (o MESMO Klein 9B com a LoRA Phone Photography por cima: foto de celular, candid, luz de janela; no edit com a referência da personagem o rosto fica quase idêntico, e é a receita de conteúdo de perfil de criadora pra personagem FOTOGRÁFICA. Em personagem cel-shaded o edit troca o traço, então não use com a Aria. Comece o prompt com 'This is a candid photograph taken with a smartphone of' e enumere 'same face, same hair' antes da cena; sem Ousadia), 'wavespeed-klein-transparencia' (o MESMO Klein 9B com a LoRA de tecido transparente: o efeito vem da LoRA e não da descrição; segura o rosto da ref; sem Ousadia), 'wavespeed-krea2-realism' (Krea 2 Realism: base 12B com LoRA de realismo, pele crua, hospedada na WaveSpeed SEM o classificador de entrada da fal, que devolve 422 até em prompt sem palavra de nudez; img2img de verdade com 1 referência, força regulável em refStrength, e 2K) · com nudez = 'wavespeed-krea2' (o mesmo realismo + LoRA NSFW; é a antiga 'Krea 2 Livre'), 'wavespeed-krea2-transparencia' (a mesma LoRA de transparência na base Krea 2: fotografia mais rica, identidade mais frouxa que a irmã Klein; 1 referência; sem Ousadia), 'wavespeed-moss-image' (MOSS-Image, pesos abertos da OpenMOSS: foto sem freio sem LoRA nenhuma, que segue CENA com ofício, gesto e luz (a ceramista no torno, a revelação na luz vermelha); só texto, sem referência, até 2K, e sem Ousadia: a nudez e o quanto ela mostra saem do prompt, e o explícito só vem quando o prompt pede. Escreva a cena em frase; a roupa que ela 'tirou' às vezes fica no corpo, então diga onde a roupa está ('her clothes hang over the stool'); 'olha pra alguém fora do quadro' tende a virar olhar na lente; evite espelho com pose de alongamento, que duplica a pessoa) = WaveSpeed rápido. LEGADO, fora da escolha da tela e ainda gerando pelo id (não ofereça): 'wavespeed-klein-plus' (a escolha virou 'wavespeed-klein-nu'), 'wavespeed-krea2-base' (Krea 2 sem LoRA nenhuma; a escolha virou 'wavespeed-krea2-realism'), 'fal-krea2-realism-v2' (Krea 2 Realism pela fal, ~4s: aceita até 3 referências de ESTILO, paleta/luz/textura de uma série, não character lock, e com referência a LoRA não vai junto; a escolha virou 'wavespeed-krea2-realism'). 'civitai-wai-illustrious'/'civitai-nova-anime-xl' (anime), 'civitai-pony-v6' (Pony V6 XL, base nº1) = Civitai sdcpp rápido. 'civitai-anima' (Anima: 2B da CircleStone com a Comfy Org, base própria e não SDXL; entrega anime de PRODUÇÃO, linha fechada e sombra chapada, em vez do registro de ilustração dos Illustrious. O encoder é um LLM, então escreva a cena em FRASE e não em tag booru, e não cole score_9/masterpiece aqui)."New value: +"Default 'nano-banana-2' (Nano Banana 2.1 com refs). 'nano-banana-max' (Pro 3) = qualidade alta. 'gpt-image-2-low/high' = GPT Image 2 nos tiers low e high. 'gpt-image-2-5-flare'/'gpt-image-2-5-sunburst' = GPT Image 2.5, a geração de set/2026, os dois em quality high e com referência: o Flare é o rápido, pra volume; o Sunburst é o de precisão, pra composição complexa e edição em várias voltas. 'gpt-image-2-6-flare'/'gpt-image-2-6-sunburst' = GPT Image 2.6, a geração de nov/2026, mesma divisão, mesmo preço e mesmas capacidades do 2.5 (quality high, referência, fundo transparente); o Flare do 2.6 é cerca de 3x mais rápido que o Sunburst. 'mai-image-2-6' (MAI Image 2.6, da Microsoft) = foto rápida no mesmo recurso do gpt-image-2, e o único da casa que cobra por ÁREA: o adder de resolução aqui é real, o teto é 2K (1536², porque acima disso o provider recusa por total de pixels) e ele não aceita referência. 'muse-image' (Muse Image, da Meta) = barato na edição por referência e bom pra segurar personagem (10 refs no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls); sem escada de resolução (o motor decide o tamanho e cobra o mesmo) e moderação apertada, NÃO serve pra +18. 'flux-3' (FLUX 3, da Black Forest Labs) = texto na arte e composição precisos, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls), resolução até 2K; com referência a proporção segue a primeira imagem; moderado, NÃO serve pra +18. 'flux-3-klein' (FLUX 3 Image Klein, o irmão leve de pesos abertos do FLUX 3) = foto e personagem rápidos (~5 s) e baratos, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls) e segura a pessoa da ref numa cena nova, resolução até 2K; moderado, NÃO serve pra +18. 'krea-3' (Krea 3, da Krea, em beta) = edição por referência que SEGURA PERSONAGEM, inclusive anime e criatura com marcador no rosto, e foto com pele crua; aceita referência (8 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls), resolução até 2K. É o ÚNICO da casa que cobra cada referência à parte: o preço sobe por ref (o valor vivo sai em action=models), então mande só as refs que a cena precisa. Escreva em linguagem simples e chame cada referência pelo que ela mostra ('a primeira imagem é o rosto, a segunda o figurino'); pra edição, a mudança primeiro e uma frase de preservação no fim. 'krea-3-high' = o MESMO Krea 3 com thinking high: monta um plano de edição a partir do prompt e das refs antes de gerar; use quando combinar várias refs ou quando o 'krea-3' errou o pedido. Moderado, NÃO serve pra +18. 'seedream-4-5'/'seedream-5-0'/'seedream-5-0-pro' = ByteDance 2K nativo, cinematográfico, aceita referência (10 no catálogo; pelo MCP vale o teto de 5 do campo referenceImageUrls) (o 5.0 é a geração nova, entende prompt complexo melhor; o 5.0-pro é o topo da linha). 'grok-2-image'/'grok-2-image-quality' = xAI Grok Imagine da geração anterior (moderação frouxa +18, aceita refs e aspect; quality é mais fiel pra character lock); 'grok-imagine-2' = Grok Imagine Image 2.0, a geração nova de ago/2026, que é a melhor da linha integrando desenho e foto na mesma peça. Daqui em diante, a LINHA DEGEN (sem freio de conteúdo, gate +18; o Grok fica fora dela). NUDEZ É NÍVEL, NÃO MOTOR: três escolhas têm um par com nudez, e o par vem no campo `ousadia` de action=models. Sem nudez = o id da escolha; com nudez = o id do par + loraIntensity. Não existe motor '+18', 'Nu' ou 'Livre' separado pra procurar. 'wavespeed-chroma' (fotorrealista rápido, sem referência), 'wavespeed-flux2' (Flux.2 Klein Base: foto rápida, até 4 referências, segura o rosto) · com nudez = 'wavespeed-klein-nu' (o mesmo Klein com a LoRA de nudez no registro de foto; a identidade continua vindo da referência), 'wavespeed-klein-anime' (Flux.2 Klein + LoRA anime, inteligente e controlável; o TRAÇO vem do prompt e da referência, não da LoRA: sem referência o servidor põe o anime no prompt quando ele não diz o traço; com referência, ref anime sai anime e ref de FOTO sai foto, então pra virar anime a partir de foto peça o restilo numa frase só, com a nudez dentro dela ('Redraw this woman as an anime illustration, fully nude, ... Same face, same hair, same pose, same room.'), sem 'everything else unchanged', que segura a roupa) · com nudez = 'wavespeed-klein-anime-plus', 'wavespeed-flux-nsfw' (Flux dev + LoRA NSFW, sem par: a Ousadia é dele mesmo, via loraIntensity), 'wavespeed-klein-celular' (o MESMO Klein 9B com a LoRA Phone Photography por cima: foto de celular, candid, luz de janela; no edit com a referência da personagem o rosto fica quase idêntico, e é a receita de conteúdo de perfil de criadora pra personagem FOTOGRÁFICA. Em personagem cel-shaded o edit troca o traço, então não use com a Aria. Comece o prompt com 'This is a candid photograph taken with a smartphone of' e enumere 'same face, same hair' antes da cena; sem Ousadia), 'wavespeed-klein-transparencia' (o MESMO Klein 9B com a LoRA de tecido transparente: o efeito vem da LoRA e não da descrição; segura o rosto da ref; sem Ousadia), 'wavespeed-krea2-realism' (Krea 2 Realism: base 12B com LoRA de realismo, pele crua, hospedada na WaveSpeed SEM o classificador de entrada da fal, que devolve 422 até em prompt sem palavra de nudez; img2img de verdade com 1 referência, força regulável em refStrength, e 2K) · com nudez = 'wavespeed-krea2' (o mesmo realismo + LoRA NSFW; é a antiga 'Krea 2 Livre'), 'wavespeed-krea2-transparencia' (a mesma LoRA de transparência na base Krea 2: fotografia mais rica, identidade mais frouxa que a irmã Klein; 1 referência; sem Ousadia), 'wavespeed-moss-image' (MOSS-Image, pesos abertos da OpenMOSS: foto sem freio sem LoRA nenhuma, que segue CENA com ofício, gesto e luz (a ceramista no torno, a revelação na luz vermelha); só texto, sem referência, até 2K, e sem Ousadia: a nudez e o quanto ela mostra saem do prompt, e o explícito só vem quando o prompt pede. Escreva a cena em frase; a roupa que ela 'tirou' às vezes fica no corpo, então diga onde a roupa está ('her clothes hang over the stool'); 'olha pra alguém fora do quadro' tende a virar olhar na lente; evite espelho com pose de alongamento, que duplica a pessoa) = WaveSpeed rápido. LEGADO, fora da escolha da tela e ainda gerando pelo id (não ofereça): 'wavespeed-klein-plus' (a escolha virou 'wavespeed-klein-nu'), 'wavespeed-krea2-base' (Krea 2 sem LoRA nenhuma; a escolha virou 'wavespeed-krea2-realism'), 'fal-krea2-realism-v2' (Krea 2 Realism pela fal, ~4s: aceita até 3 referências de ESTILO, paleta/luz/textura de uma série, não character lock, e com referência a LoRA não vai junto; a escolha virou 'wavespeed-krea2-realism'). 'civitai-wai-illustrious'/'civitai-nova-anime-xl' (anime), 'civitai-pony-v6' (Pony V6 XL, base nº1) = Civitai sdcpp rápido. 'civitai-anima' (Anima: 2B da CircleStone com a Comfy Org, base própria e não SDXL; entrega anime de PRODUÇÃO, linha fechada e sombra chapada, em vez do registro de ilustração dos Illustrious. O encoder é um LLM, então escreva a cena em FRASE e não em tag booru, e não cole score_9/masterpiece aqui)."
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "nano-banana-max",
      -  "nano-banana-2",
      -  "gpt-image-2-low",
      -  "gpt-image-2-high",
      -  "gpt-image-2-5-flare",
      -  "gpt-image-2-5-sunburst",
      -  "mai-image-2-6",
      -  "muse-image",
      -  "flux-3",
      -  "flux-3-klein",
      -  "krea-3",
      -  "krea-3-high",
      -  "seedream-4-5",
      -  "seedream-5-0",
      -  "seedream-5-0-pro",
      -  "grok-2-image",
      -  "grok-2-image-quality",
      -  "grok-imagine-2",
      -  "wavespeed-chroma",
      -  "wavespeed-flux2",
      -  "wavespeed-klein-plus",
      -  "wavespeed-flux-nsfw",
      -  "wavespeed-klein-anime",
      -  "wavespeed-klein-anime-plus",
      -  "wavespeed-klein-celular",
      -  "wavespeed-klein-nu",
      -  "wavespeed-klein-transparencia",
      -  "wavespeed-krea2-transparencia",
      -  "wavespeed-krea2-realism",
      -  "wavespeed-krea2",
      -  "wavespeed-krea2-base",
      -  "wavespeed-krea2-broken-tears",
      -  "wavespeed-moss-image",
      -  "civitai-wai-illustrious",
      -  "civitai-nova-anime-xl",
      -  "civitai-anima",
      -  "civitai-pony-v6",
      -  "fal-krea2-realism-v2"
      -]New value: +[
      +  "nano-banana-max",
      +  "nano-banana-2",
      +  "gpt-image-2-low",
      +  "gpt-image-2-high",
      +  "gpt-image-2-5-flare",
      +  "gpt-image-2-5-sunburst",
      +  "gpt-image-2-6-flare",
      +  "gpt-image-2-6-sunburst",
      +  "mai-image-2-6",
      +  "muse-image",
      +  "flux-3",
      +  "flux-3-klein",
      +  "krea-3",
      +  "krea-3-high",
      +  "seedream-4-5",
      +  "seedream-5-0",
      +  "seedream-5-0-pro",
      +  "grok-2-image",
      +  "grok-2-image-quality",
      +  "grok-imagine-2",
      +  "wavespeed-chroma",
      +  "wavespeed-flux2",
      +  "wavespeed-klein-plus",
      +  "wavespeed-flux-nsfw",
      +  "wavespeed-klein-anime",
      +  "wavespeed-klein-anime-plus",
      +  "wavespeed-klein-celular",
      +  "wavespeed-klein-nu",
      +  "wavespeed-klein-transparencia",
      +  "wavespeed-krea2-transparencia",
      +  "wavespeed-krea2-realism",
      +  "wavespeed-krea2",
      +  "wavespeed-krea2-base",
      +  "wavespeed-krea2-broken-tears",
      +  "wavespeed-moss-image",
      +  "civitai-wai-illustrious",
      +  "civitai-nova-anime-xl",
      +  "civitai-anima",
      +  "civitai-pony-v6",
      +  "fal-krea2-realism-v2"
      +]
    • changedInput schema / properties / transparentBackground / description
      Previous value: -"FUNDO TRANSPARENTE: true devolve PNG com alpha, recortado pelo próprio motor na geração, pronto pra overlay, slide, sticker ou editor de vídeo, sem pagar o Remover Fundo depois. Mesmo preço da geração comum. Só nos motores com supportsTransparentBackground=true em action=models (hoje a linha GPT Image: gpt-image-2-low, gpt-image-2-high, gpt-image-2-5-flare e gpt-image-2-5-sunburst); em qualquer outro, inclusive no default nano-banana-2, o servidor recusa sem cobrar, então passe o model junto. No prompt, descreva SÓ o sujeito isolado ('a single red ceramic teapot, isolated subject, crisp edges, no shadow'), sem cenário nem chão: fundo descrito vira fundo pintado. A peça sobe em PNG (não webp) e volta em sapiens_gallery com transparentBackground=true. Se o motor devolver fundo chapado, a geração falha e estorna. Vale em action=generate."New value: +"FUNDO TRANSPARENTE: true devolve PNG com alpha, recortado pelo próprio motor na geração, pronto pra overlay, slide, sticker ou editor de vídeo, sem pagar o Remover Fundo depois. Mesmo preço da geração comum. Só nos motores com supportsTransparentBackground=true em action=models (hoje a linha GPT Image: gpt-image-2-low, gpt-image-2-high, gpt-image-2-5-flare, gpt-image-2-5-sunburst, gpt-image-2-6-flare e gpt-image-2-6-sunburst); em qualquer outro, inclusive no default nano-banana-2, o servidor recusa sem cobrar, então passe o model junto. No prompt, descreva SÓ o sujeito isolado ('a single red ceramic teapot, isolated subject, crisp edges, no shadow'), sem cenário nem chão: fundo descrito vira fundo pintado. A peça sobe em PNG (não webp) e volta em sapiens_gallery com transparentBackground=true. Se o motor devolver fundo chapado, a geração falha e estorna. Vale em action=generate."
  2. Changed5 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "generate",
      -  "request_generation",
      -  "compose",
      -  "models",
      -  "upscale",
      -  "sombra",
      -  "status",
      -  "loras"
      -]New value: +[
      +  "generate",
      +  "request_generation",
      +  "compose",
      +  "models",
      +  "upscale",
      +  "sombra",
      +  "status",
      +  "loras",
      +  "trava",
      +  "trava_julgar"
      +]
    • addedInput schema / properties / casoId
      Added value: +{
      +  "description": "Pra action=trava_julgar: o casoId que action=trava devolveu.",
      +  "type": "string"
      +}
    • addedInput schema / properties / julgamento
      Added value: +{
      +  "description": "Pra action=trava_julgar: 'adulta' libera a referência do caso pra próxima geração da conta (só quando o dono, vendo a imagem, mandar); 'menor' barra e tira a liberação.",
      +  "enum": [
      +    "adulta",
      +    "menor"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / ticket
      Added value: +{
      +  "description": "Pra action=trava_julgar com julgamento='adulta': o ticket que action=trava devolveu no caso, quando ele foi inteiro pra conversa.",
      +  "type": "string"
      +}
    • addedInput schema / properties / todos
      Added value: +{
      +  "description": "Pra action=trava: true traz também os casos já julgados (o padrão é só os sem julgamento).",
      +  "type": "boolean"
      +}
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and openWorldHint=true; the description carries the real behavioral burden and does so richly — synchronous billing on dispatch, fixed Sinapses prices, refusal-without-charge cases ('recusa sem cobrar'), the timeout rule (gerando = already charged, don't regenerate; falhou = debit returned), compose's 25 sinapses and 10/min rate limit, and the fact that transparentBackground failures estornam. These are exactly the mutation/paid-operation traits the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and sub-actions are front-loaded, which is right for a 10-action tool, but the block is a single dense paragraph with heavy parenthetical nesting and duplicated content — the timeout rule appears in the 'upscale' bullet and again in the closing NOTA, and the 'models' pricing caveat is restated. Much of the length is justified by complexity, but several sentences repeat rather than add.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 33-parameter, 10-action tool with no output schema, the description covers everything needed to call it correctly: cost model and what gets billed, sync vs timeout semantics, the status-polling recovery loop, live catalog discovery for models/prices/reference limits, refund behavior, and admin-only moderation actions. Nothing essential is left for the agent to guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (88%), so the schema already documents most fields in detail and the description largely parallels it. Where it does add value beyond the schema is cross-parameter coordination: the 5-ref global cap with per-engine truncation from supportsReferences/maxReferences, 'Mutuamente exclusivo com brandSlug' for templateSlug, and the instruction to read live values from action=models rather than hardcoding prices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Operações de imagem via Sapiens') and enumerates every sub-action (upscale, sombra, generate, compose, models, loras, status, trava, trava_julgar) with what each produces. It explicitly separates itself from siblings: 'generate=image one-shot, compose=montar start frame app-demo' and 'request_generation é legado... vídeo nasce inteiro em sapiens_video action=create', so an agent can route image work here and video work elsewhere without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use and when-not guidance throughout: 'models' is the catalog lookup to use 'em vez de chutar', 'status' is the required read after a Timeout ('leia action=status antes de repetir'), 'trava_julgar' is admin-only and gated on owner approval ('Só libere quando o dono, vendo a imagem, mandar'), and maskRegions requires sourceImageId with no extra refs or templateSlug. It also names the fallback path for character-lock ('o caminho é o Klein... não baixar a força'), leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.