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 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.25.0" }, { capabilities: { tools: {} }, instructions: SAPIENS_INSTRUCTIONS });
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.25.0 rodando via stdio (27 tools)");
256
+ console.error("mcp-sapiens v1.26.0 rodando via stdio (27 tools)");
@@ -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.25.0",
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": {