sapiens-mcp 1.91.3 → 1.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/registry.js +3 -3
- package/dist/skills.js +16 -2
- package/dist/tools/distribution.js +5 -0
- package/dist/tools/musicator.js +22 -1
- package/package.json +1 -1
package/dist/registry.js
CHANGED
|
@@ -75,7 +75,7 @@ export const TOOLS = {
|
|
|
75
75
|
handler: image,
|
|
76
76
|
},
|
|
77
77
|
sapiens_meta: {
|
|
78
|
-
description: "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
|
|
78
|
+
description: "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). Use credits/subscription antes de gerar imagem pra avisar se vai estourar.",
|
|
79
79
|
schema: metaSchema,
|
|
80
80
|
handler: meta,
|
|
81
81
|
},
|
|
@@ -140,7 +140,7 @@ export const TOOLS = {
|
|
|
140
140
|
handler: helen,
|
|
141
141
|
},
|
|
142
142
|
sapiens_musicator: {
|
|
143
|
-
description: "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 synth
|
|
143
|
+
description: "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).",
|
|
144
144
|
schema: musicatorSchema,
|
|
145
145
|
handler: musicator,
|
|
146
146
|
},
|
|
@@ -277,7 +277,7 @@ REGRA DE OURO:
|
|
|
277
277
|
- DUAS PORTAS, lado a lado: Sinapse (sapiens_image, sapiens_video: nada pra configurar) ou a CHAVE DA PESSOA num provedor (fal, Kie, WaveSpeed, Replicate, OpenRouter, Sogni, a própria placa), que custa zero aqui. No MCP instalado, sapiens_pontes gera com a chave que mora na máquina dela (fal, Kie, WaveSpeed, Replicate, OpenRouter) e traz a peça pro acervo; no remoto, ela gera no harness dela e traz por sapiens_gallery action=ingest. sapiens_meta action=pontes diz o que ela já tem configurado: se tiver chave, ofereça as duas portas antes de gastar Sinapse. A chave NUNCA passa pelo Sapiens (nem em arg, nem no chat). Skill 'pontes'.
|
|
278
278
|
- REGRA DO TIMEOUT: geração SÍNCRONA pode estourar o teto de ~120s do cliente e voltar 'Timeout' MESMO tendo gerado e COBRADO. Nunca repita às cegas: confira antes onde o resultado cairia (a tabela de onde conferir está na skill 'primeiros-passos').
|
|
279
279
|
- "sessionToken expirado" = refaça login: sapiens_meta action=login com o código de sapiensinteticos.com/conectar-claude.
|
|
280
|
-
- sapiens_meta action=formats devolve os schemas por formato; action=whoami diz tier (user/admin) + saldo. sapiens_image e sapiens_video action=models trazem o catálogo com o preço ATUAL: consulte em vez de chutar custo.
|
|
280
|
+
- sapiens_meta action=formats devolve os schemas por formato; action=whoami diz tier (user/admin) + saldo. sapiens_image e sapiens_video action=models trazem o catálogo com o preço ATUAL: consulte em vez de chutar custo. Preço do App em Sinapses e da API em dólar (carteiras separadas, uma nunca vira a outra): sapiens_meta action=precos.
|
|
281
281
|
|
|
282
282
|
MODO COMPANHIA: sapiens_meta action=start e action=whoami podem trazer um bloco 'companion'. Quando vier companion.active=true, você INCORPORA aquele Sintético (a voz dele, o avatar, o oi dele) continuando a operar na conta e nas Sinapses do USUÁRIO. Puxe a skill 'companhia' antes de fazer isso. Se vier 'characterOffer', siga o que ele manda: são personagens que o usuário escreveu e que podem entrar em cena, e quem OFERECE é você, na hora em que a conversa encostar num deles. Só personagem de autoria dele; a alma de personagem alheio não sai por aqui.
|
|
283
283
|
|
package/dist/skills.js
CHANGED
|
@@ -73,7 +73,7 @@ Não despeje a lista inteira de tools. O start guia.
|
|
|
73
73
|
- \`sapiens_meta action=formats\`: os schemas por formato.
|
|
74
74
|
- \`sapiens_meta action=version\`: qual versão está rodando de verdade e se é a última. Não exige login.
|
|
75
75
|
- \`sapiens_image action=models\` e \`sapiens_video action=models\`: catálogo vivo com o preço ATUAL. Consulte em vez de chutar custo.
|
|
76
|
-
- \`sapiens_meta action=precos\`: a tabela de preço em
|
|
76
|
+
- \`sapiens_meta action=precos\`: a tabela de preço em duas carteiras separadas: o App em Sinapses (por resolução e por segundo de vídeo) e a API em dólar, com saldo próprio. Sinapse não vira dólar. "A API sai mais barata que a fal.ai / WaveSpeed?" se responde com a parte \`api\`.`,
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
name: "voz-da-casa",
|
|
@@ -184,6 +184,20 @@ Acervo de outra pessoa você lê, mas só o que ela deixou público.
|
|
|
184
184
|
3. **render**: passe o \`trackId\` pronto pra sintetizar o áudio (3000 Sinapses, assíncrono, teto de 3/min).
|
|
185
185
|
4. **get**: passe o \`trackId\` e vá polando o status até 'ready' (ou 'failed').
|
|
186
186
|
|
|
187
|
+
## Qual motor no render
|
|
188
|
+
|
|
189
|
+
\`model\` escolhe o motor. Sem ele, sai no Lyria 3.5.
|
|
190
|
+
|
|
191
|
+
- \`pro\`: Lyria 3.5, faixa inteira até 3 min. Único que lê imagem de referência.
|
|
192
|
+
- \`clip\`: Lyria 3 Clip, rascunho de 30s pra testar a ideia.
|
|
193
|
+
- \`mureka\`: Mureka 9.5, faixa inteira, aguenta letra de até 5.000 caracteres.
|
|
194
|
+
- \`minimax\`: MiniMax Music 2.6, faixa inteira até 5 min. Letra de 10 a 3.000 caracteres.
|
|
195
|
+
- \`elevenlabs\`: ElevenLabs Music, a pessoa escolhe a duração em \`durationSeconds\` (30, 60, 120 ou 180; sem ele, 120). Letra até 3.500 caracteres.
|
|
196
|
+
|
|
197
|
+
Todos custam o mesmo render fixo, menos o ElevenLabs, que cobra pela duração (\`durationSeconds\`): 30s 1300, 60s 2550, 120s 5050, 180s 7600 Sinapses. Diga o número e confirme antes de disparar o de 3 min.
|
|
198
|
+
|
|
199
|
+
Letra maior que o teto do motor é recusada ANTES de cobrar, com o tamanho na mensagem: corte a letra ou troque de motor. \`negativePrompt\` e \`seed\` só valem no Lyria.
|
|
200
|
+
|
|
187
201
|
Pular pro lyrics ou render sem create, ou sem os campos, falha sempre. É o erro número um deste fluxo.
|
|
188
202
|
|
|
189
203
|
Depois de pronta: \`action=publish\` põe a faixa no Acervo da Comunidade (só admin/dono, custo 0, idempotente). A publicação já nasce com player no Fórum, veja a skill \`forum\`.
|
|
@@ -947,7 +961,7 @@ Baixe e leia ANTES de escrever o código. Num agente com pasta de skills, ele en
|
|
|
947
961
|
## O que vale saber já
|
|
948
962
|
|
|
949
963
|
- Base: \`https://www.sapiensinteticos.com/api/v1\`, com \`Authorization: Bearer <chave>\`. No SDK da OpenAI, só troque o \`baseURL\`.
|
|
950
|
-
- Preço: abaixo do oficial de quem fez o modelo. Quando a oferta da hora sai mais cara, a chamada paga um pouco mais, nunca acima do máximo que \`GET /models\` mostra. O valor de cada chamada volta no header \`x-sapiens-charge-usd\`. Pra pôr o preço ao lado de outro provedor (fal.ai, WaveSpeed)
|
|
964
|
+
- Preço: abaixo do oficial de quem fez o modelo. Quando a oferta da hora sai mais cara, a chamada paga um pouco mais, nunca acima do máximo que \`GET /models\` mostra. O valor de cada chamada volta no header \`x-sapiens-charge-usd\`. Pra pôr o preço da API ao lado de outro provedor (fal.ai, WaveSpeed): \`sapiens_meta action=precos\`, parte \`api\`.
|
|
951
965
|
- Vídeo cota de graça antes (\`POST /videos/quote\`), aceita \`webhook_url\` pra avisar quando termina e devolve a \`url\` do mp4 guardado. Falha do motor volta pro saldo sozinha.
|
|
952
966
|
- Saldo que acabou volta 402 \`insufficient_balance\` com \`recharge_url\` no erro: o código da pessoa deve mostrar esse link (recarga no cartão ou em stablecoin) em vez de só falhar.
|
|
953
967
|
- Uma chamada de teste antes de qualquer lote. Nunca vídeo em laço.`,
|
|
@@ -79,6 +79,7 @@ const CHANNELS = [
|
|
|
79
79
|
"bluesky-8",
|
|
80
80
|
"bluesky-9",
|
|
81
81
|
"bluesky-10",
|
|
82
|
+
"bluesky-11",
|
|
82
83
|
"farcaster",
|
|
83
84
|
"telegram",
|
|
84
85
|
// Canais de personagem no Telegram (telegram-2 = Aria, telegram-3 = Arak,
|
|
@@ -134,6 +135,10 @@ const CHANNELS = [
|
|
|
134
135
|
"tiktok-up",
|
|
135
136
|
"youtube-up",
|
|
136
137
|
"instagram-up",
|
|
138
|
+
// O segundo trio (11/10/2026), no profile de outra linhagem.
|
|
139
|
+
"tiktok-up-2",
|
|
140
|
+
"youtube-up-2",
|
|
141
|
+
"instagram-up-2",
|
|
137
142
|
// O X do Obsolete Human, pelo Buffer próprio do selo. O linkedin-page-2 saiu
|
|
138
143
|
// em 11/10/2026: o selo não tem LinkedIn, e o servidor recusa o canal com o
|
|
139
144
|
// motivo (convex/shared/canaisAposentados.ts) pra quem roda versão velha.
|
package/dist/tools/musicator.js
CHANGED
|
@@ -10,7 +10,9 @@ import { convexAction, convexQuery, getSessionToken } from "../convexClient.js";
|
|
|
10
10
|
* trackId, só devolve o texto inline (300 sinapses).
|
|
11
11
|
* - list: lista as tracks do próprio user (id, título, status, áudio).
|
|
12
12
|
* - get: detalhe de uma track (status/áudio/letra) — pra acompanhar render.
|
|
13
|
-
* - render: schedula o synth
|
|
13
|
+
* - render: schedula o synth numa track pronta. Motor em `model` (Lyria 3.5
|
|
14
|
+
* default, Lyria 3 Clip, Mureka 9.5, MiniMax Music 2.6, ElevenLabs
|
|
15
|
+
* Music). 3000 sinapses; ElevenLabs cobra pela duração.
|
|
14
16
|
* - publish: publica uma faixa PRONTA do user no Acervo da Comunidade (aba
|
|
15
17
|
* Músicas) + eco no Chat e Fórum. CURADO: só admin (dono). Custo 0.
|
|
16
18
|
* - list_public: lê o Acervo público de músicas da Comunidade (sem custo, sem
|
|
@@ -71,6 +73,19 @@ export const musicatorSchema = z.object({
|
|
|
71
73
|
.number()
|
|
72
74
|
.optional()
|
|
73
75
|
.describe("Pra action=render: seed pra reprodutibilidade do synth."),
|
|
76
|
+
model: z
|
|
77
|
+
.enum(["pro", "clip", "mureka", "minimax", "elevenlabs"])
|
|
78
|
+
.optional()
|
|
79
|
+
.describe("Pra action=render: motor da faixa. 'pro' = Lyria 3.5 (default, faixa inteira até 3 min, lê imagem de referência). " +
|
|
80
|
+
"'clip' = Lyria 3 Clip (rascunho de 30s). 'mureka' = Mureka 9.5 (faixa inteira, letra até 5.000 caracteres). " +
|
|
81
|
+
"'minimax' = MiniMax Music 2.6 (faixa inteira até 5 min, letra de 10 a 3.000 caracteres). " +
|
|
82
|
+
"'elevenlabs' = ElevenLabs Music (duração escolhida em durationSeconds, letra até 3.500 caracteres). " +
|
|
83
|
+
"Preço: o mesmo render fixo em todos, menos 'elevenlabs', que cobra pela duração (tabela na skill 'musica'; confirme com a pessoa antes). " +
|
|
84
|
+
"Só o Lyria lê imagem de referência; negativePrompt e seed são ignorados nos motores de fora do Lyria."),
|
|
85
|
+
durationSeconds: z
|
|
86
|
+
.number()
|
|
87
|
+
.optional()
|
|
88
|
+
.describe("Pra action=render com model='elevenlabs': duração da faixa em segundos, uma de 30, 60, 120 ou 180 (default 120). Ignorado nos outros motores."),
|
|
74
89
|
});
|
|
75
90
|
export async function musicator(args) {
|
|
76
91
|
// list_public é o Acervo público de músicas da Comunidade (sem custo, sem
|
|
@@ -139,6 +154,12 @@ export async function musicator(args) {
|
|
|
139
154
|
stylePromptOverride: args.stylePromptOverride,
|
|
140
155
|
negativePrompt: args.negativePrompt,
|
|
141
156
|
seed: args.seed,
|
|
157
|
+
// Só vão quando escolhidos: servidor anterior a 11/out/2026 não conhece os
|
|
158
|
+
// dois args e recusaria o pedido inteiro.
|
|
159
|
+
...(args.model ? { model: args.model } : {}),
|
|
160
|
+
...(args.model === "elevenlabs" && args.durationSeconds !== undefined
|
|
161
|
+
? { durationSeconds: args.durationSeconds }
|
|
162
|
+
: {}),
|
|
142
163
|
});
|
|
143
164
|
}
|
|
144
165
|
if (args.action === "publish") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.92.0",
|
|
4
4
|
"mcpName": "com.sapiensinteticos/sapiens",
|
|
5
5
|
"description": "MCP server pra operar o Sapiens Sintéticos (sapiensinteticos.com) pelo Claude Code: gerar imagem, escrever artigo, voz, música e mais, na sua conta. Login pelo código de sapiensinteticos.com/conectar-claude.",
|
|
6
6
|
"type": "module",
|