Skip to main content
Glama

postgrowth-mcp

Shim MCP do PostGrowth. Expõe sete ferramentas MCP que viram chamadas HTTP para a API protegida do PostGrowth.

Claude Desktop / Claude Code  ──stdio──►  postgrowth-mcp  ──https──►  https://postgrowth.vercel.app/api/mcp

O que este repositório NÃO tem, por decisão: acesso ao Supabase, SQL, chamada direta ao ROI SENSEI, credencial de qualquer serviço, regra de negócio. Ele só traduz ferramenta MCP em chamada HTTP. Quem valida, grava e aplica as regras é o PostGrowth.


Instalação

Não precisa clonar nada. Requer Node 20+ e git instalados.

npx -y github:praticacontroller-pixel/postgrowth-mcp#v0.1.0

O programa não é interativo: ele fala JSON-RPC por stdio e é iniciado pelo seu cliente MCP. Rodar direto no terminal serve só para conferir que a instalação funciona — sem token, ele sai com erro, e é isso mesmo que deve acontecer.

Use sempre a tag (#v0.1.0). Sem tag, o npm pode servir uma versão em cache e a equipe fica com versões diferentes sem perceber.


Related MCP server: OpenAPI MCP Server

Token

POSTGROWTH_MCP_TOKEN é obrigatório e privado. Sem ele o shim se recusa a iniciar — de propósito: um servidor que sobe e devolve 401 em toda ferramenta é pior que um que não sobe.

  • É segredo, do mesmo nível de uma senha: dá acesso de escrita a posts.

  • Peça a quem administra o PostGrowth e receba por canal privado.

  • Nunca coloque o valor em arquivo versionado, print, issue ou chat de grupo.

  • O token nunca é escrito em log por este programa, e qualquer eco dele vindo do servidor é substituído por [REDIGIDO] antes de chegar ao modelo.

Não existe token neste repositório. Ele é público justamente porque não tem segredo nenhum.


Configuração — Claude Desktop

Edite claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "postgrowth": {
      "command": "npx",
      "args": ["-y", "github:praticacontroller-pixel/postgrowth-mcp#v0.1.0"],
      "env": {
        "POSTGROWTH_MCP_TOKEN": "COLE_AQUI_O_TOKEN_QUE_VOCE_RECEBEU"
      }
    }
  }
}

Reinicie o Claude Desktop. As sete ferramentas aparecem na lista de ferramentas disponíveis.

Esse arquivo passa a conter o token em texto puro. Trate a máquina de acordo: disco cifrado, sem compartilhar a pasta, sem colar o arquivo em lugar nenhum.

Configuração — Claude Code

claude mcp add postgrowth \
  --env POSTGROWTH_MCP_TOKEN=COLE_AQUI_O_TOKEN_QUE_VOCE_RECEBEU \
  -- npx -y github:praticacontroller-pixel/postgrowth-mcp#v0.1.0

Conferir:

claude mcp list

Variáveis

Variável

Obrigatória

Padrão

Para quê

POSTGROWTH_MCP_TOKEN

sim

Autenticação nas rotas /api/mcp. Ausente ⇒ o shim não inicia.

POSTGROWTH_MCP_BASE_URL

não

https://postgrowth.vercel.app/api/mcp

Trocar de ambiente.

POSTGROWTH_MCP_ALLOW_LOCAL

não

true libera host local/interno. Só desenvolvimento.

POSTGROWTH_MCP_TIMEOUT_MS

não

30000

Tempo limite por chamada.

Host local, rede interna (10.x, 192.168.x, 172.16–31.x), endereço de metadados de nuvem e http:// remoto são bloqueados por padrão. O token viaja no header Authorization; apontar o shim para um host qualquer seria a forma mais fácil de entregá-lo a quem não deve recebê-lo.


Ferramentas

Ferramenta

Efeito

Rota

listar_clientes

leitura

GET /clientes

listar_posts_cliente

leitura

GET /clientes/{id}/posts

consultar_post

leitura

GET /posts/{id}

criar_post

escrita

POST /posts

atualizar_post

escrita

PATCH /posts/{id}

consultar_tarefa_clickup

leitura

GET /clickup/tarefa/{taskId}

subir_midia_clickup

escrita destrutiva

