sapiens-mcp 1.53.2 → 1.54.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 +21 -21
- package/dist/tools/character.js +52 -0
- package/package.json +1 -1
package/dist/registry.js
CHANGED
|
@@ -143,7 +143,7 @@ export const TOOLS = {
|
|
|
143
143
|
handler: brand,
|
|
144
144
|
},
|
|
145
145
|
sapiens_character: {
|
|
146
|
-
description: "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 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/nome do próprio), activate (publica, sai de draft, exige ≥1 imagem), set_visibility (isPublic true=Explorar+slug / false=privado). 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). FICHA (generate_sheet, COBRA 450 Sinapses): 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; o caprichado (stickerTier='unica', COBRA 900 Sinapses) desenha UM sticker por vez no motor mais fiel da casa (Gemini 3 Pro), 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, caprichado. 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. Fluxo de criação: create → add_image (1+) → set_card (opcional) → activate → set_visibility isPublic=true. Pra usar um personagem público como referência numa geração, pegue mainImageUrl em list_public/get e passe em sapiens_image referenceImageUrls.",
|
|
146
|
+
description: "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 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/nome do próprio), activate (publica, sai de draft, exige ≥1 imagem), set_visibility (isPublic true=Explorar+slug / false=privado). 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). FICHA (generate_sheet, COBRA 450 Sinapses): 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; o caprichado (stickerTier='unica', COBRA 900 Sinapses) desenha UM sticker por vez no motor mais fiel da casa (Gemini 3 Pro), 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, caprichado. 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. 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. Sai assinado com o Finalizador da casa. Exige FICHA gerada (é dela que saem a cara e o guarda-roupa), não só imagem. Duas actions, nesta ordem: plan_video (DE GRAÇA) devolve os 6 planos que a alma do personagem escolheu, com ambiente, ato, enquadramento e roupa; mostre esse roteiro pro autor e peça de novo quantas vezes ele quiser, porque trocar não custa nada. Depois generate_video (COBRA) renderiza, com os planos aprovados no arg `shots` e o degrau no arg `videoTier`: 'draft' (5.400 Sinapses) é o rascunho no motor barato, onde a mão pode sair torta, e 'final' (8.640 Sinapses) é o caprichado no motor que resolve a mão. 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 síncrona e demorada: se voltar Timeout, cheque sapiens_gallery antes de repetir. Fluxo de criação: create → add_image (1+) → set_card (opcional) → activate → set_visibility isPublic=true. Pra usar um personagem público como referência numa geração, pegue mainImageUrl em list_public/get e passe em sapiens_image referenceImageUrls.",
|
|
147
147
|
schema: characterSchema,
|
|
148
148
|
handler: character,
|
|
149
149
|
},
|
|
@@ -218,26 +218,26 @@ export const TOOLS = {
|
|
|
218
218
|
// É a "skill que anda junto com o pacote": escrevo uma vez, vale pra todos os clients,
|
|
219
219
|
// sem instalar nada. Cobre os tropeços reais (fluxo do musicator, model no vídeo, o
|
|
220
220
|
// disjuntor anti-loop). Mantém curto de propósito: viaja em todo handshake.
|
|
221
|
-
export const SAPIENS_INSTRUCTIONS = `Você opera o Sapiens Sintéticos (sapiensinteticos.com) NA CONTA de um usuário logado. Cada tool age de verdade na conta dele e muitas COBRAM Sinapses (o crédito da casa). Aja como operador, não no chute.
|
|
222
|
-
|
|
223
|
-
AS SKILLS DA CASA (leia ANTES de operar, não improvise o fluxo):
|
|
224
|
-
O passo a passo travado de cada fluxo mora na tool sapiens_skill, servida por este mesmo servidor: sem login, sem custo, sem rede. Ler a skill é mais barato que errar uma geração que cobra.
|
|
225
|
-
- sapiens_skill action=list -> o índice (slug + quando usar cada uma).
|
|
226
|
-
- sapiens_skill action=get name=<slug> -> a skill inteira.
|
|
227
|
-
Slugs: ${skillMenuLine()}
|
|
228
|
-
Puxe a skill ANTES de: gerar música ou efeito sonoro (musica), escolher modelo de vídeo (video), gerar imagem (imagem), criar personagem ou prompt de Midjourney (personagem), criar na identidade do usuário (studio), postar no Fórum ou no chat (forum-comunidade), redigir qualquer texto publicável (voz-da-casa), incorporar o Sintético (companhia), missão de Desafio (trilhas), montar currículo (curriculo), guardar obra ou ferramenta no acervo (repertorio). Perdido no começo: primeiros-passos.
|
|
229
|
-
Cliente que lê resources MCP acha o MESMO conteúdo em skill://sapiens/<slug>/SKILL.md.
|
|
230
|
-
|
|
231
|
-
REGRA DE OURO:
|
|
232
|
-
- PRIMEIRO CONTATO ou "o que você faz?"/"como começo?"/"o que dá pra fazer?": chame sapiens_meta action=start e MOSTRE o resultado na sua voz. Sem login, ele ensina a conectar; logado, traz saldo + primeiros poderes com exemplos. É a porta de entrada: não despeje a lista inteira de tools, deixe o start guiar.
|
|
233
|
-
- LOGO APÓS UM LOGIN BEM-SUCEDIDO (action=login retornou ok): chame action=start na sequência e mostre a porta de entrada. O recém-chegado não sabe o que pedir; não o deixe na tela em branco, guie a primeira jogada sem ele precisar perguntar.
|
|
234
|
-
- Antes de gerar algo caro (imagem/música/vídeo), cheque saldo: sapiens_meta action=credits (ou subscription). Saldo baixo, avise o usuário antes. Vídeo é o mais caro da casa: confirme com ele antes de disparar.
|
|
235
|
-
- 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').
|
|
236
|
-
- "sessionToken expirado" = refaça login: sapiens_meta action=login com o código de sapiensinteticos.com/conectar-claude.
|
|
237
|
-
- 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.
|
|
238
|
-
|
|
239
|
-
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.
|
|
240
|
-
|
|
221
|
+
export const SAPIENS_INSTRUCTIONS = `Você opera o Sapiens Sintéticos (sapiensinteticos.com) NA CONTA de um usuário logado. Cada tool age de verdade na conta dele e muitas COBRAM Sinapses (o crédito da casa). Aja como operador, não no chute.
|
|
222
|
+
|
|
223
|
+
AS SKILLS DA CASA (leia ANTES de operar, não improvise o fluxo):
|
|
224
|
+
O passo a passo travado de cada fluxo mora na tool sapiens_skill, servida por este mesmo servidor: sem login, sem custo, sem rede. Ler a skill é mais barato que errar uma geração que cobra.
|
|
225
|
+
- sapiens_skill action=list -> o índice (slug + quando usar cada uma).
|
|
226
|
+
- sapiens_skill action=get name=<slug> -> a skill inteira.
|
|
227
|
+
Slugs: ${skillMenuLine()}
|
|
228
|
+
Puxe a skill ANTES de: gerar música ou efeito sonoro (musica), escolher modelo de vídeo (video), gerar imagem (imagem), criar personagem ou prompt de Midjourney (personagem), criar na identidade do usuário (studio), postar no Fórum ou no chat (forum-comunidade), redigir qualquer texto publicável (voz-da-casa), incorporar o Sintético (companhia), missão de Desafio (trilhas), montar currículo (curriculo), guardar obra ou ferramenta no acervo (repertorio). Perdido no começo: primeiros-passos.
|
|
229
|
+
Cliente que lê resources MCP acha o MESMO conteúdo em skill://sapiens/<slug>/SKILL.md.
|
|
230
|
+
|
|
231
|
+
REGRA DE OURO:
|
|
232
|
+
- PRIMEIRO CONTATO ou "o que você faz?"/"como começo?"/"o que dá pra fazer?": chame sapiens_meta action=start e MOSTRE o resultado na sua voz. Sem login, ele ensina a conectar; logado, traz saldo + primeiros poderes com exemplos. É a porta de entrada: não despeje a lista inteira de tools, deixe o start guiar.
|
|
233
|
+
- LOGO APÓS UM LOGIN BEM-SUCEDIDO (action=login retornou ok): chame action=start na sequência e mostre a porta de entrada. O recém-chegado não sabe o que pedir; não o deixe na tela em branco, guie a primeira jogada sem ele precisar perguntar.
|
|
234
|
+
- Antes de gerar algo caro (imagem/música/vídeo), cheque saldo: sapiens_meta action=credits (ou subscription). Saldo baixo, avise o usuário antes. Vídeo é o mais caro da casa: confirme com ele antes de disparar.
|
|
235
|
+
- 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').
|
|
236
|
+
- "sessionToken expirado" = refaça login: sapiens_meta action=login com o código de sapiensinteticos.com/conectar-claude.
|
|
237
|
+
- 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.
|
|
238
|
+
|
|
239
|
+
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.
|
|
240
|
+
|
|
241
241
|
Voz da casa: 1ª pessoa, direto, anti-corporate, sem travessão. Pra bom entendedor, meia palavra basta. Texto que vai ser publicado pede a skill 'voz-da-casa' antes.`;
|
|
242
242
|
// Annotations MCP: título humano + dica read-only. São HINTS (não-confiáveis por
|
|
243
243
|
// spec): quem gateia de verdade continua o servidor (saldo, gate de admin,
|
package/dist/tools/character.js
CHANGED
|
@@ -32,6 +32,9 @@ import { convexQuery, convexMutation, convexAction, getSessionToken } from "../c
|
|
|
32
32
|
* vez no motor rápido, 'unica' desenha 1 no motor mais fiel.
|
|
33
33
|
* Nos dois, o fundo é chroma verde e o recorte devolve peças
|
|
34
34
|
* 512x512 transparentes, que entram no pack dele.
|
|
35
|
+
* - plan_video: escreve os 6 planos do Character Video (DE GRAÇA, texto).
|
|
36
|
+
* - generate_video: renderiza o Character Video (COBRA CARO), com os planos
|
|
37
|
+
* aprovados em `shots` e o degrau em `videoTier`.
|
|
35
38
|
* - delete: apaga o próprio personagem (permanente).
|
|
36
39
|
*
|
|
37
40
|
* Fluxo típico de criação: create → add_image (1+) → set_card (opcional) →
|
|
@@ -52,12 +55,26 @@ export const characterSchema = z.object({
|
|
|
52
55
|
"reorder_images",
|
|
53
56
|
"generate_sheet",
|
|
54
57
|
"generate_stickers",
|
|
58
|
+
"plan_video",
|
|
59
|
+
"generate_video",
|
|
55
60
|
"delete",
|
|
56
61
|
]),
|
|
57
62
|
characterId: z
|
|
58
63
|
.string()
|
|
59
64
|
.optional()
|
|
60
65
|
.describe("ID do personagem (influencers:_id). Obrigatório em get/add_image/set_card/activate/set_visibility/generate_sheet. Descubra via list_public ou list_mine."),
|
|
66
|
+
videoTier: z
|
|
67
|
+
.enum(["draft", "final"])
|
|
68
|
+
.optional()
|
|
69
|
+
.describe("Pra generate_video: qual degrau. 'draft' (default) é o rascunho, motor mais barato, bom pra ver se a direção agradou (a mão pode sair torta). 'final' é o caprichado, no motor que resolve a mão. Os dois entregam os mesmos 6 planos em 12s a 720p."),
|
|
70
|
+
shots: z
|
|
71
|
+
.array(z.object({
|
|
72
|
+
setting: z.string().describe("O ambiente do plano, inconfundível em relação aos outros."),
|
|
73
|
+
act: z.string().describe("O que o personagem FAZ: ação intencional com expressão, nunca pose."),
|
|
74
|
+
wardrobe: z.string().optional().describe("A roupa daquele mundo."),
|
|
75
|
+
}))
|
|
76
|
+
.optional()
|
|
77
|
+
.describe("Pra generate_video: os 6 planos APROVADOS pelo autor (o que voltou de plan_video, com as edições dele). Precisa ser exatamente 6, na ordem. 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 servidor escreve um roteiro novo e cobra igual."),
|
|
61
78
|
limit: z
|
|
62
79
|
.number()
|
|
63
80
|
.int()
|
|
@@ -303,6 +320,41 @@ export async function character(args) {
|
|
|
303
320
|
tier: args.stickerTier,
|
|
304
321
|
});
|
|
305
322
|
}
|
|
323
|
+
// -------- plan_video: o roteiro dos seis planos, DE GRAÇA --------
|
|
324
|
+
// Passo de texto: devolve os seis planos (ambiente, ato, enquadramento,
|
|
325
|
+
// roupa) escritos pela alma do personagem, sem cobrar nada e sem renderizar.
|
|
326
|
+
// Existe pra você mostrar o roteiro ao autor ANTES de queimar milhares de
|
|
327
|
+
// Sinapses num take. Trocar o roteiro é pedir de novo, e continua de graça.
|
|
328
|
+
if (args.action === "plan_video") {
|
|
329
|
+
if (!args.characterId)
|
|
330
|
+
throw new Error("action=plan_video exige characterId.");
|
|
331
|
+
const sessionToken = getSessionToken();
|
|
332
|
+
return await convexAction("characterVideoActions:mcpPlanCharacterVideo", {
|
|
333
|
+
sessionToken,
|
|
334
|
+
influencerId: args.characterId,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
// -------- generate_video: o Character Video (a ficha que anda) --------
|
|
338
|
+
// Geração SÍNCRONA que COBRA CARO e demora minutos: cai na regra do timeout.
|
|
339
|
+
// Se voltar Timeout, NÃO repita às cegas: confira em sapiens_gallery se o
|
|
340
|
+
// take caiu.
|
|
341
|
+
//
|
|
342
|
+
// Mande `shots` com o roteiro que o autor APROVOU (o que veio do plan_video,
|
|
343
|
+
// com edição dele se houver). Sem `shots`, o servidor escreve um roteiro novo
|
|
344
|
+
// na hora e cobra do mesmo jeito, então o caminho educado é sempre planejar,
|
|
345
|
+
// mostrar, e só então gerar.
|
|
346
|
+
if (args.action === "generate_video") {
|
|
347
|
+
if (!args.characterId)
|
|
348
|
+
throw new Error("action=generate_video exige characterId.");
|
|
349
|
+
const sessionToken = getSessionToken();
|
|
350
|
+
return await convexAction("characterVideoActions:mcpGenerateCharacterVideo", {
|
|
351
|
+
sessionToken,
|
|
352
|
+
influencerId: args.characterId,
|
|
353
|
+
tier: args.videoTier,
|
|
354
|
+
orientation: args.orientation,
|
|
355
|
+
shots: args.shots,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
306
358
|
// -------- delete: apaga o próprio personagem (permanente) --------
|
|
307
359
|
if (args.action === "delete") {
|
|
308
360
|
if (!args.characterId)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.54.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",
|