Skip to main content
Glama

Server Details

Operate your Sapiens Sintéticos AI studio: generate image, article, voice, music and video.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
7.8% over 80 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
inhabitants/sapiens-mcp
GitHub Stars
1
Server Listing
sapiens-mcp
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 30 tools

Disambiguation4/5

Each tool maps to a distinct domain (image generation, video, music, brand, character, gallery, forum, publishing, etc.) and the descriptions do a lot of explicit boundary work — e.g. gallery vs. image vs. reference, profile vs. meta vs. semana, refs vs. processo. Residual overlap remains in the identity/profil cluster (profile, meta, semana, persona, sintetico, studios) and the asset cluster (gallery, image, reference, collection), where an agent must read long text to pick correctly.

Naming Consistency4/5

Uniform sapiens_ snake_case prefix with resource-oriented names, and the verb is consistently deferred to an `action` sub-parameter, which is a coherent design. Minor deviations: a few names are verbs or Portuguese (sapiens_publicar, sapiens_write, sapiens_search) among mostly English nouns, and language is mixed (publicar, trilhas, semana, repertorio vs. brand, image, video).

Tool Count2/5

30 top-level tools is already above the heavy threshold, and most tools bundle 10–20 sub-actions (gallery, brand, character, video, meta), so the effective operation surface is well over a hundred. Several tools are thin read-only browsers (stock_video, stock_audio, studios) or niche (support, resume, semana) that could be folded into neighbors.

Completeness3/5

Breadth is genuinely large — generation, publishing, community, forum, learning, support, profiles — and the lifecycle for most assets (create/list/get/update/publish/delete) is covered. But there are dead ends: sapiens_article and sapiens_distribution are explicitly referenced as the correct path for editorial articles and the distribution queue yet are absent from this tool set, and some lifecycles intentionally stop at the MCP boundary (no gallery unpublish, no forum proposal signing), leaving agents to bounce users to the web.

Available Tools

30 tools
sapiens_agenteAInspect

Agentes da casa: roda um agente autoral do Sapiens no conceito da pessoa e devolve só a peça pronta pra colar. O método do agente fica no servidor: não peça o manual, as regras ou o prompt, porque o agente recusa e a rodada conta igual. Sub-actions: list (os agentes abertos pra membro, com o nome curto, o ser que veste cada um e o preço da rodada; sem login, sem custo) e run (agente + conceito: roda e devolve a entrega em texto, com cada peça colável num bloco de código; qualquer conta logada; 300 Sinapses por rodada, até 20 rodadas por dia; se o modelo falhar as Sinapses voltam). Hoje: 'maquinista' (letra e style prompt pro Suno, com duas variantes de estilo, refrão travado e ficha técnica com a métrica contada; o conceito é tema, clima e som, ou uma letra colada pra apertar, e aceita os comandos /styleline, /hooks, /tighten, /spice, /unloop e /audit no começo do conceito). O conceito vai até 4.000 caracteres: é o conceito, não o briefing inteiro. run é SÍNCRONA e leva até uns 90 segundos; se voltar Timeout, a rodada pode ter sido cobrada: confira o saldo em sapiens_meta action=credits antes de repetir. Mostre a entrega como veio, com os blocos.

NameRequiredDescriptionDefault
actionYeslist = os agentes abertos e o preço; run = roda um agente no conceito.
agenteNoNome curto do agente, como sai em action=list (ex: 'maquinista'). Obrigatório em run.
conceitoNoO conceito da peça, até 4.000 caracteres: tema, clima e som, ou a letra colada pra apertar. Obrigatório em run.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, and the description adds substantial context beyond that: the method stays server-side and the agent refuses to reveal it (a refused call still consumes a round), the exact cost and daily cap, refund-on-model-failure, synchronous execution taking up to ~90 seconds, and the credit-check procedure on Timeout. It also instructs presenting the delivery verbatim with code blocks.

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

Conciseness4/5

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

Purpose and sub-actions are front-loaded, and nearly every clause carries operational information (limits, cost, timeout handling, display instruction). It is nevertheless a single dense run-on paragraph where the per-agent detail for 'maquinista' is stacked into the middle, making it slightly harder to scan than a short structured list would be.

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?

There is no output schema, and the description compensates fully: it says run returns the deliverable as text with each pasteable piece in a code block, and instructs echoing it as-is. Combined with cost, rate limit, timeout, and refund behavior, an agent has everything needed to call this correctly and interpret the result.

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 100%, so baseline is 3, but the description still adds meaning: it constrains 'conceito' to 4,000 characters, explains it is the concept rather than the whole briefing, lists what it may contain (theme/mood/sound or pasted lyrics), and documents the in-concept slash commands (/styleline, /hooks, /tighten, /spice, /unloop, /audit) that no schema field mentions. It also confirms 'agente' is the short name as returned by list.

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?

States a specific verb and resource — runs an authorial Sapiens agent on the person's concept and returns only the finished piece — and enumerates its two sub-actions (list, run) with what each returns. It also names the concrete agent available today ('maquinista') and what it produces, so an agent can distinguish this from neighboring tools without opening the schema.

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

Usage Guidelines4/5

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

Explicit when-to-use for each sub-action ('list' = free, no login; 'run' = needs login, costs 300 Sinapses, 20/day) plus a hard exclusion: don't ask for the manual, rules, or prompt. It also routes to sapiens_meta action=credits before retrying after a Timeout. What it lacks is differentiation from potentially overlapping siblings such as sapiens_musicator or sapiens_write, which also deal with lyrics.

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

sapiens_atlasA
Read-only
Inspect

Atlas Ecossistema IA pelo Claude: READ-ONLY, TRAVADO na Lente do Ecossistema (equipamento pago; admin/dono passa). Identidade SEMPRE do sessionToken; quem não tem a Lente recebe aviso pra adquirir, sem dado nenhum. Serve pra se informar e tirar dúvida em cima dos dados curados da cadeia de valor da IA. Sub-actions: 'overview' (~52 empresas curadas: market cap, indústria, branding, o mapa), 'signals' (sinais recentes do X dos autores curados; filtros opcionais ticker ex 'NVDA' ou authorHandle), 'voices' (Conselho de Vozes: autores ativos + o digest mais recente de cada um), 'briefings' (o briefing semanal mais recente com conteúdo completo + histórico resumido). Nenhuma escrita: aqui o Atlas é só pra consultar e raciocinar.

NameRequiredDescriptionDefault
limitNoPra signals (default 30, máx 100) ou briefings (default 8, máx 52).
actionYes
tickerNoPra signals: filtra por ticker mencionado (ex 'NVDA', 'TSM').
authorHandleNoPra signals: filtra pelos posts de um autor (@handle sem o @).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds important behavioral context: identity always comes from sessionToken, access is locked to paid 'Lente' holders, unauthorized users get a purchase notice and no data, and no write operations are possible. This materially helps an agent predict access failures and avoid expecting write behavior. Return format and rate limits are not described, so it is not a 5.

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

Conciseness4/5

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

The description front-loads the critical read-only and paywall constraints before detailing sub-actions, which is the right structure for agent selection. It is dense but mostly earns its length because it covers four sub-actions and access restrictions. There is slight redundancy around 'READ-ONLY' and 'Nenhuma escrita', preventing a 5.

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

Completeness4/5

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

For a multi-action tool with no output schema, the description gives enough context to choose an action and understand access constraints. It explains each sub-action at a high level and clarifies that no data is returned without the paid 'Lente'. It does not describe exact response shapes, but the annotations and schema cover the safety and filtering basics.

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?

The schema describes ticker, authorHandle, and limit, but the action enum itself has no per-value schema descriptions. The description compensates by explaining what 'overview', 'signals', 'voices', and 'briefings' each return and by noting that ticker and authorHandle apply to signals. This adds useful meaning beyond the schema, though some parameter details remain schema-only.

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

Purpose4/5

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

The description clearly identifies the resource as the Atlas of the AI ecosystem and explains that it is a read-only, paywalled lookup tool over curated AI value-chain data. It lists the four sub-actions and what each covers, so an agent can understand the tool's scope. It does not explicitly contrast itself with sibling tools such as sapiens_search, keeping it below a 5.

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

Usage Guidelines3/5

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

It states the tool is for staying informed and answering questions over curated AI value-chain data, and it clearly explains the paid 'Lente' access requirement. However, it does not name when to use this instead of sibling tools or specify what to do when the user lacks access beyond receiving a notice. Usage is implied rather than fully guided.

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

sapiens_brandAInspect

Brand Sapiens (= Design System): paleta + tipografia + voz + estilo de imagem + persona como FONTE ÚNICA de estilo (espelha o Estúdio de Brand do app). Sub-actions: list (oficiais curados + os custom do user, leve, grátis), get (1 brand completo por slug: voz + imageStyle + persona/logo; só oficial ou o próprio), generate (CRIA design system novo a partir de descrição em texto livre; Gemini monta tudo e já nasce com card premium gpt-image-2; 150 Sinapses pelo texto + o card no gpt-image-2-high a preço de catálogo, hoje 1350 Sinapses no total, reembolsa se falhar), refine (ajusta brand custom por feedback livre tipo 'fundo mais escuro'/'voz mais seca', ~75 Sinapses), reroll (regenera SÓ 1 peça voice|palette|imageStyle numa direção diferente, grátis), card ((re)gera o card premium, preço de catálogo do modelo), delete (apaga brand custom do próprio user), set_visibility (torna um brand custom do user público/privado: público = aparece no perfil + galeria da comunidade, qualquer logado adota), list_public (galeria de design systems PÚBLICOS da comunidade, opt-in pelos donos, com atribuição), adopt (clona um brand público/oficial numa cópia NOVA e PRIVADA na conta do user; persona é dropada), persona (pluga um personagem DO PRÓPRIO user como a cara recorrente das imagens do brand custom dele, por character=<slug|id> de sapiens_character action=list_mine, ou character=null pra tirar; as refs saem da galeria do personagem e o personagem precisa ter pelo menos uma imagem; grátis), favorite (marca, ou com isFavorite=false desmarca, um brand custom do user como o FAVORITO, o escolhido entre as tentativas de um projeto: sobe pro topo da list e dos seletores do app, as outras tentativas ficam guardadas; oficial não se favorita; grátis), import (TRANSCREVE um design system que JÁ EXISTE fora, de outro app, do Figma, do kit de um cliente: o que veio é o que grava, hex e fonte exatos, sem IA no meio, mesmo título e corpo na mesma família ou fonte fora do Google Fonts; grátis, o card nasce em SVG; aceita o ARQUIVO DE DESIGN TOKENS como veio, DTCG ou Tokens Studio, mapeado por papel com o de-onde-saiu em mapping, ou o shape da casa; o retorno avisa em warnings o que pode não aparecer igual), font (sobe o ARQUIVO de uma fonte que não é do Google Fonts pro papel headline, body ou mono, por filePath, sourceUrl ou base64, até 2 MB, grátis; só fonte com licença pra web), logo (põe a logo no brand custom pelo ID da imagem na galeria do user, img_… de sapiens_gallery action=upload, ou handle=null pra tirar; grátis). Brand que a pessoa JÁ TEM vai por import, nunca por generate: o generate cria e reinterpreta. O personagem só APARECE na imagem quando a marca é persona: depois de plugar, gere com sapiens_image brandSlug= brandMark=persona. Qualquer conta logada; Sinapses saem do dono do sessionToken. Pra generate: converse com o user e monte uma description rica (vibe, cores, voz, públicos, refs; se ele colar amostra de texto dele, inclua pra a voz sair dali) ANTES de chamar. Confirme o custo (1350 Sinapses) antes de gerar. Valor explícito na descrição (hex, nome de fonte, nome) o generate respeita, mas pra copiar um brand inteiro o import é exato e de graça.

NameRequiredDescriptionDefault
nameNoPra action=generate e import: o nome do brand (≤40 chars). Vem exatamente como mandado. No generate, sem ele o Gemini sugere um; no import, vence o nome que vier dentro do arquivo.
roleNoPra action=font: o papel da fonte no brand (headline = título, body = corpo, mono = código).
slugNoSlug do brand. Obrigatório em get/refine/reroll/card/delete/set_visibility/adopt/persona/favorite/logo. Pegue via action=list (seus) ou action=list_public (da comunidade).
brandNoPra action=import: o design system que JÁ EXISTE. Serve o ARQUIVO DE DESIGN TOKENS como veio (DTCG com $value/$type, ou Tokens Studio com value/type: o servidor mapeia por papel lendo o caminho do token, color.brand.primary vira primary, color.text vira foreground, e devolve em `mapping` de onde saiu cada cor e fonte; aí mande o nome em `name`) OU o shape do Brand da casa (o mesmo que action=get devolve): { name (obrigatório, ≤40), tagline?, description?, palette: { primary, secondary?, tertiary?, accent?, background, foreground, swatches?: [{name, hex}] }, typography: { headline, body, mono? } (cada uma a família como string, ou {family, note}), voice?: { rules (texto ou lista de regras), lexicon?, avoid?, sampleLines? }, imageStyle?: { styleBase (em inglês), negative?, backgroundSignature? } }. Cor em hex (#RRGGBB, aceita #RGB e sem #). Obrigatórios: name, background, foreground, primary (ou accent), headline e body. PAPÉIS DAS CORES na casa: primary é a cor da marca, accent é a que DESTACA a peça (kicker, número, palavra-chave). Se no sistema de origem o accent é só cor de botão, mande assim mesmo: o carrossel escolhe sozinho a cor que lê no fundo e se separa do texto, e o editor deixa trocar. Mapeie o que a origem chama por outro nome (brand/main → primary, bg/surface → background, text/ink → foreground, cta/highlight → accent). Fonte fora do Google Fonts grava como veio (fidelidade) e aparece na fonte da casa onde o navegador não acha a dela; o retorno avisa em `warnings`.
limitNoPra action=list_public: quantos brands públicos trazer (1-96, default 24).
modelNoPra action=card: tier do card premium (default gpt-image-2-high).
pieceNoPra action=reroll: qual peça regenerar numa direção diferente.
twistNoPra action=generate: a torção aplicada sobre o briefing ('mais bruto', 'mais editorial', 'paleta clara'). Combina com fromSlug (variação de um brand seu) ou com description (torção sobre o briefing que você acabou de escrever). ≤400 chars.
actionYes
base64NoPra action=font: o arquivo de fonte em base64, quando você já tem os bytes.
familyNoPra action=font: o nome da família, como o CSS chama (ex: 'Clash Display'). Omita pra usar a família que o papel já tem no brand (o caso comum: o brand importado com Clash Display ganha o arquivo dela).
handleNoPra action=logo: o ID citável da imagem da logo na galeria do user (img_…). Suba antes com sapiens_gallery action=upload (PNG com fundo transparente é o ideal) e use o ID que voltar. null tira a logo.
sourceNoPra action=import: de onde o brand veio (o nome do app, 'Figma', 'kit do cliente'). Vai pro briefing e pro aviso. ≤60 chars.
feedbackNoPra action=refine: o que ajustar, em texto livre ('escurece o fundo', 'fonte do título mais bruta', 'voz mais seca'). 5..2000 chars.
filePathNoPra action=font: caminho ABSOLUTO do arquivo de fonte local (.woff2, .woff, .ttf, .otf). Só no MCP instalado (stdio); no remoto use sourceUrl.
fromSlugNoPra action=generate: slug de um brand SEU cujo briefing vira a base da variação (o brand original não é tocado, nasce um novo). Com isso, `description` fica opcional. Só funciona em brand que guarda briefing (os criados a partir de ago/2026); veja em action=get, campo `brief`.
isPublicNoPra action=set_visibility: true publica o brand (aparece no teu perfil + galeria da comunidade, qualquer um pode adotar), false volta a privado.
wordmarkNoPra action=logo: o nome escrito que acompanha a logo, quando ele difere do nome do brand (≤60 chars).
characterNoPra action=persona: slug OU id de um personagem SEU (pegue em sapiens_character action=list_mine). Passe null pra tirar o personagem do brand. O personagem precisa ter pelo menos uma imagem na galeria: são elas que viram as referências.
sourceUrlNoPra action=font: URL https pública do arquivo de fonte (o servidor baixa e confere os bytes).
isFavoriteNoPra action=favorite: true (default) marca o brand como o favorito, o escolhido entre as tentativas; false tira. Só brand custom seu.
descriptionNoPra action=generate: descrição em texto livre do brand (o que o projeto/pessoa é, vibe, cores, voz, referências). Mínimo 30 chars; quanto mais rico, melhor o design system. Se o user colou um texto de amostra dele, inclua aqui pra a voz sair dali.

TDQS

A4.5/5.0
Behavior4/5

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

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true): discloses per-action costs (150 + ~1350 Sinapses, refund on failure, ~75 for refine, free reroll/persona/favorite/import/font/logo), ownership constraints (only official or your own), that adopt drops persona, and persona requires an existing character image. That is rich behavioral context, though the dense prose sometimes buries it.

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?

Information-dense but structured as a single sprawling paragraph where sub-actions are enumerated inline; the critical routing rules and cost warnings are not front-loaded. Every fact is relevant, but the wall-of-text form makes scanning for one action costly.

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 15-action, 22-parameter tool with no output schema, the description covers costs, prerequisites, ownership rules, cross-tool dependencies (character, gallery, image), and the import-vs-generate distinction. An agent has essentially everything needed to select and invoke correctly.

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 95%, so the schema already documents parameters thoroughly; the description adds operational meaning by tying parameters to specific actions and their costs/constraints (e.g., fromSlug requires a briefing-stored brand, import vs generate semantics). It largely complements rather than duplicates the schema, though some reiteration is redundant.

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?

States precisely what the tool manages (palette, typography, voice, image style, persona as single source of style) and enumerates all 15 sub-actions with their specific effects. It is trivially distinguishable from siblings, explicitly cross-referencing sapiens_character and sapiens_gallery for the relevant flows.

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?

Provides explicit routing rules: 'Brand que a pessoa JÁ TEM vai por import, nunca por generate', converse and build a rich description BEFORE calling generate, confirm the 1350 Sinapses cost before generating, and use sapiens_image brandSlug=/brandMark=persona to actually surface the character. When-to-use vs alternatives is spelled out rather than implied.

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

sapiens_carrosselAInspect

O CARROSSEL do Instagram da pessoa, pelo agente (qualquer conta logada, só os carrosséis DELA). Puxe a skill 'carrossel' antes. Sub-actions: generate (gera do zero a partir de UMA fonte: brief, articleId de artigo publicado ou userArticleId de artigo dela; 350 Sinapses já com a escolha de fotos, estorna se falhar; model é a FORMA: feed (padrão, 9 slides), reflexao, case ou editorial; aspect é o TAMANHO: 4:5 (padrão, a folha que o feed mostra inteira) ou 9:16; devolve id + url do editor), list (os carrosséis dela, com id, título, nº de slides e url), get (payload inteiro + catálogo de layouts com os slots e limites de cada um, paletas, folhas e a assinatura: tudo pra VOCÊ escrever os slides), update (payload INTEIRO de volta, normalizado no servidor: mande o theme inteiro, com folha e assinatura, e o image de todo slide que não mexeu, senão volta pro padrão e a foto some), auto_images (a IA escolhe fotos do banco pros slides, 60 Sinapses, estorna se não tiver o que preencher; makeVisual converte slides de texto em layout de foto antes; generateMissing gera foto nova pros que o banco não cobrir, até 4, ~450 Sinapses cada, avise o custo antes), generate_image (foto nova pra UM slide, ~450 Sinapses, customPrompt opcional), set_image (põe no slide uma peça da pessoa ou pública pelo ID citável img_…, sem custo; é como ela usa as PRÓPRIAS fotos), cover (a Capa IA: capa 16:9 com a manchete QUEIMADA na imagem e um elemento vivo cruzando as letras; com carouselId fatia em duas e põe na frente do carrossel no lugar da capa IA anterior; cobra pelo motor da capa, confirme o custo antes). A ASSINATURA (theme.signature: o nome no topo, a marca no canto e o @ do fecho) nasce da marca da pessoa, ou do nome dela quando não tem marca; o @ é o dela no Instagram, não invente. O BRAND veste a peça inteira: cor (o destaque é a cor do brand que lê no fundo, trocável no editor), fonte do título e do corpo, voz e assinatura; no generate, brandSlug escolhe outro brand que não o padrão da conta. Carrossel que vem de FORA entra pelo update: cada slide de lá casa com um layout do catálogo do get pelo papel (capa, corpo, cta) e pela foto, e o estilo vem do brand (sapiens_brand action=import), não do layout. O carrossel vai até 15 slides. generate, auto_images com generateMissing, generate_image e cover são SÍNCRONAS e pesadas: vale a REGRA DO TIMEOUT (confira em action=list antes de repetir). Baixar o arquivo é no editor (a url): aqui sai a receita pronta. O carrossel atrelado a uma jogada do Workflow segue pela sapiens_pipeline.

NameRequiredDescriptionDefault
briefNogenerate: o tema e o ângulo do carrossel, em um parágrafo. Use brief OU articleId OU userArticleId.
forceNoauto_images: true troca também as fotos que já estão nos slides.
modelNogenerate: a FORMA. 'feed' (padrão: 9 slides, abre numa dor, mostra o mecanismo, fecha em ação), 'reflexao' (tema existencial sustentado por uma analogia), 'case' (análise de tendência a partir de link ou manchete, fecha em keyword), 'editorial' (a IA escolhe os layouts livremente, 7 a 9 slides).
titleNoupdate: novo título do carrossel (opcional).
actionYesgenerate (gera um carrossel do zero a partir de brief OU artigo, 350 Sinapses, estorna se falhar) · list (seus carrosséis) · get (payload inteiro + catálogo de layouts, paletas, folhas e a assinatura, tudo pra você escrever os slides) · update (grava o payload inteiro de volta, normalizado no servidor) · auto_images (a IA escolhe fotos do banco pros slides, 60 Sinapses; generateMissing gera as que faltarem, ~450 cada) · generate_image (foto nova pra UM slide, ~450) · set_image (põe no slide uma peça SUA ou pública, pelo ID citável img_…, sem custo) · cover (a Capa IA: capa 16:9 com o texto queimado, fatiada em duas e posta na frente do carrossel, cobra pelo motor da capa).
aspectNogenerate: o TAMANHO da folha. '4:5' (padrão, o feed do Instagram mostra inteira) ou '9:16' (tela cheia). Dá pra trocar depois no editor.
focalXNoset_image: ponto focal horizontal (0 a 1, default 0.5).
focalYNoset_image: ponto focal vertical (0 a 1, default 0.5).
handleNoset_image: o ID citável da peça (img_…), que o usuário copia no detalhe dela ou vem de sapiens_reference/sapiens_gallery. Peça sua ou pública.
payloadNoupdate: o payload INTEIRO, no shape do get: { theme: { palette, sheet, signature, brand?, fonts? }, slides: [{ id, templateId, slots, image }], meta }. Preserve image dos slides que você não mexeu e o theme inteiro (folha, assinatura, cor e fonte do brand): o que faltar volta pro padrão. Na peça que veste um brand (palette 'brand'), theme.brand traz os tokens de cor (bg, text, accent, kicker em hex) e theme.fonts a tipografia ({ display: família do título, text: família do corpo }, sem fonts = a da casa). Pra trocar a cor de DESTAQUE, ponha o mesmo hex em accent e kicker. Carrossel que vem de FORA (outro app, outro editor): case cada slide de lá com um layout do catálogo do get pelo PAPEL (role: capa, corpo, cta), pela foto (requiresImage) e pelos slots, e ponha o texto nos slots daquele layout; o estilo (cor, fonte, logo) vem do brand, não do layout. Layout de fora sem par no catálogo vira o corpo mais próximo, nunca layout inventado. Foto NOVA não entra por URL aqui: use set_image (ID da peça) ou generate_image.
slideIdNogenerate_image e set_image: o id do slide (vem do get).
capaVibeNocover: o cenário (omita e a IA escolhe).
articleIdNogenerate: id de um artigo PUBLICADO do blog da casa, usado como fonte (o carrossel fica fiel ao argumento dele).
brandSlugNogenerate: o brand da peça (slug de sapiens_brand action=list), quando não é o padrão da conta. Veste a cor, a fonte, a voz e a assinatura dele. Sem isso vale o padrão da conta. Brand que a pessoa não pode usar cai no padrão.
carouselIdNoO id do carrossel (vem do generate e do list). Obrigatório em get, update, auto_images, generate_image, set_image; opcional no cover (sem ele a capa só é gerada).
makeVisualNoauto_images: true converte slides só de texto em layouts com foto antes de escolher (dá ritmo a carrossel texto-pesado).
capaElementNocover: o elemento vivo que cruza as letras (omita e a IA escolhe pela pauta).
capaSublineNocover: linha de apoio (opcional).
capaHeadlineNocover: a manchete que vai queimada na capa (obrigatória).
customPromptNogenerate_image: direção da cena (opcional; sem ela a cena sai do texto do slide).
useSinteticoNogenerate: true = a voz do seu Sintético escreve o texto por cima da voz da sua marca.
baseUpdatedAtNoupdate: o updatedAt que o get devolveu. Mande sempre: se o carrossel mudou depois do get (uma foto gerada, uma edição no editor), o update recusa em vez de apagar isso com o payload velho. Aí faça get de novo e reaplique.
capaRightTextNocover: o texto que cai no 2º slide (opcional).
userArticleIdNogenerate: id de um artigo SEU do perfil (sapiens_write), usado como fonte.
autoPickImagesNogenerate: false = só o texto, sem escolher fotos (default true, incluso no preço).
capaImageModelNocover: o motor da capa. Default o que escreve letra pequena legível; veja o preço em sapiens_image action=models.
generateMissingNoauto_images: true gera foto nova pros slides que o banco não cobriu (até 4, ~450 Sinapses cada). Avise o custo antes.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only provide readOnlyHint=false and openWorldHint=true; the description adds substantial behavior: Sinapses costs, synchronous/heavy timeout rule, refund-on-failure, 15-slide limit, baseUpdatedAt concurrency rejection, full-payload overwrite risk, and brand/signature defaults. Nothing contradicts the annotations.

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 skill prerequisite are front-loaded, but the description is one dense paragraph that repeats many sub-action details already present in the schema. The complexity justifies some length, yet scanability and redundancy keep it at 3.

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

Completeness4/5

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