POST /midias

Cada ferramenta chama uma rota fixa. Não existe ferramenta genérica de fetch, de URL, de método HTTP nem de SQL — e há teste automatizado que falha se alguém tentar acrescentar uma.

Campos derivados (status, status_texto, aprovado_em, design_enviado_em…) não aparecem em schema nenhum. São calculados pelas regras do PostGrowth e o servidor recusa quem tentar enviá-los.

⚠️ subir_midia_clickup — leia antes de usar

Esta ferramenta faz upload real dos anexos da tarefa do ClickUp para a biblioteca de mídia do ROI SENSEI da subconta do cliente, através do PostGrowth. A arte enviada passa a aparecer na página pública de aprovação que o cliente vê.

  • Com confirmar_substituicao: true, a mídia atual do post é apagada e substituída. Não existe "acrescentar uma imagem": toda escrita substitui o conjunto inteiro.

  • Nada disso é desfeito pelo shim.

  • Use consultar_tarefa_clickup antes, confira o vínculo e o cliente, e só então autorize.

  • Nunca em lote. Uma chamada por vez, cada uma com confirmação humana explícita.

O servidor ainda aplica as próprias travas: recusa vínculo ambíguo, recusa cliente divergente e recusa substituição não confirmada antes de baixar ou enviar qualquer arquivo.


Exemplos de uso

"Lista os clientes do PostGrowth."

"Mostra os posts da Zone Ti que estão aguardando aprovação de texto."

"Cadastra um carrossel para a Zone Ti no dia 01/09 às 18:30, com esse roteiro: …"

"Muda a legenda do post <id> e reprograma para dia 05 às 19h."

"Consulta a tarefa ABC123 do ClickUp e me diz a que post ela está vinculada."

Revogar acesso

O token é único e compartilhado: revogar derruba todo mundo de uma vez, e é assim que se corta o acesso de alguém que saiu da equipe ou de uma máquina perdida.

  1. Gere um valor novo (ex.: openssl rand -hex 32).

  2. Troque POSTGROWTH_MCP_TOKEN no projeto do PostGrowth na Vercel e faça redeploy. A partir daí, todo token antigo recebe 401.

  3. Distribua o novo por canal privado a quem deve continuar com acesso.

  4. Cada pessoa atualiza o env da própria configuração e reinicia o cliente MCP.

Não há revogação individual — é a limitação de um token compartilhado, e está registrada de propósito.


Desenvolvimento

npm install
npm test        # node --test, contra servidor stub local; não toca em produção

Os testes nunca chamam produção: sobem um stub HTTP em 127.0.0.1 e conferem método, rota, corpo e headers. Nenhum post é criado, nenhuma tarefa nasce no ClickUp, nenhuma mídia sobe para o ROI SENSEI.

Estrutura:

bin/postgrowth-mcp.mjs   entrypoint: valida ambiente e conecta o stdio
src/config.mjs           variáveis de ambiente e bloqueio de host
src/http.mjs             único fetch do projeto; Bearer, timeout, redação do token
src/tools.mjs            as sete ferramentas, cada uma amarrada a uma rota
src/server.mjs           servidor MCP (SDK oficial, API de baixo nível)

JS puro (ESM), sem TypeScript e sem build step — npx github: roda o código como está. Dependência de runtime: uma, @modelcontextprotocol/sdk.

Licença

MIT.

Available Tools

7 tools
atualizar_postA
Idempotent

ESCRITA. Altera campos de texto de um post existente: título, legenda, roteiro, data e horário. Só os campos enviados são alterados; os demais ficam intactos. Não toca em mídia. Alterar o roteiro pode reabrir o fluxo de aprovação de texto do cliente — confirme antes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tituloNo
legendaNo
post_idYesUUID do registro, exatamente como devolvido pelas ferramentas de listagem.
roteiroNoSubstitui o roteiro inteiro, na ordem enviada.
data_programadaNoData no formato YYYY-MM-DD.
horario_programadoNoHorário no formato HH:MM, 24h.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant context beyond annotations: partial update behavior ('Só os campos enviados são alterados'), media exclusion, and a side-effect warning about the approval flow. These are not present in the annotations, making the description highly informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, beginning with 'ESCRITA' and a clear verb. Each sentence provides essential information: fields, partial update, media exclusion, and a warning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers core functionality, edge cases (media untouched), and side effects (approval flow). Combined with schema descriptions and annotations, it provides sufficient context for a tool with no output schema. It could mention prerequisites like post_id existence, but the schema already covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description complements the schema by explaining partial update semantics, clarifying that only provided fields are changed. The schema already documents formats and replacement behavior for 'roteiro', so the description adds value without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Altera campos de texto de um post existente' (changes text fields of an existing post), listing specific fields. This distinguishes it from siblings like 'criar_post' and 'consultar_post'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for editing existing posts and explicitly notes 'Não toca em mídia' (doesn't touch media), providing an exclusion. However, it does not explicitly name alternative tools for media or creation, so guidance is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consultar_postA
Read-only

