postgrowth-mcp
Allows consulting ClickUp tasks and uploading media from ClickUp tasks to a client's media library for approval, via the PostGrowth API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@postgrowth-mcpCan you list the posts for client 7?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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/mcpO 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.0O 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.jsonWindows:
%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.0Conferir:
claude mcp listVariáveis
Variável | Obrigatória | Padrão | Para quê |
| sim | — | Autenticação nas rotas |
| não |
| Trocar de ambiente. |
| não | — |
|
| não |
| 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 |
| leitura |
|
| leitura |
|
| leitura |
|
| escrita |
|
| escrita |
|
| leitura |
|
| escrita destrutiva |
|
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_clickupantes, 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.
Gere um valor novo (ex.:
openssl rand -hex 32).Troque
POSTGROWTH_MCP_TOKENno projeto do PostGrowth na Vercel e faça redeploy. A partir daí, todo token antigo recebe 401.Distribua o novo por canal privado a quem deve continuar com acesso.
Cada pessoa atualiza o
envda 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çãoOs 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 toolsatualizar_postAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| titulo | No | ||
| legenda | No | ||
| post_id | Yes | UUID do registro, exatamente como devolvido pelas ferramentas de listagem. | |
| roteiro | No | Substitui o roteiro inteiro, na ordem enviada. | |
| data_programada | No | Data no formato YYYY-MM-DD. | |
| horario_programado | No | Horário no formato HH:MM, 24h. |
TDQS
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.
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.
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.
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.
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.
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_postARead-only
Consulta um post específico: título, legenda, roteiro, datas, mídia e status de aprovação. Somente leitura.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | UUID do registro, exatamente como devolvido pelas ferramentas de listagem. |
TDQS
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.
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.
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.
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.
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.
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_clickupARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| clickup_task_id | Yes | ID da tarefa no ClickUp. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | Yes | Formato do post. 'carrossel' exige pelo menos dois slides de roteiro no uso prático. | |
| titulo | Yes | Título interno do post. Obrigatório. | |
| legenda | No | Legenda que vai para a rede social. | |
| roteiro | No | Textos do post, na ordem. Em carrossel, um item por slide. | |
| cliente_id | Yes | UUID do registro, exatamente como devolvido pelas ferramentas de listagem. | |
| data_programada | No | Data no formato YYYY-MM-DD. | |
| horario_programado | No | Horário no formato HH:MM, 24h. |
TDQS
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.
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.
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.
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.
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.
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_clientesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| busca | No | Trecho do nome do cliente. Omita para listar todos. |
TDQS
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.
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.
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.
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.
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.
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_clienteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| cliente_id | Yes | UUID do registro, exatamente como devolvido pelas ferramentas de listagem. |
TDQS
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.
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.
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.
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.
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.
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_clickupADestructive
⚠️ 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cliente_id | Yes | UUID 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_id | Yes | ID da tarefa do ClickUp cujos anexos serão enviados. | |
| confirmar_substituicao | No | Só 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
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP-compatible server that provides tools for integrating selected Postman API requests, allowing LLMs like Claude to interact with APIs through natural language.3
- AlicenseNot gradedqualityCmaintenanceA 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.21MIT
- FlicenseNot gradedqualityDmaintenanceAn 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.
- AlicenseNot gradedqualityDmaintenanceA 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.183MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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