sapiens-mcp 1.69.0 → 1.69.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/skills.js CHANGED
@@ -331,6 +331,8 @@ Combine até 4 imagens como referência numa geração só:
331
331
 
332
332
  Refs valem pros modelos robustos (nano-banana-2, gpt-image-2-low/high, gpt-image-2-5-flare/sunburst, grok-2-image*). Use \`sapiens_reference\` pra achar a URL certa em vez de adivinhar.
333
333
 
334
+ Nas Krea 2 da WaveSpeed a referência é a imagem-base (uma só), e \`refStrength\` diz quanto dela fica: 0.2 guarda a foto quase inteira, com o rosto; 0.45 guarda pose, roupa e fundo, e o prompt muda luz e clima; 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 o rosto de personagem numa cena nova, o caminho é o Klein, não baixar a força.
335
+
334
336
  ## Templates travados
335
337
 
336
338
  \`templateSlug\` aplica um super-prompt da casa: o seu \`prompt\` vira só a CENA (quem, que pose, que objeto-conceito) e o template embrulha estilo, fundo, enquadramento e referência de traço.
@@ -54,6 +54,7 @@ const MODELS = [
54
54
  // da fal, img2img de verdade, 2K nativo · com Ousadia = wavespeed-krea2
55
55
  "wavespeed-krea2", // Krea 2 Realism COM Ousadia (a antiga "Livre"): mesmo realismo + LoRA NSFW. loraIntensity regula.
56
56
  "wavespeed-krea2-base", // FORA da prateleira: Krea 2 sem LoRA nenhuma, a escolha virou o Krea 2 Realism. O id segue gerando.
57
+ "wavespeed-krea2-broken-tears", // LABORATÓRIO: só admin gera, o servidor recusa o resto antes de cobrar.
57
58
  // Civitai (sdcpp, rápido). Família FLUX no Civitai saiu: lenta demais (>5min,
58
59
  // estoura o poll). Pra flux uncensored use wavespeed-flux-nsfw.
59
60
  "civitai-wai-illustrious", // anime Illustrious
@@ -81,7 +82,7 @@ export const imageSchema = z.object({
81
82
  model: z
82
83
  .enum(MODELS)
83
84
  .optional()
84
- .describe("Default 'nano-banana-2' (Flash 3.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. 'seedream-4-5'/'seedream-5-0'/'seedream-5-0-pro' = ByteDance 2K nativo, cinematográfico, aceita até 4 referências (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. DEGEN (uncensored, gate +18): 'wavespeed-chroma' (fotorrealista rápido), 'wavespeed-flux2' (Flux.2 Klein), 'wavespeed-klein-plus' (o MESMO Klein 9B com uma LoRA de ANATOMIA por cima, e é o caminho de nudez explícita com personagem travada: o Klein base desenha aréola e mamilo mas devolve a virilha lisa, e os motores que desenham a anatomia ignoram a referência. Aqui a identidade continua vindo da ref e a LoRA só preenche o que faltava; Ousadia regulável), 'wavespeed-flux-nsfw' (flux+LoRA NSFW, Ousadia regulável via loraIntensity), 'wavespeed-klein-anime' (Flux.2 Klein + LoRA anime, inteligente+controlável), 'wavespeed-klein-anime-plus' (Klein anime +18, Ousadia regulável), '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-krea2' (Krea 2 Livre: a MESMA base 12B das fal-krea2-*, hospedada na WaveSpeed, SEM o classificador de entrada da fal: é o caminho quando a fal devolve 422 num prompt que não tem palavra de nudez; aceita referência img2img de verdade, Ousadia regulável e 2K), 'wavespeed-krea2-base' (Krea 2 Base: a mesma base 12B da Livre SEM LoRA nenhuma, nem realismo nem NSFW; é o motor como ele é, com img2img e 2K, pra quem quer ver a base crua ou temperar com o próprio prompt; sem Ousadia, que é a LoRA que ele não carrega) = WaveSpeed rápido; '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). 'fal-krea2-realism-v2' (na tela chama Krea 2 Realism: Krea-2 Turbo 12B + LoRA de realismo, fal.ai, ~4s, pele crua e contraluz que não lava; o sufixo -v2 do id é o nome do arquivo de LoRA, não geração nova do motor) = aceita até 3 referências de ESTILO (paleta/luz/textura de uma série), não character lock; com referência a LoRA não vai junto."),
85
+ .describe("Default 'nano-banana-2' (Flash 3.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. 'seedream-4-5'/'seedream-5-0'/'seedream-5-0-pro' = ByteDance 2K nativo, cinematográfico, aceita até 4 referências (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. DEGEN (uncensored, gate +18). 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) · 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 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)."),
85
86
  aspectRatio: z
86
87
  .enum(["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"])
87
88
  .optional()
@@ -98,7 +99,7 @@ export const imageSchema = z.object({
98
99
  referenceImageUrls: z
99
100
  .array(httpUrl())
100
101
  .optional()
101
- .describe("URLs 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, seedream-*, grok-* (até 3), wavespeed-krea2 e wavespeed-krea2-base (img2img: a primeira referência vira a imagem-base, 1 ref) 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 (Seedream 4, Grok 3, Krea 2 Livre/Base 1; o campo maxReferences em action=models é a fonte)."),
102
+ .describe("URLs 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, 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 (Seedream 4, Klein 4, Grok 3, Krea 2 e Flux NSFW 1; o campo maxReferences em action=models é a fonte)."),
102
103
  sourceImageIds: z
103
104
  .array(z.string())
104
105
  .optional()
@@ -127,6 +128,12 @@ export const imageSchema = z.object({
127
128
  .enum(["suave", "medio", "forte"])
128
129
  .optional()
129
130
  .describe("Ousadia: 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."),
131
+ refStrength: z
132
+ .number()
133
+ .min(0.2)
134
+ .max(0.9)
135
+ .optional()
136
+ .describe("Forç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."),
130
137
  mode: z
131
138
  .enum(["create", "edit", "variation"])
132
139
  .optional()
@@ -197,6 +204,9 @@ export async function image(args) {
197
204
  // O id que gera esta mesma escolha COM nudez (manda junto loraIntensity).
198
205
  // null = sem par; se o próprio motor tem LoRA tunável, a Ousadia é dele.
199
206
  ousadia: ousadiaByShelf[m.id] ?? null,
207
+ // A força da referência quando o motor deixa regular (Krea 2 da
208
+ // WaveSpeed): o default que vale sem refStrength. null = sem o controle.
209
+ refStrength: m.refStrengthDefault ?? null,
200
210
  note: m.description ?? null,
201
211
  }));
202
212
  // Índice por família, pro cliente escolher em dois passos como a tela faz:
@@ -298,6 +308,7 @@ export async function image(args) {
298
308
  registro: args.registro,
299
309
  influencerId: args.influencerId,
300
310
  loraIntensity: args.loraIntensity,
311
+ refStrength: args.refStrength,
301
312
  });
302
313
  return {
303
314
  imageId: result?.imageId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sapiens-mcp",
3
- "version": "1.69.0",
3
+ "version": "1.69.2",
4
4
  "mcpName": "com.sapiensinteticos/sapiens",
5
5
  "description": "MCP server pra operar o Sapiens Sintéticos (sapiensinteticos.com) pelo Claude Code: gerar imagem, escrever artigo, voz, música e mais, na sua conta. Login pelo código de sapiensinteticos.com/conectar-claude.",
6
6
  "type": "module",