Consulta um post específico: título, legenda, roteiro, datas, mídia e status de aprovação. Somente leitura.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYesUUID do registro, exatamente como devolvido pelas ferramentas de listagem.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares the read-only nature, and the description redundantly states 'Somente leitura'. It adds the list of returned fields, which is useful context, but doesn't disclose other behavioral aspects like error handling or pagination (not applicable here).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose and lists key return fields without any fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter, the description is sufficiently complete: it lists the return fields, and the schema explains where the post_id comes from. No output schema exists, but the field list compensates. Sibling tool context is not explicitly addressed, but the tool's scope is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with post_id fully described as the UUID returned by listing tools. The description adds no additional parameter information, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Consulta' and the target resource 'post específico', and enumerates the fields returned (título, legenda, roteiro, datas, mídia, status de aprovação). This distinguishes it from sibling tools like listar_posts_cliente (listing) and criar_post/atualizar_post (write operations).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'post específico' implies this tool is for fetching a single post by ID, contrasting with listing tools. It provides clear context for when to use it, though it doesn't explicitly name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consultar_tarefa_clickupA
Read-only

Somente leitura. Inspeciona uma tarefa do ClickUp: nome, anexos disponíveis e a qual post do PostGrowth ela está vinculada. Use SEMPRE esta ferramenta antes de subir_midia_clickup, para conferir o vínculo e o cliente sem disparar download nem upload.

ParametersJSON Schema
NameRequiredDescriptionDefault
clickup_task_idYesID da tarefa no ClickUp.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, but the description adds the specific side-effect disclosure of 'sem disparar download nem upload' (without triggering download or upload), which is more precise. No contradiction noted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with 'Somente leitura,' then purpose, then usage guidance. Every sentence earns its place with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with no output schema, the description fully covers purpose, return hints (name, attachments, linked post), and usage context. It is self-sufficient for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, with the schema already defining clickup_task_id as 'ID da tarefa no ClickUp.' The description adds no additional parameter semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a ClickUp task and lists exactly what it inspects: name, available attachments, and linked PostGrowth post. This distinguishes it from siblings like subir_midia_clickup which performs uploads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to ALWAYS use this tool before subir_midia_clickup, with the rationale of checking the link and client without triggering download/upload. This provides direct when-to-use guidance and names the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

criar_postA

ESCRITA. Cria um post de texto no PostGrowth (sem arte). Efeito colateral relevante: o PostGrowth cria automaticamente a tarefa correspondente no ClickUp, e essa tarefa NÃO é apagada mesmo que o post seja excluído depois. Não use para testes. Confirme com a pessoa antes de criar. O status de aprovação é derivado pelas regras do PostGrowth e não pode ser enviado.

