sapiens-mcp 1.91.0 → 1.91.2
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/skills.js +33 -0
- package/dist/tools/distribution.js +5 -2
- package/dist/tools/image.js +12 -1
- package/package.json +64 -64
package/dist/registry.js
CHANGED
|
@@ -267,7 +267,7 @@ O passo a passo travado de cada fluxo mora na tool sapiens_skill, servida por es
|
|
|
267
267
|
- sapiens_skill action=list -> o índice (slug + quando usar cada uma).
|
|
268
268
|
- sapiens_skill action=get name=<slug> -> a skill inteira.
|
|
269
269
|
Slugs: ${skillMenuLine()}
|
|
270
|
-
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), gerar em motor de fora com crédito próprio e trazer a peça pro acervo (pontes), publicar peça nas redes da pessoa (publicar). Perdido no começo: primeiros-passos.
|
|
270
|
+
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), gerar em motor de fora com crédito próprio e trazer a peça pro acervo (pontes), publicar peça nas redes da pessoa (publicar), escrever código que chama a API da conta (sapiens-api). Perdido no começo: primeiros-passos.
|
|
271
271
|
Cliente que lê resources MCP acha o MESMO conteúdo em skill://sapiens/<slug>/SKILL.md.
|
|
272
272
|
|
|
273
273
|
REGRA DE OURO:
|
package/dist/skills.js
CHANGED
|
@@ -917,6 +917,39 @@ O nome no topo, a marca no canto da capa e o @ do fecho saem de \`theme.signatur
|
|
|
917
917
|
- O carrossel vai até 15 slides. A capa IA entra com dois.
|
|
918
918
|
- Baixar é no editor (o arquivo sai do navegador dela). Aqui você entrega a receita pronta, não o arquivo.`,
|
|
919
919
|
},
|
|
920
|
+
{
|
|
921
|
+
name: "sapiens-api",
|
|
922
|
+
title: "API da conta: texto, imagem e vídeo em código",
|
|
923
|
+
description: "A API da pessoa (compatível com OpenAI, saldo em dólar, separado das Sinapses) pra quando ela quer chamar os motores da casa de dentro de um script, app ou agente próprio. Puxe antes de escrever código que chama www.sapiensinteticos.com/api/v1 ou quando ela perguntar de chave, saldo da API ou cobrança de uma chamada.",
|
|
924
|
+
body: `## API ou MCP
|
|
925
|
+
|
|
926
|
+
Este connector opera a conta pela conversa e cobra em Sinapses. A API é outra porta: a pessoa chama os motores de texto, imagem e vídeo de dentro do código dela, no formato da OpenAI, e paga do saldo em DÓLAR da conta. Os dois saldos não se misturam.
|
|
927
|
+
|
|
928
|
+
Use a API quando a pessoa quer automatizar fora da conversa (script, app, agente dela, lote). Pra operar a conta aqui, siga com as tools.
|
|
929
|
+
|
|
930
|
+
## Onde fica
|
|
931
|
+
|
|
932
|
+
Tudo mora em Developers, no fim do menu do site: criar e revogar chave, teto de gasto por dia de cada chave, recarga (cartão ou USDC da carteira dela) e o extrato. Se a seção API não aparece lá, ela ainda não abriu pra conta.
|
|
933
|
+
|
|
934
|
+
A chave aparece UMA vez, na criação. Peça pra ela guardar numa variável de ambiente (\`SAPIENS_API_KEY\`). Nunca peça a chave no chat e nunca escreva a chave em código, commit ou log.
|
|
935
|
+
|
|
936
|
+
## O manual inteiro
|
|
937
|
+
|
|
938
|
+
O manual de uso, com os campos, o vídeo e a tabela de erros, é servido pela própria API, sem chave:
|
|
939
|
+
|
|
940
|
+
\`\`\`
|
|
941
|
+
GET https://www.sapiensinteticos.com/api/v1/skill
|
|
942
|
+
\`\`\`
|
|
943
|
+
|
|
944
|
+
Baixe e leia ANTES de escrever o código. Num agente com pasta de skills, ele entra como \`.claude/skills/sapiens-api/SKILL.md\`. O manual de lá manda sobre este resumo quando os dois divergirem.
|
|
945
|
+
|
|
946
|
+
## O que vale saber já
|
|
947
|
+
|
|
948
|
+
- Base: \`https://www.sapiensinteticos.com/api/v1\`, com \`Authorization: Bearer <chave>\`. No SDK da OpenAI, só troque o \`baseURL\`.
|
|
949
|
+
- Preço: abaixo do oficial de quem fez o modelo. Quando a oferta da hora sai mais cara, a chamada paga um pouco mais, nunca acima do máximo que \`GET /models\` mostra. O valor de cada chamada volta no header \`x-sapiens-charge-usd\`.
|
|
950
|
+
- Vídeo cota de graça antes (\`POST /videos/quote\`), aceita \`webhook_url\` pra avisar quando termina e devolve a \`url\` do mp4 guardado. Falha do motor volta pro saldo sozinha.
|
|
951
|
+
- Uma chamada de teste antes de qualquer lote. Nunca vídeo em laço.`,
|
|
952
|
+
},
|
|
920
953
|
];
|
|
921
954
|
export const SKILLS = Object.fromEntries(SKILL_LIST.map((s) => [s.name, s]));
|
|
922
955
|
/** Monta o SKILL.md completo (frontmatter do formato aberto + corpo). */
|
|
@@ -129,8 +129,11 @@ const CHANNELS = [
|
|
|
129
129
|
"x-buffer",
|
|
130
130
|
"tiktok-buffer",
|
|
131
131
|
"tiktok-buffer-2",
|
|
132
|
-
// O TikTok de linhagem pelo upload-post, no profile
|
|
132
|
+
// O TikTok, o YouTube e o Instagram de linhagem pelo upload-post, no profile
|
|
133
|
+
// da linhagem dona do canal.
|
|
133
134
|
"tiktok-up",
|
|
135
|
+
"youtube-up",
|
|
136
|
+
"instagram-up",
|
|
134
137
|
// X e LinkedIn do Obsolete Human, pelo Buffer próprio do selo.
|
|
135
138
|
"x-buffer-2",
|
|
136
139
|
"x-buffer-3",
|
|
@@ -215,7 +218,7 @@ export const distributionSchema = z.object({
|
|
|
215
218
|
assetKind: z
|
|
216
219
|
.enum(["image", "video", "audio"])
|
|
217
220
|
.optional()
|
|
218
|
-
.describe("queue: o tipo da mídia. Ausente, o servidor infere pela URL. A MÍDIA ESCOLHE O CANAL, e o servidor recusa o par errado com o caminho certo no erro: youtube, youtube-2..5 e bilibili levam só vídeo (foto ou texto no YouTube vai por youtube-community); tiktok sobe só vídeo pro inbox (foto no TikTok vai por tiktok-buffer); tiktok-up (o TikTok de linhagem pelo upload-post)
|
|
221
|
+
.describe("queue: o tipo da mídia. Ausente, o servidor infere pela URL. A MÍDIA ESCOLHE O CANAL, e o servidor recusa o par errado com o caminho certo no erro: youtube, youtube-2..5 e bilibili levam só vídeo (foto ou texto no YouTube vai por youtube-community); tiktok sobe só vídeo pro inbox (foto no TikTok vai por tiktok-buffer); tiktok-up e youtube-up (o TikTok e o YouTube de linhagem pelo upload-post) publicam e levam só vídeo, e instagram-up (o Instagram de linhagem pelo upload-post) leva vídeo (Reel) ou até 10 fotos; pinterest, google-business e youtube-community levam só imagem (vídeo nesses três: manda a capa como imagem, ou muda o canal). Áudio conta como imagem: nenhum canal sobe áudio pela API, a peça empacota pro post manual. O resto leva os três."),
|
|
219
222
|
assetPageAssetId: z
|
|
220
223
|
.string()
|
|
221
224
|
.optional()
|
package/dist/tools/image.js
CHANGED
|
@@ -373,10 +373,21 @@ export async function image(args) {
|
|
|
373
373
|
// Só vai quando veio: servidor de antes do campo recusaria arg desconhecido.
|
|
374
374
|
...(args.maskRegions ? { maskRegions: args.maskRegions } : {}),
|
|
375
375
|
});
|
|
376
|
+
// Backend de antes do campo não devolve motor nem ficha: cai no id pedido e
|
|
377
|
+
// monta a ficha aqui. O nome bonito (modelName) só vem do servidor.
|
|
378
|
+
const model = result?.model ?? genModel;
|
|
379
|
+
const acervoUrl = result?.acervoUrl ??
|
|
380
|
+
(result?.imageId ? `https://sapiensinteticos.com/dashboard/acervo?image=${result.imageId}` : undefined);
|
|
376
381
|
return {
|
|
377
382
|
imageId: result?.imageId,
|
|
378
383
|
url: result?.url,
|
|
379
|
-
|
|
384
|
+
model,
|
|
385
|
+
modelName: result?.modelLabel ?? model,
|
|
386
|
+
// Ficha PRIVADA: é onde a peça mora até alguém publicar. O /imagem/<id>
|
|
387
|
+
// (que este campo era antes, como webUrl) dá 404 até pro dono enquanto a
|
|
388
|
+
// peça não passa por sapiens_gallery action=publish.
|
|
389
|
+
acervoUrl,
|
|
390
|
+
entrega: "Ao mostrar a peça, diga o motor pelo modelName e mande o acervoUrl como link 'no acervo'. A peça é PRIVADA: link público só existe depois de sapiens_gallery action=publish (que devolve o endereço público).",
|
|
380
391
|
mimeType: result?.mimeType,
|
|
381
392
|
// Não incluir base64 no retorno (polui contexto). Quem quiser bytes
|
|
382
393
|
// chama sapiens_gallery action=get com includeBase64=true.
|
package/package.json
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.91.
|
|
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 test/pontes.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
|
-
"@anthropic-ai/mcpb": "^2.1.2",
|
|
59
|
-
"@types/node": "^22.10.0",
|
|
60
|
-
"esbuild": "^0.28.2",
|
|
61
|
-
"tsx": "^4.19.2",
|
|
62
|
-
"typescript": "^5.7.2"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "sapiens-mcp",
|
|
3
|
+
"version": "1.91.2",
|
|
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 test/pontes.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
|
+
"@anthropic-ai/mcpb": "^2.1.2",
|
|
59
|
+
"@types/node": "^22.10.0",
|
|
60
|
+
"esbuild": "^0.28.2",
|
|
61
|
+
"tsx": "^4.19.2",
|
|
62
|
+
"typescript": "^5.7.2"
|
|
63
|
+
}
|
|
64
|
+
}
|