sapiens-mcp 1.25.0 → 1.26.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/index.js +4 -4
- package/dist/tools/video.js +42 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -109,7 +109,7 @@ const TOOLS = {
|
|
|
109
109
|
handler: shorts,
|
|
110
110
|
},
|
|
111
111
|
sapiens_video: {
|
|
112
|
-
description: "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), 'sapiens-video-kling' (Kling 3.0 Pro, anima imagem, 3-15s, sound opcional, i2v/t2v), 'sapiens-video-wan' (WAN 2.5, imagem que fala/canta com áudio+lip-sync, 5/10s, i2v), '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-lite/fast/quality' (Veo 3.1). Args create: model, prompt, durationSec, resolution ('480p'/'720p'/'1080p'), audio, aspectRatio. 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. Alternativa base64: references (role 'start'=imagem i2v, 'end'=frame final, 'driving'=vídeo de movimento do Motion). Suporte a frame final varia por modelo. Custo server-side por config. Sub-action 'generate' (legado): renderiza um imageId de vídeo já criado no site. Retorna {success, url, imageId, cost}.",
|
|
112
|
+
description: "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), 'sapiens-video-kling' (Kling 3.0 Pro, anima imagem, 3-15s, sound opcional, i2v/t2v), 'sapiens-video-wan' (WAN 2.5, imagem que fala/canta com áudio+lip-sync, 5/10s, i2v), '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-lite/fast/quality' (Veo 3.1). Args create: model, prompt, durationSec, resolution ('480p'/'720p'/'1080p'), audio, aspectRatio. 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. Alternativa base64: references (role 'start'=imagem i2v, 'end'=frame final, 'driving'=vídeo de movimento do Motion). Suporte a frame final varia por modelo. 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.",
|
|
113
113
|
schema: videoSchema,
|
|
114
114
|
handler: video,
|
|
115
115
|
},
|
|
@@ -198,7 +198,7 @@ Música (sapiens_musicator) é fluxo de 4 passos, EM ORDEM:
|
|
|
198
198
|
4. get passe o trackId e fique polando o status até 'ready' (ou 'failed').
|
|
199
199
|
Pular pro lyrics/render sem create, ou sem os campos, sempre falha.
|
|
200
200
|
|
|
201
|
-
Vídeo (sapiens_video) action=create EXIGE 'model': sapiens-video-seedance | kling | wan | kling-motion | lite | fast | quality | omni. Sem model, falha de cara. O 'omni' (Gemini Omni) é SÓ text-to-video: texto vira clipe de 10s 720p com áudio nativo, ignora imagem/duração/resolução. Vídeo é o mais caro: confirme com o usuário antes.
|
|
201
|
+
Vídeo (sapiens_video) action=create EXIGE 'model': sapiens-video-seedance | kling | wan | kling-motion | lite | fast | quality | omni. Sem model, falha de cara. O 'omni' (Gemini Omni) é SÓ text-to-video: texto vira clipe de 10s 720p com áudio nativo, ignora imagem/duração/resolução. Vídeo é o mais caro: confirme com o usuário antes. Vitrine dos demos (sem custo): sapiens_video action=demos lista seus demo films com slug; action=showcase (slug + showcase=true/false + showcaseTag + showcaseOrder) cura o mini-cinema da /conectar-claude.
|
|
202
202
|
|
|
203
203
|
Imagem (sapiens_image) action=generate: prompt + model + aspectRatio. Referência via referenceImageUrls (galeria/Acervo/personagens) e/ou sourceImageIds. templateSlug aplica um super-prompt travado da casa.
|
|
204
204
|
|
|
@@ -220,7 +220,7 @@ Mídia no Fórum (PADRÃO, faça sempre assim): a peça vai EMBEDADA num card es
|
|
|
220
220
|
Trilhas e Ritos de Fogo (sapiens_trilhas): 'list'/'get' pra navegar as trilhas; 'list_challenges' mostra os Ritos ativos + seu status; 'claim_mission' (missionId + proofText) envia a prova pra revisão do dono — o crédito em Sinapses sai na aprovação dele, não na hora. Não prometa Sinapse na hora do claim.
|
|
221
221
|
|
|
222
222
|
Voz da casa: 1ª pessoa, direto, anti-corporate, sem travessão. Pra bom entendedor, meia palavra basta.`;
|
|
223
|
-
const server = new Server({ name: "mcp-sapiens", version: "1.
|
|
223
|
+
const server = new Server({ name: "mcp-sapiens", version: "1.26.0" }, { capabilities: { tools: {} }, instructions: SAPIENS_INSTRUCTIONS });
|
|
224
224
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
225
225
|
tools: Object.entries(TOOLS).map(([name, t]) => ({
|
|
226
226
|
name,
|
|
@@ -253,4 +253,4 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
253
253
|
});
|
|
254
254
|
const transport = new StdioServerTransport();
|
|
255
255
|
await server.connect(transport);
|
|
256
|
-
console.error("mcp-sapiens v1.
|
|
256
|
+
console.error("mcp-sapiens v1.26.0 rodando via stdio (27 tools)");
|
package/dist/tools/video.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { convexAction, getSessionToken } from "../convexClient.js";
|
|
2
|
+
import { convexAction, convexQuery, convexMutation, getSessionToken } from "../convexClient.js";
|
|
3
3
|
/**
|
|
4
4
|
* Sapiens Video — gera vídeo (qualquer membro logado; vídeo é caro, cobra as
|
|
5
5
|
* Sinapses da conta do sessionToken).
|
|
@@ -8,6 +8,11 @@ import { convexAction, getSessionToken } from "../convexClient.js";
|
|
|
8
8
|
* - create: escolhe modelo + config e gera num call só (cria a row + renderiza).
|
|
9
9
|
* Habilita Seedance/Kling/WAN/Motion (WaveSpeed) e os Veo, sem o site.
|
|
10
10
|
* - generate: renderiza um imageId de vídeo já criado no site (legado).
|
|
11
|
+
* - demos: lista os SEUS demo films (kind=demo do Estúdio de Vídeo) + estado
|
|
12
|
+
* de vitrine. Sem custo. Base pra curar o mini-cinema da vitrine.
|
|
13
|
+
* - showcase: põe/tira um demo film (por slug) da vitrine /conectar-claude, com
|
|
14
|
+
* chip (showcaseTag) e ordem (showcaseOrder). Só entra na vitrine
|
|
15
|
+
* pública se for a conta da casa. Sem custo.
|
|
11
16
|
*
|
|
12
17
|
* Modelos (action=create):
|
|
13
18
|
* - sapiens-video-seedance Seedance 2.0 — cena com áudio nativo, 4-15s, 480/720/1080p (t2v/i2v)
|
|
@@ -36,7 +41,24 @@ const VIDEO_MODELS = [
|
|
|
36
41
|
"sapiens-video-omni",
|
|
37
42
|
];
|
|
38
43
|
export const videoSchema = z.object({
|
|
39
|
-
action: z.enum(["create", "generate"]),
|
|
44
|
+
action: z.enum(["create", "generate", "demos", "showcase"]),
|
|
45
|
+
// --- action=showcase (curadoria da vitrine /conectar-claude) ---
|
|
46
|
+
slug: z
|
|
47
|
+
.string()
|
|
48
|
+
.optional()
|
|
49
|
+
.describe("action=showcase: slug do demo film a curar (descubra via action=demos)."),
|
|
50
|
+
showcase: z
|
|
51
|
+
.boolean()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe("action=showcase: true põe na vitrine /conectar-claude, false tira."),
|
|
54
|
+
showcaseTag: z
|
|
55
|
+
.string()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("action=showcase: chip de capacidade do card (ex: 'Repertório', 'Galeria', 'Fórum'). Curto, até 24 chars."),
|
|
58
|
+
showcaseOrder: z
|
|
59
|
+
.number()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("action=showcase: ordem na trilha do mini-cinema (asc, 0..999; menor aparece primeiro)."),
|
|
40
62
|
// --- action=create ---
|
|
41
63
|
model: z
|
|
42
64
|
.enum(VIDEO_MODELS)
|
|
@@ -107,6 +129,24 @@ export const videoSchema = z.object({
|
|
|
107
129
|
});
|
|
108
130
|
export async function video(args) {
|
|
109
131
|
const sessionToken = getSessionToken();
|
|
132
|
+
if (args.action === "demos") {
|
|
133
|
+
return await convexQuery("videoSpecs:mcpListMyDemoFilms", { sessionToken });
|
|
134
|
+
}
|
|
135
|
+
if (args.action === "showcase") {
|
|
136
|
+
if (!args.slug) {
|
|
137
|
+
throw new Error("action=showcase exige slug (descubra via action=demos).");
|
|
138
|
+
}
|
|
139
|
+
if (typeof args.showcase !== "boolean") {
|
|
140
|
+
throw new Error("action=showcase exige showcase (true pra pôr, false pra tirar).");
|
|
141
|
+
}
|
|
142
|
+
return await convexMutation("videoSpecs:mcpSetVideoShowcase", {
|
|
143
|
+
sessionToken,
|
|
144
|
+
slug: args.slug,
|
|
145
|
+
showcase: args.showcase,
|
|
146
|
+
showcaseTag: args.showcaseTag,
|
|
147
|
+
showcaseOrder: args.showcaseOrder,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
110
150
|
if (args.action === "create") {
|
|
111
151
|
if (!args.model) {
|
|
112
152
|
throw new Error("action=create exige model (ex: sapiens-video-seedance, sapiens-video-kling, sapiens-video-wan, sapiens-video-kling-motion).");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.26.0",
|
|
4
4
|
"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.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|