sapiens-mcp 1.66.3 → 1.67.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 +1 -1
- package/dist/tools/image.js +4 -1
- package/dist/tools/pipeline.js +44 -0
- package/package.json +62 -62
package/dist/registry.js
CHANGED
|
@@ -51,7 +51,7 @@ import { skillMenuLine } from "./skills.js";
|
|
|
51
51
|
*/
|
|
52
52
|
export const TOOLS = {
|
|
53
53
|
sapiens_pipeline: {
|
|
54
|
-
description: "CRUD do content pipeline Sapiens (sources/productions/publishables). Sub-actions: list_sources, list_articles (use includeDrafts pra incluir drafts; onlyAvailable pra esconder os já virados em source), get_source, get_production, list_versions, add_article_as_source, create_draft_article_and_source (seed), create_production (sourceId+format → productionId draft), update_production (substitui payload, opcionalmente muda status), finalize_production (cria publishable v1, v2... com snapshot), remove_production, remove_source, set_source_done, update_source_notes, restore_version (volta payload duma versão antiga), set_publishable_title (renomeia um publishable), backfill_via (rotula em lote o campo 'via' das productions antigas; dryRun=true só lista), propose_mega_grafico_plan (granular: só gera plano via Gemini, devolve fullPrompt+spec), run_mega_grafico_full (ONE-SHOT, recomendado: cria production+propõe plano+gera imagem+aplica selo Sapiens+finaliza publishable numa chamada só), generate_carousel (gera um carrossel editorial standalone a partir de brief OU articleId — 7-9 slides na voz Sapiens + imagens do banco; devolve id + url do editor pro humano abrir, ajustar e exportar; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava uma folha registrada da casa, ex 'feed' ou 'reflexao', em vez do caminho editorial livre; aspect opcional escolhe o TAMANHO da folha, '9:16' (default, ocupa a tela inteira do celular no feed) ou '4:5' (folha clássica, ainda melhor no LinkedIn e no X) — model é a FORMA, aspect é o TAMANHO, e dá pra trocar depois no editor). generate_carousel_production (o IRMÃO PIPELINE do generate_carousel: recebe um sourceId de artigo, CRIA a production carrossel_ig e a preenche pelo MESMO motor da casa, já no shape editorial (templateId+slots) que o editor de pipeline renderiza — prefira ESTE a create_production+payload cru pro carrossel, que abre VAZIO no editor; devolve productionId + url do editor de pipeline; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava a folha registrada; beats opcional entrega copy PRONTO por beat da espinha, [{n, slots}], quando o agente JÁ escreveu e validou os blocos: com beats o Gemini de escrita NÃO roda e a rodada cobra só o picker de imagens, zero com autoPickImages=false; caption opcional vira a legenda do meta). CARROSSEL FINO (edição sem tela, admin-only): list_carousels (seus carrosséis standalone), get_carousel (payload completo + catálogo de templates com slots/limites + paletas + o formato da peça e os válidos — tudo pra VOCÊ escrever os slides), update_carousel (payload inteiro de volta, sanitizado no servidor; preserve os campos image dos slides que não mexeu E o theme.sheet, que é o formato: theme reescrito sem ele devolve a peça pra folha padrão), carousel_auto_images (IA escolhe imagens do banco pros slides de foto, 60 Sinapses; aceita carouselId standalone OU productionId de carrossel da pipeline; makeVisual=true converte slides de texto pra layouts de foto antes — ritmo visual; generateMissing=true gera imagem nova pros que o banco não cobrir, ~450 Sinapses cada, até 4, avise o custo antes), carousel_generate_image (imagem nova pra UM slide, ~450 Sinapses, customPrompt opcional). Fluxo confortável (standalone): generate_carousel → get_carousel → update_carousel (afia os textos) → carousel_auto_images → humano abre a url pra exportar. Fluxo pipeline (carrossel atrelado a um artigo/source): generate_carousel_production (sourceId) → humano abre a url do editor de pipeline pra revisar e finalizar (finalize_production). Fluxo pipeline com copy do agente (a skill escreveu os blocos): generate_carousel_production (sourceId + model + beats) → carousel_auto_images (productionId) se faltar foto → humano revisa e finaliza. Pra mega_grafico, SEMPRE prefira run_mega_grafico_full em vez de sequenciar manualmente (menos drift). Idempotente só na production (passa productionId pra reusar a MESMA row), mas cada run RE-GERA a imagem e cobra de novo (~900 Sinapses): não é grátis re-rodar. OBRIGATÓRIO perguntar ao user antes se withHelen=true (cartoon Helen interage com tema, ~15-25% do poster) ou false (poster 100% diagramático). Custo ~900-1000 sinapses por geração. run_mega_grafico_full, generate_carousel, generate_carousel_production, carousel_auto_images (com generateMissing) e carousel_generate_image são SÍNCRONAS e pesadas: vale a REGRA DO TIMEOUT (podem cobrar mesmo voltando 'Timeout'; cheque get_carousel/dashboard antes de repetir). Use skipFinalize=true se quiser deixar production em 'ready' pro admin revisar antes de publishable. Payload livre por formato — chame sapiens_meta action=formats pra ver schemas sugeridos.",
|
|
54
|
+
description: "CRUD do content pipeline Sapiens (sources/productions/publishables). Sub-actions: list_sources, list_articles (use includeDrafts pra incluir drafts; onlyAvailable pra esconder os já virados em source), get_source, get_production, list_versions, add_article_as_source, create_draft_article_and_source (seed), create_production (sourceId+format → productionId draft), update_production (substitui payload, opcionalmente muda status), finalize_production (cria publishable v1, v2... com snapshot), remove_production, remove_source, set_source_done, update_source_notes, restore_version (volta payload duma versão antiga), set_publishable_title (renomeia um publishable), backfill_via (rotula em lote o campo 'via' das productions antigas; dryRun=true só lista), propose_mega_grafico_plan (granular: só gera plano via Gemini, devolve fullPrompt+spec), run_mega_grafico_full (ONE-SHOT, recomendado: cria production+propõe plano+gera imagem+aplica selo Sapiens+finaliza publishable numa chamada só), generate_carousel (gera um carrossel editorial standalone a partir de brief OU articleId — 7-9 slides na voz Sapiens + imagens do banco; devolve id + url do editor pro humano abrir, ajustar e exportar; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava uma folha registrada da casa, ex 'feed' ou 'reflexao', em vez do caminho editorial livre; aspect opcional escolhe o TAMANHO da folha, '9:16' (default, ocupa a tela inteira do celular no feed) ou '4:5' (folha clássica, ainda melhor no LinkedIn e no X) — model é a FORMA, aspect é o TAMANHO, e dá pra trocar depois no editor). generate_carousel_production (o IRMÃO PIPELINE do generate_carousel: recebe um sourceId de artigo, CRIA a production carrossel_ig e a preenche pelo MESMO motor da casa, já no shape editorial (templateId+slots) que o editor de pipeline renderiza — prefira ESTE a create_production+payload cru pro carrossel, que abre VAZIO no editor; devolve productionId + url do editor de pipeline; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava a folha registrada; beats opcional entrega copy PRONTO por beat da espinha, [{n, slots}], quando o agente JÁ escreveu e validou os blocos: com beats o Gemini de escrita NÃO roda e a rodada cobra só o picker de imagens, zero com autoPickImages=false; caption opcional vira a legenda do meta). CARROSSEL FINO (edição sem tela, admin-only): list_carousels (seus carrosséis standalone), get_carousel (payload completo + catálogo de templates com slots/limites + paletas + o formato da peça e os válidos — tudo pra VOCÊ escrever os slides), update_carousel (payload inteiro de volta, sanitizado no servidor; preserve os campos image dos slides que não mexeu E o theme.sheet, que é o formato: theme reescrito sem ele devolve a peça pra folha padrão), carousel_auto_images (IA escolhe imagens do banco pros slides de foto, 60 Sinapses; aceita carouselId standalone OU productionId de carrossel da pipeline; makeVisual=true converte slides de texto pra layouts de foto antes — ritmo visual; generateMissing=true gera imagem nova pros que o banco não cobrir, ~450 Sinapses cada, até 4, avise o custo antes), carousel_generate_image (imagem nova pra UM slide, ~450 Sinapses, customPrompt opcional), capa_ia (A CAPA SEAMLESS: gera uma imagem 16:9 contínua com o TEXTO QUEIMADO dentro dela e o elemento vivo cruzando as letras, fatia em duas peças 3:4 no servidor e, com carouselId, já põe as duas na frente do carrossel. É a capa mais bonita da casa e a única em que o sujeito passa na frente e atrás do título, porque o texto é parte da imagem, não overlay. Args: capaHeadline (obrigatório), capaSubline, capaRightText (cai no 2º slide), capaElement e capaVibe (omitidos, a IA escolhe pela pauta), capaImageModel. O MOTOR é a decisão que mais muda o resultado, porque capa é tipografia: gpt-image-2-high (default, 1200, o único da casa que entrega letra pequena legível, sai em 1536x1024) contra nano-banana-max (900, cena mais fiel e 2K de verdade, letra erra mais). Cobra pelo catálogo, no motor que rodou, e a peça entra na sua galeria como qualquer geração. Depois de gerada, ANIMAR a capa (o elemento deriva e o texto fica congelado) é ato do editor, não do agente). Fluxo confortável (standalone): generate_carousel → get_carousel → update_carousel (afia os textos) → carousel_auto_images → humano abre a url pra exportar. Fluxo pipeline (carrossel atrelado a um artigo/source): generate_carousel_production (sourceId) → humano abre a url do editor de pipeline pra revisar e finalizar (finalize_production). Fluxo pipeline com copy do agente (a skill escreveu os blocos): generate_carousel_production (sourceId + model + beats) → carousel_auto_images (productionId) se faltar foto → humano revisa e finaliza. Pra mega_grafico, SEMPRE prefira run_mega_grafico_full em vez de sequenciar manualmente (menos drift). Idempotente só na production (passa productionId pra reusar a MESMA row), mas cada run RE-GERA a imagem e cobra de novo (~900 Sinapses): não é grátis re-rodar. OBRIGATÓRIO perguntar ao user antes se withHelen=true (cartoon Helen interage com tema, ~15-25% do poster) ou false (poster 100% diagramático). Custo ~900-1000 sinapses por geração. run_mega_grafico_full, generate_carousel, generate_carousel_production, carousel_auto_images (com generateMissing) e carousel_generate_image são SÍNCRONAS e pesadas: vale a REGRA DO TIMEOUT (podem cobrar mesmo voltando 'Timeout'; cheque get_carousel/dashboard antes de repetir). Use skipFinalize=true se quiser deixar production em 'ready' pro admin revisar antes de publishable. Payload livre por formato — chame sapiens_meta action=formats pra ver schemas sugeridos.",
|
|
55
55
|
schema: pipelineSchema,
|
|
56
56
|
handler: pipeline,
|
|
57
57
|
},
|
package/dist/tools/image.js
CHANGED
|
@@ -15,6 +15,9 @@ const MODELS = [
|
|
|
15
15
|
"nano-banana-2", // gemini-3.1-flash-image-preview (V2, Flash 3.1) · COM refs · adder até 4K · DEFAULT
|
|
16
16
|
"gpt-image-2-low", // Azure gpt-image-2 quality=low
|
|
17
17
|
"gpt-image-2-high", // Azure gpt-image-2 quality=high · o motor de texto legível
|
|
18
|
+
"gpt-image-2-5-flare", // GPT Image 2.5 Flare quality=high · o 2.5 de volume, mais rápido · COM refs
|
|
19
|
+
"gpt-image-2-5-sunburst", // GPT Image 2.5 Sunburst quality=high · o 2.5 de precisão e edição em várias voltas · COM refs
|
|
20
|
+
"mai-image-2-6", // MAI Image 2.6 (Microsoft), no mesmo recurso Foundry do gpt-image-2 · foto rápida · cobra por ÁREA, então o adder de resolução é real · teto 2K (1536²) · SEM refs
|
|
18
21
|
"muse-image", // Meta Muse Image · barato na edição por referência (10 refs no catálogo, 5 pelo MCP) · sem escada de resolução · moderação apertada, não é +18
|
|
19
22
|
// ByteDance via ModelArk direto. Corp/censurado, 2K nativo, COM refs (até 4).
|
|
20
23
|
// (O "nova-canvas" ficava aqui e saiu: a AWS matou o modelo. Pedido antigo
|
|
@@ -75,7 +78,7 @@ export const imageSchema = z.object({
|
|
|
75
78
|
model: z
|
|
76
79
|
.enum(MODELS)
|
|
77
80
|
.optional()
|
|
78
|
-
.describe("Default 'nano-banana-2' (Flash 3.1 com refs). 'nano-banana-max' (Pro 3) = qualidade alta. 'gpt-image-2-low/high' =
|
|
81
|
+
.describe("Default 'nano-banana-2' (Flash 3.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. 'seedream-4-5'/'seedream-5-0'/'seedream-5-0-pro' = ByteDance 2K nativo, cinematográfico, aceita até 4 referências (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. DEGEN (uncensored, gate +18): 'wavespeed-chroma' (fotorrealista rápido), 'wavespeed-flux2' (Flux.2 Klein), 'wavespeed-klein-plus' (o MESMO Klein 9B com uma LoRA de ANATOMIA por cima, e é o caminho de nudez explícita com personagem travada: o Klein base desenha aréola e mamilo mas devolve a virilha lisa, e os motores que desenham a anatomia ignoram a referência. Aqui a identidade continua vindo da ref e a LoRA só preenche o que faltava; Ousadia regulável), 'wavespeed-flux-nsfw' (flux+LoRA NSFW, Ousadia regulável via loraIntensity), 'wavespeed-klein-anime' (Flux.2 Klein + LoRA anime, inteligente+controlável), 'wavespeed-klein-anime-plus' (Klein anime +18, Ousadia regulável), '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-krea2' (Krea 2 Livre: a MESMA base 12B das fal-krea2-*, hospedada na WaveSpeed, SEM o classificador de entrada da fal: é o caminho quando a fal devolve 422 num prompt que não tem palavra de nudez; aceita referência img2img de verdade, Ousadia regulável e 2K), 'wavespeed-krea2-base' (Krea 2 Base: a mesma base 12B da Livre SEM LoRA nenhuma, nem realismo nem NSFW; é o motor como ele é, com img2img e 2K, pra quem quer ver a base crua ou temperar com o próprio prompt; sem Ousadia, que é a LoRA que ele não carrega) = WaveSpeed rápido; '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). 'fal-krea2-realism-v2' (na tela chama Krea 2 Realism: Krea-2 Turbo 12B + LoRA de realismo, fal.ai, ~4s, pele crua e contraluz que não lava; o sufixo -v2 do id é o nome do arquivo de LoRA, não geração nova do motor) = aceita até 3 referências de ESTILO (paleta/luz/textura de uma série), não character lock; com referência a LoRA não vai junto."),
|
|
79
82
|
aspectRatio: z
|
|
80
83
|
.enum(["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"])
|
|
81
84
|
.optional()
|
package/dist/tools/pipeline.js
CHANGED
|
@@ -58,7 +58,36 @@ export const pipelineSchema = z.object({
|
|
|
58
58
|
"update_carousel",
|
|
59
59
|
"carousel_auto_images",
|
|
60
60
|
"carousel_generate_image",
|
|
61
|
+
"capa_ia",
|
|
61
62
|
]),
|
|
63
|
+
// capa_ia: a capa seamless 16:9 que vira os DOIS primeiros slides 3:4.
|
|
64
|
+
// O texto é queimado dentro da imagem (é o que deixa o elemento passar na
|
|
65
|
+
// frente e atrás das letras), então quem escreve a manchete aqui é quem
|
|
66
|
+
// escolhe o que vai aparecer desenhado na peça.
|
|
67
|
+
capaHeadline: z
|
|
68
|
+
.string()
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("capa_ia: a manchete da capa, desenhada DENTRO da imagem. Curta: ela ocupa a folha inteira."),
|
|
71
|
+
capaSubline: z
|
|
72
|
+
.string()
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("capa_ia: linha de apoio embaixo da manchete (opcional)."),
|
|
75
|
+
capaRightText: z
|
|
76
|
+
.string()
|
|
77
|
+
.optional()
|
|
78
|
+
.describe("capa_ia: texto que cai na METADE DIREITA, ou seja, no 2º slide (opcional)."),
|
|
79
|
+
capaElement: z
|
|
80
|
+
.string()
|
|
81
|
+
.optional()
|
|
82
|
+
.describe("capa_ia: o que atravessa a cena (koi, aguas-vivas, petalas, borboletas, fagulhas, passaros, corujas). Omitido = a IA escolhe pela pauta."),
|
|
83
|
+
capaVibe: z
|
|
84
|
+
.string()
|
|
85
|
+
.optional()
|
|
86
|
+
.describe("capa_ia: a atmosfera (futuro-etereo, pedra-serena, aurora, concreto-frio). Omitido = a IA escolhe pela pauta."),
|
|
87
|
+
capaImageModel: z
|
|
88
|
+
.string()
|
|
89
|
+
.optional()
|
|
90
|
+
.describe("capa_ia: motor da imagem. gpt-image-2-high (default, 1200, letra pequena legível), gpt-image-2-low (200), nano-banana-max (900, cena mais fiel e 2K, letra erra mais), nano-banana-2 (450, o rápido)."),
|
|
62
91
|
// propose_mega_grafico_plan / run_mega_grafico_full
|
|
63
92
|
withHelen: z
|
|
64
93
|
.boolean()
|
|
@@ -503,6 +532,21 @@ export async function pipeline(args) {
|
|
|
503
532
|
generateMissing: args.generateMissing,
|
|
504
533
|
});
|
|
505
534
|
}
|
|
535
|
+
case "capa_ia": {
|
|
536
|
+
// Gera a capa 16:9 com o texto baked, fatia em duas 3:4 no servidor (o
|
|
537
|
+
// corte que o editor faz no canvas) e, com carouselId, já põe os dois
|
|
538
|
+
// slides na frente do carrossel. SÍNCRONA e paga: vale a REGRA DO TIMEOUT.
|
|
539
|
+
return await convexAction("capaIa:mcpCapaIa", {
|
|
540
|
+
sessionToken,
|
|
541
|
+
headline: need(args.capaHeadline, "capaHeadline"),
|
|
542
|
+
...(args.capaSubline ? { subline: args.capaSubline } : {}),
|
|
543
|
+
...(args.capaRightText ? { rightText: args.capaRightText } : {}),
|
|
544
|
+
...(args.capaElement ? { element: args.capaElement } : {}),
|
|
545
|
+
...(args.capaVibe ? { vibe: args.capaVibe } : {}),
|
|
546
|
+
...(args.capaImageModel ? { imageModel: args.capaImageModel } : {}),
|
|
547
|
+
...(args.carouselId ? { carouselId: args.carouselId } : {}),
|
|
548
|
+
});
|
|
549
|
+
}
|
|
506
550
|
case "carousel_generate_image":
|
|
507
551
|
// Gera imagem NOVA pra UM slide (nanoBanana, ~450 Sinapses) e salva no
|
|
508
552
|
// carrossel. SÍNCRONA (~20-60s): vale a REGRA DO TIMEOUT.
|
package/package.json
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"mcpName": "com.sapiensinteticos/sapiens",
|
|
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
|
-
"type": "module",
|
|
7
|
-
"bin": {
|
|
8
|
-
"sapiens-mcp": "./dist/index.js"
|
|
9
|
-
},
|
|
10
|
-
"exports": {
|
|
11
|
-
"./remote": "./dist/remote.js",
|
|
12
|
-
"./registry": "./dist/registry.js",
|
|
13
|
-
"./resume": "./dist/resume/template.js"
|
|
14
|
-
},
|
|
15
|
-
"files": [
|
|
16
|
-
"dist",
|
|
17
|
-
"README.md"
|
|
18
|
-
],
|
|
19
|
-
"engines": {
|
|
20
|
-
"node": ">=18"
|
|
21
|
-
},
|
|
22
|
-
"homepage": "https://www.sapiensinteticos.com/conectar-claude",
|
|
23
|
-
"keywords": [
|
|
24
|
-
"mcp",
|
|
25
|
-
"model-context-protocol",
|
|
26
|
-
"sapiens",
|
|
27
|
-
"claude",
|
|
28
|
-
"claude-code",
|
|
29
|
-
"ai",
|
|
30
|
-
"image-generation"
|
|
31
|
-
],
|
|
32
|
-
"license": "MIT",
|
|
33
|
-
"author": "BorderLess (Sapiens Sintéticos), sapiensinteticos.com",
|
|
34
|
-
"scripts": {
|
|
35
|
-
"build": "tsc",
|
|
36
|
-
"dev": "tsx src/index.ts",
|
|
37
|
-
"start": "node dist/index.js",
|
|
38
|
-
"pretest": "npm run build",
|
|
39
|
-
"test": "node --test --test-force-exit test/unit.test.mjs test/server.test.mjs test/remote.test.mjs test/remote-protect.test.mjs",
|
|
40
|
-
"prepublishOnly": "npm run build"
|
|
41
|
-
},
|
|
42
|
-
"repository": {
|
|
43
|
-
"type": "git",
|
|
44
|
-
"url": "git+https://github.com/inhabitants/sapiensinteticos.git",
|
|
45
|
-
"directory": "tools/mcp-sapiens"
|
|
46
|
-
},
|
|
47
|
-
"bugs": {
|
|
48
|
-
"url": "https://github.com/inhabitants/sapiensinteticos/issues"
|
|
49
|
-
},
|
|
50
|
-
"dependencies": {
|
|
51
|
-
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
52
|
-
"convex": "^1.41.0",
|
|
53
|
-
"mcp-handler": "^1.1.0",
|
|
54
|
-
"zod": "^3.23.8",
|
|
55
|
-
"zod-to-json-schema": "^3.23.5"
|
|
56
|
-
},
|
|
57
|
-
"devDependencies": {
|
|
58
|
-
"@types/node": "^22.10.0",
|
|
59
|
-
"tsx": "^4.19.2",
|
|
60
|
-
"typescript": "^5.7.2"
|
|
61
|
-
}
|
|
62
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "sapiens-mcp",
|
|
3
|
+
"version": "1.67.0",
|
|
4
|
+
"mcpName": "com.sapiensinteticos/sapiens",
|
|
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
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"sapiens-mcp": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"exports": {
|
|
11
|
+
"./remote": "./dist/remote.js",
|
|
12
|
+
"./registry": "./dist/registry.js",
|
|
13
|
+
"./resume": "./dist/resume/template.js"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=18"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://www.sapiensinteticos.com/conectar-claude",
|
|
23
|
+
"keywords": [
|
|
24
|
+
"mcp",
|
|
25
|
+
"model-context-protocol",
|
|
26
|
+
"sapiens",
|
|
27
|
+
"claude",
|
|
28
|
+
"claude-code",
|
|
29
|
+
"ai",
|
|
30
|
+
"image-generation"
|
|
31
|
+
],
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"author": "BorderLess (Sapiens Sintéticos), sapiensinteticos.com",
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc",
|
|
36
|
+
"dev": "tsx src/index.ts",
|
|
37
|
+
"start": "node dist/index.js",
|
|
38
|
+
"pretest": "npm run build",
|
|
39
|
+
"test": "node --test --test-force-exit test/unit.test.mjs test/server.test.mjs test/remote.test.mjs test/remote-protect.test.mjs",
|
|
40
|
+
"prepublishOnly": "npm run build"
|
|
41
|
+
},
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/inhabitants/sapiensinteticos.git",
|
|
45
|
+
"directory": "tools/mcp-sapiens"
|
|
46
|
+
},
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/inhabitants/sapiensinteticos/issues"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
52
|
+
"convex": "^1.41.0",
|
|
53
|
+
"mcp-handler": "^1.1.0",
|
|
54
|
+
"zod": "^3.23.8",
|
|
55
|
+
"zod-to-json-schema": "^3.23.5"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@types/node": "^22.10.0",
|
|
59
|
+
"tsx": "^4.19.2",
|
|
60
|
+
"typescript": "^5.7.2"
|
|
61
|
+
}
|
|
62
|
+
}
|