ParametersJSON Schema
NameRequiredDescriptionDefault
tipoYesFormato do post. 'carrossel' exige pelo menos dois slides de roteiro no uso prático.
tituloYesTítulo interno do post. Obrigatório.
legendaNoLegenda que vai para a rede social.
roteiroNoTextos do post, na ordem. Em carrossel, um item por slide.
cliente_idYesUUID do registro, exatamente como devolvido pelas ferramentas de listagem.
data_programadaNoData no formato YYYY-MM-DD.
horario_programadoNoHorário no formato HH:MM, 24h.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that PostGrowth automatically creates a corresponding ClickUp task that is not deleted even if the post is deleted, which is a critical side effect. It also states that approval status is derived and cannot be sent, adding behavioral constraints not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Each sentence in the description serves a purpose: category, function, side effect, usage warning, and constraint. It is front-loaded with the core action and remains under 5 sentences, though the 'ESCRITA.' prefix adds marginal value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the key side effect and approval status constraint, which is important context for a create operation. It does not describe the return value, but the absence of an output schema and presence of openWorldHint soften this gap; still, the description could mention what the caller receives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 7 parameters, so the schema already handles parameter semantics. The description adds little beyond reinforcing that the post is text-only; no additional parameter-level details are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'ESCRITA' and states 'Cria um post de texto no PostGrowth (sem arte),' clearly identifying the action and resource. The parenthetical '(sem arte)' distinguishes it from media-upload tools like subir_midia_clickup, and the create/update contrast with atualizar_post is evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly warns 'Não use para testes' and instructs 'Confirme com a pessoa antes de criar,' providing clear when-not usage. It does not name sibling tools as alternatives, but the context of creating a text post versus media is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listar_clientesA
Read-only

Lista os clientes cadastrados no PostGrowth, opcionalmente filtrando por nome. Somente leitura. Use para descobrir o cliente_id antes de qualquer outra ferramenta. Nunca devolve tokens nem credenciais do cliente.

ParametersJSON Schema
NameRequiredDescriptionDefault
buscaNoTrecho do nome do cliente. Omita para listar todos.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, but the description reinforces with "Somente leitura" and adds a valuable security guarantee: "Nunca devolve tokens nem credenciais do cliente." It also reveals that the primary output is the client_id, which is beyond the schema. This is useful behavioral context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, front-loaded with the main action. Every sentence adds value: purpose, read-only confirmation, usage guidance, and security note. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with one optional parameter, the description covers the key aspects: what it lists, read-only nature, usage as first step, and security limitation. It does not describe the return format, but the absence of an output schema is mitigated by the stated purpose of discovering client_id. It is complete enough for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the 'busca' parameter is fully documented). The description only restates the filter behavior ('filtrando por nome') already in the schema. With full coverage, baseline 3 is appropriate; no extra syntax or format details are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact action: "Lista os clientes cadastrados no PostGrowth" (lists registered clients), and adds optional name filtering. It distinguishes from siblings by explicitly positioning it as the prerequisite for other tools: "Use para descobrir o cliente_id antes de qualquer outra ferramenta."

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear when-to-use guidance: "Use para descobrir o cliente_id antes de qualquer outra ferramenta." It tells the agent this is the first step before using any other tool, and the filtering behavior is also specified. Alternatives are not needed because this is the entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listar_posts_clienteA
Read-only

Lista os posts de um cliente, com status de aprovação de texto e de design. Somente leitura. Requer o cliente_id obtido em listar_clientes.

ParametersJSON Schema
NameRequiredDescriptionDefault
cliente_idYesUUID do registro, exatamente como devolvido pelas ferramentas de listagem.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description mirrors this with 'Somente leitura', adding no contradiction. It also adds context about the returned data (approval statuses) and the prerequisite for client_id. However, it does not disclose other behavioral traits such as pagination or filtering, so the added value beyond annotations is limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of two sentences. The first sentence states the primary purpose and key output fields, and the second adds the read-only qualifier and the prerequisite. Every sentence contributes directly to understanding the tool without any redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description is sufficient. It covers the tool's purpose, the type of data returned, and the required input context. It could mention the return structure more explicitly, but the mention of approval statuses provides a good indication of what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for the single parameter 'cliente_id', specifying it as a UUID exactly as returned by listing tools. The description's mention of obtaining it from 'listar_clientes' adds no extra semantic value beyond the schema. The baseline of 3 applies since schema fully covers parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: listing a client's posts with approval statuses for text and design. The verb 'Lista' (lists) is specific, and the resource 'posts de um cliente' is well-defined. It also distinguishes itself from sibling tools like 'criar_post' and 'atualizar_post' by focusing on listing, and from 'consultar_post' by indicating a per-client scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage prerequisite: it requires a client_id obtained from 'listar_clientes'. This implies a sequencing context. However, it does not explicitly mention when not to use this tool versus alternatives like 'consultar_post', so it stops short of a full exclusionary guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subir_midia_clickupA
Destructive