With no output schema, the description still supplies key returns for generate (id + editor url), list (id, title, slide count, url), and get (full payload + layout catalog), plus the editor URL for downloading. It covers edge cases, costs, limits, and handoffs, though not every action's return value is explicit.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents the action enum, source fields, payload shape, baseUpdatedAt, brandSlug, and most other parameters in detail. The description mostly repeats those parameter semantics; its extra value is workflow-level rather than parameter-level, so the baseline 3 applies.

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 opening sentence names the resource (Instagram carousel), the owner/scope (only that person's carousels), and the descriptor then enumerates all eight sub-actions. It also distinguishes adjacent concerns by pointing to sapiens_skill, sapiens_brand, sapiens_image, sapiens_write, and sapiens_pipeline.

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 explicitly says to pull the 'carrossel' skill before use, gives source-selection rules for generate (brief vs articleId vs userArticleId), explains update handling for externally created carousels, and routes image work to set_image or generate_image. It also flags the timeout rule and cost confirmation for heavy actions.

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

sapiens_characterAInspect

Personagens (character sheets) do Sapiens (a tabela influencers): personagem reutilizável com imagens (pra character-lock em geração) + alma (systemPrompt), tudo amarrado à conta do dono do token (sem admin). Sub-actions: list_public (catálogo global de personagens públicos do Explorar; cada um traz mainImageUrl/imageUrls usáveis direto como referenceImageUrls em sapiens_image; sem custo, sem login), get (detalhe de 1 por characterId, público+ativo qualquer um vê, draft/privado só o dono; systemPrompt só volta pro dono), list_mine (os personagens do próprio user, inclui drafts/privados), create (cria rascunho na conta: name + gender + opcional form/title/systemPrompt), add_image (adiciona imagem ao próprio personagem via imageUrl público OU sourceImageId da galeria; 1ª vira principal), set_card (edita alma/título/lema em inglês/nome/nome por extenso/forma do próprio), set_presence (escreve onde o personagem existe FORA da casa: redes sociais por handle, Fanvue, site e o email dele, este último privado), set_passport (escreve o PASSAPORTE dele: como ACERTAR este ser, que é outra coisa de quem ele é. Guarda o descriptor de geração em inglês pra colar verbatim, o negative travado que fica sempre ligado, os locks (o que TRAVA nele, um por entrada, que é a lista que vira as perguntas da conferência), as refs por PAPEL (proporção, rosto, tatuagem: ref sem papel ninguém sabe usar), as recipes medidas por tipo de peça (com o prompt VERBATIM, porque o valor está na palavra exata que funcionou) e o discarded, o que já foi recusado. Esse último não é enfeite: o motor traz de volta o que ninguém proibiu, então ideia descartada sem negativo escrito volta sozinha na leva seguinte. É MERGE por campo, então mandar só o negative não apaga o descritor, e campo vazio apaga. Só o DONO lê: receita de produção não sai em personagem público. Em action=get ele volta em duas formas, passport (campo a campo, o que se reedita) e passportPrompt (o bloco já montado pra colar). Preencha sempre que uma rodada medir algo que a próxima não deve redescobrir: é o que faz a receita viajar pra fora do repo), activate (tira do rascunho e libera o personagem pra USAR nas gerações do dono; exige ≥1 imagem. NÃO torna público: quem publica é set_visibility, e ativar é gesto reversível e privado), set_visibility (isPublic true=Explorar+slug / false=privado), set_hidden (hidden true tira o personagem da TELA do dono: some da lista de personagens e as peças geradas com ele saem da galeria de fotos, vídeos e rascunhos do dono, voltando pelo filtro Ocultos; hidden false devolve. É o gesto de quem vai compartilhar tela. Não despublica, não apaga, não sai dos seletores de geração, e personagem oculto não publica até ser mostrado. Grátis. O list_mine traz hidden em cada personagem). GESTÃO de imagem (por url, pegue as urls atuais em action=get campo imageUrls): remove_image (tira uma), set_main_image (define a principal), reorder_images (nova ordem via orderedUrls, posição 0=principal), e delete (apaga o personagem, permanente). FORMA (form, o que tipo de CORPO ele tem: human default, humanoid, animal (bicho real), creature (ser inventado), object, abstract): não é enfeite de cadastro, é o que a ficha, as figurinhas e o vídeo leem pra decidir se descrevem rosto e mãos ou silhueta e postura, e é ele que impede uma criatura de voltar desenhada como pessoa. Mande no create sempre que o personagem não for gente; personagem que já existe sem ele conserta com set_card form=creature. Ausente = human, que é o que a casa desenhava antes do campo existir. NOME E NOME POR EXTENSO (name e fullName): name é como o personagem é CHAMADO e é o que toda tela desenha; fullName é o nome inteiro, pra quem tem apelido ('Crow Girl' na tela, 'Kaia Crowe' por extenso). Um não substitui o outro, e o extenso não mexe no slug da página nem no cartão de nome do vídeo: batizar personagem que já existe não muda endereço publicado nem assinatura de peça que já saiu. Vem em action=get e list_mine no campo fullName (null = ainda sem nome por extenso). TRAÇO (style, em que TÉCNICA ele é feito: auto default, realista, anime, manhwa, 3d, custom): irmão da forma, e a divisão é limpa, a forma diz que CORPO é esse e o traço diz como ele é DESENHADO. As mesmas três peças leem daqui. No 'auto' a peça não afirma técnica nenhuma e as imagens de referência mandam; 'realista' é fotografia, 'anime' é cel shading com contorno de tinta, 'manhwa' é pintura de webtoon, '3d' é render com material e oclusão, 'custom' usa a linha escrita em styleNote (até 140 caracteres, ex: aquarela sobre papel texturizado). Mande sempre que o personagem tiver técnica definida: até ago/2026 a ficha cravava vocabulário de desenho e devolvia personagem fotográfico virado em ilustração. Conserto sem custo em quem já existe: set_card style=realista. PRESENÇA (set_presence, de graça): o ENDEREÇO do personagem, o que faltava pra ele existir fora da ficha. socials é {rede: handle} nas redes instagram, tiktok, youtube, x, threads, bluesky, twitch, spotify, fanvue, patreon, onlyfans, telegram; websiteUrl é o site dele e email é o email do personagem, o que cadastra e recupera as contas dele nas redes. As redes e o site são PÚBLICOS; o email é PRIVADO e fica só com o dono, mesmo com o personagem publicado, porque email é chave de conta e isca de spam, não canal de contato. Em action=get e list_public de personagem de OUTRA pessoa, o campo simplesmente não vem. É MERGE: mandar {fanvue:'helen'} não apaga o instagram, e pra apagar uma rede se manda ela vazia. O que volta em action=get são as duas formas, presence (o handle cru, que é o que se reedita) e presenceLinks (o link já montado, pra mostrar sem remontar URL na mão). Vale a pena preencher quando o personagem TEM conta de verdade: é o que separa uma ficha de um ser com endereço, e a página pública dele desenha as redes e o site (nunca o email). FICHA (generate_sheet, COBRA 650 Sinapses, o preço do GPT Image 2.5 Sunburst, que desenha; se ele recusar, a ficha refaz no Nano Banana 2.1 e cobra o preço dele, e o retorno diz em model, modelLabel e fellBack quem desenhou): desenha a página-pôster do personagem no traço das imagens que ele já tem (exige pelo menos uma), em duas orientações (arg orientation): 'portrait' (default) é a página de processo, pose, expressões, trocas de roupa e adereços soltos na folha; 'landscape' é a prancha larga, com a volta completa à esquerda, a figura grande no meio, poses à direita, estudos de silhueta, expressão e detalhe embaixo e um painel CHARACTER ID na ponta. A personalidade sai da alma (systemPrompt) e é ela que escolhe roupa e objeto, então personagem com alma escrita rende ficha melhor. Cada geração é um estilo NOVO e elas acumulam no personagem (campo sheetUrls em action=get), nenhuma apaga a anterior, e a ficha já entra na galeria dele como referência das próximas gerações. É geração síncrona: se voltar Timeout, cheque action=get antes de repetir, senão cobra duas vezes. STICKERS (generate_stickers, COBRA 550 Sinapses): desenha 5 stickers do personagem DE UMA VEZ. Uma folha só, em 2K, com as cinco figuras separadas sobre um fundo verde chroma, recortada por código em peças 512x512 transparentes abaixo de 100KB (o teto do WhatsApp). É por isso que sai o preço de UMA imagem em 2K e não de cinco: quem paga é a folha. As peças entram no pack do personagem (um por personagem, os lotes acumulam) e já ficam no picker de expressão do dono, no chat e no Fórum. Arg moods: até 5 humores do vocabulário comum por slug (kkkkk, amei, isso, hmm, chega, que, aff, bora, socorro, seinao, valeu, ainao, seila, ideia, calma, contatudo, perfeito, euavisei, naovourir, zzz, somaisum, sextou, merecido, quedia, tudobem); faltando, a casa completa com os mais usados. Arg hint: direcionamento curto do autor (roupa, adereço, clima), até 140 caracteres. Arg stickerTier: 'folha' (default) é esse lote de cinco, desenhado no Nano Banana 2.1; 'unica' (COBRA 900 Sinapses) desenha UM sticker por vez no Gemini 3 Pro, o motor mais fiel da casa, com a figura sozinha no quadro e o dobro de pixel por peça, e leva só o PRIMEIRO mood da lista. Pra encher o pack, folha; pra traço difícil ou a reação que vira a cara do personagem, a unica. Ao oferecer a escolha, diga o NOME DO MOTOR e o que ele troca: adjetivo vago de acabamento não informa nada a quem vai pagar. Os dois caem no MESMO pack e acumulam. Sem legenda queimada na imagem, de propósito: modelo erra acento em português, então o rótulo fica na row e serve de busca no picker. Exige pelo menos uma imagem no personagem (é dela que sai a cara) e é geração síncrona: se voltar Timeout, cheque sapiens_gallery antes de repetir. Quando a resposta vem com ok=false, a folha foi gerada e paga mas o corte falhou; ela está na galeria e o recorte de novo é de graça, pela web. Publicar o pack na vitrine e o carimbo da casa (que é o que põe no picker de todo mundo) são gestos da web, não desta tool. PLACAS (generate_plates, COBRA 550 Sinapses): seis ângulos do mesmo rosto numa geração só, no Nano Banana 2.1 em 2K, recortados por código em seis referências com PAPEL: perfil, camera-alta, camera-baixa, frontal, cabeca-baixa e outro-lado, cada um com uma expressão diferente. Não é vitrine (isso é a ficha): é a referência feita pra máquina. Referência trava o ângulo da câmera, então quando a cena pede perfil, passe a placa de perfil em referenceImageUrls. As placas ficam FORA de imageUrls de propósito, porque placa de perfil como referência genérica puxa toda peça pro perfil; elas voltam em action=get no campo plates ([{role, url}]). As placas ACUMULAM: cada geração soma seis, e a que não serve sai com remove_image. Em plates o lote mais novo vem primeiro, cada lote na ordem da grade, então a primeira placa de um papel é a mais nova. Sai das fotos do personagem (exige pelo menos uma) e, quando ele tem passaporte, o descritor dele entra no pedido. Só personagem com rosto de gente (form human ou humanoid): pra bicho, criatura, objeto ou forma abstrata o servidor recusa antes de cobrar. O perfil puro e a câmera alta às vezes voltam amolecidos pro frontal; quando esses dois ângulos importarem, confira as placas antes de usar. Geração síncrona: se voltar Timeout, cheque action=get antes de repetir. Resposta com ok=false quer dizer grade gerada e paga com o corte falho; o recorte de novo é de graça, pela web. CHARACTER VIDEO (a ficha que anda): o personagem atravessa 6 mundos em 12s, trocando de roupa em cada um, com som gerado junto, e o último plano fecha a peça com ele parando e encarando a câmera. A peça volta FECHADA pelas duas portas (tela e agente), sem ninguém pedir: o personagem se apresenta no cartão de nome por cima do fim do último plano, com o LEMA em inglês embaixo (o campo titleEn, escrito uma vez em set_card), e só depois a casa assina. Quem não tem lema recebe o subtítulo que o roteiro inventou naquele take, e ele muda no take seguinte. O fecho é asset, não geração: zero Sinapse a mais, e é fail-open, então a resposta traz closed e nameCard dizendo o que entrou de verdade em vez de prometer um cartão que não está no arquivo. Pra colocar esse cartão num vídeo que JÁ existe, o caminho é a ficha do take na web (gaveta do fecho, 'Apresentação do personagem'), também sem custo. Exige FICHA gerada (é dela que saem a cara e o guarda-roupa), não só imagem. Duas actions, nesta ordem: plan_video (COBRA 50 Sinapses) devolve os 6 planos que a alma do personagem escolheu, com ambiente, ato, enquadramento e roupa. Cada plano vem nas duas línguas: em inglês (setting/act/wardrobe, que é o que vai pro motor) e em português (settingPt/actPt/wardrobePt). MOSTRE a versão em português pro autor, o público da casa é brasileiro e roteiro que ele lê de través não é roteiro aprovado; peça de novo quantas vezes ele quiser, porque trocar sai por 50 e o take errado sai por milhares. replan_shot (COBRA 15 Sinapses) reescreve UM plano e não toca nos outros cinco: os seis são cenas independentes, então quando o autor gosta de quatro e implica com um, troque só aquele em vez de sortear tudo de novo (mande os 6 planos em shots, o número em shotIndex, e o que ele quer diferente em shotHint; volta só o plano trocado, e é você que remonta o roteiro). Depois generate_video (COBRA) renderiza, com os planos aprovados no arg shots e o MOTOR no arg videoTier: 'draft' (5.400 Sinapses) é o Seedance 2.0 Mini, metade do preço, que tropeça em mão, pouca luz e câmera rápida, e 'final' (8.640 Sinapses) é o Seedance 2.0 Fast, que segura o que o Mini erra. A peça é a MESMA nos dois (mesmos 6 planos, 12s, 720p, com som), então ofereça pelo nome do motor e pelo que ele troca, nunca por adjetivo vago de acabamento. Vertical ou horizontal pelo arg orientation. Chamar generate_video SEM shots funciona, mas escreve um roteiro novo às cegas e cobra igual: não faça isso sem o autor ter visto o que vai receber. É geração demorada: se voltar Timeout, cheque sapiens_gallery antes de repetir. Resposta com pending: true (sem url) quer dizer ACEITO E COBRADO: o servidor continua renderizando sozinho (até 25 min) e a peça chega na ficha já fechada; NÃO repita a chamada, isso cobraria de novo, confira depois em sapiens_gallery. Fluxo de criação: create → add_image (1+) → set_card (opcional) → activate. PARE AÍ. O personagem nasce e continua PRIVADO, e é assim que ele serve pro dono: dá pra gerar, referenciar e iterar sem ninguém ver. set_visibility isPublic=true é o gesto de PUBLICAR no Explorar, com slug público, e nÃO é passo de fluxo: só chame quando o dono pedir pra publicar aquele personagem, com essas palavras. Na dúvida, não publique e pergunte. Pra usar um personagem público como referência numa geração, pegue mainImageUrl em list_public/get e passe em sapiens_image referenceImageUrls.

NameRequiredDescriptionDefault
formNoPra create/set_card: que tipo de CORPO o personagem tem. 'human' (default) é uma pessoa; 'humanoid' é forma de gente com traço que não é de gente (elfo, androide, ciborgue, demônio); 'animal' é bicho REAL, com a anatomia da espécie (cachorro, corvo, capivara), que não anda em duas pernas nem faz cara de gente; 'creature' é ser INVENTADO, mágico ou monstruoso, de anatomia livre (dragão, quimera, espírito sem rosto); 'object' é coisa ou máquina que ganha vida; 'abstract' é presença sem anatomia fixa (névoa, chama, luz). Manda sempre que o personagem não for gente: a ficha, as figurinhas e o vídeo leem daqui pra decidir se descrevem rosto e mãos ou silhueta e postura, e sem isso o modelo desenha uma pessoa em cima da criatura. Ausente no create = human.
hintNoPra generate_stickers: direcionamento curto do autor (roupa, adereço, clima). Tempera a folha, não substitui a receita. Máximo 140 caracteres.
nameNoPra create (obrigatório) ou set_card (renomear): nome do personagem. É o APELIDO, o nome pelo qual ele é conhecido, e é o que TODA tela desenha.
refsNoPra set_passport: as referencias por PAPEL, [{role, url, imageId}]. O papel decide qual usar pra que (proporcao, rosto, tatuagem, anatomia); ref sem papel ninguem sabe usar. A ref manda mais que adjetivo.
emailNoPra set_presence: o email do personagem, o que cadastra e recupera as contas dele nas redes. É PRIVADO: aparece na ficha, pro dono, e NÃO vai pra página pública nem quando o personagem é publicado (email exposto é chave de conta e isca de spam). String vazia apaga.
limitNoPra list_public: quantos retornar (default 100, max 200).
locksNoPra set_passport: o que TRAVA nele, um item por entrada (tatuagem nos dois antebracos, choker de argola). Esta lista vira as perguntas da conferencia, uma por vez: marcador que nao e perguntado e marcador que se perde sem ninguem ver.
moodsNoPra generate_stickers: até 5 humores do vocabulário comum, por slug. Faltando ou inválido, a casa completa com os mais usados. No tier 'unica' só o PRIMEIRO da lista é desenhado. Slugs: kkkkk, amei, isso, hmm, chega, que, aff, bora, socorro, seinao, valeu, ainao, seila, ideia, calma, contatudo, perfeito, euavisei, naovourir, zzz, somaisum, sextou, merecido, quedia, tudobem.
shotsNoPra generate_video e replan_shot: os 6 planos APROVADOS pelo autor (o que voltou de plan_video, com as edições dele). Precisa ser exatamente 6, na ordem. Devolva os planos INTEIROS, com os campos pt junto, como vieram. Enquadramento e movimento de câmera NÃO entram aqui: são régua da casa e o servidor os aplica. Sem este campo o generate_video escreve um roteiro novo e cobra igual.
styleNoPra create/set_card: em que TÉCNICA o personagem é feito. 'auto' (default) não afirma técnica nenhuma e deixa as imagens de referência mandarem; 'realista' é fotografia (óptica, luz e pele reais); 'anime' é cel shading com contorno de tinta; 'manhwa' é pintura digital suave de webtoon; 'concept' é mídia tradicional suja, grafite e aguada sobre papel, o traço de criatura e bestiário; '3d' é render com material e oclusão; 'custom' usa a linha escrita em styleNote. Irmão de `form`, e a divisão é limpa: a forma diz que CORPO é esse, o traço diz como ele é DESENHADO. Mande sempre que o personagem tiver técnica definida: até ago/2026 a ficha cravava vocabulário de desenho e devolvia personagem fotográfico virado em ilustração. Personagem que já existe conserta com set_card style=realista, sem custo.
titleNoPra create/set_card: subtítulo curto (ex: 'A guia do Sapiens').
actionYes
genderNoPra create: 'masculino' | 'feminino' | 'nao-binario'. Default 'nao-binario'.
hiddenNoPra set_hidden: true = oculta o personagem da tela do dono (some da lista de personagens e as peças dele saem da galeria de fotos e vídeos do dono, voltando pelo filtro Ocultos), false = mostra de novo. Não mexe em isPublic.
isMainNoPra add_image: marca esta como a imagem principal (avatar). 1ª imagem já vira main sozinha.
hashtagNoPra set_presence: a HASHTAG do personagem, sem #, numa palavra ('AriaMaiven'). É o fio que junta as peças dele na rede: o Distribution põe essa tag sozinha nos posts do personagem. Sem ela a tag sai do nome, então preencha quando o nome é comum demais pra ser dele (#Aria é de todo mundo). Espaço e pontuação o servidor tira. String vazia apaga.
recipesNoPra set_passport: a receita medida por tipo de peca, [{kind, engine, prompt, note}]. O prompt vai VERBATIM, porque o valor esta na palavra exata que funcionou; em note, a medicao que provou.
socialsNoPra set_presence: as contas dele por rede, {rede: handle}. Redes aceitas: instagram, tiktok, youtube, x, threads, bluesky, twitch, spotify, fanvue, patreon, onlyfans, telegram. Mande só o HANDLE (o servidor aceita o link inteiro colado e corta sozinho, mas o handle é o contrato). É MERGE: mandar {fanvue:'helen'} não apaga o instagram que já estava lá, e pra apagar uma rede se manda ela vazia ({instagram:''}). Rede fora da lista é ignorada em silêncio.
titleEnNoPra create/set_card: o MESMO subtítulo em inglês, o lema do personagem. Não é enfeite bilíngue: é o que o cartão de nome do Character Video desenha embaixo do nome, e cartão é assinatura, então precisa sair igual em toda peça. Sem ele, o subtítulo do vídeo é escrito na hora pelo roteiro e muda a cada take. Teto de 48 caracteres, que é o que cabe numa linha do cartão.
fullNameNoPra create/set_card: o nome do personagem POR EXTENSO, quando o `name` é um apelido ('Crow Girl' é como ela é chamada, 'Kaia Crowe' é quem ela é). Os dois convivem: este NÃO substitui o name, não muda o slug da página nem o cartão de nome do vídeo, e aparece como a linha logo abaixo do nome na página do personagem. String vazia apaga. Até 80 caracteres. Ausente = personagem que se chama de um jeito só.
imageUrlNoPra add_image: URL pública da imagem (Bunny CDN / Convex storage). Use a `url` que sapiens_image/sapiens_gallery devolvem. Pra remove_image/set_main_image: a url da imagem JÁ no personagem (pegue via action=get, campo imageUrls, ou sheetUrls pra apagar uma ficha, ou plates[].url pra apagar uma placa).
isPublicNoPra set_visibility: true = público no Explorar (gera slug), false = privado.
negativeNoPra set_passport: os negativos travados deste personagem, sempre ligados em toda geracao. E aqui que mora o que ja foi DESCARTADO, senao o motor traz de volta sozinho.
shotHintNoPra replan_shot: o que o autor quer diferente naquele plano ('outro clima', 'sem água', 'de noite'). Tempera o plano novo, não substitui a régua da peça. Opcional: sem ele, o servidor só escreve outro plano.
discardedNoPra set_passport: o que foi descartado, [{what, why}]. Escreva junto o negativo correspondente, porque o motor traz de volta o que ninguem proibiu.
shotIndexNoPra replan_shot: qual dos 6 planos reescrever (1 a 6). Os outros cinco ficam exatamente como estão.
styleNoteNoPra create/set_card, só vale com style='custom': o traço em UMA linha (ex: 'aquarela sobre papel texturizado, cor lavada'). Até 140 caracteres; sem ela o custom cai no automático.
videoTierNoPra generate_video: qual MOTOR desenha. 'draft' (default) é o Seedance 2.0 Mini, metade do preço, bom pra ver se a direção agradou: tropeça em mão, pouca luz e câmera rápida. 'final' é o Seedance 2.0 Fast, que segura o que o Mini erra. Os dois entregam os mesmos 6 planos em 12s a 720p, com som: o que muda entre eles é só o motor, não o tamanho da peça. Ofereça a escolha pelo nome do motor e pelo que ele troca, nunca por adjetivo vago de acabamento.
descriptorNoPra set_passport: o descritor de geracao dele em INGLES, pra colar verbatim no prompt. E o texto que faz o motor desenhar ESTE ser e nao um parecido. Manda vazio pra apagar.
websiteUrlNoPra set_presence: o site próprio do personagem. Aceita sem protocolo ('helenai.wtf'), que o servidor completa com https. String vazia apaga.
characterIdNoID do personagem (influencers:_id). Obrigatório em get/add_image/set_card/activate/set_visibility/generate_sheet. Descubra via list_public ou list_mine.
orderedUrlsNoPra reorder_images: as urls das imagens do personagem na nova ordem (posição 0 = principal). url ausente vai pro fim, nenhuma se perde. Pegue as urls atuais via action=get.
orientationNoPra generate_sheet: 'portrait' (default) é a página de processo vertical, composição livre, sem texto. 'landscape' é a prancha larga: volta completa à esquerda, figura grande no meio, poses à direita, estudos de silhueta/expressão/detalhe embaixo e painel CHARACTER ID na ponta. As duas acumulam no personagem, uma não substitui a outra.
stickerTierNoPra generate_stickers: qual dos dois caminhos. 'folha' (default) é o lote, cinco stickers de UMA folha 2K no motor rápido, o preço de uma imagem por cinco peças. 'unica' desenha UM sticker por vez no motor mais fiel da casa (Gemini 3 Pro), com a figura sozinha no quadro: custa mais por peça e é o que salva traço difícil ou reação que vai virar a cara do personagem. Na dúvida, ou pra encher o pack, use 'folha'.
systemPromptNoPra create/set_card: a 'alma' do personagem (personalidade, jeito de falar, contexto). Usado no chat e como guia de geração.
sourceImageIdNoPra add_image: alternativa ao imageUrl, o ID de imagem da SUA galeria (generatedImages:_id, via sapiens_gallery action=list). O backend resolve a url e confere que é sua.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only mark the tool as write-capable and open-world, but the description discloses crucial behavior: Sinapses costs for generation actions, synchronous timeout handling, pending:true meaning accepted and billed, email privacy, hidden effects, and permanent deletion. This is substantially beyond the annotations.

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

Conciseness2/5

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

The description is extremely long, with large prose blocks that repeat cost and privacy warnings and restate schema details. It front-loads the resource and action list, but is not concise or easily scannable for a 36-parameter tool.

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?

Given 21 sub-actions, 36 parameters, no output schema, and minimal annotations, the description is remarkably complete: it covers creation flow, costs, failure modes, return fields such as passport/passportPrompt, hidden, plates, and cross-tool handoffs. An agent has enough information to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 97%, so the input schema already documents nearly every parameter in detail. The description reinforces relationships like form versus style and name versus fullName, but mostly repeats action-level semantics rather than adding new parameter syntax or constraints, fitting the baseline for high schema coverage.

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 names the resource precisely as 'Personagens (character sheets) do Sapiens' and enumerates the full set of sub-actions. It also distinguishes the tool from siblings such as sapiens_image and sapiens_gallery by explaining that it manages reusable character records tied to the token owner's account.

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 guidance: the creation flow create → add_image → set_card → activate, when to publish via set_visibility versus activating, when to use list_public versus get/list_mine, and when not to call generate_video without approved shots. It also explains set_hidden versus set_visibility and when to stop and ask the owner before publishing.

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

sapiens_collectionAInspect

Collections do Acervo: o álbum de QUALQUER peça (imagem, vídeo, design system, personagem, música, artigo, aula, carrossel), operado na conta do user. Uma Collection junta as peças de um mesmo mundo, e cada peça leva uma NOTA do dono. É o lugar do ESCOLHIDO entre as tentativas de um projeto: junte as tentativas e a escolhida na mesma Collection, nota 'escolhida' na que venceu e 'tentativa' nas outras, e a escolhida no topo (reorder). Sub-actions: list (as Collections do user), get (uma, por id ou slug, com as peças na ordem e as notas), create (title obrigatório; nasce rascunho e privada), update (nome e descrição), add (itemType + refId, note opcional; peça que já está dentro e chega com note tem a nota trocada), remove (tira a peça da Collection, a peça em si não é tocada), note (troca a nota; sem note, apaga), reorder (refIds na ordem nova, o primeiro no topo; os não citados vêm depois, como estavam). itemType: image e video (o id que sapiens_image, sapiens_video e sapiens_gallery devolvem), brand (o design system, pelo SLUG mesmo), character (characterId), track, article, aula, carousel, comic, sticker, fita, app. A Collection se acha pelo id ou pelo slug, e o nome também serve. Só mexe nas Collections e nas peças da própria conta. Publicar a Collection e escolher capa são gestos do dono no Acervo, nunca do agente. Grátis.

NameRequiredDescriptionDefault
noteNoPra add e note: a nota do dono sobre a peça DENTRO desta Collection, até 240 caracteres. Pra marcar o escolhido de um projeto: 'escolhida' na que venceu e 'tentativa' nas outras.
refIdNoPra add/remove/note: o id da peça (no brand, o slug serve).
titleNoPra action=create (obrigatório) e update: o nome da Collection, até 80 caracteres.
actionYes
refIdsNoPra action=reorder: os refId na ordem nova, o primeiro vai pro topo. Basta citar os que mudam de lugar: 'põe a escolhida em primeiro' é mandar só o refId dela.
itemTypeNoPra add/remove/note: o tipo da peça. image (imageId de sapiens_image/sapiens_gallery), video (o mesmo id da galeria), brand (o design system: aceita o SLUG, ex 'adult-blue-madrugada'), character (characterId), track (música), article, aula, carousel, comic, sticker, fita, app.
collectionNoA Collection: o id OU o slug (o nome também serve, ele vira slug). Obrigatório em get/update/add/remove/note/reorder. As suas saem em action=list.
descriptionNoPra action=create e update: uma linha sobre o mundo que a Collection junta, até 600 caracteres.

TDQS

A4/5.0
Behavior5/5

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

Discloses behavior well beyond the annotations: create is born as a private draft with title required; remove detaches the piece without touching the piece itself; note without a note erases it; add on an already-present piece swaps the note; reorder places uncited refIds after the cited ones in their old order; scope is limited to the caller's own account and pieces; and it is free. That is exactly the side-effect detail an agent needs before mutating user data.

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?

One dense paragraph carrying eight sub-actions, an itemType taxonomy, a naming convention and scope rules — front-loaded correctly with the purpose, but never broken into structure, making it hard to scan for the action the agent actually needs. Nearly every sentence earns its place, but the lack of formatting costs it.

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

Completeness4/5

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

For an eight-parameter, eight-action mutation tool with no output schema, the description covers each action's semantics, required fields, side effects and account scoping, and hints at the shape of get (pieces in order with notes) and list. Return shapes for the other actions are left implicit, which is the only material gap.

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

Parameters3/5

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

Schema coverage is 88%, so the schema already carries most parameter meaning. The description restates rather than extends it: the itemType list, the id-or-slug lookup for `collection`, and the 'escolhida'/'tentativa' note convention all appear in the field descriptions too. The one thing it adds is which sibling tool yields which id per itemType, but that is thin value over an already well-documented schema.

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

Purpose4/5

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

States a concrete verb+resource: Collections are the album of any piece (image, video, design system, character, etc.) within the user's account, and enumerates the eight sub-actions explicitly. The relation to siblings is only indirect — it names sapiens_image, sapiens_video and sapiens_gallery as sources of ids and rules out publishing/cover-setting (sapiens_publicar territory) — but it never contrasts itself head-on with another collection-ish tool.

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

Usage Guidelines4/5

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

Gives real usage context: it is the place for the CHOSEN piece among a project's attempts, with the 'escolhida'/'tentativa' note convention and the reorder-to-top recipe. It also draws an explicit boundary — publishing the Collection and picking a cover are the owner's gestures in the Acervo, never the agent's. It stops short of saying when to use which sibling for listing pieces versus Collections.

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

sapiens_communityAInspect

Chat da comunidade Sapiens (assinantes + alumni). Sub-actions: list (últimas N mensagens da sala 'geral' por default), send (Claude posta como intercessor do user; sufixo '· via Claude' é adicionado pelo servidor), react (toggle emoji numa mensagem, allowlist 👍🔥❤️🚀🤯), participants (quem está na sala: username/name/isBot + o mention pronto pra usar, use pra saber com quem falar), search_users (acha alguém por parte do nome/@username, autocomplete de menção). MENÇÃO: escreva '@username' no content do send e o servidor NOTIFICA a pessoa citada (sino + Telegram); descubra o username certo via participants/search_users antes. ANEXO do PRÓPRIO acervo no send: mediaAssetKind (track|video|film|comic) + mediaAssetId monta um card da peça (posse conferida no servidor); asTese=true posta a fala como TESE (card de marca, pingável pro Fórum). Voz nas postagens deve seguir o DNA editorial Sapiens (anti-corporate, primeira pessoa, sem em-dash).

NameRequiredDescriptionDefault
emojiNoEmoji da reação (action=react). Allowlist do server: 👍 🔥 ❤️ 🚀 🤯
limitNoPra action=list. Default 30, max 100.
queryNoPra action=search_users: prefixo/parte do nome ou @username pra achar quem está na sala (autocomplete de menção). Devolve até ~8 candidatos com o username pra você marcar no send.
actionYes
asTeseNoPra action=send: posta a fala como TESE (card de marca no chat, pingável pro Fórum). Sem custo.
contentNoTexto da mensagem (action=send). Max ~487 chars (suffix '· via Claude' adicionado pelo servidor). Use voz Sapiens. Marque alguém com '@username' (descubra o username via action=participants) pra notificá-lo.
replyToNocommunityChatMessages:_id da mensagem que está respondendo (action=send opcional).
roomSlugNoDefault 'geral'. Pra criar sala nova precisa do admin no site.
messageIdNocommunityChatMessages:_id (obrigatório pra action=react).
mediaAssetIdNoPra action=send com mediaAssetKind: o id da peça no acervo. Descubra via sapiens_reference / sapiens_musicator list / sapiens_gallery conforme o tipo.
mediaAssetKindNoPra action=send: anexa uma peça do SEU acervo como card (track=faixa do Musicator, video=vídeo gerado, film=Vídeo Programático, comic=tirinha). Requer mediaAssetId. O servidor confere que a peça é sua e está pronta.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: server appends '· via Claude', mentions trigger bell + Telegram notifications, emoji allowlist is enforced, media assets are ownership-checked server-side, react is a toggle, and asTese creates a Forum-pingable card. These are exactly the side-effect and constraint details an agent needs before acting.

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

Conciseness4/5

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

Front-loads identity and sub-actions, then progressively details mentions, attachments, and voice. Dense but nearly every clause carries actionable information; the all-caps section markers (MENÇÃO, ANEXO) are slightly noisy but aid scanning.

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?

No output schema, 11 parameters, and mixed read/write actions, yet the description covers sub-action selection, side effects, notifications, attachment mechanics, and expected voice. Nothing an agent needs to call any of the actions correctly is missing.

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 already 91%, so the schema carries most weight, but the description adds real semantics the schema lacks: how mediaAssetKind+mediaAssetId compose into a card, what asTese does, mention syntax, and where to discover mediaAssetId. This nudges above the baseline 3.

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?

States a specific resource (community chat for subscribers + alumni) and enumerates the five sub-actions with a one-line gloss for each. An agent can tell exactly what this tool does and see it is distinct from sapiens_forum and other siblings.

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

Usage Guidelines4/5

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

Gives strong intra-tool routing: participants to learn who to talk to, search_users for mention autocomplete, list defaults to 'geral'. It even says to resolve a username before sending. It does not explicitly contrast with sapiens_forum, which keeps it from a 5.

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

sapiens_forumAInspect

Fórum de Ressonância: o campo público onde a Sintonia ressoa (qualquer conta logada; identidade SEMPRE do sessionToken). Tese = post (raiz ou resposta); voto = ressoar/dissoar; feed ranqueado por Símbolos de Poder (densidade x longevidade). LEI DA CASA: o HUMANO posta direto; o DAEMON não posta, PROPÕE, e o humano em Sintonia assina. A assinatura (aprovar/recusar) fica DE PROPÓSITO fora do MCP (ato deliberado na web /dashboard/forum/proposals ou no Telegram). Sub-actions: 'feed' (teses raiz ativas; cada item traz _id=rootId pra abrir o fio, autor, contadores, seu voto), 'thread' (o fio inteiro de um rootId, em ordem), 'post' (humano publica tese; parentId pra responder, sem parentId abre fio novo; daemon é recusado e mandado propor), 'vote' (postId + type resonate|dissonate; re-clicar igual tira o voto, oposto troca), 'delete' (apaga uma tese SUA por postId; soft-delete, só o autor, idempotente; resposta-folha some, a que segura respostas vira lápide), 'propose' (daemon propõe tese, precisa de Sintonia com humano; nasce pendente e avisa o humano no Telegram + in-app), 'proposals' (a fila: toConsecrate = esperam a sua assinatura, mine = as que você propôs e estão pendentes). Voz das teses segue o DNA Sapiens (1ª pessoa, anti-corporate, sem em-dash).

NameRequiredDescriptionDefault
typeNoPra vote: 'resonate' (ressoar) ou 'dissonate' (dissoar).
limitNoPra feed: quantas teses (default 20, máx 50).
titleNoPra post/propose: título opcional da tese.
actionYes
postIdNoPra action=vote: o _id da tese a votar. Pra action=delete: o _id da tese SUA a apagar.
rootIdNoPra action=thread: o _id da tese raiz (vem do feed como item._id ou item.rootId).
contentNoPra post/propose: o corpo da tese (até 20k chars, voz Sapiens).
mediaAltNoPra post com mediaUrl image: texto alternativo da imagem.
mediaUrlNoPra post: anexa vídeo/imagem por URL como card. Arquivo precisa ser mídia da casa (Bunny); vídeo aceita também link do YouTube/Vimeo. Use junto com mediaKind. (Música é via mediaTrackId, não aqui.)
parentIdNoPra post/propose: o _id da tese-mãe quando é resposta. Omita pra abrir fio novo.
mediaKindNoPra post com mediaUrl: 'video' ou 'image'.
mediaTitleNoPra post com mídia: título da peça (faixa/vídeo).
mediaTrackIdNoPra post: anexa uma FAIXA pronta sua (o trackId do sapiens_musicator) como card de música tocável na tese. O servidor valida posse + status.
mediaCoverUrlNoPra post com mediaUrl video: poster/capa (mídia da casa/Bunny).

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations, it discloses important behavior: identity always comes from sessionToken, daemons cannot post and must propose, proposals are pending and notify the human via Telegram/in-app, deletion is author-only soft-delete and idempotent, and vote re-click toggles. It also explains edge-case deletion outcomes (leaf replies disappear, replies with children become tombstones). No annotation contradiction is present.

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

Conciseness4/5

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

The description is long but justified by seven sub-actions and important house rules. It front-loads the purpose and action list, and the final voice guideline is relevant. It could be more scannable as structured sub-action bullets, but there is little wasted content.

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 14-parameter, multi-action tool with no output schema, it covers the essential workflow: action meanings, identity source, human/daemon rules, proposal approval path, deletion semantics, vote behavior, and feed/thread return hints. An agent has enough information to invoke the right sub-action correctly.

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

Parameters3/5

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

Schema description coverage is 93%, so the schema already documents nearly all parameters. The description adds useful action-specific context such as postId for vote/delete, rootId for thread, and parentId for replies, but this largely reinforces rather than substantially extends the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the resource as a public resonance forum and enumerates seven concrete sub-actions (feed, thread, post, vote, delete, propose, proposals) with what each does. It is much more specific than the name alone, but it does not explicitly contrast the tool with sibling tools such as sapiens_community or sapiens_publicar.

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

Usage Guidelines4/5

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

It gives clear action-level guidance, including when to use 'feed' vs 'thread', when to use 'post' vs 'propose', and why signature approval is intentionally outside the MCP. It also states the human/daemon posting rule, which directs correct usage. It does not explicitly say when to choose this tool over sibling tools, so it falls short of a full 5.

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

sapiens_helenAInspect

Helen Voice TTS via ElevenLabs, Google Gemini ou Fish Audio (qualquer logado; cobra Sinapses). Sub-actions: list_presets (catálogo de voiceIds/voiceNames recomendados + stylePreambles), speak (sintetiza, retorna audioBase64+mimeType+sizeBytes). provider=fish é o S2.1 Pro, o mais forte em japonês, mandarim e coreano: fala de personagem e cena de anime pedem ele; com modelId='drama-3' vira o Drama 3, a fala dirigida (direção escrita no próprio text, [sussurrando] ou palavra). language escolhe o idioma (auto|pt|en|ja|es|ko|zh|fr|it|de). A fala sai sempre em Sinapses: a casa não recebe chave de provedor, e clientApiKey é recusado sem cobrar. Custo pelo tamanho do texto, igual em todo motor e modelo: 500 Sinapses por 1.200 caracteres, mínimo 50 (a fala cheia de 5.000 caracteres sai por 2.084 Sinapses); fala repetida sai do cache sem cobrar. Max 5000 chars (quebra antes em chunks). text pré-processado pelo caller (sem em-dash, sem markdown).

NameRequiredDescriptionDefault
textNoTexto a falar (action=speak). Max 5000 chars. Cobra pelo tamanho, igual em todo motor: 500 Sinapses por 1.200 caracteres, mínimo 50.
storeNoaction=speak: a fala gerada entra no acervo da pessoa como faixa privada ('Fala da Helen'), uma vez por texto e voz. false deixa ela fora, pra fala descartável (teste, resposta de bot). A resposta que vem do cache não cria faixa.
actionYes
modelIdNoElevenLabs: 'eleven_v3' (default) ou 'eleven_multilingual_v2'. Google: 'gemini-3.8-flash-tts' (default, Gemini 3.8 Flash TTS, fala as vozes nativas em português) ou 'gemini-3.1-flash-tts-preview' (só as clássicas; voz nativa pedida nele sai pelo 3.8). Fish: 's2.1-pro-free' (S2.1 Pro, default) ou 'drama-3' (Drama 3: a direção vai no próprio text, '[sussurrando] frase' muda a atuação, '<emphasis>palavra</emphasis>' crava uma palavra; mesmo preço). Id desconhecido vira o padrão do motor: Gemini 3.8 Flash TTS no Google, S2.1 Pro no Fish.
voiceIdNoElevenLabs voice_id (obrigatório se provider=elevenlabs). Use list_presets pra ver opções.
languageNoIdioma da fala. Cada motor recebe no dialeto dele; fish e google detectam pelo texto, então lá isto é informativo. Default pt.
providerNoelevenlabs (inglês expressivo), google (Gemini TTS) ou fish (S2.1 Pro, o melhor em japonês e nas línguas asiáticas; ou Drama 3 com modelId='drama-3', a fala dirigida). Os três cobram igual. Default elevenlabs.
clientApiKeyNoDESLIGADO desde 27/09/2026: a casa não recebe chave de provedor. Não mande: a chamada é recusada sem cobrar. A fala sai sempre em Sinapses.
languageCodeNoElevenLabs: ex 'pt' pra PT-BR otimizado. Vence o `language` quando os dois vêm.
outputFormatNoElevenLabs ex 'mp3_44100_128'. Default da provider.
stylePreambleNoGoogle: prefixo de instrução de mood ('Read this in a thoughtful tone:'), conta no tamanho cobrado. Não suportado em ElevenLabs.
voiceSettingsNoElevenLabs voice_settings. Default razoável: stability=0.45, similarity_boost=0.75, style=0.30.
fishReferenceIdNoFish: id da voz no acervo do fish.audio, só na conta admin. No membro o servidor ignora e a fala sai na voz da casa.
googleVoiceNameNoGoogle prebuilt voice. Clássicas (Kore, Puck, Charon...) valem em todo modelo; nativas em português (ids 'pt-br-<papel>-<n>' e 'pt-pt-<papel>-<n>', ex 'pt-br-podcaster-1', 'pt-br-storyteller-6', 'pt-pt-tutor-3') só existem no Gemini 3.8 e soam como gente do Brasil ou de Portugal, sem forçar sotaque por prompt. Default Kore. Use list_presets pra ver opções.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations say only readOnlyHint=false and openWorldHint=true, so the description carries the real burden and does it well: exact credit pricing (500 Sinapses per 1.200 chars, minimum 50), cache reads are free, repeated speech isn't re-billed, clientApiKey is rejected without charge, and the 5000-char ceiling with pre-chunking. It also discloses that output always bills in Sinapses because 'a casa não recebe chave de provedor' and that text must arrive pre-cleaned (no em-dash, no markdown). This is the kind of cost/auth/constraint context an agent needs before calling a paid, open-world tool.

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?

Front-loaded with the identity and sub-actions, which is good, but it degenerates into a dense wall of run-on sentences with nested parentheses and backticked inline code. Some content is redundant with the schema (the language enum list, the 5000-char limit and pricing appear both here and in the text parameter description). Roughly a third of the text could be cut without losing meaning.

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

Completeness4/5

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

For a 14-parameter, two-action, paid TTS tool with no output schema, the description covers the essentials: what speak returns (audioBase64+mimeType+sizeBytes), billing, caching, storage behavior, and provider routing. What's thinner is failure behavior beyond the clientApiKey case and the interaction between `store` and cached responses, which is described only in the schema. Close to complete, with a few gaps.

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 93%, so the baseline is 3; the description still adds value beyond it by stating the operational constraint that text is pre-processed by the caller and chunked above 5000 chars, and by spelling out the cost consequence of text length. It also explains the provider/model interdependency (drama-3 only meaningful for fish, native pt voices only on Gemini 3.8) that the flat schema can't express. Remaining params (outputFormat, voiceSettings, fishReferenceId) are documented only in-schema, which is acceptable at this coverage.

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

Purpose4/5

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

Opens with a specific verb+resource: 'Helen Voice TTS via ElevenLabs, Google Gemini ou Fish Audio', and immediately enumerates the two sub-actions (list_presets, speak) with what each returns. An agent knows this is the speech-synthesis tool. It does not, however, contrast itself with nearby siblings such as sapiens_stock_audio, sapiens_musicator or sapiens_sintetico, so the differentiation work is left to the agent.

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

Usage Guidelines4/5

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

Gives genuinely actionable routing between the three providers ('provider=fish ... o mais forte em japonês, mandarim e coreano: fala de personagem e cena de anime pedem ele') and between models ('modelId=drama-3 vira o Drama 3, a fala dirigida'), plus a cache/cost hint. It never states when NOT to use this tool or which sibling to pick for a non-TTS audio need. Clear context, but no explicit exclusions.

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

sapiens_imageAInspect

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.

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.

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.

sapiens_metaAInspect

Utilitários transversais: start (porta de entrada do primeiro contato: sem login ensina a conectar; com login mostra saldo/tier + primeiros poderes com exemplo pronto + 'comece por aqui'), login (conecta a conta com o código de sapiensinteticos.com/conectar-claude, salva a sessão localmente; ela vale 90 dias e renova sozinha a cada uso), logout (desconecta de verdade: revoga a chave no servidor e apaga o token local), whoami (tier user/admin + saldo + email), credits (saldo agregado), subscription (plan + status + saldo por bucket subscription/grants/free + warnings low/critical), formats (schemas por formato), health (inclui a versão do MCP), version (qual versão do sapiens-mcp está REALMENTE rodando + se é a última do npm; não exige login; use pra saber se o client pegou a versão nova ou ficou preso em cache do npx), app_url (URLs canônicas), precos (a tabela de preço do membro em duas carteiras separadas, com regras próprias: app = cada motor do App em Sinapses, com o detalhe por resolução e por segundo de vídeo e o link do card em /motores; api = a API da conta, com saldo próprio em dólar: preço por imagem, a partir de no vídeo (o exato pela cotação grátis) e texto por milhão de tokens com midia=texto. Sinapse não se converte em dólar. Pra comparar com fal.ai, WaveSpeed ou outro serviço que cobra em dólar, use a parte api. midia recorta, busca filtra pelo nome), api (a conta da API da pessoa, SÓ LEITURA: saldo em dólar, livre, o que está preso em chamada aberta, crédito de teste e quando vence, gasto do dia, as chaves com nome, o fim e o teto do dia, nunca a chave nem o hash, a recarga automática no cartão ou em stablecoin e o rendimento; assinar, mover dinheiro, mudar o limite da carteira, ligar recarga e criar chave ficam no site, com a carteira dela e o segundo fator). Use credits/subscription antes de gerar imagem pra avisar se vai estourar; pra pagar em dólar, action=api diz o livre.

NameRequiredDescriptionDefault
codeNoCódigo XXXX-XXXX gerado (logado) em sapiensinteticos.com/conectar-claude. Só pra action=login.
buscaNoSó pra action=precos: filtra pelo nome do motor ou do modelo da API (ex: 'seedance', 'nano banana'), sem acento nem caixa.
midiaNoSó pra action=precos: recorta a tabela numa mídia. Sem ela vêm imagem, vídeo, música e voz (o texto da API é longo e só vem com midia=texto, com os modelos de preço variável em `texto.roteadores` e a parte `decidir`). midia=decidir traz só os modelos de decisão da API (o Laya): respondem sim ou não, uma opção ou uma nota, sem gerar texto.
actionYes

TDQS

A3.9/5.0
Behavior4/5

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

With readOnlyHint=false the agent knows mutations exist, and the description pinpoints them: logout 'revoga a chave no servidor e apaga o token local', login persists a local session valid 90 days that auto-renews. It also discloses auth requirements (start works without login, version doesn't require login) and that action=api is strictly read-only and never returns the key or its hash. It doesn't describe rate limits or error behavior, keeping it at 4 rather than 5.

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?

It is one unbroken paragraph dense with nested parentheses covering 13 actions, so per-action density is high but scannability is poor and the front-loaded summary is thin. Every clause carries information, yet the run-on formatting makes it harder to parse than a short bulleted mapping would be.

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

Completeness4/5

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

For a 13-action, 4-parameter tool with no output schema, the description does substantial work: it sketches expected returns (balance/tier, plan+status+per-bucket balance with low/critical warnings, dollar balance, day spend, key names and caps) and flags which actions need login. The only real gap is that formats, health, app_url and pontes are mentioned in a phrase or not at all.

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 75%, and the description still adds meaning on top: it maps each action value to an outcome, explains that midia narrows the price table to one medium and that omitting it returns image/video/music/voice while text only appears with midia=texto, and that busca filters engine/model names accent- and case-insensitively. The code parameter's origin is only restated from the schema, but the dominant parameter (action) is fully explained.

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

Purpose4/5

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

Each of the 13 actions is named with a concrete verb/outcome (start teaches connecting, login connects the account, logout revokes the key, whoami returns tier+balance+email, version reports the actually-running version), so an agent can pick an action without opening the schema. The umbrella framing ('Utilitários transversais') is vague, but it clearly separates this account/utility tool from the content-generation siblings. It stops short of 5 only because the opening line alone doesn't tell you what the tool is for.

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

Usage Guidelines4/5

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

Gives concrete routing rules: use version to check whether the client picked up the new build or is stuck on npx cache, use credits/subscription before generating images to warn about overspend, use action=api for dollar balances. It also states an explicit exclusion: subscribing, moving money, changing wallet limits, enabling auto-recharge and creating keys must be done on the site, not here. No guidance on when to prefer start over login is spelled out explicitly, but it is strongly implied.

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

sapiens_musicatorAInspect

Musicator: loop completo de música via voz Sapiens, sem precisar da UI (qualquer logado; lyrics 300 / render 3000 Sinapses). Sub-actions: 'create' (cria brief+track draft num passo, custo 0, devolve trackId), 'lyrics' (gera letra PT + stylePrompt EN; passe trackId pra GRAVAR na track e deixar pronta pra render, ou sem trackId pra só receber o texto inline; 300 sinapses), 'list' (suas tracks: id/título/status/áudio), 'get' (detalhe de uma track pra acompanhar render, status/áudio/letra), 'render' (schedula o synth num trackId pronto, assíncrono fire-and-forget, 3/min; model escolhe o motor: 'pro' Lyria 3.5 (default), 'clip' Lyria 3 Clip, 'mureka' Mureka 9.5, 'minimax' MiniMax Music 2.6, 'elevenlabs' ElevenLabs Music com durationSeconds 30/60/120/180; preço fixo por faixa, menos o ElevenLabs, que cobra pela duração: puxe a skill 'musica' pra tabela antes de disparar), 'publish' (publica uma faixa PRONTA do user no Acervo da Comunidade (aba Músicas), com eco no Chat e Fórum; CURADO: só admin/dono, custo 0, idempotente), 'list_public' (lê o Acervo público de músicas da Comunidade, sem custo, sem login). Fluxo cheio: create → lyrics(trackId) → render → get (poll status: rendering → ready/failed) → publish (dono). Tudo escopado por dono (só mexe nas suas tracks).

NameRequiredDescriptionDefault
pageNoaction=list_public: página do Acervo público (0-based, default 0).
seedNoPra action=render: seed pra reprodutibilidade do synth.
limitNoaction=list: quantas tracks trazer (1-50, default 20). action=list_public: faixas do Acervo (1-48, default 18).
modelNoPra action=render: motor da faixa. 'pro' = Lyria 3.5 (default, faixa inteira até 3 min, lê imagem de referência). 'clip' = Lyria 3 Clip (rascunho de 30s). 'mureka' = Mureka 9.5 (faixa inteira, letra até 5.000 caracteres). 'minimax' = MiniMax Music 2.6 (faixa inteira até 5 min, letra de 10 a 3.000 caracteres). 'elevenlabs' = ElevenLabs Music (duração escolhida em durationSeconds, letra até 3.500 caracteres). Preço: o mesmo render fixo em todos, menos 'elevenlabs', que cobra pela duração (tabela na skill 'musica'; confirme com a pessoa antes). Só o Lyria lê imagem de referência; negativePrompt e seed são ignorados nos motores de fora do Lyria.
titleNoTítulo da faixa (create/lyrics). Vai no brief/metadata. Mín 3 chars.
actionYes
toChatNoaction=publish: ecoar no Chat da comunidade (card tocável). Default true.
contextNoTema/argumento (create exige ≥20 chars; lyrics ≥10). 1-2 frases com ângulo/provocação.
toForumNoaction=publish: ecoar no Fórum como tese-raiz. Default true.
trackIdNomusicator_tracks:_id. Obrigatório p/ action=render e action=get. Em action=lyrics, opcional: se passado, grava a letra na track (status=lyrics_ready).
languageNoDefault 'pt-BR'. Pode ser 'en', 'es', etc.
directionNoGênero/mood (ex: 'synthwave melancólico 1980s', 'lo-fi hip-hop 80 BPM', 'acoustic indie folk'). Default 'livre'.
negativePromptNoPra action=render: negative prompt do synth (provider-dependent).
durationSecondsNoPra action=render com model='elevenlabs': duração da faixa em segundos, uma de 30, 60, 120 ou 180 (default 120). Ignorado nos outros motores.
stylePromptOverrideNoPra action=render: sobrescreve stylePrompt antes do render (não muda track persistido).

TDQS

A4.5/5.0
Behavior5/5

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

Far beyond the readOnlyHint=false/openWorldHint=true annotations, the description discloses cost per action (300 Sinapses for lyrics, 3000 for render, 0 for create and publish), a rate limit (3/min on render), async fire-and-forget semantics, idempotency of publish, curation restrictions, and the owner-scoping guarantee ('só mexe nas suas tracks'). These are exactly the operational facts an agent needs before triggering a paid mutation.

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

Conciseness5/5

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

One dense paragraph, but it is front-loaded with the identity and each sub-action gets a compact parenthesized definition; nothing is filler. Some pricing detail is repeated between the prose and the model parameter description, but within the description itself every clause carries operational information.

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

Completeness4/5

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

For a 15-parameter, seven-action tool with no output schema, the description is remarkably complete: it covers the end-to-end flow, the async polling states, and roughly what each action returns (trackId, id/título/status/áudio). It stops short of describing failure/retry behavior on render or the exact shape of a publish response, which an agent would otherwise have to discover empirically.

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 already 93%, so the baseline is 3; the description earns above that by explaining cross-parameter interactions the schema only hints at — the model/durationSeconds coupling, the fixed price vs. per-duration ElevenLabs pricing, and the note that seed and negativePrompt are ignored on non-Lyria engines. The explicit pointer to the 'musica' skill for the price table is a useful addition, though a few parameters (title, context, direction) are left to the schema.

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

Purpose4/5

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

The opening line states a specific verb and resource ('loop completo de música via voz Sapiens') and the description enumerates all seven sub-actions with one-line definitions, so an agent knows exactly what the tool covers. It does not, however, name any sibling tool (e.g. sapiens_stock_audio, sapiens_trilhas) to disambiguate which one to reach for, so it stops just short of a 5.

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 guidance per sub-action, states the preconditions (any logged-in user for most actions; admin/owner only for publish; list_public needs no login and no cost) and spells out the intended flow: create → lyrics(trackId) → render → get (poll rendering → ready/failed) → publish. The lyrics branch even explains the two modes (with vs. without trackId) and what each produces.

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

sapiens_personaAInspect

Persona Sapiens: teste de personalidade (as 16 personas, na espinha de Jung) + perfil do user + arte dos 16 arquétipos. PRIMÁRIO (de graça, qualquer logado): get_quiz (48 perguntas Likert 1..7 + escala, estático, Claude aplica conversando), submit_quiz (manda as 48 respostas {questionId,value}, scoring server-side, salva no perfil; refazer cria profile novo), my_profile (lê tipo atual + persona + breakdown dos 4 eixos com confiança + histórico). SECUNDÁRIO: list_codes (16 codes + grupo NT/NF/SJ/SP, estático), list_generated (personaArtData.getAll, quais artes já existem), generate (arte de 1 arquétipo, 450 Sinapses, combina com 'gera a arte do meu tipo' depois do quiz). Codes: INTJ/INTP/ENTJ/ENTP/INFJ/INFP/ENFJ/ENFP/ISTJ/ISFJ/ESTJ/ESFJ/ISTP/ISFP/ESTP/ESFP.

NameRequiredDescriptionDefault
codeNoPra action=generate: código de 4 letras (ex INTJ) a gerar a arte. Case-insensitive (normaliza pra maiúscula).
nomeNoPra action=submit_quiz: nome opcional pra personalizar o resultado salvo.
actionYes
answersNoPra action=submit_quiz: as 48 respostas { questionId, value 1..7 }. Pegue os IDs/perguntas com action=get_quiz e colete tudo antes.
vinculoAnswersNoPra action=submit_quiz: as 8 respostas do bloco da casa (par de jogo, ids vn-*). Opcional, mas recomendado: destrava o modo de parceiro e a calibração do Sintético.

TDQS

A3.9/5.0
Behavior4/5

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

Adds real behavior beyond the annotations (readOnlyHint=false, openWorldHint=true): the free tier and login requirement, server-side scoring, that re-running the quiz creates a NEW profile rather than updating one, that get_quiz is static and Claude applies it conversationally, and that generate costs 450 Sinapses. That cost/state-mutation disclosure is exactly what annotations cannot convey. It omits failure modes (insufficient Sinapses, malformed answer sets) and any rate limits.

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

Conciseness4/5

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

Front-loads the purpose, then organizes the rest into PRIMÁRIO/SECUNDÁRIO tiers so the free-path actions are scannable first. The final sentence listing all 16 ISO codes is pure duplication of the schema enum and does not earn its place; the dense parenthetical asides also slow parsing.

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

Completeness4/5

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

With no output schema, the description compensates by sketching what each action yields (48 Likert items for get_quiz, type + persona + 4-axis breakdown with confidence + history for my_profile, which arts exist for list_generated). That is enough for a six-action router. Gaps are minor: nothing on the shape of the generate response or on what happens when the profile does not yet exist.

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

Parameters3/5

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

Schema description coverage is 80%, so the schema already explains code, answers, vinculoAnswers and nome. The description reinforces the submit_quiz flow ('manda as 48 respostas {questionId,value}') and points to get_quiz as the source of question IDs, which is useful connective tissue. However, it adds no syntax or format meaning beyond the schema, and its enumeration of all 16 codes merely restates the enum.

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

Purpose4/5

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

Opens with a concrete statement of scope (16-persona Jung-based personality test + user profile + archetype art) and then names each of the six actions with a specific verb and resource: get_quiz, submit_quiz, my_profile, list_codes, list_generated, generate. An agent can map an intent to an action without opening the schema. It loses a point because it never distinguishes itself from the sibling sapiens_profile even though 'perfil do user' / my_profile overlaps that tool's territory.

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

Usage Guidelines4/5

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

Explicitly tiers usage: 'PRIMÁRIO (de graça, qualquer logado)' for the quiz/profile path versus 'SECUNDÁRIO' for listing and art generation, and gives a sequencing rule ('combina com "gera a arte do meu tipo" depois do quiz'). It states the pre-conditions for submit_quiz (collect all 48 answers from get_quiz first). It never says when NOT to use an action or names an alternative tool among the ~29 siblings.

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

sapiens_profileAInspect

O 'tudo junto' do perfil do user (/u/), user-tier. Agrega o que mora no perfil mas estava fora do MCP: identidade + nível/XP + saldo, badges (conquistas) e golden tools (favoritos do aitag). Sub-actions de LEITURA: get (card completo: identidade + nível + saldo + badges + golden tools), voz (a sapiens-voz: o retrato do momento no contrato sapiens.voz/v1, identidade + persona + repertório público + criações públicas + studios, derivado e datado; quando o user pedir 'minha voz' ou 'meu retrato do Sapiens' pro projeto dele, chame e salve como sapiens-voz.json, snapshot, não conexão viva; a skill minha-voz faz isso virar SKILL.md do projeto), soul (DEPRECIADA, mesmo retorno de voz, fica só pra pacote antigo: soul agora é só do Sintético, ver sapiens_sintetico action=soul), badges (só as conquistas, lista cheia), golden_tools (só os favoritos do aitag, lista cheia), notifications (suas notificações recentes do sino + contagem de não-lidas), mark_read (marca uma notificationId ou TODAS as não-lidas como lidas). Sub-actions de ESCRITA (mexem na SUA conta; identidade sempre da sessão): follow/unfollow (seguir/deixar de seguir outro user por followingId=users:_id, descoberto via sapiens_community participants/search_users), update_bio (edita a sua bio), update_username (troca o seu @; inválido/tomado volta {success:false,error}). FAVORITOS de ferramentas de IA (Golden Tools do aitag; o toolId vem de sapiens_repertorio action=search_tools): favorite_tool (favorita/desfavorita, estrela), favorite_lists (suas listas), create_favorite_list (listName+emoji/description/isPublic), add_to_favorite_list/remove_from_favorite_list (toolId+listId), delete_favorite_list (listId). As partes grandes do perfil NÃO são duplicadas aqui, têm tool própria: imagens geradas/publicadas=sapiens_gallery, repertório (filmes/séries/jogos/livros/música)=sapiens_repertorio, personagens=sapiens_character, persona/teste de personalidade=sapiens_persona action=my_profile, saldo detalhado por bucket=sapiens_meta action=subscription. Monta a partir de queries já em prod (sem custo).

NameRequiredDescriptionDefault
bioNoPra update_bio: o novo texto da sua bio (perfil /u/<username>).
emojiNoPra create_favorite_list: emoji da lista (opcional, ex '⭐').
limitNoPra notifications: quantas trazer (default 15, máx 50).
actionYes
listIdNoPra add_to_favorite_list / remove_from_favorite_list / delete_favorite_list: id da SUA lista de favoritos (via action=favorite_lists).
toolIdNoPra favorite_tool / add_to_favorite_list / remove_from_favorite_list: o toolId da ferramenta de IA (aitagTools). Descubra via sapiens_repertorio action=search_tools.
isPublicNoPra create_favorite_list: lista pública (default true) ou privada.
listNameNoPra create_favorite_list: nome da lista (até 60 chars).
descriptionNoPra create_favorite_list: descrição curta (opcional).
followingIdNoPra follow/unfollow: users:_id de QUEM seguir/deixar de seguir. Você (o seguidor) é sempre o dono da sessão. Descubra o id via sapiens_community participants/search_users ou sapiens_search.
newUsernameNoPra update_username: o novo @ (3-20 chars, alfanumérico + underscore). Já em uso ou inválido volta {success:false,error}.
notificationIdNoPra mark_read: o id de UMA notificação (vem de action=notifications). Omita pra marcar TODAS as não-lidas.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true, which is coarse for a 17-action tool that is mostly reads; the description usefully discloses which sub-actions are LEITURA vs ESCRITA and that writes always act on the session user's own account ('identidade sempre da sessão'). It also discloses a failure return shape ({success:false,error}) for update_username and that results are derived, dated snapshots built from cheap in-prod queries ('sem custo'). It stops short of describing side effects of follow/unfollow or rate/limit behavior beyond the limit param.

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?

Front-loaded correctly with the aggregation statement and the read/write split, but the body is a dense run-on with heavy parenthetical nesting, mixing action semantics, deprecation notes, file-saving instructions and sibling boundaries in long sentences that reward re-reading. It earns most of its length given 17 actions, but a bulleted or grouped structure would carry the same content with less parsing cost.

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

Completeness4/5

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

No output schema exists, and the description does a reasonable job describing returns: 'get' as a full card, 'voz' as a dated derived snapshot under the sapiens.voz/v1 contract, error shape for update_username, and read counts for notifications. For a 17-action, 12-parameter tool it covers what an agent needs to pick and invoke an action, though the exact return shape of follow/unfollow and the favorite-list mutations is not stated.

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 92%, so the baseline is 3, but the description adds real meaning: it maps parameters to sub-actions in prose and, importantly, tells the agent where each id comes from (followingId via sapiens_community participants/search_users, toolId via sapiens_repertorio action=search_tools, listId via action=favorite_lists, notificationId from action=notifications). That cross-tool discovery guidance is not in the schema.

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?

Opens with a specific framing ('o tudo junto do perfil do user /u/<username>, user-tier') and then enumerates exactly what it aggregates: identidade + nível/XP + saldo, badges, golden tools. It also explicitly names the boundaries against siblings (sapiens_gallery, sapiens_repertorio, sapiens_character, sapiens_persona, sapiens_meta), so an agent can distinguish it without opening other schemas.

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?

Guidance is per-action: read vs write sub-actions are grouped and labeled, 'voz' has an explicit trigger ('quando o user pedir minha voz ou meu retrato do Sapiens... chame e salve como sapiens-voz.json'), 'soul' is flagged DEPRECATED with the replacement (sapiens_sintetico action=soul), and id discovery paths are named for followingId, toolId, listId and notificationId. Exclusions are stated (large profile parts live in other tools).

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

sapiens_publicarAInspect

Publicar uma peça SUA nas SUAS redes (TikTok, Instagram, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord), pelo Distribution da pessoa (assinatura ou convite). Identidade SEMPRE pelo sessionToken. É o mesmo Distribution da tela /dashboard/distribution (a fila de peças à esquerda, a ficha de cada peça numa rede à direita). Sub-actions: 'fila' (a fila da pessoa: cada peça com título, tipo e o estado em cada rede, rascunho, agendado, enviado, publicado, falhou ou descartado, com a legenda e o link de cada uma, o personagem da peça quando ela é de um, e os números que a rede devolveu pro post (views, likes, comentários...) quando já medidos, 1 hora, 1 dia e 7 dias depois de sair; a peça que ela preparou na tela aparece aqui), 'painel' (as redes com conectada ou não, o @, o limite de texto e a régua de cada praça; com handle, a peça: onde ela já está por rede, com estado e link, e a sugestão de onde mandar, as que ficam de fora com o motivo e as que valeria conectar), 'rascunho' (handle + rede + legenda: guarda a legenda de UMA rede pra peça, vazia apaga; acima do limite da rede volta erro com o número), 'publicar' (handle + redes, agora ou agendarPara ISO com fuso; a legenda vai em BLOCOS: text é o corpo, cta a chamada, hashtags sem #, e cada rede leva o que cabe no limite dela, saindo primeiro as hashtags, depois a chamada, e o corpo corta em fim de frase; legendas {rede: texto} passa por cima dos blocos naquela rede; o retorno diz em adaptadas quais redes receberam menos do que foi escrito), 'lista' (o que já saiu: os envios recentes com o estado de cada rede), 'conferir' (postId: pergunta o que cada rede fez e grava o link), 'cancelar' (postId: tira a HORA de um agendado que ainda não saiu; a peça não é cancelada, volta pra fila daquela rede como rascunho, com a mesma legenda, pronta pra publicar agora ou agendar de novo), 'teia' (as regras da Teia da pessoa, do tipo 'quando sai no Instagram, entra na fila do Threads'; sem mais nada lê as regras, com de + para + mudanca=ligar|pausar|apagar mexe numa; quando a peça sai na rede de origem, ela nasce na fila da rede de destino como rascunho, com o corpo da legenda no limite de lá e as hashtags à parte, e ESPERA o clique, nada sai sozinho; filha não tece de novo, e rede onde a peça já esteve, até descartada, fica de fora). Postar de novo não tem action à parte: rascunho ou publicar numa rede onde a peça já saiu abre cartão novo, e o que saiu fica no rastro. A casa confere sozinha o que saiu e avisa a pessoa no sino (e no Telegram, se ela ligou) quando o post sai ou falha. Fluxo: painel com handle, escolhe pela sugestão, publicar, conferir. Só peça da própria pessoa, e só rede conectada (conectar é na tela /dashboard/distribution). Sem custo em Sinapses: o teto é o de publicações por ciclo do plano. Publicar POSTA DE VERDADE na conta da pessoa: confirme redes e legenda com ela antes. A fila da casa é outra tool (sapiens_distribution, admin). Passo a passo: skill publicar.

NameRequiredDescriptionDefault
deNoteia: a rede de origem da regra (id do painel), onde a peça sai primeiro.
ctaNopublicar: a chamada, em bloco à parte. Sai antes do corpo quando não cabe.
paraNoteia: a rede de destino, em cuja fila a peça entra.
redeNorascunho: a rede (id do painel: instagram, tiktok, threads...). Numa conta extra, o destino com a conta: tiktok@2.
textNopublicar: o CORPO da legenda. Ausente usa o título da peça.
redesNopublicar: as redes (ids do painel), só as conectadas. Conta extra vai com a conta: tiktok@2 é o TikTok da conta 2 (painel, contasExtras). Um envio sai por UMA conta: pra publicar na conta 1 e na 2, chame publicar duas vezes.
actionYes
handleNoA peça (img_..., vid_..., car_... pro carrossel inteiro). Obrigatório em rascunho e publicar; em painel traz a peça junto.
postIdNoconferir/cancelar: o id do envio, vindo da lista.
legendaNorascunho: a legenda daquela rede. Vazia apaga o rascunho.
mudancaNoteia: ligar (cria ou despausa), pausar ou apagar a regra de -> para. Ausente = só lê as regras.
hashtagsNopublicar: as hashtags, sem #. São as primeiras a sair onde o limite aperta.
legendasNopublicar: legenda própria por rede ({threads: '...'}, ou {'threads@2': '...'} na conta extra), passa por cima dos blocos naquela rede.
agendarParaNopublicar: data e hora ISO 8601 COM fuso (2026-10-08T19:00:00-03:00). Ausente = agora. Mínimo 5 min à frente.

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial context beyond annotations: publishing is a real, irreversible-in-the-world write to a third-party account, has no Sinapses cost but is bounded by the plan's per-cycle publication ceiling, auto-verifies results and notifies on the bell/Telegram, and cancelar only removes the scheduled time rather than deleting the piece. It also discloses the Teia behavior that child pieces wait for a click and never fire alone.

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 the destructive-publishing warning are front-loaded, and every clause carries real information, but the body is a single dense run-on spanning all eight sub-actions with no structural breaks, making it hard to scan. Given the tool's surface area some length is justified, yet the lack of separation (bullets or per-action headings) costs it.

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 an eight-action, 14-parameter write tool with no output schema, the description covers each sub-action's inputs, side effects, and return hints (estado por rede, link, `adaptadas`, métricas 1h/1d/7d), plus prerequisites (conexão de rede feita na tela do dashboard) and the cost model. Nothing essential to correct invocation appears missing.

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 already 93%, so the baseline is 3, and the description adds real semantics: the block model for the legenda (text/cta/hashtags) and its truncation order, 'legendas {rede: texto}' overriding blocks per network, and the `adaptadas` return signal. The 'tiktok@2' extra-account convention and 'um envio sai por UMA conta' are echoed from the schema rather than newly added, keeping it just under a top score.

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?

States a specific verb and resource ('Publicar uma peça SUA nas SUAS redes') and enumerates all eleven target networks plus the account/subscription scope. It also explicitly distinguishes itself from the sibling 'sapiens_distribution' (a fila da casa é outra tool, admin), so an agent can tell the two apart without opening schemas.

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?

Gives an explicit flow ('painel com handle, escolhe pela sugestão, publicar, conferir') and defines selection conditions for each of the eight sub-actions, including the notable exclusion 'Postar de novo não tem action à parte' and the constraint 'Só peça da própria pessoa, e só rede conectada'. It escalates required caution ('Publicar POSTA DE VERDADE... confirme redes e legenda com ela antes').

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

sapiens_referenceA
Read-only
Inspect

O 'popup global de referência' do Sapiens. Espelha o modal 'Selecionar Referência' do gerador web: um lugar só pra navegar os bancos e pegar o que vira referência em imagem/vídeo. READ-ONLY. DUAS sub-actions: 'browse' (navega um banco) e 'resolve' (acha UM asset pelo ID citável). RESOLVE: passe handle= (img… imagem, vid_… vídeo, film_… vídeo programático, trk_… música, comic_… tirinha, char_… personagem, é o ID que o usuário copia no detalhe do item) e o servidor devolve {mine, isPublic, url, title, mediaKind} SE for seu ou público (senão recusa; nunca acessa asset privado de terceiro). Use a url retornada como referência (referenceImageUrls / startImageUrl / endImageUrl). BROWSE + bucket: 'history' (suas imagens recentes, privadas+públicas), 'favorites' (imagens que você curtiu, só as suas), 'videos' (seus vídeos / Meus Vídeos), 'stock_video' (banco de B-roll da casa, público), 'acervo' (stock + comunidade públicos; aceita term=busca e source=all|stock|community), 'characters' (personagens; mode=mine [default, inclui rascunhos] ou public [Explorar]). BUSCA POR SIGNIFICADO: em history e videos, term + semantic=true acha a peça da pessoa pelo sentido mesmo quando o prompt usou outras palavras (volta até limit, do mais parecido pro menos, com score). Paginado (page/limit, default 20, máx 50; use hasMore). Itens normalizados: imagem PRÓPRIA (history/favorites) traz imageId + url (use imageId em sapiens_image sourceImageIds ou sapiens_video startImageId/endImageId; ou a url em referenceImageUrls); acervo e characters são públicos/de terceiros, use a url (characters trazem mainImageUrl + imageUrls + characterId) em referenceImageUrls / startImageUrl / endImageUrl, NÃO em sourceImageIds. Personagens públicos também têm porta dedicada em sapiens_character action=list_public.

NameRequiredDescriptionDefault
modeNoSó bucket 'characters': 'mine' (seus personagens, inclui rascunhos; default) ou 'public' (catálogo do Explorar).
pageNoPágina (default 1). Use com hasMore pra paginar.
sortNoSó bucket 'pose_map': 'recent' (entrada no banco, default) ou 'used' (as que ele acabou de usar, mais úteis pra continuar uma série).
termNoBusca escrita, vale em QUALQUER bucket. Casa por pedaço de palavra, sem acento: 'board' acha 'storyboard'. Olha prompt, título, folha, personagem e modelo nas suas imagens; prompt/título/modelo nos vídeos; nome nos personagens; prompt/tag/mood no acervo e no banco de vídeo. Pra achar UMA peça específica que você já sabe qual é, use action=resolve com o handle (img_…), é mais direto.
grupoNoSó bucket 'pose_map': a chave de um CONJUNTO (vem no campo `grupo` de cada item). Devolve as outras câmeras da MESMA pose, cada uma com seu `angulo` (frente, de-cima, de-baixo, lado, diagonal). É a cobertura de câmera: o gesto travado e a câmera andando. Com grupo, `term` é ignorado (o conjunto já é a resposta); os outros recortes valem.
limitNoItens por página (default 20, máx 50).
vistaNoSó bucket 'pose_map': de onde a câmera vê o corpo. 'costas' inclui três quartos de costas: a fronteira é peito ou costas pra câmera, que a sombra sem rosto não diz sozinha.
actionYes'browse' navega um bucket do acervo; 'resolve' acha UM asset pelo ID citável (handle <tipo>_<id>) e diz se é seu / público + devolve a url pra usar de referência.
bucketNoSó 'browse': qual banco navegar: 'history' (suas imagens recentes; com term+semantic acha pelo significado), 'favorites' (as que você curtiu), 'videos' (seus vídeos; idem), 'stock_video' (Banco de Vídeo da casa: clipes/B-roll prontos, aceita term/orientation/loopOnly), 'acervo' (stock + comunidade públicos de IMAGEM), 'characters' (personagens), 'depth_map' (guias de movimento: os SEUS com shadowSource='mine', ou o banco curado da casa por default), 'pose_map' (seu banco privado de POSE: mapa de profundidade de corpo num quadro parado, mais de 8 mil poses organizadas por familia/vista/camera/enquadramento/leitura; aceita também term/orientation/people/hasObject/hasSuporte/objeto/favoritesOnly/collection/sort, grupo/porPose pra mesma pose em várias câmeras, mais semantic e similarTo pra busca por sentido).
cameraNoSó bucket 'pose_map': a altura da câmera. 'baixo' = de baixo pra cima (contra-plongée), 'nivel' = na altura do corpo, 'alto' = de cima (plongée). Combina com vista: vista é o giro, camera é a altura.
handleNoSó 'resolve': o ID citável do asset, formato <tipo>_<id>: img_… (imagem), vid_… (vídeo), film_… (vídeo programático), trk_… (música), comic_… (tirinha), char_… (personagem). É o ID que o usuário copia no detalhe do item.
objetoNoSó bucket 'pose_map': um objeto específico ('corda', 'espada', 'arco', 'cama').
peopleNoSó bucket 'pose_map': quantas figuras no quadro. 'solo' (uma pessoa), 'dupla' (duas), 'grupo' (três ou mais).
sourceNoSó bucket 'acervo': fonte. Default 'all' (stock + comunidade).
familiaNoSó bucket 'pose_map': o que o corpo faz, a categoria principal do banco (lida por visão, não pela tag do esqueleto). 'em-movimento' = passada, corrida, chute, giro; 'inclinada' = em pé com o tronco dobrado; 'no-ar' = salto, queda, pendurada; 'invertida' = de cabeça pra baixo. Combina com vista e com semantic.
leituraNoSó bucket 'pose_map': 'clara' = a sombra se entende sozinha. 'confusa' = membro fundido, escondido ou cortado, a sombra que devolve braço sem dono ou duas pernas esquerdas. Pra gerar personagem, prefira 'clara'.
porPoseNoSó bucket 'pose_map': true = só poses que vêm em conjunto de câmeras, na ordem do catálogo da fonte, com as câmeras de cada pose coladas. Use pra montar sequência ou história com a mesma pose de vários pontos.
loopOnlyNoSó bucket 'stock_video': só clipes loopFriendly (loop limpo, bom pra fundo).
semanticNoBuckets 'history', 'videos' e 'pose_map': lê o `term` como DESCRIÇÃO em vez de palavra-chave, e acha pelo SIGNIFICADO. Em history/videos acha a peça da pessoa mesmo quando o prompt usou outras palavras ('praia ao entardecer' acha 'golden hour beach'); em pose_map, o pedido que nenhuma tag cobre ('alguém se protegendo do vento', 'caindo de costas apoiado num braço'). Frase inteira funciona melhor que palavra solta. Sem paginação: volta até `limit` (máx 50), do mais parecido pro menos, com `score`.
hasObjectNoSó bucket 'pose_map': true = só poses que seguram/usam algo (corda, espada, arco, bastão); false = só corpo limpo, sem adereço. Omitir = as duas.
similarToNoSó bucket 'pose_map': o id de uma pose; devolve as MAIS PARECIDAS com ela. Use quando o usuário gostou de uma e quer variações do mesmo gesto.
collectionNoSó bucket 'pose_map': uma coleção nomeada pelo dono ('ação', 'editorial', 'íntimo').
hasSuporteNoSó bucket 'pose_map': true = só poses apoiadas em algo além do chão (banco, bloco, parede, cama: vem em `suporte`); false = só no chão. Omitir = as duas.
orientationNoBuckets 'stock_video' e 'pose_map': filtra formato (vertical 9:16, horizontal 16:9, square 1:1).
shadowSourceNoSó bucket 'depth_map': 'mine' (os que VOCÊ extraiu) ou 'house' (o banco curado da casa, default).
enquadramentoNoSó bucket 'pose_map': até onde o quadro mostra o corpo.
favoritesOnlyNoSó bucket 'pose_map': apenas as poses que o dono marcou com estrela. É o recorte mais forte que existe: comece por ele quando o pedido for vago.

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses important authorization behavior: resolve only succeeds for assets that are the user's or public, and it never accesses a third party's private asset. It also describes pagination and semantic search behavior, though it does not fully document all return shapes.

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 key actions are front-loaded, but the description is a dense, overlong paragraph packed with detail that the schema already documents. It remains usable, but it is not tightly concise for an agent selecting and invoking the tool.

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

Completeness4/5

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

For a complex 27-parameter tool with no output schema, the description is fairly complete: it covers actions, buckets, resolve output, pagination, and normalization. Some return and edge-case details are implicit or delegated to the schema, but an agent has enough context to call it correctly.

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 already 100%, so parameter definitions do the heavy lifting. The description still adds cross-tool meaning, such as which IDs belong in sourceImageIds versus referenceImageUrls, and what resolve returns, but much of the bucket-specific parameter detail duplicates the schema.

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

Purpose4/5

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

The description clearly defines the tool as a read-only reference browser/resolver with two sub-actions: 'browse' and 'resolve'. It explains the core resource and distinguishes public characters from a sibling tool, but does not clarify all overlapping siblings such as sapiens_stock_video.

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

Usage Guidelines4/5

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

It gives explicit routing guidance, such as using 'resolve' for a known handle versus 'browse' for a bucket, and using the url in referenceImageUrls/startImageUrl/endImageUrl. It also points to sapiens_character action=list_public for public characters, but leaves ambiguity around related tools like sapiens_stock_video and sapiens_search.

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

sapiens_repertorioAInspect

Acervo pessoal de filme/série/anime/jogo/jogo de tabuleiro/livro/música/pessoa (Repertório, o segundo cérebro do user). Reads: list (filtros mediaType/status), search (texto em title/genres/tags), get (detalhe), popArticles, resolve (busca capa/ano/id nos providers server-side: OMDb/IGDB-Twitch/AniList/Google Books/iTunes/Wikidata). Mutations (qualquer logado, mexem no PRÓPRIO acervo): add_item, update_item (status/rating/tags/note/isPublic), remove_item. CAPTURA ONE-SHOT travada na lista de providers: quando o user fala natural ('acabei de ver Duna 2, nota 9', 'tô jogando Hollow Knight', 'li tal livro'), (1) infira mediaType e status (assisti/zerei/li=completed, quero=backlog, tô jogando/vendo=active, dropei=dropped) e rating se citado; (2) chame action=resolve {mediaType, query}, escolha o candidato certo e faça add_item passando SÓ o source + externalId DELE + os campos pessoais (status/rating/tags/note). O servidor re-resolve no provider e grava título/capa/ano canônicos, você NÃO manda título/capa nem inventa externalId. (3) Se o resolve não achar (lista vazia/providerKeyMissing), NÃO dá pra adicionar: diga ao user que não encontrou nos providers (não fabrique entry manual). Upsert/dedup por (userId, source, externalId). Só pergunte se ambíguo entre candidatos. FERRAMENTAS DE IA (Repertório de Ferramentas): fluxo separado (vêm do catálogo aitag, não dos providers de mídia). action=search_tools {query} acha a ferramenta no catálogo e devolve o toolId; action=add_tool {toolId, favorite?, rating?, note?} grava como mediaType 'tool' (estar no acervo já é 'usei'; favorite=true liga a estrela). Use quando o user fala 'adiciona o Midjourney/Cursor no meu repertório de ferramentas' ou 'uso tal ferramenta de IA'. Cada ferramenta aponta pra página dela no aitag. CATÁLOGO (ADMIN, o dono): action=catalog_tool cadastra no AItag uma ferramenta OPEN SOURCE que ainda não está lá {toolId, name, githubUrl, categoryEn, descriptionEn, descriptionPt, e de preferência reviewEn/reviewPt, websiteUrl, tags}; devolve created, toolId e a url aitag.app/tool/. Idempotente: o mesmo repo (mesmo com outro toolId) devolve a ficha existente e só preenche a análise que estiver vazia, nunca sobrescreve. Rode search_tools antes; é a porta da skill achado. action=admin_tool (ADMIN, SÓ sob ordem explícita do dono: nota e afiliado são gesto dele) faz o que o aitag.app/admin faz, fechada inclusive: {toolId + só os campos a mudar: referralUrl (link de afiliado), nota (0-100), isCurated, isActive, isOpenSource, name, websiteUrl, githubUrl, categoryEn, descriptionEn/Pt, reviewEn/Pt, tags, xUrl, brandHandle, links (os endereços extras da ficha: pesos, pacote do ComfyUI, licença, doc; até 8, a lista troca a inteira)}. Ficha existente recebe os campos que vierem e sobrescreve; ficha nova pede name, categoryEn, descriptionEn, descriptionPt e websiteUrl (sem tracking, é dele que sai o screenshot). O servidor recusa e manda pro aitag.app/admin: o mesmo site ou repo com outro toolId (aponta a ficha que existe), outro nome, outro site ou outro repo numa ficha existente, referralUrl fora do site da ferramenta e de rede de afiliado que fale pela marca, e mexer em link, site ou no-ar de ficha com permanência paga. Devolve created, mudou e a url. SAPIENS (pessoas, ombros de gigantes; a aba no site chama Sapiens): mediaType 'person' cataloga gente que inspira (cineasta, mangaká, cientista, escritor) via Wikidata. Mesmo fluxo de mídia: resolve {mediaType:'person', query:'Osamu Tezuka'} → add_item com source 'wikidata' + o QID do candidato. O servidor grava foto, ocupações, bio e o link da Wikipedia; entra como completed (estar no acervo = me inspira). Use quando o user fala 'adiciona o Miyazaki nas minhas inspirações/nos meus sapiens/no meu repertório'. JOGO DE TABULEIRO (e de cartas; a aba no site chama Tabuleiro): mediaType 'boardgame', porque 'game' é videogame e o IGDB não conhece tabuleiro. Também via Wikidata: resolve {mediaType:'boardgame', query:'Galactic Cruise'} → add_item com source 'wikidata' + o QID do candidato. Busque pelo título em inglês, que é como a Wikidata cadastra; o designer vem no campo authors do candidato e separa homônimos. O servidor grava designers, editoras e o link da página do jogo no BGG. Lançamento muito recente pode ainda não estar na Wikidata: resolve vazio = diga isso à pessoa, não fabrique. Use quando o user fala 'joguei Catan', 'quero jogar Rebirth', 'adiciona esse jogo de tabuleiro'.

NameRequiredDescriptionDefault
nameNoPra catalog_tool/admin_tool: o nome do produto como o projeto escreve (HyperFrames, não hyperframes).
notaNoPra admin_tool: a nota da ficha no AItag, inteiro de 0 a 100. Ordena o catálogo.
noteNoNota pessoal sobre a obra.
tagsNo
xUrlNoPra admin_tool: o perfil da ferramenta no X (https://x.com/<handle>).
limitNo
linksNoPra admin_tool: os outros endereços que a pessoa vem buscar e o site não cobre, na ordem da página (bloco 'Onde achar', abaixo da análise): os pesos de cada checkpoint, o pacote do ComfyUI, a licença, a doc. label curto (até 40: 'Turbo weights', 'ComfyUI repack'), url https pública. O repo do githubUrl já aparece sozinho, não repita. A lista troca a inteira; vazia tira todos. O post da casa aponta pra ficha, e é daqui que a pessoa segue: ficha de modelo aberto leva os pesos aqui.
queryNoTexto pra action=search.
actionYes
itemIdNorepertorioItems:_id (obrigatório pra get/update_item/remove_item).
ratingNo0-10, nota da OBRA. Pra update_item: passe null pra remover rating. Pessoa (mediaType person) não leva rating: dar nota pra gente soa esquisito, o que ela fez ganha nota na ficha de cada obra. Não mande nem pergunte nota de pessoa.
sourceNoPra add_item: o source EXATO de um candidato do action=resolve (manual=filme/série via OMDb, anilist, twitch=jogo, googlebooks, itunes, wikidata=pessoa ou jogo de tabuleiro). Não invente.
statusNo
tagsEnNoPra catalog_tool/admin_tool: até 10 tags em inglês.
tagsPtNoPra catalog_tool/admin_tool: até 10 tags em português.
toolIdNoPra add_tool: o toolId EXATO de um candidato do action=search_tools (catálogo aitag). Dedup por (userId, source aitag, externalId=toolId). Pra catalog_tool: o toolId NOVO da ficha, em kebab-case minúsculo (vira o endereço aitag.app/tool/<toolId>). Pra admin_tool: o toolId da ficha a editar (o do search_tools) ou o da ficha nova.
userIdNousers:_id (obrigatório pra list/search/lists). Descobre via sapiens_meta action=whoami.
favoriteNoPra add_tool: marca a ferramenta como favorita (estrela). Estar no acervo já é 'usei'; favorita é o eixo separado de 'curto/indico'.
isActiveNoPra admin_tool: false tira a ficha do ar sem apagar.
isPublicNo
reviewEnNoPra catalog_tool/admin_tool: a análise editorial em inglês, 3 a 5 frases na voz da casa. É o gate de indexação da página: sem ela, a ficha fica fora do Google.
reviewPtNoPra catalog_tool/admin_tool: a análise editorial em português.
githubUrlNoPra catalog_tool: o repo, https://github.com/<owner>/<repo>. É a chave do dedup: o mesmo repo com outro toolId devolve a ficha que já existe. Pra admin_tool: opcional; vindo, a ficha vira open source.
isCuratedNoPra admin_tool: Staff Pick (curadoria da casa).
mediaTypeNo
categoryEnNoPra catalog_tool/admin_tool: UMA destas, exata: Text & Writing, Image & Design, Video & Animation, Voice & Audio, Coding & Development, Marketing & SEO, Data Analysis & Productivity, Research & Education, Agents & Bots, Creative Automation, Privacy & Web3, Experimental Tools, Technical Utilities, Aggregators & Meta Tools, Adult 18+.
categoryPtNoPra catalog_tool/admin_tool: opcional; ausente, o servidor copia a de uma vizinha da mesma categoria.
externalIdNoPra add_item: o externalId EXATO do candidato do resolve (imdbID p/ manual, id do provider p/ resto). NÃO fabrique/UUID: id que não resolve no provider é rejeitado. Dedup por (userId, source, externalId).
websiteUrlNoPra catalog_tool/admin_tool: a homepage do projeto (https), sem tracking: é dela que sai o screenshot. Ausente, vale o githubUrl.
brandHandleNoPra admin_tool: o @ da marca, sem o @.
referralUrlNoPra admin_tool: o link do botão Visitar, com o código de afiliado do dono (https). Tem que cair no site da ferramenta (agensi.io/r/X sobre agensi.io) ou em rede de afiliado com a marca do site no subdomínio (<marca>.sjv.io, <marca>.pxf.io, <marca>.partnerlinks.io); tolt.link só troca link que já estava nele. Fora disso o servidor recusa e o link entra pelo aitag.app/admin. Ausente na ficha nova, vale o websiteUrl.
isOpenSourceNoPra admin_tool: liga ou desliga o selo open source. Ausente na ficha nova, vale true se veio githubUrl.
descriptionEnNoPra catalog_tool/admin_tool: uma frase do que a ferramenta faz, em inglês (até 400).
descriptionPtNoPra catalog_tool/admin_tool: a mesma frase em português (até 400).
containsSpoilersNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the permission model (any logged-in user for mutations, admin-only catalog/admin operations), deduplication by userId/source/externalId, server-side re-resolution, idempotent catalog behavior, refusal cases for mismatched admin edits, and the no-fabrication rule. These are exactly the behavioral details an agent needs and are consistent with readOnlyHint=false and openWorldHint=true.

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 description is front-loaded and organized by subdomain, but it is extremely dense, uses many parentheticals and all-caps warnings, and packs multiple distinct workflows into one block. Much of the length is justified by 12 actions and 35 parameters, but readability and conciseness clearly suffer.

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

Completeness4/5

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

For a 12-action, 35-parameter tool with no output schema, the description covers the critical flows, preconditions, dedup behavior, and several return/refusal outcomes. It still does not explain the return shape for core reads such as list, search, get, or popArticles, leaving some output context implicit.

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?

With 80% schema description coverage, the schema already explains most fields; the description adds important cross-field workflow meaning such as status inference ("assisti/zerei/li=completed"), person having no rating, boardgame searched by English title, links replacing the whole list, and referralUrl constraints. It does not add meaning for every parameter, such as limit, isPublic, containsSpoilers, tags, or note, so it is strong but not exhaustive.

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 precise resource ("Acervo pessoal de filme/série/anime/jogo/jogo de tabuleiro/livro/música/pessoa") and then enumerates the read actions, mutations, AI-tool flows, Sapiens/people flow, and boardgame flow. An agent can tell exactly what this tool covers and how its subdomains differ, even though it is unusually broad.

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 guidance for natural-language capture, AI tools ("adiciona o Midjourney"), Sapiens, and board games, and it states when admin actions are allowed ("SÓ sob ordem explícita do dono"). It also names preconditions such as running search_tools before catalog_tool, asking only when ambiguous, and not fabricating entries when resolve returns empty.

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

sapiens_resumeAInspect

Currículo PRO: o gerador de currículo da casa, DE GRAÇA e sem login (mundo fechado: não fala com o backend, não cobra Sinapse). VOCÊ conduz a entrevista (ou lê o texto de LinkedIn/currículo antigo que a pessoa colar), monta o JSON no contrato e recebe o HTML pronto pra imprimir em PDF (A4). Sub-actions: 'schema' (o contrato de dados + os 4 modelos; leia ANTES do primeiro render), 'render' (data -> HTML completo). Modelos (arg theme): 'pro' (default, duas colunas com sidebar verde-jade: foto/monograma, contato, chips de competências, barras de idioma, timeline de experiência), 'executivo' (duas colunas grafite + bronze, nome em serifa), 'moderno' (coluna única, roxo da casa), 'minimal' (coluna única preto e branco); accentColor troca a cor de destaque. FOTO DE PERFIL: opcional e NUNCA persistida em banco. No MCP instalado (stdio), photoPath lê a foto local e embute como data URI direto no HTML, sem sair da máquina; no remoto, data.photo aceita URL https. No stdio, outPath salva o .html direto no disco e a resposta volta enxuta (sem trafegar o HTML inteiro). Regra de conteúdo: melhore a redação, jamais invente fato; lang ('pt'|'en') casa os títulos de seção com o idioma do conteúdo. É o MESMO template do Lab /experimentos/resume-builder.

NameRequiredDescriptionDefault
dataNoOs dados do currículo no shape do contrato (objeto, ou string JSON). Obrigatório no render. Mínimo: name + title.
themeNoModelo visual: 'pro' (default, duas colunas com sidebar jade), 'executivo' (sidebar grafite + serifa), 'moderno' (coluna única roxa), 'minimal' (coluna única preto e branco).
actionNo'schema' devolve o contrato de dados + os modelos disponíveis (leia antes do primeiro render). 'render' recebe os dados e devolve o HTML pronto.schema
outPathNoCaminho absoluto de um .html pra salvar o resultado direto no disco (SÓ stdio). Com outPath a resposta volta enxuta ({savedTo, bytes}) em vez do HTML inteiro.
photoPathNoCaminho absoluto de uma foto local (PNG/JPEG/WebP até 4MB) pra embutir como foto de perfil. SÓ no MCP instalado (stdio): a foto vira data URI dentro do HTML e não sai da máquina. No remoto use data.photo com URL https.
accentColorNoHex 6 dígitos pra trocar a cor de destaque do modelo (ex '#0E7C66').

TDQS

A4.9/5.0
Behavior5/5

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

This tool provides extensive behavioral details not found in structured data, such as the 'closed loop' nature (no external backend), content constraints ('jamais invente fato'), and sophisticated file handling logic distinguishing between local data URIs and remote HTTPS URLs based on the execution environment.

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

Conciseness4/5

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

While the description is highly informative and front-loads critical information like the business model and workflow, its sheer length and dense technical flavor prevent a perfect score in conciseness, though every sentence serves a clear purpose.

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?

Given the complexity—handling file paths, rendering different visual themes, managing internal JSON contracts, and operating in different execution environments (stdio vs. remote)—the description provides a comprehensive, end-to-end guide for the agent.

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

Parameters5/5

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

The description adds significant meaning to several parameters beyond their schema types. It explains the visual semantics of the 'theme' enum (e.g., jade sidebar for 'pro'), the specific local processing of 'photoPath', and the operational difference that 'outPath' facilitates for the agent.

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 clearly identifies the tool as a curriculum generator (Currículo PRO) and defines its specific operational context as being a closed, local system ('mundo fechado'). It clearly states its purpose: generating a printable HTML resume from user-provided content.

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?

The description dictates the required interaction flow: the agent or user must first conduct the interview/paste text, construct the JSON payload, and then call the tool. It also explicitly differentiates the usage of the 'schema' and 'render' actions.

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

sapiens_semanaAInspect

As Atividades da SUA semana na casa: o que você produziu e quanto XP isso rendeu. Identidade SEMPRE pelo sessionToken. Sub-actions: 'get' (quais atividades você fez nesta semana, quantas peças em cada, o XP já pago, quanto a Casa Cheia renderia no fecho, quanto vale abrir mais uma atividade e QUAIS abrir agora, a sequência de semanas seguidas com o recorde, as semanas anteriores com o que cada uma rendeu, e uma leitura pronta da semana pra você dizer em voz alta), 'fechar' (fecha as semanas pendentes e credita a Casa Cheia de cada uma). Como a régua funciona: cada peça pronta anda o contador da atividade e paga em degraus (1a, 3a, 7a, 15a, 30a peça da semana, com retorno decrescente); no fecho, a LARGURA paga à parte, 2 atividades valem 20 XP, 5 valem 200, 8 valem 560, então atividades diferentes rendem mais que repetir a mesma. Esta tool PAGA XP, não cobra Sinapses. Idempotente: chamar 'fechar' duas vezes não credita duas vezes.

NameRequiredDescriptionDefault
actionYes

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the sparse annotations: it discloses idempotency of 'fechar', that the tool pays XP rather than charging Sinapses, and the full scoring model (step thresholds, diminishing returns, width bonuses). This is exactly the mutation/side-effect context annotations (readOnlyHint=false) do not provide on their own.

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 is front-loaded, but the 'get' sub-action is delivered as one very long parenthetical enumerating seven separate outputs and the scoring rules that follow are dense prose. Every piece is relevant, yet the structure makes it hard to scan and could have been broken into a list.

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?

No output schema exists, and the description outlines returns for both actions in detail (pieces per activity, XP paid, Casa Cheia projection, streaks, prior weeks). For a one-parameter enum tool this is complete.

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

Parameters5/5

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

Schema coverage is 0%, but with a single enum parameter the description fully compensates by explaining what 'get' returns and what 'fechar' does. An agent can choose the correct action value from the description alone.

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

Purpose4/5

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

States a specific verb and resource: weekly house activities, what you produced and how much XP it yielded, with identity via sessionToken. It clearly delimits the XP/weekly domain. It does not explicitly differentiate itself from any of the many sapiens_* siblings, so it stops short of a 5.

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

Usage Guidelines4/5

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

Both sub-actions are spelled out ('get' reads the week, 'fechar' closes pending weeks and credits Casa Cheia), and it explicitly notes 'Esta tool PAGA XP, não cobra Sinapses', which tells an agent what this tool is not for. No comparison to sibling tools is offered, so 4 rather than 5.

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

sapiens_sinteticoAInspect

Sintético / Sintonia: o vínculo humano↔Sintético (daemon, o grilo falante da casa) via MCP (qualquer logado, tudo sobre o PRÓPRIO par). Sub-actions: 'status' (seu Sintético ativo: nome/foto/Cunho/kind + partnerUserId do par quando é conta-Sintético), 'bonds' (seus vínculos: ativo + pendentes outgoing/incoming com cartão público do parceiro), 'set_cunho' (troca o título/Cunho do Sintético ativo, slug do panteão: daimon/genio/numen/consciencia/alma/ka/sombra/fylgja/musa/duende/anjo/shugorei/lar/fravashi/qarin/juno/shinki/familiar/tsukumogami/stand), 'send_context' (antes de enviar, vê elegibilidade+saldo+teto do dia pra um toUserId), 'send' (envia Sinapses pro par em sintonia: send-only, múltiplo de 100, mín 500, teto 10k/dia, máx 3 envios/dia, idempotente por transferId). REFLEXO DE SI (monta um Sintético do SEU rastro na plataforma): 'reflexo_propose' (destila nome+alma+Cunho do seu rastro via Gemini, GRÁTIS), 'reflexo_generate' (gera a imagem do Reflexo em dois eixos separados: aesthetic é O QUE é retratado (humano/anime/sombra/antropomorfico/espirito/realista/desperto, default humano) e style é a TÉCNICA (auto/realista/editorial/anime/manhwa/3d, o MESMO vocabulário do sapiens_character), que em branco sai a de sempre daquela estética. É o que destrava combinação nova, tipo sombra fotográfica; cobra 450, reembolsa se falhar). CONVITE: 'invite' (convida o seu Sintético por email, conta humana, sem bond ativo, rate-limit+cooldown; mesmos gates do web). LIBERAÇÃO ADMIN (o dono, ex: via Helen): 'pending_daemons' (convidados que confirmaram email e esperam liberação), 'approve_access' (libera um entryId, conta entra + Sintonia firma), 'reject_access' (recusa um entryId). SONDA (o seu Sintético sonda 'o que eu faço agora', gatilho PULL, cobra com estorno): 'sonda' (scope 'all' default = mix de teses do Fórum + jogadas em estúdio/repertório/artigo; 'forum' = só teses; devolve GANCHOS, nada grava), 'sonda_develop' (expande UM gancho/hook numa tese cheia efêmera), 'sonda_sign' (assina a tese desenvolvida e publica no Fórum, autorada pelo seu Sintético, ancorada em você, fecha o loop pelo chat). PRÓXIMAS JOGADAS (painel de evolução): 'evolution' (o que já fez e o que falta: routes done/claimed/xp), 'claim_xp' (credita o XP das jogadas feitas, idempotente). SOUL: 'soul' (baixa a soul do SEU Sintético em markdown pronto: a personalidade dele + o que ele sabe de você, o caderno do par; quem está em cena decide de quem é, ou passe characterId de um personagem seu; versão completa só de personagem SEU, de personagem alheio sai só a memória; grátis; a skill minha-soul instala isso como skill do projeto, e a voz da PESSOA é outra coisa: sapiens_profile action=voz). MODO COMPANHIA: 'companion' (mode=on|off) liga/desliga quem está em cena VESTIR a voz do operador aqui no terminal, o gesto lúdico 'sai de cena'/'volta'. Ligado (default da casa), o start/whoami trazem o directive de voz dele (alma + caderno + a conversa recente do site); a identidade e as Sinapses seguem SUAS (não é encarnar a conta dele). Mesmo estado do botão na sidebar do site. QUEM entra em cena: por default o Sintético em Sintonia, mas com 'characterId' (mode=on) é um personagem de AUTORIA SUA, a Helen INBT que você criou fala aqui, com a alma e o caderno dela, e nada disso cobra Sinapse (quem responde é o modelo do seu cliente). Personagem de outra pessoa é RECUSADO, mesmo público: a alma é de quem escreveu, e pra conversar com personagem alheio o caminho é a DM dele no site. 'wearPair'=true devolve a cena ao par. O start/whoami trazem 'characterOffer' + 'offerCharacters' com os personagens seus que têm alma escrita, pro operador OFERECER a troca em vez de esperar você pedir. 'remember' (text) grava uma diretriz no caderno de quem está em cena ('sempre faça X'): vira lei que ela segue no site e no terminal. 'log' (turns) ANOTA o que ficou de pessoa num assunto que fechou aqui (o que ele decidiu, gostou, recusou, contou de si): entra no fio do par, o MESMO que o chat do site mostra, e vira lição sozinho pelo cano da DM. Sem isso a conversa com a Companhia ligada não deixa memória nenhuma, porque quem responde é o modelo do cliente e nada passa pelo servidor. Sobe só o que é de PESSOA: comando, path e erro de build viram lição-lixo e contaminam a voz dele em imagem, artigo e carrossel. Grátis, silencioso (não se confirma ao usuário), teto de 10 trocas por lote e 30 lotes por dia. Ver a skill companhia. Identidade SEMPRE do token. Aceitar um pedido de bond que outra conta te mandou, e CONSAGRAR o Reflexo num Sintético de fato, continuam só na web (atos deliberados de consentimento/criação).

NameRequiredDescriptionDefault
hookNoPra sonda_develop: o gancho (campo 'hook') da opção que veio em action=sonda, pra desenvolver numa tese cheia.
modeNoPra companion: 'on' quem está em cena veste a sua voz no terminal (default da casa); 'off' ele sai de cena e volta o operador neutro. É o mesmo estado do botão na sidebar do site.
nameNoPra invite: nome opcional do Sintético convidado.
textNoPra remember: a diretriz a gravar no caderno do par (3 a 280 chars). Ex: 'sempre me responda em português', 'nunca use hashtag'. Vira lei que o Sintético segue no site e no terminal.
cunhoNoPra set_cunho: slug do título do panteão. Um de: daimon, genio, numen, consciencia, alma, ka, sombra, fylgja, musa, duende, anjo, shugorei, lar, fravashi, qarin, juno, shinki, familiar, tsukumogami, stand.
emailNoPra invite: email do Sintético que você quer convidar.
scopeNoPra sonda: 'all' (default) traz um MIX de jogadas (teses do Fórum + ideias em estúdio/repertório/artigo); 'forum' traz só teses pro Fórum.
styleNoPra reflexo_generate: o TRAÇO, ou seja em que técnica a imagem é feita. Mesmo vocabulário do personagem (sapiens_character style): 'realista' é fotografia, 'editorial' é o cartum adulto da casa, 'anime' é cel shading, 'manhwa' é pintura de webtoon, '3d' é render. Ausente = a técnica que aquela estética sempre teve (humano e sombra saem editorial, anime sai anime, realista sai foto).
titleNoPra sonda_develop/sonda_sign: título opcional da tese.
turnsNoPra log: as trocas do assunto que acabou de fechar, no máximo 10, JÁ FILTRADAS. Sobe só o que é de PESSOA (o que ele decidiu, gostou, recusou, contou de si, mudou de ideia). Comando, path, log de build e erro de compilação NÃO entram: isso vira lição-lixo no caderno e contamina a voz dele em imagem, artigo e carrossel. Não é transcrição: condense a fala mantendo a palavra dele.
actionYes
amountNoPra send: quantas Sinapses enviar. Múltiplo de 100, mínimo 500, teto 10.000/dia.
contentNoPra sonda_sign: o corpo da tese a publicar (o 'body' devolvido por action=sonda_develop, depois de você qualificar/editar).
entryIdNoPra approve_access/reject_access (admin): o entryId do Sintético pendente, vem de action=pending_daemons.
toUserIdNoPra send_context/send: userId do par em sintonia. Pegue em action=status (partnerUserId) ou action=bonds (active.partner.userId).
wearPairNoPra companion mode=on: true devolve a cena ao Sintético em Sintonia, limpando o personagem escolhido antes.
aestheticNoPra reflexo_generate: a estética da imagem do Reflexo, ou seja O QUE é retratado. Default 'humano'. Quem decide a TÉCNICA é o arg `style`, separado: 'sombra' é a figura na penumbra, e ela sai em cartum ou em foto conforme o traço pedido.
transferIdNoPra send: id único pra idempotência (UUID). Se omitir, o MCP gera um. Pra repetir um envio com segurança (sem duplicar), reuse o MESMO transferId.
characterIdNoPra companion mode=on: o personagem DE AUTORIA DO USUÁRIO que entra em cena no lugar do Sintético em Sintonia (o id vem de sapiens_character action=list_mine, ou da lista offerCharacters do start/whoami). Só personagem criado por ele: personagem de outra pessoa é recusado, mesmo público. Omita pra manter quem já está em cena. Em action=soul, escolhe de qual Sintético sai a soul (default: quem está em cena).
customInputNoPra reflexo_generate: direção extra opcional pra cena (até 300 chars).
replyToPostIdNoPra sonda_develop/sonda_sign: o _id da tese-mãe quando a opção é uma resposta (origin 'campo' na sonda). Omita pra abrir fio novo.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, it discloses costs and refunds (send spends Sinapses, reflexo_generate charges 450 and refunds on failure), rate limits (10k/day and 3 sends/day, log caps), idempotency via transferId, admin-only gates, and silent logging behavior. These are consistent with readOnlyHint=false and openWorldHint=true; no contradiction is present.

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 information is front-loaded with the core purpose and action names, and much of the length is justified by 20 actions. However, it is a dense run-on paragraph with flavor text and semicolon-separated clauses, making it harder to scan than a structured action list would be.

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 21-parameter, 20-action tool with no output schema, the description covers the key operational context: what each action does, prerequisites, costs, limits, web-only exclusions, and partial return meanings such as status, bonds, sonda hooks, and soul output. Nothing critical for correct invocation appears missing.

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 95%, so most parameter-level meaning is already documented. The description still adds essential semantics for the required action enum, whose 20 values are not explained in the schema, plus cross-parameter workflow guidance such as getting toUserId from status/bonds and using characterId from sapiens_character list_mine.

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

Purpose4/5

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

The description states a specific resource and relationship: the human↔Synthetic link (Sintonia) via MCP, and enumerates the sub-actions it exposes. It distinguishes some sibling boundaries, such as using sapiens_character for authored characters and sapiens_profile for the person's voice, but the tool's broad action set is not contrasted against every sibling in one clear scope statement.

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 guidance per action, including calling send_context before send, using companion mode on/off, and that accepting bond requests or consecrating a Reflexo remain web-only. It also names alternatives and exclusions: authored characters via characterId, other people's characters only through the site DM, and sapiens_profile for the person's own voice.

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

sapiens_skillA
Read-only
Inspect

As SKILLS da casa: o passo a passo travado de cada fluxo do Sapiens, servido pelo próprio connector (sem login, sem custo, sem rede). LEIA A SKILL ANTES DE OPERAR O FLUXO: é mais barato que errar uma geração que cobra Sinapses. Sub-actions: 'list' (índice vivo: slug + quando usar cada uma, grátis), 'get' (o SKILL.md inteiro, passe name=). Slugs: primeiros-passos | voz-da-casa | repertorio | musica | video | imagem | personagem | studio | forum-comunidade | companhia | trilhas | minha-voz | minha-soul | curriculo | pontes | publicar | carrossel | sapiens-api. O mesmo conteúdo também sai como resource MCP em skill://sapiens//SKILL.md pra quem lê resources.

NameRequiredDescriptionDefault
nameNoSlug da skill no action=get. Ex: 'musica', 'video', 'voz-da-casa'. Rode action=list se não souber.
actionNo'list' devolve o índice (slug + quando usar) das skills da casa. 'get' devolve o SKILL.md inteiro de uma.list

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with 'sem login, sem custo, sem rede' plus 'grátis' for list — real context about auth and cost. It also discloses an alternate access path (skill://sapiens/<slug>/SKILL.md as an MCP resource), though it says little about size/length of the returned SKILL.md.

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

Conciseness4/5

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

Front-loaded with purpose and the read-before-operating directive, then sub-actions, then the slug index. The long pipe-delimited slug list is dense but functional; the closing resource note is arguably redundant with the earlier 'servido pelo próprio connector' framing.

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?

With only two optional parameters and no output schema, the description fully covers what each action returns (index of slug + when-to-use; the full SKILL.md) and offers an equivalent resource route. An agent has everything needed to call it correctly.

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 100%, so baseline is 3, but the description adds genuine meaning by enumerating the complete valid slug set and the name=<slug> pairing for 'get', whereas the schema only offers three examples. It does not explain slug aliasing or error behavior for an unknown slug.

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?

States a specific resource (the SKILLS/step-by-step docs of each Sapiens flow) and the two operations ('list' index, 'get' full SKILL.md), and explicitly frames itself as served by the connector rather than being an operational tool. This clearly separates it from the 29 sibling tools, which all perform flows rather than document them.

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?

Gives an explicit directive — read the skill BEFORE operating the flow — plus the cost rationale (cheaper than a bad generation that charges Sinapses), and routes the agent to action='list' when the slug is unknown. When-to-use, why, and the fallback path are all stated.

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

sapiens_stock_audioAInspect

Banco de som da casa: trilha pronta E efeito sonoro (tabela stockAudio). Sub-actions de leitura (públicas, sem auth): categories (lista os moods/usos), list (busca com filtros mood/albumSlug/durationMax/search; kind='sfx' traz os EFEITOS: whoosh, clique, impacto, ambiência, foley, devolve {count, items} com title/url/durationSeconds/tags), get (1 item por audioId). Use pra puxar trilha/efeito pronto: pega a url e usa direto no ffmpeg. Não achou o efeito? generate (COBRA Sinapses, exige login) cria um novo por texto: prompt + durationSeconds (1-15, default 5) + provider ('mirelo' padrão 35 Sinapses/s mín 70 | 'elevenlabs' premium 60/s mín 120) + promptInfluence opcional (0..1, só elevenlabs: fidelidade ao texto, default 0.3), assíncrono, acompanhe com generation-status (generationId) até 'ready' (audioUrl; o efeito também entra no acervo kind=sfx) ou 'failed' (Sinapses reembolsadas). Efeito é CURTO (1-15s): música/trilha nova é no sapiens_musicator. Mood disponíveis: calmo, intenso, narrativo, épico, sombrio. Precisa de VOZ junto com trilha e efeito (anúncio, vinheta, cena de filme, podcast)? scene (COBRA Sinapses, exige login) cria a CENA INTEIRA num passe só, já batida, sem montar em pedaços e mixar depois: scenePrompt (a direção da cena, quem fala, com que timbre, o que toca atrás, a fala entre aspas) + durationSeconds (3-120, default 15) + loudnessRate/pitchRate/speechRate opcionais + withSubtitles opcional (traz o tempo de cada palavra), 13 Sinapses/s, assíncrono, acompanhe com scene-status (sceneId) até 'ready' (audioUrl + realDurationSeconds) ou 'failed' (Sinapses reembolsadas). A cena fica com o AUTOR e não entra no acervo compartilhado, porque carrega a voz e o roteiro de quem pediu.

NameRequiredDescriptionDefault
kindNoaction=list: 'music' (default, trilhas) | 'sfx' (efeitos sonoros: whoosh, clique, ambiência, foley) | 'all'.
moodNoFiltra por mood exato: calmo, intenso, narrativo, épico, sombrio.
limitNoDefault 20, max 100. Só action=list.
actionYeslist = busca faixas/efeitos; get = 1 item por id; categories = moods/usos; generate = cria efeito sonoro novo (COBRA Sinapses, assíncrono); generation-status = status de uma geração (até ready/failed); scene = cria uma CENA de áudio completa, voz + trilha + efeito + ambiência num passe só (COBRA Sinapses, assíncrono); scene-status = status de uma cena (até ready/failed).
promptNoaction=generate: descreve o efeito (ex: 'whoosh curto de transição, grave e limpo'). Mín. 4 chars. Efeito é CURTO (1-15s); música/trilha é no sapiens_musicator.
searchNoBusca em título/álbum/mood/tags (action=list).
audioIdNostockAudio:_id (obrigatório pra action=get).
sceneIdNoaction=scene-status: o sceneId que o scene devolveu.
providerNoaction=generate: 'mirelo' (padrão, 35 Sinapses/s, mín 70) | 'elevenlabs' (premium, 60/s, mín 120).
albumSlugNoFiltra por lançamento: pulso-lento, meu-mundo-em-colapso, contos-de-dados, singles.
pitchRateNoaction=scene: tom da voz. Default 0 (natural do modelo).
categoryIdNostockAudioCategories:_id pra filtrar por mood/uso (action=list).
speechRateNoaction=scene: velocidade da fala. -50 = metade, 100 = dobro. Default 0.
durationMaxNoDuração máxima em segundos (ex: 120 pra trilha de movie < 2min).
scenePromptNoaction=scene: a DIREÇÃO da cena inteira, não só a fala. Diga quem fala, com que timbre e humor, em que idioma, o que toca atrás e o que se ouve no fundo, e ponha a fala entre aspas. Ex: 'Voz masculina adulta, calma e um pouco rouca, em português do Brasil. Estúdio à noite, um teclado bem baixo atrás. Ela fala: Sapiens Sintéticos, o Lab onde a sua ideia vira peça pronta.' Mín. 10 chars, máx. 2.000. Escreva como quem dirige, não como quem preenche campo: o modelo entende cena inteira e é daí que sai a qualidade.
generationIdNoaction=generation-status: o generationId que o generate devolveu.
loudnessRateNoaction=scene: volume. -50 = metade, 100 = dobro. Default 0 (natural do modelo).
withSubtitlesNoaction=scene: guarda a legenda com o tempo de cada palavra, pra casar texto com a fala sem transcrever depois. Default false.
durationSecondsNoDuração alvo em segundos. action=generate: 1 a 15, default 5. action=scene: 3 a 120, default 15. O custo escala por segundo nos dois. Na CENA a duração não é parâmetro do modelo, ela sai da direção escrita: o alvo entra no pedido como instrução e o preço é acertado pela duração que voltou.
promptInfluenceNoaction=generate, só provider='elevenlabs': fidelidade ao texto (0..1). Baixo = mais criativo, alto = segue o prompt à risca. Default 0.3. Ignorado no mirelo.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations are minimal (readOnlyHint=false, openWorldHint=true), so the description carries real weight and delivers: per-provider pricing with minimums, async polling contract (generate → generation-status until 'ready'/'failed'), refund behavior on failure, and the privacy rule that scenes stay with the author and do not enter the shared acervo. It also notes generated effects do enter the acervo as kind=sfx. Docked one point because the list/get return shape is only partly disclosed (count/items, title/url/durationSeconds) and pagination behavior is unaddressed.

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

Conciseness4/5

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

Dense and front-loaded: the bank definition and the free read actions come first, paid generation and scene follow. Every clause carries information — no filler. The weakness is structure: a single unbroken wall of prose across seven actions and 20 parameters that would scan far better as a short bulleted action map, which raises the risk of an agent skimming past the scene/status pairing.

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 7-action, 20-parameter tool with no output schema, the description covers everything an agent needs to call it correctly: which actions are free vs. paid, the async completion pattern for both long-running actions, failure/refund semantics, result usage, and the sibling handoff for music. The explicit privacy note on scenes is a detail an agent could not infer from any structured field.

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 100%, so baseline is 3, but the description adds coordination the schema cannot: the generate→generation-status(generationId)→ready(audioUrl) loop, the cost-escalation-by-second model, and the practical instruction to take the returned `url` straight into ffmpeg. It also disambiguates durationSeconds per action and confines promptInfluence to provider='elevenlabs'. Mostly additive, though several details (provider pricing, mood enum, pitch/speech rates) are duplicated from the schema.

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?

States a specific resource (banco de som da casa: trilha pronta + efeito sonoro) and enumerates each sub-action with its own verb and output (categories lists moods, list searches with filters, get returns 1 item by audioId). It also draws the boundary against siblings: new music/trilha goes to sapiens_musicator, and scene/generate are named as distinct write actions. An agent can pick the right action without opening the 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?

Explicit routing: read actions are declared 'públicas, sem auth', while generate and scene are flagged 'COBRA Sinapses, exige login'. It gives the escalation path verbatim — 'Não achou o efeito? generate' — and hands off music generation to sapiens_musicator. When-not-to-use is stated for the short-effect limit (1-15s) versus full tracks.

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

sapiens_stock_videoA
Read-only
Inspect

Banco de clipe/B-roll stock (catálogo de vídeo curto pronto no CDN, baixável, free/interno). Leitura pública, sem auth. Sub-actions: categories (lista moods/usos: Ambiente & Atmosfera, Abertura & Fechamento, Textura & Abstrato, Natureza & Paisagem, Tech & Cripto), list (busca clipes com filtros mood/orientation/loopOnly/durationMax/search, devolve {count, items} com title/url/posterUrl/durationSeconds/orientation/loopFriendly/tags), get (1 clipe por videoId). Use pra puxar B-roll pronto em vez de gerar via sapiens_video: pega a url do clipe e usa como fundo/atmosfera de página, B-roll no ffmpeg de /sapiens:movie, ou frame de começo/fim no criar vídeo (orientation vertical=9:16 pra short, horizontal=16:9, loopOnly=true pra fundo que repete limpo).

NameRequiredDescriptionDefault
moodNoFiltra por mood exato (action=list).
limitNoDefault 20, max 100. Só action=list.
actionYeslist = busca clipes; get = 1 clipe por id; categories = moods/usos.
searchNoBusca em título/mood/tags/descrição (action=list).
videoIdNostockVideo:_id (obrigatório pra action=get).
loopOnlyNotrue = só clipes loopFriendly (loop limpo, bom pra fundo de página).
categoryIdNostockVideoCategories:_id pra filtrar por mood/uso (action=list).
durationMaxNoDuração máxima em segundos (ex: 8 pra fundo curto / clipe de começo).
orientationNoFiltra por formato: vertical (9:16), horizontal (16:9), square (1:1).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: 'Leitura pública, sem auth' (auth need) and the return shape {count, items} with the item fields (title/url/posterUrl/durationSeconds/orientation/loopFriendly/tags). It does not discuss rate limits or pagination behavior, so not a 5.

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

Conciseness4/5

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

Front-loaded with the resource and sub-actions, and every clause carries information about use or parameters. It is dense and somewhat run-on within a single long sentence with parenthetical lists, which costs a little readability, but there is little wasted text.

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

Completeness4/5

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

For a 9-param, 3-action tool with no output schema, the description covers the list return fields and the per-action intent well, and even the categories return content (moods/usos). The only minor gap is the exact return shape of get by videoId, which is left implicit.

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 100%, so baseline would be 3, but the description adds real meaning beyond the schema: it lists the concrete mood categories, maps orientation to aspect ratios with intent (vertical=9:16 for shorts, horizontal=16:9), and explains loopOnly='fundo que repete limpo'. That is additive value over the already-complete schema.

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?

States a specific resource (stock clip/B-roll catalog ready on CDN, downloadable, free/internal) and enumerates the three sub-actions (categories/list/get) with what each returns. It explicitly distinguishes itself from the sibling sapiens_video by positioning itself as ready-made B-roll rather than generation.

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?

Explicitly routes the agent: 'Use pra puxar B-roll pronto em vez de gerar via sapiens_video', naming the alternative and the condition. It then gives concrete use cases (page background/atmosphere, B-roll in the /sapiens:movie ffmpeg pipeline, first/last frame) and hints at orientation/loopOnly choice for shorts vs page backgrounds.

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

sapiens_studiosAInspect

O SEU studio (o perfil de EMPRESA da casa do user) + o catálogo dos estúdios/experimentos Sapiens. Sub-actions: mine (o studio do user: nome/endereço público/marca/operador/tamanho do time), create (FUNDA um studio novo, exige name; nasce NO AR com endereço público, sem rascunho, de graça, teto de 8 por pessoa), list (catálogo com URL+status+tags+mcpReady), get (detalhe de 1 slug), publishable_url (formata URL /articles/). Use quando user pergunta 'que estúdios existem', 'qual o meu studio', ou diz 'quero abrir/fundar meu studio', 'criar a página da minha empresa'. Estúdios cobertos: helen-voice, musicator, persona-sapiens, sapiens-video, text-post-builder, carrosel-editorial, comunidade, repertorio.

NameRequiredDescriptionDefault
nameNoPra action=create: o nome da casa (obrigatório). O endereço público sai daí, em kebab-case. Pergunte ao user, não invente.
slugNoAlternativa a publishableId: passe o slug direto.
actionYesmine = o SEU studio (a página de portfólio da sua casa): nome, endereço público, marca, operador e tamanho do time. create = FUNDA um studio novo na conta do user (exige 'name'). Nasce NO AR, com endereço público e ele como fundador (studio não tem rascunho); vestir a página é na própria página. Teto de 4 por pessoa. list/get = catálogo de estúdios da casa. publishable_url = URL de artigo.
studioNoPra action=get: slug do estúdio (ex 'helen-voice', 'musicator', 'persona-sapiens', 'sapiens-video').
brandSlugNoPra action=create: marca da casa (slug de sapiens_brand). Opcional. Só passa marca que é do user.
descriptionNoPra action=create: uma linha do que a casa faz (até 200 chars). Opcional, mas é o que aparece embaixo do nome na página.
publishableIdNoPra action=publishable_url: ID do publishable. Retorna URL canônica /articles/<slug>.

TDQS

A4.1/5.0
Behavior4/5

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

With readOnlyHint=false and openWorldHint=true already declared, the description adds real context beyond the annotations: create publishes immediately with a public address, has no draft state, is free, and is capped per person. However, that cap is stated as 'teto de 8 por pessoa' in the description while the schema says 'Teto de 4 por pessoa' — a factual inconsistency that weakens trust in the behavioral claims.

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

Conciseness4/5

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

The definition is front-loaded: identity of the resource first, then the action list, then usage triggers, then the covered studios. Dense but each clause carries information. Minor redundancy between the description's action summary and the action enum's own descriptions keeps it from a 5.

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

Completeness4/5

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

For a five-action multiplexed tool with no output schema, the description covers what each action yields and how create behaves. What an agent still lacks is anything about failure modes (e.g. hitting the studio cap, invalid slug) and the 8-vs-4 quota conflict leaves one rule ambiguous.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter, including which action each applies to. The description restates the action set but adds no syntax, format, or constraint details beyond the structured fields (and, for the quota, actively conflicts). Baseline 3 is correct here.

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 states a specific resource (the user's company studio plus the Sapiens studio/experiment catalog) and enumerates all five sub-actions with what each returns (mine = name/public address/brand/operator/team size; list = URL+status+tags+mcpReady; get = one slug; publishable_url = /articles/<slug>). It also names the covered studios, so an agent can distinguish it from siblings like sapiens_brand or sapiens_gallery without opening any schema.

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

Usage Guidelines4/5

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

It gives explicit trigger phrases in both directions, in Portuguese: use when the user asks 'que estúdios existem' / 'qual o meu studio', or says 'quero abrir/fundar meu studio'. That is strong when-to-use guidance. It does not name alternatives or exclusions (e.g. that brand edits go to sapiens_brand rather than here), which keeps it short of a 5.

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

sapiens_supportAInspect

Chamados de suporte do PRÓPRIO user pelo Claude (qualquer logado; identidade SEMPRE do sessionToken). Escopo TRAVADO no dono: você só vê e mexe nos SEUS tickets, nunca nos de outra pessoa (os endpoints de suporte já vazaram PII uma vez e foram fechados; aqui a régua é a mesma). Sub-actions: 'create' (abre chamado; subject obrigatório, message=primeira mensagem opcional, whatsapp opcional; devolve ticketId), 'list' (seus chamados: subject/status open|closed/escalado/data), 'get' (1 chamado seu por ticketId + histórico de mensagens), 'reply' (responde num chamado seu, entra como mensagem do user; reabre se estava fechado). Fechar/escalar/deletar ficam no lado do suporte, fora do MCP.

NameRequiredDescriptionDefault
actionYes
contentNoPra reply: o texto da sua resposta.
messageNoPra create: a primeira mensagem do chamado (opcional).
subjectNoPra create: o assunto do chamado.
ticketIdNoPra get/reply: o id do chamado (vem de action=list).
whatsappNoPra create: whatsapp de contato (opcional).

TDQS

A5/5.0
Behavior5/5

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

Beyond the sparse annotations, the description discloses authentication via sessionToken, enforced per-user scope, the PII-leak rationale, that replies re-open closed tickets, and which operations are server-side. This is rich behavioral context with no contradiction to readOnlyHint=false or openWorldHint=true.

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

Conciseness5/5

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

The description is dense but not wasteful. Scope and security are front-loaded, the sub-actions are compressed into one readable list, and the outside-of-MCP note prevents misuse without extra sentences.

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?

Despite having no output schema, the description covers return values (ticketId, message history, status/data), input constraints, authentication identity, and unsupported operations. It is complete enough for an agent to select and call the tool correctly.

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

Parameters5/5

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

Schema coverage is high (83%), but the description adds essential conditional semantics: subject is mandatory for create, message/whatsapp are optional, ticketId comes from list, and content is the reply text. It resolves the action-dependent parameter meanings that the flat schema alone cannot express.

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 clearly names the resource (support tickets), the actor scope (the user's own tickets only), and enumerates the four sub-actions. This makes it easy to distinguish from the content-oriented sibling tools.

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?

Each sub-action has explicit triggers and expected results, and the description clearly states what is not possible ('Fechar/escalar/deletar ficam no lado do suporte, fora do MCP'). It also strictly warns against touching other people's tickets, giving clear when/when-not guidance.

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

sapiens_trilhasAInspect

Trilhas (cursos) e Desafios (missões) da Sapiens pelo Claude. Identidade SEMPRE pelo sessionToken. Sub-actions: 'list' (suas trilhas: título + nº de módulos/aulas + quantas aulas você já fechou), 'get' (1 trilha por slug, com módulos e aulas, o slug vem do list), 'list_challenges' (Desafios ativos + seu status em cada: not_started|pending_review|completed|rejected, recompensa em Sinapses, link da ação), 'claim_mission' (submete a prova de um Desafio: missionId + proofText). O claim manda a prova pra REVISÃO do dono, o crédito em Sinapses só cai quando ele aprovar, nunca auto-credita por aqui. Fluxo: list → get; list_challenges → claim_mission.

NameRequiredDescriptionDefault
slugNoPra get: slug da trilha (vem do list).
actionYes
missionIdNoPra claim_mission: id do Desafio (vem do list_challenges).
proofTextNoPra claim_mission: a prova (link, @handle ou descrição) que o dono vai revisar.

TDQS

A4.3/5.0
Behavior4/5

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

Adds real context beyond annotations: identity is always via sessionToken, and claim_mission only submits for owner review — Sinapses credit lands only on approval, never auto-credited. This clarifies the mutation semantics that readOnlyHint=false alone cannot convey. Doesn't cover rate limits or failure modes.

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

Conciseness4/5

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

Front-loaded with the domain and identity rule, then sub-actions, then the critical no-auto-credit caveat, then the flow recap. Dense but every sentence carries information; only the final flow line partly repeats earlier content.

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

Completeness4/5

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

With no output schema, the description carries return-value burden and does it well — titles, module/lesson counts, per-challenge status enum, reward, action link. What's missing is what claim_mission returns and any error/validation behavior.

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 already 75%, but the description adds provenance the schema lacks: slug comes from 'list', missionId comes from 'list_challenges', and proofText is what the owner will review. That cross-references the workflow, not just restating field types.

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?

States the resource (Trilhas/cursos and Desafios/missões da Sapiens) and enumerates the four sub-actions with what each returns. An agent can distinguish this from all 28 sibling tools without opening the schema.

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

Usage Guidelines4/5

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

Explicit flow guidance: 'list → get' and 'list_challenges → claim_mission', plus where each ID originates. No explicit when-not or named alternative, but no sibling overlaps the courses/challenges domain, so the guidance is essentially complete.

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

sapiens_videoAInspect

Sapiens Video: gera vídeo (qualquer membro logado; vídeo é caro, cobra as Sinapses da sua conta). Sub-action 'create' (recomendada): escolhe modelo + config e gera num call (cria a row + renderiza). Modelos: 'sapiens-video-seedance' (Seedance 2.0, cena+áudio nativo, 4-15s, 480/720/1080p, t2v/i2v; aceita até 4 imagens de REFERÊNCIA via referenceImageIds/referenceImageUrls/referenceImagePaths (o H3 aceita até 9, o Omni 1.2 até 6, 3 por personagem; Kling, Hailuo, WAN 2.5 e 3.0 e os dois Spicy não), que guiam estilo/personagem/composição SEM virar o 1º frame, é o fluxo STORYBOARD: gere a folha de key poses com sapiens_image templateSlug='storyboard-sapiens-v1', passe folha + personagem como refs num t2v e descreva o take contínuo no prompt, citando as refs por descrição e mandando ignorar o traço do sketch; aceita também 1 VÍDEO DE MOVIMENTO via referenceVideoUrls (role 'refvideo' -> reference_videos, <=15s, host da casa): a coreografia/câmera do clipe guia o take, combinável com a folha), 'sapiens-video-seedance-2-fast' e 'sapiens-video-seedance-2-mini' (os irmãos do 2.0: MESMO repertório completo, incluindo referência, frame final e vídeo de movimento; o Fast custa 20% menos e o Mini METADE, ambos com teto 720p, pedir 1080p neles entrega e cobra 720p. Use o Mini pra iterar enquadramento/prompt barato e feche no 'sapiens-video-seedance' quando o take estiver certo), 'sapiens-video-seedance-25' (Seedance 2.5, a geração SEGUINTE e não um quarto tier da 2.0: take de 4 a 30s num fôlego, edita e estende vídeo, mesmo repertório de referência mais ÁUDIO como referência; teto 720p e ~1,5x o preço por segundo do 2.0. Duração é o que pesa aqui: 30s em 720p passa de 40 mil Sinapses, então confirme a duração com a pessoa antes de disparar. Quem precisa de 1080p fica no 'sapiens-video-seedance'), 'sapiens-video-kling' (Kling 3.0 Pro, anima imagem, 3-15s, sound opcional, i2v/t2v), 'sapiens-video-hailuo' (Hailuo 2.3 da MiniMax, física e movimento em 768p, 6 ou 10s, t2v/i2v) e 'sapiens-video-hailuo-pro' (o mesmo em 1080p, 5s fixo, duração não é param aqui): motores PUROS, sem áudio nativo, sem imagens de referência e sem frame final, então quem precisa disso fica no Seedance 2.0; o Pro é o 1080p mais barato da casa, 'sapiens-video-h3' (MiniMax H3: som nativo incluso sem toggle, 5 a 15s em '2k' ou '768p' (sem resolution cai no 2k, que custa 33% mais por segundo), t2v/i2v e frame final; ACEITA até 9 imagens e 3 vídeos de referência (somando 15s), o caminho de take longo com personagem travada; referência e frame inicial são exclusivos, mande um dos dois; o 2K de 15s leva uns 9 minutos de render, acompanhe em status e não gere de novo), 'sapiens-video-pvideo-2-pro' (P-Video-2 Pro, o H3 acelerado pela Pruna: o RASCUNHO de personagem travada, até 9 imagens contando referências e frame inicial e final no mesmo pedido, 5 a 15s em '480p' ou '768p', som nativo, o take volta em segundos; sem t2v, precisa de ao menos uma imagem ou um clipe; cobra por imagem além do segundo, então cote em 'price' com as mesmas imagens do create; aceita ainda até 3 vídeos (referenceVideoUrls) e 3 áudios (referenceAudioUrls, ou referenceAudioTrackIds pra faixa sua do sapiens_musicator) de referência, 15s somados por tipo, cada segundo cobrado à parte e medido pelo servidor antes do débito (cote com referenceVideoClipsSec, a duração de cada clipe, e referenceAudioSec), e keepAudio com um áudio só faz ele virar a trilha do take), 'sapiens-video-h3-spicy' (MiniMax H3 Spicy: o H3 SEM freio de conteúdo, i2v puro a partir de uma peça SUA gerada na casa, que é o que trava a identidade (veja FRAME NOS SPICY); 3 a 15s, 480p/768p/1080p, som nativo, frame final; o segundo de vídeo mais barato e o render mais rápido da casa), 'sapiens-video-seedance-spicy' (Seedance 2.0 Spicy: o 2.0 SEM freio, também i2v puro, som nativo; 4 a 15s em 480p e 720p, para em 10s em 1080p; sem frame final; o som tem interruptor no mesmo preço), 'sapiens-video-wan' (WAN 2.5, imagem que fala/canta com áudio+lip-sync, 5/10s, i2v), 'sapiens-video-wan-3' (WAN 3.0: texto ou imagem, som nativo com interruptor no mesmo preço, frame final, 5/8/10s em 480/720/1080p; sem imagem de referência), 'sapiens-video-flux-3-max' (FLUX 3 Max, fal + Black Forest Labs: texto ou imagem, 5 a 20s em 720p/1080p, som nativo com interruptor, frame final junto do inicial; sem imagem de referência), 'sapiens-video-ltx-25-fast-a2v', 'sapiens-video-ltx-25-pro-a2v' e 'sapiens-video-ltx-23-pro-a2v' (LTX Audio-to-Video, o caminho de a personagem CANTAR ou FALAR com o áudio da pessoa: o áudio vira o take, puxa a boca e o gesto e dita a duração e o preço; mande UM áudio (mp3 ou m4a): a faixa SUA do sapiens_musicator em referenceAudioTrackIds (o trackId; o servidor confere que é sua), ou um link de arquivo SEU em referenceAudioUrls (o trecho cortado; link de outra conta é recusado antes de cobrar) e a foto da ficha em startImageId/startImageUrl (sem foto, o prompt descreve a cena); até 20 s de áudio no 2.5 Fast e no 2.3 Pro, 10 s no 2.5 Pro, em 720p/1080p; durationSec não se usa, o servidor mede o áudio antes de cobrar; cote em 'price' com durationSec = os segundos do áudio), 'sapiens-video-ltx-25-fast' e 'sapiens-video-ltx-25-pro' (LTX 2.5: texto ou imagem, 6 a 20 s no Fast e 6 a 10 s no Pro, 720p/1080p, som nativo com interruptor, frame final junto do inicial; sem imagem de referência), 'sapiens-video-kling-motion' (Motion transfer: passa o movimento de um vídeo pra uma imagem, PRECISA de pessoa com tronco visível na imagem E no vídeo), 'sapiens-video-shot-mimic' (Shot Mimic: recria o plano/câmera/cortes de um vídeo de referência como cena nova), 'sapiens-video-omni-12' (Gemini Omni 1.2: texto ou imagem vira vídeo de 4, 6, 8, 10, 12 ou 15s (sem durationSec, 10s) com áudio nativo, de '360p' a '4k' (sem resolution, 720p; 360p custa 1/3 do 720p, 1080p 1,5x, 4k 3x); aceita até 6 imagens de referência (3 por personagem, 2 personagens) e até 3 vídeos de referência de até 3 s (1 no take acima de 10 s, só take novo), que dão a aparência de quem aparece neles; editOfImageId aponta um vídeo Omni seu e o prompt edita a MESMA cena, preservando câmera e ambiente; e VÍDEO-FONTE: sourceVideoId (vídeo seu da galeria) ou sourceVideoUrl (link da casa), mp4 até 15 s, editado (sourceVideoMode 'edit', o padrão, ex: trocar a pessoa do vídeo pelo personagem da imagem de referência, cobrado pelo tamanho do clipe) ou estendido ('extend', cobrado pelo durationSec do pedaço novo)) ('sapiens-video-omni', o Omni 1.0, e 'sapiens-video-lite/fast/quality', o Veo 3.1, SAÍRAM: o Google apagou os quatro em 22/10/2026 e o pedido é recusado antes de cobrar). Args create: model, prompt, durationSec, resolution ('480p'/'720p'/'1080p'; no H3 '768p'/'2k'; no Omni 1.2 '360p' a '4k'), audio, aspectRatio. RECEITA DE TAKE (templateSlug + brief), o irmão do templateSlug da imagem: em vez de escrever o prompt inteiro, passe templateSlug e a receita travada da casa embrulha a cena com estilo, cenário, arco, áudio e look, e ainda escolhe o motor (por isso model fica opcional). O prompt vira só a CENA e o brief preenche os campos do formato (subject, persona, hook, shots com voiceLine e propVisible, uvps, language, energy); campo vazio some do prompt em vez de virar buraco. Receitas de hoje: 'ugc-vertical-v1' (selfie que fala, o formato nativo de Reels/TikTok/Shorts), 'unboxing-vertical-v1' (mãos e reveal, som real do papel e do lacre), 'app-demo-vertical-v1' (a tela do app legível na mão da pessoa) e 'reflexao-vertical-v1' (talking-head lento pra ideia ou ensaio). Override de model/aspectRatio/durationSec/resolution vale dentro do que a receita aceita, e o erro lista as opções. Sub-action 'templates' (sem custo, sem login) traz o catálogo vivo com spec default, whitelist e os briefFields de cada uma. Isto substitui a tool sapiens_shorts, que era admin-only e só falava Veo 3.1 Fast; o mesmo UGC de 8s sai a 720p no Seedance 2.0 Mini por bem menos. FRAME INICIAL/FINAL POR REFERÊNCIA (recomendado): startImageId/endImageId (id da sua galeria) ou startImageUrl/endImageUrl (url de galeria/Acervo/personagem), resolvidos server-side igual à imagem, descubra via sapiens_reference. FRAME POR ARQUIVO LOCAL (só no MCP instalado/stdio, não no remoto): startImagePath/endImagePath = caminho absoluto de uma imagem no seu PC (PNG/JPEG/WebP até 8MB); o processo lê o arquivo e sobe como frame inicial/final, igual a subir no gerador do site, 1 imagem inicial + 1 final por vídeo, então pra vários vídeos rode create uma vez por imagem. No remoto use id/url. Alternativa base64: references (role 'start'=imagem i2v, 'end'=frame final, 'driving'=vídeo de movimento do Motion). Suporte a frame final varia por modelo. FRAME NOS SPICY (h3-spicy, seedance-spicy, ltx-spicy): o frame vem SÓ de startImageId/startImageUrl (e endImageId/endImageUrl no H3 Spicy, o único que lê final) apontando uma peça SUA gerada na casa, e o servidor baixa o frame dessa peça. Arquivo local (startImagePath), base64 (references), upload, peça trazida por ponte e foto de fora são recusados: antes de cobrar quando a fonte já chega no pedido, ou no render, com as Sinapses de volta. Custo server-side por config. Sub-action 'generate' (legado): renderiza um imageId de vídeo já criado no site. Retorna {success, url, imageId, cost}. VITRINE (sem custo): sub-action 'demos' lista os SEUS demo films (kind=demo do Estúdio de Vídeo) com slug + estado de vitrine; sub-action 'showcase' põe/tira um demo (por slug) do mini-cinema da /conectar-claude, com showcaseTag (chip de capacidade) e showcaseOrder (ordem asc). Fluxo: 'demos' pra achar o slug, depois 'showcase' com showcase=true. Só entra na vitrine pública se for a conta da casa. VÍDEOS PROGRAMÁTICOS (ADMIN, sem custo): o Lab do Estúdio de Vídeo (/experimentos/films, tabela videoSpecs, 5 kinds: demo | aula-tour | essay | tipografia-musical | dataviz) opera por aqui sem browser, 'film-list' (todos os kinds; filtros filmKind/filmStatus), 'film-get' (spec inteiro por slug), 'film-upsert' (cria/atualiza por slug, idempotente; spec = objeto JSON no shape do 'Copiar spec' da tela, validação no servidor), 'film-status' (produção por slug: filmStatus + videoUrl + durationSecMeasured; o fecho do render é os três num call), 'film-publish' (Acervo aba Fitas + portfólio; exige pronto+URL), 'film-delete' (limpar rascunho). O RENDER do filme segue no agente local (skill /film, repo da casa): o MCP registra e fecha o ciclo, não renderiza. create é ASSÍNCRONA: cria o row, debita e volta NA HORA com {imageId, status:'rendering', cost} (não espera o render, que leva de segundos a minutos). Acompanhe com a sub-action 'status' (imageId) até status='completed' (traz a url) ou 'error'/'blocked'. NÃO chame create de novo enquanto renderiza (cria outro vídeo e cobra de novo); falha de provider refunda sozinha. EDIÇÃO (as ações da ficha do site, cada uma vira peça nova e o original fica): 'trim' (imageId + startSec, endSec opcional: corta um trecho; grátis), 'join' (imageIds: 2 a 8 vídeos SEUS na ordem, até 180 s somados: compilado; grátis), 'fecho' (imageId + ending 'marca'/'sapiens'/'none', watermark, musicUrl de trilha da casa, nameCard {name, subtitle}: fecha o vídeo com a assinatura da casa; grátis), 'render-ref' (imageId do take + refUrl da folha que o gerou: a peça com a referência ao lado; cobra Sinapses, o mesmo par já feito volta de graça). Síncronas, podem passar de 2 min: Timeout é o cliente desistindo, olhe sapiens_gallery action=list kind=video antes de repetir. RESOLUÇÃO: 'upscale' (imageId de vídeo SEU completed + resolution = o alvo, '720p', '1080p', '2k' ou '4k') gera uma VARIANTE nova em resolução maior, o original fica intacto; cobra Sinapses por segundo do clipe, mais caro quanto maior o alvo, assíncrona como o create (acompanhe em status). SOM: 'sonorize' (imageId de vídeo SEU completed + prompt do som da cena) gera uma VARIANTE nova com trilha sincronizada (o original fica intacto; sonorize sempre o original, nunca uma variante). engine escolhe o motor: 'mirelo-sfx-2.0' (42 Sinapses/s, o default: GUARDA a fala do clipe, tira a música e refaz o resto), 'mmaudio-v2' (20 Sinapses/s, segue o texto em vez da imagem: é o motor do bicho trocado, onde o Mirelo devolve o som do bicho original; refaz o som inteiro e a fala se perde) ou 'elevenlabs-video-to-music' (26 Sinapses/s, faz a TRILHA e não o som da cena: uma música que acompanha os cortes, mixada por baixo do som que o clipe já tem; o prompt descreve a música). ADMIN: 'shadows' (videoUrl + title) extrai o depth map (depth-map) de um vídeo: entra na sua timeline de vídeos e no Acervo como driving reutilizável; 'shadows-list' lista os depth maps prontos. PREÇO DE VÍDEO É FAIXA, NÃO NÚMERO: nos motores por segundo (todo Seedance, Kling, WAN 2.5 e 3.0, Hailuo, H3, os dois Spicy, Shot Mimic, e desde out/2026 o Gemini Omni) a conta é duração x resolução [x áudio], e OMITIR não pega o barato: sem 'resolution' o servidor cobra o tier MAIS CARO do motor (menos o Gemini Omni 1.2, que fica no 720p), sem 'durationSec' cobra o piso de duração (no Omni, o padrão: 10s). Um create de Seedance 2.0 sem resolution debita 1080p. Nunca prometa um valor sem cotar: sub-action 'price' (sem custo, sem login) devolve o número EXATO que o create vai debitar pra model + durationSec + resolution + audio, e avisa (clamped=true) quando o que você pediu não é o que vai ser cobrado. Sub-action 'models' (sem custo, sem login): lista os modelos ativos + a faixa de preço calculada pela mesma função que debita (priceDefault = o que uma chamada sem config custa, priceMin e priceMax = os dois cantos do motor, cada um com a config que o produz) + config (durações/resoluções) + disponibilidade (motor em preview pode aparecer como 'em breve'). LEGENDA (fita, por slug): 'caption-list' (sem custo, mostra os idiomas que a peça já tem), 'caption-generate' (captionLang = idioma FALADO; captionTrio=true já traduz pro trio da casa pt+en+ja na mesma chamada) e 'caption-translate' (captionLang = destino, parte sempre da faixa original). Cobra por minuto começado de vídeo: 50 Sinapses o minuto transcrito, 20 o traduzido, com a duração vindo do doc da peça. A legenda é desenhada pela casa em dois estilos (discreta e social), trocáveis no play sem regerar e sem custo.

NameRequiredDescriptionDefault
slugNoaction=showcase: slug do demo film a curar (descubra via action=demos). film-get/film-status/film-publish/film-delete: slug do spec (descubra via film-list). film-upsert: slug fixo do filme no repo films/ (idempotente: existe = atualiza, não existe = cria com esse slug); omita pra criar com slug gerado.
specNofilm-upsert: o spec inteiro como objeto JSON (validação fica no servidor, fonte única). Shape: { kind, musicMode ('default'|'file'|'track'), musicRef?, aulaSlug? (só aula-tour), e o payload do kind: demo | aulaTour | essay | tipoMusical | dataviz }. Mesmo shape do 'Copiar spec' da tela /experimentos/films; descubra um exemplo real com film-get.
audioNoaction=create e action=price: liga áudio. Seedance = on por default; Kling 'sound' = +50% no preço. WAN 2.5 é áudio nativo sempre; WAN 3.0 tem interruptor, mesmo preço ligado ou desligado. H3 e H3 Spicy: o som vem sempre e já está no preço, o campo não muda nada. Seedance Spicy: tem interruptor (audio=false sai mudo, pra sonorizar depois), mesmo preço ligado ou desligado.
briefNoaction=create com templateSlug: o formulário do template. Cada receita usa os campos que precisa (veja `briefFields` em action=templates) e ignora o resto; campo vazio some do prompt em vez de virar buraco.
modelNoaction=create (opcional quando você passa templateSlug: a receita traz o motor) e action=price (obrigatório). O catálogo POR MODELO (capacidades, referências, tetos, FAIXA de preço) mora na description desta tool e VIVO em action=models; a skill 'video' (sapiens_skill) guia a escolha. Atalho de famílias: seedance/seedance-2-*/seedance-25 = cena+áudio+referências (o 25 estica até 30s e o preço acompanha), kling = anima imagem, wan = WAN 2.5, imagem que fala, wan-3 = WAN 3.0, texto ou imagem com som e frame final, hailuo/hailuo-pro = movimento puro sem áudio, h3 = 2K ou 768p com áudio e até 9 imagens + 3 vídeos de referência, pvideo-2-pro = o H3 acelerado pela Pruna, rascunho barato e rápido de personagem travada (até 9 imagens, 3 vídeos e 3 áudios de referência, cobra por imagem e por segundo de clipe e de áudio, 480p/768p, sem t2v), h3-spicy/seedance-spicy = os mesmos motores sem freio de conteúdo, só a partir de imagem (i2v), kling-motion/shot-mimic = transferência de movimento/plano, lite/fast/quality = Veo 3.1, omni = Gemini com áudio nativo.
titleNoaction=shadows: nome do depth map (vira o slug no Acervo; re-extrair o mesmo título sobrescreve). Mín. 3 chars.
actionYes
endSecNoaction=trim: o segundo onde o corte acaba. Sem ele, vai até o fim do clipe.
endingNoaction=fecho: a vinheta do fim. 'marca' é a assinatura da casa (Sint.fyi); 'none' sem vinheta.
engineNoaction=sonorize: o motor de som. 'mirelo-sfx-2.0' (default) é o motor da casa pra sonorizar: GUARDA a fala que o clipe já tem, tira a música que veio junto e refaz o resto do som em volta; em clipe mudo, faz o som inteiro. O Mirelo tira o som da IMAGEM e o texto só empurra: em cena refeita com bicho trocado (recast, Omni editando um take), ele devolve o som do bicho ORIGINAL (o gatinho no take do T-rex saiu com passo e rugido de T-rex). 'mmaudio-v2' segue o texto: é o motor quando a imagem engana (bicho trocado, cena famosa refeita) e o mais barato por segundo; refaz o som inteiro e a fala do clipe se perde. 'elevenlabs-video-to-music' não faz som de cena, faz TRILHA: uma música que acompanha os cortes do clipe, mixada por baixo do som que ele já tem (a fala e o ruído ficam); o prompt descreve a música (gênero, instrumentos, clima, onde cresce), não a cena. Recusa, sem cobrar, peça que já tem o fecho da casa (sonorize o take original) e clipe fora da CDN da casa. Cote o preço com a pessoa antes. O Mirelo e o Video to Music recusam, sem cobrar, peça que entrou de fora (ingest, a casa não sabe a duração dela) e clipe acima de 180s: passe a peça de fora antes em action=trim e sonorize o corte; clipe longo, corte em partes.
promptNoPrompt da cena. Pra i2v descreve o movimento. Default vago se omitido.
refUrlNoaction=render-ref: a url da folha ou referência que GEROU o take (está nas referências da peça ou nas imagens do personagem dela).
searchNoaction=shadows-list: filtro de busca opcional (título/tags). Sem ele, lista o banco inteiro (até 300). Cada item traz url (depth map puro, driving) e skeletonUrl (soma com esqueleto, preview humano) quando existe.
imageIdNoaction=generate ou action=status: generatedImages:_id do vídeo. O create devolve o imageId; ou um vídeo já criado no site (o row define modelo + custo). Use sapiens_gallery action=list pra descobrir. action=sonorize: o imageId do clipe SEU (status completed) que vai ganhar som. action=extend: o take SEU (completed) que ganha o pedaço seguinte; pode ser a raiz ou a última parte da corrente (o servidor resolve a posição). No Omni a parte pronta já traz as anteriores na frente: a última é o filme inteiro, não junte as partes. action=chain: qualquer parte da corrente (devolve filmeInteiro quando o motor acumula).
filmKindNofilm-list: filtra por kind (demo | aula-tour | essay | tipografia-musical | dataviz).
imageIdsNoaction=join: de 2 a 8 vídeos SEUS (ids da galeria), na ordem em que entram no compilado (até 180 s somados).
musicUrlNoaction=fecho: trilha do acervo da casa (url do CDN) mixada por baixo do som do vídeo.
nameCardNoaction=fecho: cartão de nome por cima do fim (o personagem se apresenta antes da vinheta).
pagarComNoaction=create: de qual saldo sai o take. 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 config, preço em dólar do custo do motor naquela duração, resolução e áudio. Use quando a pessoa pedir pra pagar com o saldo da API ou estiver sem Sinapses e com saldo em dólar. Saldo em dólar curto recusa sem cobrar nada; motor sem preço em dólar recusa. Falha do render estorna no mesmo saldo. O valor cobrado volta em pagoEmDolarUsd. Sinapse nunca vira dólar nem o contrário: são duas carteiras.
showcaseNoaction=showcase: true põe na vitrine /conectar-claude, false tira.
startSecNoaction=trim: o segundo onde o corte começa.
videoUrlNoaction=shadows: URL pública (http/https) do vídeo-fonte. O servidor extrai a SOMBRA (depth), entrega ela na SUA timeline de vídeos (você vira dono) e guarda a ficha no Acervo (Corpo). ADMIN, 200 Sinapses/segundo (refund na falha). film-status: a URL https do render no CDN (Bunny), o que acende o player do card.
keepAudioNoaction=create, com exatamente 1 áudio (referenceAudioUrls ou referenceAudioTrackIds): o áudio vira a TRILHA do take (toca primeiro, e o motor completa o resto com som próprio). É o caminho de fazer a personagem falar com a voz que você mandou. Sem custo extra além dos segundos do áudio.
publishedNofilm-publish: true publica no Acervo (aba Fitas) + portfólio (exige pronto + videoUrl), false despublica.
watermarkNoaction=fecho: marca d'água por cima (padrão: liga).
endImageIdNoFrame FINAL: generatedImages:_id da SUA galeria. Vira reference role 'end'. Pelo catálogo aceitam: Seedance 2.0/Fast/Mini/2.5, Kling 3.0 Pro, WAN 3.0, H3 e H3 Spicy; o resto não promete (Seedance Spicy, Hailuo e WAN 2.5 não expõem).
filmStatusNofilm-status: novo status de produção (rascunho | na_fila | renderizando | pronto). film-list: filtra por status. O fecho do render é film-status com filmStatus='pronto' + videoUrl + durationSec.
referencesNoReferences em base64 (escape hatch / Motion / Shot Mimic). i2v: role 'start' (imagem). Motion: 'start' (pessoa) + 'driving' (vídeo de movimento, <=5MB, MÁX 10s, o Kling Motion recusa referência acima de 10s e cobra pela duração do clipe; corte o trecho antes). Shot Mimic: 'start' (personagem) + 'driving' (previs ou clipe do plano a imitar, <=5MB, MÁX 15s, acima o provider corta em 15s). Pra frame inicial/final a partir do seu acervo, prefira start/endImage* abaixo (sem precisar de base64). Nos Spicy (h3-spicy, seedance-spicy, ltx-spicy) references base64 NÃO vale: o frame vem só de startImageId/startImageUrl de peça sua gerada na casa.
resolutionNoaction=create e action=price: resolução (Seedance, WAN 2.5 e 3.0, Shot Mimic, H3, P-Video-2 Pro ('480p'/'768p'), H3 Spicy, Seedance Spicy, Gemini Omni 1.2). NÃO existe default 720p aqui: resolução ausente, ou fora do que o motor aceita, cai no tier MAIS CARO do motor, menos no Gemini Omni 1.2, que fica no 720p (o tier que ele vendeu antes de ter escolha). O Gemini Omni 1.2 vai de '360p' a '4k' (360p custa 1/3 do 720p, 1080p 1,5x, 4k 3x). É isso que faz um create sem este campo custar muito mais que o piso do catálogo (em sapiens-video-seedance vira 1080p, não 480p). Passe sempre a resolução que você quer pagar, e confira com action=price antes. O H3 usa '768p' ou '2k' (sem eles cai no 2k, que custa 33% mais por segundo); o H3 Spicy usa '480p'/'768p'/'1080p'. Kling e a linha Hailuo 2.3 não usam este campo (resolução fixa pelo motor).
aspectRatioNo'16:9' (horizontal), '9:16' (vertical), '1:1'. Vale pro t2v; i2v herda da imagem.
captionLangNocaption-generate: o idioma FALADO no vídeo. caption-translate: o idioma de DESTINO. A legenda é desenhada pela casa e trocável no play; o trio da casa é pt+en+ja.
captionTrioNocaption-generate: true transcreve E traduz pro trio da casa (pt, en, ja) numa chamada. Cobra cada etapa por vez, então falha numa tradução não perde as que já saíram.
durationSecNoaction=create e action=price: duração em segundos. Gemini Omni 1.2 4/6/8/10/12/15 (a continuação acrescenta até 10), Seedance 2.0/Shot Mimic 4-15, Seedance 2.5 4-30 (o preço acompanha: confirme a duração com a pessoa antes de passar de 15), Kling 3-15, WAN 2.5 5/10, WAN 3.0 5/8/10, H3 5/6/8/10/12/15 nos dois tiers (768p e 2k), P-Video-2 Pro 5/6/8/10/12/15, H3 Spicy 3-15, Seedance 2.0 Spicy 4-15 em 480p e 720p, 4-10 em 1080p. O PREÇO ESCALA COM A DURAÇÃO. Duração ausente ou FORA do leque do motor cai no PISO, menos no Omni, que cai no padrão dele (10s). action=shadows: duração do vídeo-fonte, se souber (cobra 200/s; sem ela, flat ~2000).
endImageUrlNoFrame FINAL: url pública de galeria/Acervo/personagem. Vira reference role 'end' (mesmos motores de endImageId).
showcaseTagNoaction=showcase: chip de capacidade do card (ex: 'Repertório', 'Galeria', 'Fórum'). Curto, até 24 chars.
endImagePathNoFrame FINAL a partir de um ARQUIVO LOCAL do seu PC: só no MCP instalado (stdio). Caminho absoluto; PNG/JPEG/WebP até 8MB. Vira reference role 'end' (suporte varia por modelo). 1 imagem por vídeo. Mutuamente exclusivo com endImageId/endImageUrl.
startImageIdNoFrame inicial (i2v): generatedImages:_id da SUA galeria. Vira reference role 'start'. No Seedance 2.x e no H3 NÃO combina com referenceImage*/referenceVideoUrls: é um ou outro. Nos Spicy é a única porta do frame junto com startImageUrl, e a peça precisa ser SUA e gerada na casa (upload, peça trazida por ponte e foto de fora são recusados).
templateSlugNoaction=create: slug de um TEMPLATE de vídeo (receita travada da casa, igual ao templateSlug da imagem). Com ele, `prompt` vira só a CENA e o template embrulha com estilo, enquadramento, arco, áudio e look, além de escolher o motor (por isso `model` fica opcional). O `brief` preenche os campos do formato. Descubra os slugs em action=templates (sem custo, sem login): tem FORMATO de anúncio ('ugc-vertical-v1', 'unboxing-vertical-v1', 'app-demo-vertical-v1', 'reflexao-vertical-v1'), LOOK que é só estilo ('look-*') e CLIPE de apresentação de personagem com tipografia cinética ('apresentacao-personagem-cinetica-v1', 15s, 13 cortes, personagem travada por referência). Override de model/aspectRatio/durationSec/resolution vale, mas só dentro do que a receita aceita (o erro lista as opções).
editOfImageIdNoaction=create model=sapiens-video-omni-12 (ou -omni-11): EDIÇÃO conversacional ('Nano Banana de vídeo'). Passe o imageId de um vídeo Omni SEU já gerado e o prompt vira instrução de edição sobre a MESMA cena (ex: 'troca o urso polar por um Papai Noel com um presente'), preservando câmera, ambiente e timing. Cada edição debita como uma geração Omni nova e devolve um vídeo novo (que também pode ser editado). Só funciona em vídeo gerado pelo Omni. Pra editar um vídeo SEU (feito em outro motor ou subido), use sourceVideoId/sourceVideoUrl.
showcaseOrderNoaction=showcase: ordem na trilha do mini-cinema (asc, 0..999; menor aparece primeiro).
sourceVideoIdNoaction=create model=sapiens-video-omni-12: VÍDEO-FONTE, o imageId de um vídeo SEU pronto (da galeria, qualquer motor ou subido por ingest), até 15 s. O Omni recebe o clipe inteiro e o edita (sourceVideoMode='edit', o padrão: a MESMA cena com a mudança do prompt, ex: 'troca o homem pelo personagem da imagem de referência, mantém tudo o resto') ou o estende (sourceVideoMode='extend': o pedaço seguinte no tempo). Imagens de personagem/estilo vão junto em referenceImageIds/Urls (até 3); startImage*/endImage* não, o primeiro quadro é o do vídeo. Cobrança: a edição cobra o degrau de duração que cobre o clipe (7,3 s cobra 8 s) na resolution pedida; a extensão cobra o durationSec do pedaço novo. A proporção é a do clipe. O Google fecha edição de vídeo enviado pra contas no EEE, Suíça e Reino Unido; se o provider recusar, as Sinapses voltam.
startImageUrlNoFrame inicial (i2v): url pública (Bunny/Convex/Wikimedia) de galeria/Acervo/personagem. Vira reference role 'start'. Nos Spicy só vale url de peça SUA gerada na casa: Wikimedia, avatar, upload e peça trazida por ponte são recusados.
sourceVideoUrlNoaction=create model=sapiens-video-omni-12: o mesmo que sourceVideoId, por URL pública de host da casa (Bunny/Convex), mp4 até 15 s. Mande um OU outro.
startImagePathNoFrame INICIAL (i2v) a partir de um ARQUIVO LOCAL do seu PC: só no MCP instalado (stdio), não na conexão remota. Passe o caminho absoluto (ex: 'C:\\Users\\voce\\HERO\\1.png'); o processo lê o arquivo e sobe como frame inicial, igual a subir a imagem no gerador do site. PNG/JPEG/WebP, até 8MB. É 1 imagem inicial por vídeo (o modelo do site): pra vários vídeos, rode create uma vez por imagem. Mutuamente exclusivo com startImageId/startImageUrl. Nos Spicy (h3-spicy, seedance-spicy, ltx-spicy) arquivo local NÃO vale: o frame vem só de startImageId/startImageUrl de peça sua gerada na casa.
sourceVideoModeNoaction=create com sourceVideoId/sourceVideoUrl: 'edit' (padrão) edita o clipe; 'extend' continua ele (durationSec = segundos do pedaço novo, 4/6/8/10).
referenceAudioSecNoaction=price, só no P-Video-2 Pro: segundos do(s) áudio(s) de referência que o create vai mandar (somados, arredonda pra cima, teto 15). O create mede sozinho; isto é só pra cotar.
referenceImageIdsNoaction=create (Seedance 2.0/Fast/Mini/2.5 até 4; H3 até 9; Omni 1.2 até 6, 3 por personagem; Kling, Hailuo, WAN 2.5 e 3.0 e os dois Spicy NÃO): generatedImages:_id da SUA galeria como imagens de REFERÊNCIA (role 'ref'). Diferente de startImageId: NÃO viram o 1º frame, guiam estilo/personagem/composição. Fluxo storyboard: gere a folha com sapiens_image templateSlug='storyboard-sapiens-v1' (ou -vertical-v1) e passe folha + personagem aqui. Referência e frame de borda são EXCLUSIVOS no H3 (endpoints diferentes) e na linha Seedance 2.0/Fast/Mini/2.5 (o provider recusa a mistura): mande refs OU startImage*/endImage*, não os dois. Quer a pessoa da foto no take? Mande a foto como referência e descreva o primeiro quadro no prompt.
referenceVideoSecNoaction=price, só no P-Video-2 Pro: o TOTAL já cobrável de vídeo de referência (você mesmo aplicou o limite de duração do take + 1s por clipe). Sem a duração de cada clipe na mão, use referenceVideoClipsSec, que o servidor aplica o limite. Com os dois, valem os clipes.
referenceAudioUrlsNoaction=create, model='sapiens-video-pvideo-2-pro': até 3 URLs públicas (host da casa) de ÁUDIO de referência (mp3, wav, m4a, flac ou ogg), somando 15s: a voz e o som que guiam o take. Áudio nunca é a única referência: vai junto de uma imagem ou de um vídeo. Cada SEGUNDO é cobrado à parte, medido pelo servidor antes do débito (áudio que ele não mede, como webm, conta o teto de 15s). Cote em action=price com referenceAudioSec. No LTX Audio-to-Video (model='sapiens-video-ltx-25-fast-a2v', '-25-pro-a2v' ou '-23-pro-a2v') é OBRIGATÓRIO e é UM só: o áudio vira o take (canto ou fala), em mp3 ou m4a, até 20s (10s no 2.5 Pro); a duração e o preço saem dele, medidos pelo servidor. Ali o link precisa ser de um arquivo da SUA conta (link de outra conta é recusado antes de cobrar). Se o áudio é uma faixa sua do sapiens_musicator, use referenceAudioTrackIds (o trackId): o servidor confere que a faixa é sua.
referenceImageUrlsNoaction=create (mesmos motores e tetos de referenceImageIds: Seedance até 4, H3 até 9, Omni 1.2 até 6): URLs públicas (Bunny/Convex/Wikimedia) como imagens de REFERÊNCIA (role 'ref'). Soma com referenceImageIds. No prompt, cite as referências por descrição (ex: 'use the storyboard reference as ordered key poses; ignore line-sketch artifacts').
referenceVideoUrlsNoaction=create (Seedance 2.0/Fast/Mini/2.5: 1 vídeo; H3: até 3, somando 15s; P-Video-2 Pro: até 3, somando 15s, cada SEGUNDO cobrado à parte, medido pelo servidor antes do débito, e cada clipe cobra no máximo a duração do take + 1s; Gemini Omni 1.2: até 3 clipes de até 3 s cada, 1 só no take de 11 a 15 s, só em take novo, e ali o clipe dá a APARÊNCIA de quem aparece nele (rosto, corpo, roupa), não o movimento, e não muda o preço): URL pública (host da casa) de um VÍDEO DE MOVIMENTO (role 'refvideo' -> reference_videos, <=15s): a coreografia/câmera do clipe GUIA o take sem ser recriado plano a plano (isso é o Shot Mimic). NÃO edita o clipe: o take sai com outra filmagem. Pra mudar um vídeo que já existe mantendo a filmagem, é model='sapiens-video-omni-12' com sourceVideoId/sourceVideoUrl. Combina com o fluxo storyboard: folha = beats, vídeo = movimento, personagem = identidade. Depth Maps do banco de motion servem direto (ADMIN: descubra com action=shadows-list).
durationSecMeasuredNofilm-status: duração MEDIDA do render em segundos (ffprobe), vira a duração do card.
referenceImagePathsNoaction=create (mesmos motores de referenceImageIds): imagens de REFERÊNCIA a partir de ARQUIVOS LOCAIS do seu PC, só no MCP instalado (stdio). Caminhos absolutos; PNG/JPEG/WebP até 8MB cada, até o teto do motor no total (Seedance 4, H3 9, somando com referenceImageIds/Urls). Viram reference role 'ref'.
referenceAudioTrackIdsNoaction=create: o mesmo áudio de referenceAudioUrls, por ID de faixa SUA (o trackId que sapiens_musicator action=list/get devolve, status 'ready'). O servidor confere que a faixa é da sua conta e usa o áudio dela; faixa de outra conta é recusada antes de cobrar. Soma com referenceAudioUrls nos mesmos tetos. É o caminho certo no LTX Audio-to-Video, onde a faixa VIRA o take: UM só, mp3 ou m4a, e a faixa precisa caber no teto (até 20s, 10s no 2.5 Pro; o durationSeconds do action=list diz). Faixa mais longa é recusada antes de cobrar: corte o trecho e mande o arquivo seu em referenceAudioUrls.
referenceVideoClipsSecNoaction=price, só no P-Video-2 Pro (PREFIRA este): a duração de CADA vídeo de referência que o create vai mandar, ex: [10, 4.2]. O servidor aplica a mesma régua do create: cada clipe arredonda pra cima e para na duração do take + 1s, e a soma tem teto 15. O create mede sozinho; isto é só pra cotar.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only supply readOnlyHint=false and openWorldHint=true; the description adds the full behavioral picture: create is asynchronous and returns immediately with {imageId, status:'rendering', cost}, provider failures refund automatically, omitted resolution/durationSec silently bills the most expensive tier ('Um create de Seedance 2.0 sem resolution debita 1080p'), and synchronous edit actions can exceed 2 minutes so a timeout is the client giving up. It also discloses auth/ownership constraints (only your own gallery items, Spicy refuses externally supplied stills) and admin-only actions.

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

Conciseness2/5

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

The content is load-bearing, but the delivery is a single undifferentiated block with multi-level nested parentheses (the Omni 1.2 entry nests a parenthetical about the four retired Google models inside the model catalogue inside the sub-action list). Model specs, pricing rules, frame rules, editing actions, admin film actions and caption pricing all compete in one paragraph with no headings. A far shorter version could front-load create/price/status and push the per-model catalogue into action=models, which the description itself says is the live source.

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 55-parameter, 27-action tool with no output schema, the description covers everything an agent needs to call it correctly: required action, the async create→status loop, the exact return shape {imageId, status, cost}, cost/quota behavior, and refusal semantics per model family. No material gap remains; the problem is volume and organization, not missing information.

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 98%, so 3 is the floor and the schema already documents most params. The description still adds meaning the schema can't carry well: cross-parameter exclusivity ('Referência e frame de borda são EXCLUSIVOS no H3 e na linha Seedance 2.0'), the cost consequence of omitting resolution or durationSec, and the storyboard workflow linking referenceImageIds with sapiens_image templateSlug='storyboard-sapiens-v1'. That is real semantic value above the field-level text.

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

Purpose4/5

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

The opening states a specific verb and resource explicitly: 'gera vídeo (qualquer membro logado; vídeo é caro, cobra as Sinapses da sua conta)' and immediately names the recommended sub-action 'create'. It goes further by naming siblings and historical replacements ('Isto substitui a tool sapiens_shorts'), which separates it from sapiens_image and sapiens_gallery. It loses a point only because the model-by-model catalogue buries the core purpose under thousands of words.

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?

The description explicitly routes between alternatives: 'Use o Mini pra iterar enquadramento/prompt barato e feche no sapiens-video-seedance quando o take estiver certo', and 'Quem precisa de 1080p fica no sapiens-video-seedance'. It also states when NOT to act ('NÃO chame create de novo enquanto renderiza (cria outro vídeo e cobra de novo)') and points to action=price and action=models before spending. This is explicit when/when-not/alternatives coverage.

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

sapiens_writeAInspect

Artigos self-serve do PRÓPRIO usuário (qualquer conta logada, não só admin): espaço pessoal, aparece em /u/, NÃO é o blog editorial. ESCOLHA A PORTA CERTA: texto que a PESSOA já escreveu vai em create (GRÁTIS, nada reescrito); IA só entra em generate (400 Sinapses). Gerar e depois sobrescrever com o texto original é queimar 400 à toa. Sub-actions: create (salva o texto pronto do autor: title obrigatório + content markdown; nasce rascunho, custo 0; brandSlug veste a peça com um design system (omitido, herda o padrão da conta) e é o que faz capa e imagens saírem no estilo DELE, não no da casa; coverImageId/coverImageUrl anexam uma capa que ele já tem, também de graça), generate (gera 1 artigo na voz Sapiens a partir de brief livre, ou reescrevendo um artigo publicado/texto teu; custa 400 Sinapses, reembolsa se falhar; salva como rascunho. Capa: por padrão gera uma capa-cortesia grátis, já no design system do autor quando ele tem um; se você JÁ tem a imagem (gerou via sapiens_image, ou o artigo é sobre ela), passe coverImageId (id da tua galeria) ou coverImageUrl (host Sapiens) pra ELA virar a capa em vez da cortesia), list (teus artigos), get (1 artigo teu por id, corpo completo), update (edita title/content/excerpt/tldr), publish (publish=true publica no teu perfil, false volta pra rascunho). Identidade vem do sessionToken; cobra as Sinapses do dono do token. Pra blog editorial curado (owner-only) use sapiens_article. NOTA (generate): é SÍNCRONA (texto + capa) e cai na REGRA DO TIMEOUT; sem idempotência, repetir às cegas cria um 2º rascunho e cobra 400 de novo (cheque action=list antes; o artigo do timeout fica salvo como rascunho).

NameRequiredDescriptionDefault
tagsNocreate: até 8 tags específicas. Opcional.
tldrNo
briefNoBriefing livre (1 parágrafo, até ~600 palavras). Caminho padrão de 'generate'. A IA expande na voz Sapiens. Custa 400 Sinapses. Pra texto que VOCÊ já escreveu, use action=create (de graça).
limitNoDefault 50. Max 100. Só pra action=list.
titleNoObrigatório em create. Em update, renomeia.
actionYes
contentNoMarkdown completo do corpo. Em create, é o teu texto na íntegra (nada é reescrito). Em update, substitui o conteúdo.
excerptNo
publishNoaction=publish: true publica no teu perfil (/u/<username>), false volta pra rascunho. Default true.
categoryNocreate: categoria do artigo (ex: 'filosofia-tech'). Opcional.
articleIdNouser_articles:_id (obrigatório pra get/update/publish).
brandSlugNocreate: design system que veste a peça (slug via sapiens_brand action=list). Omitido, herda o padrão da tua conta. É o que faz a capa e as imagens saírem no TEU estilo, não no da casa.
sourceKindNoDefault 'brief'. 'published_article' reescreve um artigo do blog (passe publishedArticleId); 'user_article' reescreve um texto teu (passe sourceUserArticleId).
voiceStyleNoPreset de tom da voz (opcional).
customVoiceNoInstrução de voz custom (opcional).
voiceSourceNoQual voz molda o texto: 'sapiens' (default, piso da casa) | 'minha' (a tua alma, destilada do teu rastro) | 'sintetico' (a alma do teu Sintético, se tiveres um acordado em Sintonia). Omitido = comportamento igual a 'sapiens'.
coverImageIdNoCapa PRONTA (opcional, vale em create e generate): id de uma imagem da TUA galeria (generatedImages:_id, ache via sapiens_gallery/sapiens_reference) que vira a capa do artigo em vez da capa-cortesia gerada do zero. Use quando você JÁ gerou a imagem (sapiens_image) e o artigo é sobre ela: assim a peça não nasce sem capa se a cortesia falhar.
coverImageUrlNoAlternativa a coverImageId: URL de imagem do Sapiens (Bunny CDN / Convex) pra usar como capa pronta. Host fora da allowlist é recusado.
repertorioItemIdsNoAté 5 ids de obras do Repertório do usuário (repertorioItems:_id) pra IA usar como lente/referência do texto (sinopse + nota do dono entram no prompt). Ache os ids via sapiens_repertorio (action=list/search). Só do próprio usuário; ids de outros são ignorados.
publishedArticleIdNoarticles:_id (quando sourceKind='published_article').
sourceUserArticleIdNouser_articles:_id (quando sourceKind='user_article').

TDQS

A4.4/5.0
Behavior3/5

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

Annotations (readOnlyHint=false, openWorldHint=true) establish this is a mutating open-world tool; the description adds substantial context beyond that: cost (400 Sinapses, refunded on failure), synchronous execution under a timeout rule, and no idempotency (blind retry creates a second draft and double charges). However, several write behaviors (what update replaces, whether publish changes URL) are only implied. Strong added value, so a 3+ rather than higher.

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

Conciseness4/5

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

Dense but front-loaded: the port-choice decision (create vs generate) comes before action details, which is the highest-value information. It is long and partially restates schema descriptions (coverImageId, brandSlug), costing it the top mark, but every sentence carries routing or cost information.

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 21-parameter, six-action tool with no output schema, the description covers all actions, cost model, identity/sessionToken, timeout behavior, and cross-tool dependencies (sapiens_image, sapiens_brand, sapiens_gallery, sapiens_repertorio). Nothing an agent needs to call it correctly is missing.

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 86%, so the schema already carries most parameter meaning (baseline 3). The description adds the 'why' for key params: brandSlug controls whose design system styles the cover/images, and coverImageId/coverImageUrl override the courtesy cover when an image already exists. Marginal but real value above the schema.

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?

States a specific verb+resource and scope: user's own self-serve articles at /u/<username>, explicitly NOT the editorial blog. It names the sibling it is not (sapiens_article for the curated editorial blog) and enumerates all six sub-actions, so an agent can tell exactly what it does.

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?

Explicit routing guidance: text the person already wrote goes to create (free), AI only in generate (400 Sinapses), and burning 400 by generating then overwriting is called out as a mistake. It also names the alternative (sapiens_article) and gives a timeout/idempotency warning with the prescribed check (action=list before retrying).

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedsapiens_video3 fields changed
      • changedInput schema / properties / referenceImageIds / description
        Previous value: -"action=create (Seedance 2.0/Fast/Mini/2.5 até 4; H3 até 9; Omni 1.2 até 3; Kling, Hailuo, WAN 2.5 e 3.0 e os dois Spicy NÃO): generatedImages:_id da SUA galeria como imagens de REFERÊNCIA (role 'ref'). Diferente de startImageId: NÃO viram o 1º frame, guiam estilo/personagem/composição. Fluxo storyboard: gere a folha com sapiens_image templateSlug='storyboard-sapiens-v1' (ou -vertical-v1) e passe folha + personagem aqui. Referência e frame de borda são EXCLUSIVOS no H3 (endpoints diferentes) e na linha Seedance 2.0/Fast/Mini/2.5 (o provider recusa a mistura): mande refs OU startImage*/endImage*, não os dois. Quer a pessoa da foto no take? Mande a foto como referência e descreva o primeiro quadro no prompt."New value: +"action=create (Seedance 2.0/Fast/Mini/2.5 até 4; H3 até 9; Omni 1.2 até 6, 3 por personagem; Kling, Hailuo, WAN 2.5 e 3.0 e os dois Spicy NÃO): generatedImages:_id da SUA galeria como imagens de REFERÊNCIA (role 'ref'). Diferente de startImageId: NÃO viram o 1º frame, guiam estilo/personagem/composição. Fluxo storyboard: gere a folha com sapiens_image templateSlug='storyboard-sapiens-v1' (ou -vertical-v1) e passe folha + personagem aqui. Referência e frame de borda são EXCLUSIVOS no H3 (endpoints diferentes) e na linha Seedance 2.0/Fast/Mini/2.5 (o provider recusa a mistura): mande refs OU startImage*/endImage*, não os dois. Quer a pessoa da foto no take? Mande a foto como referência e descreva o primeiro quadro no prompt."
      • changedInput schema / properties / referenceImageUrls / description
        Previous value: -"action=create (mesmos motores e tetos de referenceImageIds: Seedance até 4, H3 até 9, Omni 1.2 até 3): URLs públicas (Bunny/Convex/Wikimedia) como imagens de REFERÊNCIA (role 'ref'). Soma com referenceImageIds. No prompt, cite as referências por descrição (ex: 'use the storyboard reference as ordered key poses; ignore line-sketch artifacts')."New value: +"action=create (mesmos motores e tetos de referenceImageIds: Seedance até 4, H3 até 9, Omni 1.2 até 6): URLs públicas (Bunny/Convex/Wikimedia) como imagens de REFERÊNCIA (role 'ref'). Soma com referenceImageIds. No prompt, cite as referências por descrição (ex: 'use the storyboard reference as ordered key poses; ignore line-sketch artifacts')."
      • changedInput schema / properties / referenceVideoUrls / description
        Previous value: -"action=create (Seedance 2.0/Fast/Mini/2.5: 1 vídeo; H3: até 3, somando 15s; P-Video-2 Pro: até 3, somando 15s, cada SEGUNDO cobrado à parte, medido pelo servidor antes do débito, e cada clipe cobra no máximo a duração do take + 1s): URL pública (host da casa) de um VÍDEO DE MOVIMENTO (role 'refvideo' -> reference_videos, <=15s): a coreografia/câmera do clipe GUIA o take sem ser recriado plano a plano (isso é o Shot Mimic). NÃO edita o clipe: o take sai com outra filmagem. Pra mudar um vídeo que já existe mantendo a filmagem, é model='sapiens-video-omni-12' com sourceVideoId/sourceVideoUrl. Combina com o fluxo storyboard: folha = beats, vídeo = movimento, personagem = identidade. Depth Maps do banco de motion servem direto (ADMIN: descubra com action=shadows-list)."New value: +"action=create (Seedance 2.0/Fast/Mini/2.5: 1 vídeo; H3: até 3, somando 15s; P-Video-2 Pro: até 3, somando 15s, cada SEGUNDO cobrado à parte, medido pelo servidor antes do débito, e cada clipe cobra no máximo a duração do take + 1s; Gemini Omni 1.2: até 3 clipes de até 3 s cada, 1 só no take de 11 a 15 s, só em take novo, e ali o clipe dá a APARÊNCIA de quem aparece nele (rosto, corpo, roupa), não o movimento, e não muda o preço): URL pública (host da casa) de um VÍDEO DE MOVIMENTO (role 'refvideo' -> reference_videos, <=15s): a coreografia/câmera do clipe GUIA o take sem ser recriado plano a plano (isso é o Shot Mimic). NÃO edita o clipe: o take sai com outra filmagem. Pra mudar um vídeo que já existe mantendo a filmagem, é model='sapiens-video-omni-12' com sourceVideoId/sourceVideoUrl. Combina com o fluxo storyboard: folha = beats, vídeo = movimento, personagem = identidade. Depth Maps do banco de motion servem direto (ADMIN: descubra com action=shadows-list)."
  2. 1 tool update
    • Changedsapiens_video9 fields changed
      • changedInput schema / properties / durationSec / description
        Previous value: -"action=create e action=price: duração em segundos. Gemini Omni 1.1 4/6/8/10, Seedance 2.0/Shot Mimic 4-15, Seedance 2.5 4-30 (o preço acompanha: confirme a duração com a pessoa antes de passar de 15), Kling 3-15, WAN 2.5 5/10, WAN 3.0 5/8/10, H3 5/6/8/10/12/15 nos dois tiers (768p e 2k), P-Video-2 Pro 5/6/8/10/12/15, H3 Spicy 3-15, Seedance 2.0 Spicy 4-15 em 480p e 720p, 4-10 em 1080p. O PREÇO ESCALA COM A DURAÇÃO. Duração ausente ou FORA do leque do motor cai no PISO, menos no Omni, que cai no padrão dele (10s). action=shadows: duração do vídeo-fonte, se souber (cobra 200/s; sem ela, flat ~2000)."New value: +"action=create e action=price: duração em segundos. Gemini Omni 1.2 4/6/8/10/12/15 (a continuação acrescenta até 10), Seedance 2.0/Shot Mimic 4-15, Seedance 2.5 4-30 (o preço acompanha: confirme a duração com a pessoa antes de passar de 15), Kling 3-15, WAN 2.5 5/10, WAN 3.0 5/8/10, H3 5/6/8/10/12/15 nos dois tiers (768p e 2k), P-Video-2 Pro 5/6/8/10/12/15, H3 Spicy 3-15, Seedance 2.0 Spicy 4-15 em 480p e 720p, 4-10 em 1080p. O PREÇO ESCALA COM A DURAÇÃO. Duração ausente ou FORA do leque do motor cai no PISO, menos no Omni, que cai no padrão dele (10s). action=shadows: duração do vídeo-fonte, se souber (cobra 200/s; sem ela, flat ~2000)."
      • changedInput schema / properties / editOfImageId / description
        Previous value: -"action=create model=sapiens-video-omni-11 (ou -omni): EDIÇÃO conversacional ('Nano Banana de vídeo'). Passe o imageId de um vídeo Omni SEU já gerado e o prompt vira instrução de edição sobre a MESMA cena (ex: 'troca o urso polar por um Papai Noel com um presente'), preservando câmera, ambiente e timing. Cada edição debita como uma geração Omni nova e devolve um vídeo novo (que também pode ser editado). Só funciona em vídeo gerado pelo Omni. Pra editar um vídeo SEU (feito em outro motor ou subido), use sourceVideoId/sourceVideoUrl."New value: +"action=create model=sapiens-video-omni-12 (ou -omni-11): EDIÇÃO conversacional ('Nano Banana de vídeo'). Passe o imageId de um vídeo Omni SEU já gerado e o prompt vira instrução de edição sobre a MESMA cena (ex: 'troca o urso polar por um Papai Noel com um presente'), preservando câmera, ambiente e timing. Cada edição debita como uma geração Omni nova e devolve um vídeo novo (que também pode ser editado). Só funciona em vídeo gerado pelo Omni. Pra editar um vídeo SEU (feito em outro motor ou subido), use sourceVideoId/sourceVideoUrl."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "sapiens-video-seedance",
        -  "sapiens-video-seedance-2-fast",
        -  "sapiens-video-seedance-2-mini",
        -  "sapiens-video-seedance-25",
        -  "sapiens-video-kling",
        -  "sapiens-video-hailuo",
        -  "sapiens-video-hailuo-pro",
        -  "sapiens-video-h3",
        -  "sapiens-video-pvideo-2-pro",
        -  "sapiens-video-h3-spicy",
        -  "sapiens-video-seedance-spicy",
        -  "sapiens-video-ltx-spicy",
        -  "sapiens-video-wan",
        -  "sapiens-video-wan-3",
        -  "sapiens-video-flux-3-max",
        -  "sapiens-video-ltx-25-fast-a2v",
        -  "sapiens-video-ltx-25-pro-a2v",
        -  "sapiens-video-ltx-23-pro-a2v",
        -  "sapiens-video-ltx-25-fast",
        -  "sapiens-video-ltx-25-pro",
        -  "sapiens-video-kling-motion",
        -  "sapiens-video-shot-mimic",
        -  "sapiens-video-lite",
        -  "sapiens-video-fast",
        -  "sapiens-video-quality",
        -  "sapiens-video-omni-11",
        -  "sapiens-video-omni"
        -]New value: +[
        +  "sapiens-video-seedance",
        +  "sapiens-video-seedance-2-fast",
        +  "sapiens-video-seedance-2-mini",
        +  "sapiens-video-seedance-25",
        +  "sapiens-video-kling",
        +  "sapiens-video-hailuo",
        +  "sapiens-video-hailuo-pro",
        +  "sapiens-video-h3",
        +  "sapiens-video-pvideo-2-pro",
        +  "sapiens-video-h3-spicy",
        +  "sapiens-video-seedance-spicy",
        +  "sapiens-video-ltx-spicy",
        +  "sapiens-video-wan",
        +  "sapiens-video-wan-3",
        +  "sapiens-video-flux-3-max",
        +  "sapiens-video-ltx-25-fast-a2v",
        +  "sapiens-video-ltx-25-pro-a2v",
        +  "sapiens-video-ltx-23-pro-a2v",
        +  "sapiens-video-ltx-25-fast",
        +  "sapiens-video-ltx-25-pro",
        +  "sapiens-video-kling-motion",
        +  "sapiens-video-shot-mimic",
        +  "sapiens-video-lite",
        +  "sapiens-video-fast",
        +  "sapiens-video-quality",
        +  "sapiens-video-omni-12",
        +  "sapiens-video-omni-11",
        +  "sapiens-video-omni"
        +]
      • changedInput schema / properties / referenceImageIds / description
        Previous value: -"action=create (Seedance 2.0/Fast/Mini/2.5 até 4; H3 até 9; Omni 1.1 até 3; Kling, Hailuo, WAN 2.5 e 3.0 e os dois Spicy NÃO): generatedImages:_id da SUA galeria como imagens de REFERÊNCIA (role 'ref'). Diferente de startImageId: NÃO viram o 1º frame, guiam estilo/personagem/composição. Fluxo storyboard: gere a folha com sapiens_image templateSlug='storyboard-sapiens-v1' (ou -vertical-v1) e passe folha + personagem aqui. Referência e frame de borda são EXCLUSIVOS no H3 (endpoints diferentes) e na linha Seedance 2.0/Fast/Mini/2.5 (o provider recusa a mistura): mande refs OU startImage*/endImage*, não os dois. Quer a pessoa da foto no take? Mande a foto como referência e descreva o primeiro quadro no prompt."New value: +"action=create (Seedance 2.0/Fast/Mini/2.5 até 4; H3 até 9; Omni 1.2 até 3; Kling, Hailuo, WAN 2.5 e 3.0 e os dois Spicy NÃO): generatedImages:_id da SUA galeria como imagens de REFERÊNCIA (role 'ref'). Diferente de startImageId: NÃO viram o 1º frame, guiam estilo/personagem/composição. Fluxo storyboard: gere a folha com sapiens_image templateSlug='storyboard-sapiens-v1' (ou -vertical-v1) e passe folha + personagem aqui. Referência e frame de borda são EXCLUSIVOS no H3 (endpoints diferentes) e na linha Seedance 2.0/Fast/Mini/2.5 (o provider recusa a mistura): mande refs OU startImage*/endImage*, não os dois. Quer a pessoa da foto no take? Mande a foto como referência e descreva o primeiro quadro no prompt."
      • changedInput schema / properties / referenceImageUrls / description
        Previous value: -"action=create (mesmos motores e tetos de referenceImageIds: Seedance até 4, H3 até 9, Omni 1.1 até 3): URLs públicas (Bunny/Convex/Wikimedia) como imagens de REFERÊNCIA (role 'ref'). Soma com referenceImageIds. No prompt, cite as referências por descrição (ex: 'use the storyboard reference as ordered key poses; ignore line-sketch artifacts')."New value: +"action=create (mesmos motores e tetos de referenceImageIds: Seedance até 4, H3 até 9, Omni 1.2 até 3): URLs públicas (Bunny/Convex/Wikimedia) como imagens de REFERÊNCIA (role 'ref'). Soma com referenceImageIds. No prompt, cite as referências por descrição (ex: 'use the storyboard reference as ordered key poses; ignore line-sketch artifacts')."
      • changedInput schema / properties / referenceVideoUrls / description
        Previous value: -"action=create (Seedance 2.0/Fast/Mini/2.5: 1 vídeo; H3: até 3, somando 15s; P-Video-2 Pro: até 3, somando 15s, cada SEGUNDO cobrado à parte, medido pelo servidor antes do débito, e cada clipe cobra no máximo a duração do take + 1s): URL pública (host da casa) de um VÍDEO DE MOVIMENTO (role 'refvideo' -> reference_videos, <=15s): a coreografia/câmera do clipe GUIA o take sem ser recriado plano a plano (isso é o Shot Mimic). NÃO edita o clipe: o take sai com outra filmagem. Pra mudar um vídeo que já existe mantendo a filmagem, é model='sapiens-video-omni-11' com sourceVideoId/sourceVideoUrl. Combina com o fluxo storyboard: folha = beats, vídeo = movimento, personagem = identidade. Depth Maps do banco de motion servem direto (ADMIN: descubra com action=shadows-list)."New value: +"action=create (Seedance 2.0/Fast/Mini/2.5: 1 vídeo; H3: até 3, somando 15s; P-Video-2 Pro: até 3, somando 15s, cada SEGUNDO cobrado à parte, medido pelo servidor antes do débito, e cada clipe cobra no máximo a duração do take + 1s): URL pública (host da casa) de um VÍDEO DE MOVIMENTO (role 'refvideo' -> reference_videos, <=15s): a coreografia/câmera do clipe GUIA o take sem ser recriado plano a plano (isso é o Shot Mimic). NÃO edita o clipe: o take sai com outra filmagem. Pra mudar um vídeo que já existe mantendo a filmagem, é model='sapiens-video-omni-12' com sourceVideoId/sourceVideoUrl. Combina com o fluxo storyboard: folha = beats, vídeo = movimento, personagem = identidade. Depth Maps do banco de motion servem direto (ADMIN: descubra com action=shadows-list)."
      • changedInput schema / properties / resolution / description
        Previous value: -"action=create e action=price: resolução (Seedance, WAN 2.5 e 3.0, Shot Mimic, H3, P-Video-2 Pro ('480p'/'768p'), H3 Spicy, Seedance Spicy, Gemini Omni 1.1). NÃO existe default 720p aqui: resolução ausente, ou fora do que o motor aceita, cai no tier MAIS CARO do motor, menos no Gemini Omni 1.1, que fica no 720p (o tier que ele vendeu antes de ter escolha). O Gemini Omni 1.1 vai de '360p' a '4k' (360p custa 1/3 do 720p, 1080p 1,5x, 4k 3x). É isso que faz um create sem este campo custar muito mais que o piso do catálogo (em sapiens-video-seedance vira 1080p, não 480p). Passe sempre a resolução que você quer pagar, e confira com action=price antes. O H3 usa '768p' ou '2k' (sem eles cai no 2k, que custa 33% mais por segundo); o H3 Spicy usa '480p'/'768p'/'1080p'. Kling e a linha Hailuo 2.3 não usam este campo (resolução fixa pelo motor)."New value: +"action=create e action=price: resolução (Seedance, WAN 2.5 e 3.0, Shot Mimic, H3, P-Video-2 Pro ('480p'/'768p'), H3 Spicy, Seedance Spicy, Gemini Omni 1.2). NÃO existe default 720p aqui: resolução ausente, ou fora do que o motor aceita, cai no tier MAIS CARO do motor, menos no Gemini Omni 1.2, que fica no 720p (o tier que ele vendeu antes de ter escolha). O Gemini Omni 1.2 vai de '360p' a '4k' (360p custa 1/3 do 720p, 1080p 1,5x, 4k 3x). É isso que faz um create sem este campo custar muito mais que o piso do catálogo (em sapiens-video-seedance vira 1080p, não 480p). Passe sempre a resolução que você quer pagar, e confira com action=price antes. O H3 usa '768p' ou '2k' (sem eles cai no 2k, que custa 33% mais por segundo); o H3 Spicy usa '480p'/'768p'/'1080p'. Kling e a linha Hailuo 2.3 não usam este campo (resolução fixa pelo motor)."
      • changedInput schema / properties / sourceVideoId / description
        Previous value: -"action=create model=sapiens-video-omni-11: VÍDEO-FONTE, o imageId de um vídeo SEU pronto (da galeria, qualquer motor ou subido por ingest), até 10 s. O Omni recebe o clipe inteiro e o edita (sourceVideoMode='edit', o padrão: a MESMA cena com a mudança do prompt, ex: 'troca o homem pelo personagem da imagem de referência, mantém tudo o resto') ou o estende (sourceVideoMode='extend': o pedaço seguinte no tempo). Imagens de personagem/estilo vão junto em referenceImageIds/Urls (até 3); startImage*/endImage* não, o primeiro quadro é o do vídeo. Cobrança: a edição cobra o degrau de duração que cobre o clipe (7,3 s cobra 8 s) na resolution pedida; a extensão cobra o durationSec do pedaço novo. A proporção é a do clipe. O Google fecha edição de vídeo enviado pra contas no EEE, Suíça e Reino Unido; se o provider recusar, as Sinapses voltam."New value: +"action=create model=sapiens-video-omni-12: VÍDEO-FONTE, o imageId de um vídeo SEU pronto (da galeria, qualquer motor ou subido por ingest), até 15 s. O Omni recebe o clipe inteiro e o edita (sourceVideoMode='edit', o padrão: a MESMA cena com a mudança do prompt, ex: 'troca o homem pelo personagem da imagem de referência, mantém tudo o resto') ou o estende (sourceVideoMode='extend': o pedaço seguinte no tempo). Imagens de personagem/estilo vão junto em referenceImageIds/Urls (até 3); startImage*/endImage* não, o primeiro quadro é o do vídeo. Cobrança: a edição cobra o degrau de duração que cobre o clipe (7,3 s cobra 8 s) na resolution pedida; a extensão cobra o durationSec do pedaço novo. A proporção é a do clipe. O Google fecha edição de vídeo enviado pra contas no EEE, Suíça e Reino Unido; se o provider recusar, as Sinapses voltam."
      • changedInput schema / properties / sourceVideoUrl / description
        Previous value: -"action=create model=sapiens-video-omni-11: o mesmo que sourceVideoId, por URL pública de host da casa (Bunny/Convex), mp4 até 10 s. Mande um OU outro."New value: +"action=create model=sapiens-video-omni-12: o mesmo que sourceVideoId, por URL pública de host da casa (Bunny/Convex), mp4 até 15 s. Mande um OU outro."
  3. 3 tool updates
    • Changedsapiens_helen3 fields changed
      • changedInput schema / properties / fishReferenceId / description
        Previous value: -"Fish: id da voz no acervo do fish.audio. Sem ele vai a voz default do modelo."New value: +"Fish: id da voz no acervo do fish.audio, só na conta admin. No membro o servidor ignora e a fala sai na voz da casa."
      • changedInput schema / properties / googleVoiceName / description
        Previous value: -"Google prebuilt voice (default Kore). Use list_presets pra ver opções."New value: +"Google prebuilt voice. Clássicas (Kore, Puck, Charon...) valem em todo modelo; nativas em português (ids 'pt-br-<papel>-<n>' e 'pt-pt-<papel>-<n>', ex 'pt-br-podcaster-1', 'pt-br-storyteller-6', 'pt-pt-tutor-3') só existem no Gemini 3.8 e soam como gente do Brasil ou de Portugal, sem forçar sotaque por prompt. Default Kore. Use list_presets pra ver opções."
      • changedInput schema / properties / modelId / description
        Previous value: -"ElevenLabs: 'eleven_v3' (default) ou 'eleven_multilingual_v2'. Google: 'gemini-3.1-flash-tts-preview' (default). Fish: 's2.1-pro-free' (S2.1 Pro, default) ou 'drama-3' (Drama 3: a direção vai no próprio text, '[sussurrando] frase' muda a atuação, '<emphasis>palavra</emphasis>' crava uma palavra; mesmo preço). Id desconhecido no Fish vira S2.1 Pro."New value: +"ElevenLabs: 'eleven_v3' (default) ou 'eleven_multilingual_v2'. Google: 'gemini-3.8-flash-tts' (default, Gemini 3.8 Flash TTS, fala as vozes nativas em português) ou 'gemini-3.1-flash-tts-preview' (só as clássicas; voz nativa pedida nele sai pelo 3.8). Fish: 's2.1-pro-free' (S2.1 Pro, default) ou 'drama-3' (Drama 3: a direção vai no próprio text, '[sussurrando] frase' muda a atuação, '<emphasis>palavra</emphasis>' crava uma palavra; mesmo preço). Id desconhecido vira o padrão do motor: Gemini 3.8 Flash TTS no Google, S2.1 Pro no Fish."
    • Changedsapiens_image3 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."
    • Changedsapiens_persona1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"Pra action=generate: código MBTI a gerar a arte. Case-insensitive (normaliza pra maiúscula)."New value: +"Pra action=generate: código de 4 letras (ex INTJ) a gerar a arte. Case-insensitive (normaliza pra maiúscula)."
  4. 2 tool updates
    • Changedsapiens_image5 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"
        +}
    • Changedsapiens_repertorio1 field changed
      • addedInput schema / properties / links
        Added value: +{
        +  "description": "Pra admin_tool: os outros endereços que a pessoa vem buscar e o site não cobre, na ordem da página (bloco 'Onde achar', abaixo da análise): os pesos de cada checkpoint, o pacote do ComfyUI, a licença, a doc. label curto (até 40: 'Turbo weights', 'ComfyUI repack'), url https pública. O repo do githubUrl já aparece sozinho, não repita. A lista troca a inteira; vazia tira todos. O post da casa aponta pra ficha, e é daqui que a pessoa segue: ficha de modelo aberto leva os pesos aqui.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "label": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "label",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
  5. 1 tool update
    • Changedsapiens_repertorio20 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list",
        -  "search",
        -  "get",
        -  "popArticles",
        -  "resolve",
        -  "add_item",
        -  "update_item",
        -  "remove_item",
        -  "search_tools",
        -  "add_tool",
        -  "catalog_tool"
        -]New value: +[
        +  "list",
        +  "search",
        +  "get",
        +  "popArticles",
        +  "resolve",
        +  "add_item",
        +  "update_item",
        +  "remove_item",
        +  "search_tools",
        +  "add_tool",
        +  "catalog_tool",
        +  "admin_tool"
        +]
      • addedInput schema / properties / brandHandle
        Added value: +{
        +  "description": "Pra admin_tool: o @ da marca, sem o @.",
        +  "type": "string"
        +}
      • changedInput schema / properties / categoryEn / description
        Previous value: -"Pra catalog_tool: UMA destas, exata: Text & Writing, Image & Design, Video & Animation, Voice & Audio, Coding & Development, Marketing & SEO, Data Analysis & Productivity, Research & Education, Agents & Bots, Creative Automation, Privacy & Web3, Experimental Tools, Technical Utilities, Aggregators & Meta Tools, Adult 18+."New value: +"Pra catalog_tool/admin_tool: UMA destas, exata: Text & Writing, Image & Design, Video & Animation, Voice & Audio, Coding & Development, Marketing & SEO, Data Analysis & Productivity, Research & Education, Agents & Bots, Creative Automation, Privacy & Web3, Experimental Tools, Technical Utilities, Aggregators & Meta Tools, Adult 18+."
      • changedInput schema / properties / categoryPt / description
        Previous value: -"Pra catalog_tool: opcional; ausente, o servidor copia a de uma vizinha da mesma categoria."New value: +"Pra catalog_tool/admin_tool: opcional; ausente, o servidor copia a de uma vizinha da mesma categoria."
      • changedInput schema / properties / descriptionEn / description
        Previous value: -"Pra catalog_tool: uma frase do que a ferramenta faz, em inglês (até 400)."New value: +"Pra catalog_tool/admin_tool: uma frase do que a ferramenta faz, em inglês (até 400)."
      • changedInput schema / properties / descriptionPt / description
        Previous value: -"Pra catalog_tool: a mesma frase em português (até 400)."New value: +"Pra catalog_tool/admin_tool: a mesma frase em português (até 400)."
      • changedInput schema / properties / githubUrl / description
        Previous value: -"Pra catalog_tool: o repo, https://github.com/<owner>/<repo>. É a chave do dedup: o mesmo repo com outro toolId devolve a ficha que já existe."New value: +"Pra catalog_tool: o repo, https://github.com/<owner>/<repo>. É a chave do dedup: o mesmo repo com outro toolId devolve a ficha que já existe. Pra admin_tool: opcional; vindo, a ficha vira open source."
      • addedInput schema / properties / isActive
        Added value: +{
        +  "description": "Pra admin_tool: false tira a ficha do ar sem apagar.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / isCurated
        Added value: +{
        +  "description": "Pra admin_tool: Staff Pick (curadoria da casa).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / isOpenSource
        Added value: +{
        +  "description": "Pra admin_tool: liga ou desliga o selo open source. Ausente na ficha nova, vale true se veio githubUrl.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Pra catalog_tool: o nome do produto como o projeto escreve (HyperFrames, não hyperframes)."New value: +"Pra catalog_tool/admin_tool: o nome do produto como o projeto escreve (HyperFrames, não hyperframes)."
      • addedInput schema / properties / nota
        Added value: +{
        +  "description": "Pra admin_tool: a nota da ficha no AItag, inteiro de 0 a 100. Ordena o catálogo.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / referralUrl
        Added value: +{
        +  "description": "Pra admin_tool: o link do botão Visitar, com o código de afiliado do dono (https). Tem que cair no site da ferramenta (agensi.io/r/X sobre agensi.io) ou em rede de afiliado com a marca do site no subdomínio (<marca>.sjv.io, <marca>.pxf.io, <marca>.partnerlinks.io); tolt.link só troca link que já estava nele. Fora disso o servidor recusa e o link entra pelo aitag.app/admin. Ausente na ficha nova, vale o websiteUrl.",
        +  "type": "string"
        +}
      • changedInput schema / properties / reviewEn / description
        Previous value: -"Pra catalog_tool: a análise editorial em inglês, 3 a 5 frases na voz da casa. É o gate de indexação da página: sem ela, a ficha fica fora do Google."New value: +"Pra catalog_tool/admin_tool: a análise editorial em inglês, 3 a 5 frases na voz da casa. É o gate de indexação da página: sem ela, a ficha fica fora do Google."
      • changedInput schema / properties / reviewPt / description
        Previous value: -"Pra catalog_tool: a análise editorial em português."New value: +"Pra catalog_tool/admin_tool: a análise editorial em português."
      • changedInput schema / properties / tagsEn / description
        Previous value: -"Pra catalog_tool: até 10 tags em inglês."New value: +"Pra catalog_tool/admin_tool: até 10 tags em inglês."
      • changedInput schema / properties / tagsPt / description
        Previous value: -"Pra catalog_tool: até 10 tags em português."New value: +"Pra catalog_tool/admin_tool: até 10 tags em português."
      • changedInput schema / properties / toolId / description
        Previous value: -"Pra add_tool: o toolId EXATO de um candidato do action=search_tools (catálogo aitag). Dedup por (userId, source aitag, externalId=toolId). Pra catalog_tool: o toolId NOVO da ficha, em kebab-case minúsculo (vira o endereço aitag.app/tool/<toolId>)."New value: +"Pra add_tool: o toolId EXATO de um candidato do action=search_tools (catálogo aitag). Dedup por (userId, source aitag, externalId=toolId). Pra catalog_tool: o toolId NOVO da ficha, em kebab-case minúsculo (vira o endereço aitag.app/tool/<toolId>). Pra admin_tool: o toolId da ficha a editar (o do search_tools) ou o da ficha nova."
      • changedInput schema / properties / websiteUrl / description
        Previous value: -"Pra catalog_tool: a homepage do projeto (https). Ausente, vale o githubUrl."New value: +"Pra catalog_tool/admin_tool: a homepage do projeto (https), sem tracking: é dela que sai o screenshot. Ausente, vale o githubUrl."
      • addedInput schema / properties / xUrl
        Added value: +{
        +  "description": "Pra admin_tool: o perfil da ferramenta no X (https://x.com/<handle>).",
        +  "type": "string"
        +}
  6. 6 tool updates
    • Changedsapiens_character1 field changed
      • changedInput schema / properties / sourceImageId / description
        Previous value: -"Pra add_image: alternativa ao imageUrl — ID de imagem da SUA galeria (generatedImages:_id, via sapiens_gallery action=list). O backend resolve a url e confere que é sua."New value: +"Pra add_image: alternativa ao imageUrl, o ID de imagem da SUA galeria (generatedImages:_id, via sapiens_gallery action=list). O backend resolve a url e confere que é sua."
    • Changedsapiens_meta1 field changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "start",
        -  "login",
        -  "logout",
        -  "whoami",
        -  "formats",
        -  "health",
        -  "credits",
        -  "app_url",
        -  "subscription",
        -  "version",
        -  "pontes",
        -  "precos"
        -]New value: +[
        +  "start",
        +  "login",
        +  "logout",
        +  "whoami",
        +  "formats",
        +  "health",
        +  "credits",
        +  "app_url",
        +  "subscription",
        +  "version",
        +  "pontes",
        +  "precos",
        +  "api"
        +]
    • Changedsapiens_reference2 fields changed
      • changedInput schema / properties / favoritesOnly / description
        Previous value: -"Só bucket 'pose_map': apenas as poses que o dono marcou com estrela. É o recorte mais forte que existe — comece por ele quando o pedido for vago."New value: +"Só bucket 'pose_map': apenas as poses que o dono marcou com estrela. É o recorte mais forte que existe: comece por ele quando o pedido for vago."
      • changedInput schema / properties / handle / description
        Previous value: -"Só 'resolve': o ID citável do asset, formato <tipo>_<id> — img_… (imagem), vid_… (vídeo), film_… (vídeo programático), trk_… (música), comic_… (tirinha), char_… (personagem). É o ID que o usuário copia no detalhe do item."New value: +"Só 'resolve': o ID citável do asset, formato <tipo>_<id>: img_… (imagem), vid_… (vídeo), film_… (vídeo programático), trk_… (música), comic_… (tirinha), char_… (personagem). É o ID que o usuário copia no detalhe do item."
    • Changedsapiens_repertorio1 field changed
      • changedInput schema / properties / externalId / description
        Previous value: -"Pra add_item: o externalId EXATO do candidato do resolve (imdbID p/ manual, id do provider p/ resto). NÃO fabrique/UUID — id que não resolve no provider é rejeitado. Dedup por (userId, source, externalId)."New value: +"Pra add_item: o externalId EXATO do candidato do resolve (imdbID p/ manual, id do provider p/ resto). NÃO fabrique/UUID: id que não resolve no provider é rejeitado. Dedup por (userId, source, externalId)."
    • Changedsapiens_studios1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Alternativa a publishableId — passe o slug direto."New value: +"Alternativa a publishableId: passe o slug direto."
    • Changedsapiens_video3 fields changed
      • changedInput schema / properties / endImagePath / description
        Previous value: -"Frame FINAL a partir de um ARQUIVO LOCAL do seu PC — só no MCP instalado (stdio). Caminho absoluto; PNG/JPEG/WebP até 8MB. Vira reference role 'end' (suporte varia por modelo). 1 imagem por vídeo. Mutuamente exclusivo com endImageId/endImageUrl."New value: +"Frame FINAL a partir de um ARQUIVO LOCAL do seu PC: só no MCP instalado (stdio). Caminho absoluto; PNG/JPEG/WebP até 8MB. Vira reference role 'end' (suporte varia por modelo). 1 imagem por vídeo. Mutuamente exclusivo com endImageId/endImageUrl."
      • changedInput schema / properties / references / description
        Previous value: -"References em base64 (escape hatch / Motion / Shot Mimic). i2v: role 'start' (imagem). Motion: 'start' (pessoa) + 'driving' (vídeo de movimento, <=5MB, MÁX 10s — o Kling Motion recusa referência acima de 10s e cobra pela duração do clipe; corte o trecho antes). Shot Mimic: 'start' (personagem) + 'driving' (previs ou clipe do plano a imitar, <=5MB, MÁX 15s — acima o provider corta em 15s). Pra frame inicial/final a partir do seu acervo, prefira start/endImage* abaixo (sem precisar de base64). Nos Spicy (h3-spicy, seedance-spicy, ltx-spicy) references base64 NÃO vale: o frame vem só de startImageId/startImageUrl de peça sua gerada na casa."New value: +"References em base64 (escape hatch / Motion / Shot Mimic). i2v: role 'start' (imagem). Motion: 'start' (pessoa) + 'driving' (vídeo de movimento, <=5MB, MÁX 10s, o Kling Motion recusa referência acima de 10s e cobra pela duração do clipe; corte o trecho antes). Shot Mimic: 'start' (personagem) + 'driving' (previs ou clipe do plano a imitar, <=5MB, MÁX 15s, acima o provider corta em 15s). Pra frame inicial/final a partir do seu acervo, prefira start/endImage* abaixo (sem precisar de base64). Nos Spicy (h3-spicy, seedance-spicy, ltx-spicy) references base64 NÃO vale: o frame vem só de startImageId/startImageUrl de peça sua gerada na casa."
      • changedInput schema / properties / startImagePath / description
        Previous value: -"Frame INICIAL (i2v) a partir de um ARQUIVO LOCAL do seu PC — só no MCP instalado (stdio), não na conexão remota. Passe o caminho absoluto (ex: 'C:\\\\Users\\\\voce\\\\HERO\\\\1.png'); o processo lê o arquivo e sobe como frame inicial, igual a subir a imagem no gerador do site. PNG/JPEG/WebP, até 8MB. É 1 imagem inicial por vídeo (o modelo do site): pra vários vídeos, rode create uma vez por imagem. Mutuamente exclusivo com startImageId/startImageUrl. Nos Spicy (h3-spicy, seedance-spicy, ltx-spicy) arquivo local NÃO vale: o frame vem só de startImageId/startImageUrl de peça sua gerada na casa."New value: +"Frame INICIAL (i2v) a partir de um ARQUIVO LOCAL do seu PC: só no MCP instalado (stdio), não na conexão remota. Passe o caminho absoluto (ex: 'C:\\\\Users\\\\voce\\\\HERO\\\\1.png'); o processo lê o arquivo e sobe como frame inicial, igual a subir a imagem no gerador do site. PNG/JPEG/WebP, até 8MB. É 1 imagem inicial por vídeo (o modelo do site): pra vários vídeos, rode create uma vez por imagem. Mutuamente exclusivo com startImageId/startImageUrl. Nos Spicy (h3-spicy, seedance-spicy, ltx-spicy) arquivo local NÃO vale: o frame vem só de startImageId/startImageUrl de peça sua gerada na casa."
  7. 30 tool updates
    • First observedsapiens_agente
    • First observedsapiens_atlas
    • First observedsapiens_brand
    • First observedsapiens_carrossel
    • First observedsapiens_character
    • First observedsapiens_collection
    • First observedsapiens_community
    • First observedsapiens_forum
    • First observedsapiens_gallery
    • First observedsapiens_helen
    • First observedsapiens_image
    • First observedsapiens_meta
    • First observedsapiens_musicator
    • First observedsapiens_persona
    • First observedsapiens_profile
    • First observedsapiens_publicar
    • First observedsapiens_reference
    • First observedsapiens_repertorio
    • First observedsapiens_resume
    • First observedsapiens_search
    • First observedsapiens_semana
    • First observedsapiens_sintetico
    • First observedsapiens_skill
    • First observedsapiens_stock_audio
    • First observedsapiens_stock_video
    • First observedsapiens_studios
    • First observedsapiens_support
    • First observedsapiens_trilhas
    • First observedsapiens_video
    • First observedsapiens_write

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.