sapiens-mcp 1.26.0 → 1.26.1
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 +3 -3
- package/dist/tools/article.js +31 -0
- package/dist/tools/image.js +5 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -64,7 +64,7 @@ const TOOLS = {
|
|
|
64
64
|
handler: community,
|
|
65
65
|
},
|
|
66
66
|
sapiens_article: {
|
|
67
|
-
description: "CRUD direto de artigos do blog Sapiens (v1.
|
|
67
|
+
description: "CRUD direto de artigos do blog Sapiens (v1.2). Sub-actions: get (by slug, retorna doc completo pra edit local), update (patch em title/excerpt/tldr/content/tags/etc + VISUAIS: thumbnailUrl capa webp, ogImageUrl JPEG do preview social, bodyImages array das ilustrações inline, conceptMap mapa visual — pra recapear um artigo num novo estilo; NÃO toca status/column/format), publish (status='published', set publishedAt), unpublish (volta pra draft), delete (irreversível). Pra criar artigo novo use sapiens_quote_pop (quote ou pop) ou sapiens_pipeline action=create_draft_article_and_source (cru, vira source).",
|
|
68
68
|
schema: articleSchema,
|
|
69
69
|
handler: article,
|
|
70
70
|
},
|
|
@@ -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.26.
|
|
223
|
+
const server = new Server({ name: "mcp-sapiens", version: "1.26.1" }, { 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.26.
|
|
256
|
+
console.error("mcp-sapiens v1.26.1 rodando via stdio (27 tools)");
|
package/dist/tools/article.js
CHANGED
|
@@ -39,6 +39,34 @@ export const articleSchema = z.object({
|
|
|
39
39
|
content: z.string().optional(),
|
|
40
40
|
tags: z.array(z.string()).optional(),
|
|
41
41
|
thumbnailUrl: z.string().optional(),
|
|
42
|
+
ogImageUrl: z
|
|
43
|
+
.string()
|
|
44
|
+
.optional()
|
|
45
|
+
.describe("update: JPEG scraper-safe pro preview social (og:image/twitter:image). Ao recapear um artigo, troque junto com thumbnailUrl (webp), senão o card de compartilhamento do WhatsApp/LinkedIn fica com a imagem antiga."),
|
|
46
|
+
bodyImages: z
|
|
47
|
+
.array(z.object({
|
|
48
|
+
url: z.string(),
|
|
49
|
+
alt: z.string(),
|
|
50
|
+
caption: z.string().optional(),
|
|
51
|
+
prompt: z.string().optional(),
|
|
52
|
+
model: z.string().optional(),
|
|
53
|
+
imageId: z.string().optional(),
|
|
54
|
+
generatedAt: z.number().optional(),
|
|
55
|
+
}))
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("update: SUBSTITUI as ilustrações inline do corpo (tabela article_visuals). Passe o array COMPLETO (não faz merge) — todas as imagens que o artigo deve ter, na ordem. O conjunto antigo vai pro histórico (manual_replace). Use pra recapear artigo num novo estilo. url tem que ser host Sapiens (Bunny/Convex)."),
|
|
58
|
+
conceptMap: z
|
|
59
|
+
.object({
|
|
60
|
+
url: z.string(),
|
|
61
|
+
alt: z.string(),
|
|
62
|
+
caption: z.string().optional(),
|
|
63
|
+
prompt: z.string().optional(),
|
|
64
|
+
model: z.string().optional(),
|
|
65
|
+
imageId: z.string().optional(),
|
|
66
|
+
generatedAt: z.number().optional(),
|
|
67
|
+
})
|
|
68
|
+
.optional()
|
|
69
|
+
.describe("update: substitui o mapa visual (conceptMap) do artigo."),
|
|
42
70
|
seoDescription: z.string().optional(),
|
|
43
71
|
readingTimeMinutes: z.number().optional(),
|
|
44
72
|
category: z.string().optional(),
|
|
@@ -108,6 +136,9 @@ export async function article(args) {
|
|
|
108
136
|
content: args.content,
|
|
109
137
|
tags: args.tags,
|
|
110
138
|
thumbnailUrl: args.thumbnailUrl,
|
|
139
|
+
ogImageUrl: args.ogImageUrl,
|
|
140
|
+
bodyImages: args.bodyImages,
|
|
141
|
+
conceptMap: args.conceptMap,
|
|
111
142
|
seoDescription: args.seoDescription,
|
|
112
143
|
readingTimeMinutes: args.readingTimeMinutes,
|
|
113
144
|
category: args.category,
|
package/dist/tools/image.js
CHANGED
|
@@ -22,6 +22,10 @@ const MODELS = [
|
|
|
22
22
|
"civitai-wai-illustrious", // anime Illustrious · 400
|
|
23
23
|
"civitai-nova-anime-xl", // anime Illustrious · 400
|
|
24
24
|
"civitai-pony-v6", // Pony Diffusion V6 XL, a base nº1 do Civitai · 400
|
|
25
|
+
// fal.ai (Krea-2 Turbo 12B + LoRA de realismo, ~4s). Grupo Degen (+18, checker
|
|
26
|
+
// off). SEM referência: o endpoint krea-2/turbo/lora é text-to-image puro.
|
|
27
|
+
"fal-krea2-realism", // Krea-2 + LoRA realismo (gokaygokay) · 600 · txt2img
|
|
28
|
+
"fal-krea2-realism-v2", // Krea-2 + LoRA realismo alt (RudySen), pro A/B · 600 · txt2img
|
|
25
29
|
];
|
|
26
30
|
export const imageSchema = z.object({
|
|
27
31
|
action: z.enum(["generate", "request_generation", "compose"]),
|
|
@@ -29,7 +33,7 @@ export const imageSchema = z.object({
|
|
|
29
33
|
model: z
|
|
30
34
|
.enum(MODELS)
|
|
31
35
|
.optional()
|
|
32
|
-
.describe("Default 'nano-banana-2' (Flash 3.1 com refs). 'nano-banana-max' (Pro 3) = qualidade alta. 'gpt-image-2-low/high' = Azure. 'grok-2-image'/'grok-2-image-quality' = xAI Grok Imagine (moderação frouxa +18, aceita refs e aspect; quality é mais fiel pra character lock). DEGEN (uncensored, gate +18): 'wavespeed-chroma' (fotorrealista rápido), 'wavespeed-flux2' (Flux.2 Klein), '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 rápido; 'civitai-wai-illustrious'/'civitai-nova-anime-xl' (anime), 'civitai-pony-v6' (Pony V6 XL, base nº1) = Civitai sdcpp rápido."),
|
|
36
|
+
.describe("Default 'nano-banana-2' (Flash 3.1 com refs). 'nano-banana-max' (Pro 3) = qualidade alta. 'gpt-image-2-low/high' = Azure. 'grok-2-image'/'grok-2-image-quality' = xAI Grok Imagine (moderação frouxa +18, aceita refs e aspect; quality é mais fiel pra character lock). DEGEN (uncensored, gate +18): 'wavespeed-chroma' (fotorrealista rápido), 'wavespeed-flux2' (Flux.2 Klein), '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 rápido; 'civitai-wai-illustrious'/'civitai-nova-anime-xl' (anime), 'civitai-pony-v6' (Pony V6 XL, base nº1) = Civitai sdcpp rápido. 'fal-krea2-realism'/'fal-krea2-realism-v2' (Krea-2 Turbo 12B + LoRA de realismo, fal.ai, ~4s, fotorrealismo forte) = SÓ txt2img (não aceita referência)."),
|
|
33
37
|
aspectRatio: z
|
|
34
38
|
.enum(["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"])
|
|
35
39
|
.optional()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.26.
|
|
3
|
+
"version": "1.26.1",
|
|
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": {
|