⚠️ AÇÃO REAL E IRREVERSÍVEL — NÃO USE SEM CONFIRMAÇÃO EXPLÍCITA DE UMA PESSOA, NESTA CONVERSA. Baixa os anexos da tarefa do ClickUp e faz UPLOAD REAL na biblioteca de mídia do ROI SENSEI da subconta do cliente, através do PostGrowth. A arte enviada passa a aparecer na página pública de aprovação que o cliente vê. Com confirmar_substituicao=true, a mídia que já existe no post é APAGADA e substituída pelo conjunto novo — não existe 'acrescentar uma imagem', toda escrita substitui o conjunto inteiro. Nada disso pode ser desfeito por este shim. REGRAS DE USO: (1) rode consultar_tarefa_clickup antes e mostre o vínculo à pessoa; (2) peça confirmação explícita, citando o cliente e o post; (3) só passe confirmar_substituicao=true se a pessoa autorizar apagar a arte atual, com essas palavras; (4) NUNCA use em lote nem em laço sobre várias tarefas — uma chamada por vez, cada uma com sua confirmação.

ParametersJSON Schema
NameRequiredDescriptionDefault
cliente_idYesUUID do cliente dono do post. Obrigatório: o servidor confere contra o banco e recusa se divergir da tarefa. É a trava contra subir arte no cliente errado.
clickup_task_idYesID da tarefa do ClickUp cujos anexos serão enviados.
confirmar_substituicaoNoSó envie true se a pessoa autorizou APAGAR a mídia atual do post. Com false (padrão), um post que já tem mídia é recusado sem que nada seja baixado ou enviado.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description discloses that the action is irreversible, permanently deletes existing media when confirmed, cannot be undone, and affects the client-visible public approval page. It also clarifies that all writes replace the entire set, not additively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but every sentence carries essential risk warnings or operational rules. It is well-structured with numbered usage rules, front-loaded with a danger warning, and avoids redundancy. The length is appropriate for a destructive tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a destructive mutation with no output schema, but the description covers prerequisites, behavior, side effects, error conditions (refusal when existing media and confirmar_substituicao=false), and prohibitions. The only omission is the return format, but that is not necessary for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema coverage is 100%, the description adds critical semantic guidance: cliente_id is a safeguard validated against the task, clickup_task_id is the source of attachments, and confirmar_substituicao is explained with its default and the condition for true (authorization to delete). This is more detailed than the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a concrete action: downloads ClickUp task attachments and uploads them to the ROI SENSEI media library via PostGrowth. It clearly distinguishes this from sibling read tools like consultar_tarefa_clickup, which is referenced as a prerequisite. The verb and resource are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage rules: run consultar_tarefa_clickup first, obtain explicit human confirmation, only use confirmar_substituicao=true with explicit authorization, and never batch. It also mentions that posts with existing media are refused unless confirmation is given, marking when to use the parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: client discovery, post listing, post detail, post creation/update, ClickUp task inspection, and media upload. No two tools overlap in their primary function.

Naming Consistency5/5

All tool names follow a consistent Portuguese verb_noun pattern (listar_, consultar_, criar_, atualizar_, subir_) with clear and predictable semantics. The naming convention is uniform across the entire set.

Tool Count5/5

Seven tools is well-scoped for the domain: client lookup, post listing/reading, post creation/update, and media upload. Each tool earns its place without redundancy or bloat.

Completeness4/5

The core lifecycle is covered: list clients, list/read posts, create/update posts, and upload media. The main missing operation is deleting a post, which is a minor gap but does not impede the primary workflow.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A generic MCP server that dynamically converts OpenAPI-defined REST APIs into tools for LLMs like Claude. It supports multiple authentication methods and transport protocols, enabling seamless interaction with any OpenAPI-compliant API.
    21
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that converts Postman API requests into executable tools for LLMs using the Postman Runtime. It supports complex authentication types and enables seamless integration between Postman collections and MCP clients like Claude Desktop.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server with 206+ tools across 16 integrations that gives Claude access to real accounts (LinkedIn, Twitter, Slack, Gmail, WhatsApp, etc.) by extracting auth tokens straight from your browser, no API keys or OAuth needed.
    18
    3
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/praticacontroller-pixel/postgrowth-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server