zuckpay-mcp
OfficialClick on "Deploy 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., "@zuckpay-mcpCriar cobrança PIX de R$ 50 para Maria."
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.
Servidor MCP oficial da ZuckPay — crie cobranças PIX, SPEI (México) e PayPal, acompanhe vendas no cartão (Stripe e cartão nacional), consulte transações e saldo, e gerencie sua conta (produtos, cursos, assinaturas, infrações, indique&ganhe e mais) direto do seu assistente de IA (Claude Code, Claude Desktop, Cursor e qualquer cliente MCP).
Node puro — funciona com
npx/node, sem Bun nem build extra.Seguro por padrão — credenciais só via variáveis de ambiente, máscara de segredos em toda saída, saque desabilitado por padrão, dados de cartão jamais trafegam pela IA.
2 dependências de runtime —
@modelcontextprotocol/sdkezod.
Tools
Pagamentos
Tool | O que faz |
| Cria cobrança PIX (copia-e-cola + QR Code + checkout hospedado). Suporta idempotência, split, webhook e UTMs |
| Consulta status por |
| Cria cobrança SPEI em MXN e retorna a CLABE de 18 dígitos (México) |
| Cria ordem PayPal em 25 moedas e retorna o link de aprovação |
| Captura a ordem depois que o pagador aprova |
| Mostra os gateways de cartão da conta — Stripe (internacional) e cartão nacional (BRL) — com as chaves públicas |
| Lista as transações da conta com filtros (status, tipo, método, período) e paginação por cursor |
| Saldos da conta (disponível, bloqueado em liberação, total) e limites de saque |
| ⚠️ Saque PIX — só existe com |
Sua conta (somente leitura)
Tudo escopado à conta autenticada — uma chave de seller nunca enxerga dado de outro seller, e dados de comprador (nome, e-mail, CPF, telefone) chegam sempre mascarados (jo***@gmail.com, 123.***.***-**).
Tool | O que faz |
| Resumo das vendas de hoje: total pago, quantidade, ticket médio, breakdown por método e pendentes |
| Lista seus produtos (nome, preço, status, moeda, métodos de pagamento habilitados) |
| Detalha um produto pelo |
| Lista seus cursos (área de membros): módulos, aulas e nº de alunos matriculados |
| Assinaturas da conta: produto, status (ativa/cancelada/inativa/pendente), valor, periodicidade |
| Chargebacks e pedidos de reembolso (Infrações e MED), com status e prazos |
| Seu Indique & Ganhe: total de indicados, comissões pendentes/liberadas e histórico |
| Sua loja (vitrine): nome, slug, template, status de publicação e domínio |
| Rotas de adquirente disponíveis pra sua conta, com taxa de conversão — as mesmas do painel |
| Seus links de pagamento (valor, método, views, status) |
| Metadados das suas chaves de API (nome, domínio, criação) — nunca o client_secret |
| Webhooks configurados na conta (URL, eventos, produtos, status) |
Criar/editar/apagar qualquer coisa por aqui não existe ainda — escrita é a próxima fase, sempre atrás de confirmação explícita. Ações sensíveis (revelar/rotacionar chave, excluir produto, publicar loja) ficam só no painel, por design.
Extras: resource zuckpay://docs/api (referência da API + validação do webhook assinado) e prompt criar-cobranca-pix.
Related MCP server: @formacv/mcp
Instalação
Gere suas credenciais no painel ZuckPay em Desenvolvedores → Credenciais API.
Claude Code
claude mcp add zuckpay \
-e ZUCKPAY_CLIENT_ID=seu_client_id \
-e ZUCKPAY_CLIENT_SECRET=seu_client_secret \
-- npx -y zuckpay-mcpClaude Desktop / Cursor
claude_desktop_config.json (ou .cursor/mcp.json):
{
"mcpServers": {
"zuckpay": {
"command": "npx",
"args": ["-y", "zuckpay-mcp"],
"env": {
"ZUCKPAY_CLIENT_ID": "seu_client_id",
"ZUCKPAY_CLIENT_SECRET": "seu_client_secret"
}
}
}
}Variáveis de ambiente
Variável | Obrigatória | Descrição |
| ✅ | Client ID da integração |
| ✅ | Client Secret da integração |
| — |
|
| — | Override da base da API (somente |
Exemplos de uso
"Cria uma cobrança PIX de R$ 97,00 pro cliente João Silva, CPF 123.456.789-01, joao@email.com, (11) 99999-8888, com ID externo PEDIDO-4512"
"Qual o status da transação do pedido PEDIDO-4512?"
"Cria uma ordem PayPal de US$ 50 pro comprador Mike Ross, mike@email.com"
"Lista minhas vendas de cartão pagas neste mês e diz quanto ainda está em liberação"
"Quanto eu vendi hoje? Divide por método de pagamento"
"Tenho algum chargeback ou pedido de reembolso aberto?"
"Como tá meu Indique & Ganhe? Quanto tenho de comissão pra liberar?"
"Lista minhas assinaturas ativas e me diz qual produto tem mais assinantes"
Cartão: como o MCP se encaixa
O MCP acompanha as vendas de cartão, mas não cria cobrança de cartão — e isso é proposital (veja Segurança):
O que você quer fazer | Como fazer |
Cobrar no cartão | Checkout hospedado ou link de pagamento da ZuckPay — o dado do cartão nunca passa pela IA |
Ver os gateways de cartão da conta |
|
Conferir se uma venda de cartão foi paga |
|
Listar as vendas de cartão de um período |
|
Ver quanto de cartão ainda está em liberação |
|
Por que o MCP não cobra cartão? PCI DSS: número e CVV jamais devem trafegar pelo contexto de um LLM. A tokenização acontece no navegador do pagador, dentro do checkout hospedado — e o MCP entra depois, para consultar status, listar vendas e conferir o saldo.
Segurança
Credenciais: aceitas SOMENTE via variáveis de ambiente — nunca por argumento de linha de comando (vazaria na lista de processos) nem por parâmetro de tool. A autenticação vai apenas no header
Authorization: Basic, jamais no corpo JSON.Máscara de segredos: toda string que sai do processo (resultado de tool, erro, log em stderr) passa por um redactor que mascara o client_id, o client_secret e a forma base64 de ambos.
Saque é opt-in duplo: a tool
createPixWithdrawnem sequer é registrada semZUCKPAY_ENABLE_WITHDRAW=true; com ela, o schema ainda exigeconfirm: truee instrui o modelo a confirmar valor, chave e tipo com o usuário humano antes de chamar. Limites: R$ 50,00 a R$ 20.000,00 por saque, e o gateway valida o saldo disponível do vendedor antes de executar.Cartão: a cobrança direta de cartão não existe neste MCP por design — PAN/CVV nunca devem passar pelo contexto de um LLM (PCI DSS). Só as chaves públicas são expostas; a cobrança acontece no checkout hospedado.
Sem retry em dinheiro: requisições POST nunca são repetidas automaticamente; somente
GET /pix/statusretenta uma única vez, e apenas em falha de rede.PII do comprador em barreira dupla: o servidor já devolve nome/e-mail/CPF/telefone mascarados; ainda assim, as tools de conta varrem cada resposta atrás de PII crua (
assertNoRawPii) e falham em vez de vazar se o backend algum dia regredir. Campos comorefund_tokensão bloqueados por nome.Validação estrita: toda entrada passa por schemas zod
.strict()(campos desconhecidos são rejeitados) antes de qualquer chamada; o corpo enviado à API é montado campo a campo (allowlist).Encontrou uma vulnerabilidade? Veja SECURITY.md.
Webhook assinado (recomendado)
Ao informar urlnoty, seu endpoint recebe o postback de confirmação. Contas com webhook secret recebem os headers:
X-ZuckPay-Timestamp: <unix_ts>
X-ZuckPay-Signature: t=<unix_ts>,v1=<hex>onde v1 = HMAC-SHA256("<unix_ts>.<body_cru>", secret). Valide sempre sobre o body cru e rejeite timestamps velhos (ex.: > 5 min). Exemplo completo em Node.js e PHP no resource zuckpay://docs/api.
Modo HTTP hospedado (multi-tenant)
Além do stdio, o servidor tem um modo Streamable HTTP stateless pensado para
hospedagem (ex.: mcp.zuckpay.com.br): cada seller conecta o próprio cliente MCP
na URL e autentica com a própria credencial, sem instalar nada.
npm run build && npm run start:http # POST /mcp + GET /healthz na porta $PORT (padrão 8080)Autenticação por request:
Authorization: Basic base64(client_id:client_secret). Nada de credencial em URL/query, e nenhuma credencial é logada.Stateless de verdade: nenhum estado entre requests → escala horizontal sem sticky session.
Endurecimento embutido: rate limit por IP (429 +
Retry-After), body máx. 256 KB, timeouts anti-slowloris,X-Content-Type-Options: nosniff, sem CORS.A tool de saque não é exposta no modo hospedado, a menos que o operador do serviço suba com
ZUCKPAY_ENABLE_WITHDRAW=true(não recomendado em multi-tenant).
Cliente (ex.: Claude Code):
claude mcp add --transport http zuckpay https://mcp.zuckpay.com.br/mcp \
--header "Authorization: Basic $(printf 'seu_client_id:seu_client_secret' | base64)"Variáveis do serviço HTTP: PORT (padrão 8080), MCP_TRUST_PROXY=true (atrás de
proxy/Railway), MCP_RATE_LIMIT_PER_MINUTE (padrão 60).
Deploy com Docker: docker build -t zuckpay-mcp . && docker run -p 8080:8080 zuckpay-mcp
— imagem alpine com usuário non-root e HEALTHCHECK. Para Railway, o railway.toml
já aponta o Dockerfile e o healthcheck.
Desenvolvimento
npm ci
npm run lint && npm run typecheck && npm test
npm run build # gera dist/index.js (stdio) e dist/http.js (HTTP)
npm run inspector # debug com o MCP InspectorLicença
Available Tools
20 toolscapturePayPalOrderCapturar ordem PayPalAIdempotent
Captura (efetiva) uma ordem PayPal já aprovada pelo pagador. Chame somente depois que o pagador abriu o link de aprovação e concluiu o fluxo no PayPal. A captura é idempotente do lado do PayPal.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | ID da ordem PayPal retornado por createPayPalOrder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds that capture is effective after approval and that it is idempotent on PayPal's side, reinforcing these traits. No contradictions, and adds context about required flow.
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 concise sentences, no wasted words. The first states purpose, the second gives usage condition and idempotency. Efficiently front-loaded.
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?
Given the tool's simplicity (one parameter, no output schema), the description covers when to call and idempotency. Could mention the effect on the order or expected return, but it is reasonably complete for this low complexity.
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%, with orderId described as the ID returned by createPayPalOrder. The description does not add additional meaning to the parameter beyond what the schema provides, so baseline score of 3 is appropriate.
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 action (capture) and resource (PayPal order already approved). It distinguishes from the sibling createPayPalOrder by specifying it is for already approved orders, providing specific verb+resource+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?
Explicitly states to call only after the payer has opened the approval link and completed the PayPal flow, providing clear context. Also notes idempotency, implying safe retries. Lacks explicit when-not or alternatives, but the condition is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createPayPalOrderCriar ordem PayPalA
Cria uma ordem de pagamento no PayPal via ZuckPay e retorna o link de aprovação para o pagador. Suporta 25 moedas (padrão: BRL). Após o pagador aprovar, use capturePayPalOrder para efetivar.
| Name | Required | Description | Default |
|---|---|---|---|
| nome | Yes | Nome completo do pagador | |
| Yes | E-mail do pagador | ||
| valor | Yes | Valor da ordem na moeda escolhida (padrão: BRL) | |
| urlnoty | No | URL https do seu sistema que receberá o postback quando a ordem for capturada | |
| currency | No | Moeda ISO 4217 (padrão: BRL) | |
| descricao | No | Descrição/motivo do pagamento (até 127 caracteres) | |
| cancel_url | No | URL https para onde o pagador volta se cancelar | |
| return_url | No | URL https para onde o pagador volta após aprovar | |
| external_id_client | No | ID externo do seu sistema (ex: ORDER-123). Garante idempotência: repetir o mesmo ID retorna a mesma cobrança pendente. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not destructive. Description adds that it returns an approval link and that a subsequent capture step is required. It does not elaborate on side effects, persistence, or rate limits, adding only marginal value beyond 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?
Three concise sentences front-load the main purpose and return value, followed by currency support and next step. No wasted words.
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?
Given 9 parameters and no output schema, the description covers the essential two-step flow and mentions the approval link. It could benefit from describing the return structure more explicitly, but overall it is sufficiently complete for a simple payment creation tool.
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 covers 100% of parameters with descriptions. The overall description adds context about currency default (BRL) and the purpose of the return link, but does not explain parameter semantics beyond what the schema already provides.
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?
Description clearly states it creates a PayPal order and returns an approval link, specifying integration via ZuckPay. It distinguishes from the sibling capturePayPalOrder by indicating the next step after approval.
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 mentions when to use (to create an order) and directs to capturePayPalOrder after approval. Does not explicitly state when not to use, but the presence of sibling tools for other payment methods (e.g., createPixCharge, createSpeiCashin) implies context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createPixChargeCriar cobrança PIXB
Cria uma cobrança PIX na ZuckPay e retorna o código copia-e-cola, a imagem do QR Code e o link de checkout hospedado. Suporta idempotência (external_id_client), split de receita entre contas, webhook de confirmação (urlnoty) e parâmetros de rastreio (UTMs). Valor em reais com até 2 casas decimais.
| Name | Required | Description | Default |
|---|---|---|---|
| cpf | Yes | CPF do pagador (11 dígitos; pontuação é removida automaticamente) | |
| fbc | No | Parâmetro de rastreio fbc (opcional) | |
| fbp | No | Parâmetro de rastreio fbp (opcional) | |
| sck | No | Parâmetro de rastreio sck (opcional) | |
| src | No | Parâmetro de rastreio src (opcional) | |
| nome | Yes | Nome completo do pagador | |
| Yes | E-mail do pagador | ||
| gclid | No | Parâmetro de rastreio gclid (opcional) | |
| kclid | No | Parâmetro de rastreio kclid (opcional) | |
| valor | Yes | Valor da cobrança em reais (ex: 49.90). Atenção: algumas adquirentes exigem mínimo de R$ 10,00 — a API recusa se for o caso. | |
| fbclid | No | Parâmetro de rastreio fbclid (opcional) | |
| gbraid | No | Parâmetro de rastreio gbraid (opcional) | |
| splits | No | Divisão de receita entre contas ZuckPay (2 a 10 recebedores; soma dos percentuais = 100). Calculada sobre o valor líquido. | |
| ttclid | No | Parâmetro de rastreio ttclid (opcional) | |
| wbraid | No | Parâmetro de rastreio wbraid (opcional) | |
| urlnoty | No | URL https do seu sistema que receberá o postback (webhook) quando o pagamento for confirmado | |
| click_id | No | Parâmetro de rastreio click_id (opcional) | |
| telefone | Yes | Telefone do pagador com DDD (ex: 11999998888) | |
| utm_term | No | Parâmetro de rastreio utm_term (opcional) | |
| descricao | No | Descrição/motivo do pagamento (até 255 caracteres) | |
| product_id | No | ID de um produto cadastrado na conta ZuckPay (vincula a transação ao produto) | |
| utm_medium | No | Parâmetro de rastreio utm_medium (opcional) | |
| utm_source | No | Parâmetro de rastreio utm_source (opcional) | |
| utm_content | No | Parâmetro de rastreio utm_content (opcional) | |
| utm_campaign | No | Parâmetro de rastreio utm_campaign (opcional) | |
| external_id_client | No | ID externo do seu sistema (ex: ORDER-123). Garante idempotência: repetir o mesmo ID retorna a mesma cobrança pendente. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description claims idempotency support via external_id_client, but annotation 'idempotentHint' is false, creating a contradiction. No other contradictions found, but this is a serious inconsistency.
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?
Description is a single, front-loaded sentence that efficiently conveys the tool's purpose and key features. It is concise but could be broken into multiple sentences for better readability.
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?
Given no output schema, the description partially explains what it returns (code, QR, link) but does not detail the response structure or mention required fields. It covers major features but leaves gaps for a complex tool with 26 parameters.
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%, so the schema already documents all parameters. The description adds minimal extra context (e.g., 'Valor em reais com até 2 casas decimais') but does not significantly enhance understanding beyond the schema.
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 a specific verb (cria) and resource (cobrança PIX), and specifies the outputs (copia-e-cola, QR code, link de checkout). It clearly distinguishes this as the PIX creation tool among siblings like createSpeiCashin and createPayPalOrder.
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 PIX payments but does not explicitly say when to use this tool versus alternatives. It lacks guidance on when not to use it or which sibling tools to prefer in specific contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSpeiCashinCriar cobrança SPEI (México)A
Cria uma cobrança SPEI em pesos mexicanos (MXN) e retorna a CLABE de 18 dígitos para o pagador transferir de qualquer banco do México. Requer conta ZuckPay com SPEI habilitado. Documento do pagador: RFC ou CURP.
| Name | Required | Description | Default |
|---|---|---|---|
| nome | Yes | Nome completo do pagador mexicano | |
| Yes | E-mail do pagador | ||
| valor | Yes | Valor em pesos mexicanos (MXN), mínimo MX$ 5,00. Atenção: a adquirente XPAG exige mínimo de MX$ 20,00 — a API recusa se for o caso. | |
| documento | Yes | RFC (12–13 caracteres) ou CURP (18 caracteres) do pagador |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and the description confirms it creates a charge and returns a CLABE. It adds the XPAG minimum caveat for the 'valor' parameter, but could further disclose synchronous behavior or post-creation steps.
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?
Three concise sentences front-load the core purpose and output, then quickly cover requirements and document details with no redundant information.
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?
Given the simple parameter structure and no output schema, the description adequately covers creation, output, and requirements. It could mention how to use the returned CLABE, but overall is fairly complete for a straightforward creation tool.
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?
With 100% schema description coverage, the baseline is 3. The description adds minor semantic value by clarifying document types (RFC or CURP) and the XPAG minimum for 'valor', but largely reiterates schema information.
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 action ('Cria uma cobrança SPEI'), the currency (MXN), and the output (18-digit CLABE), distinguishing it from siblings like createPixCharge or createPayPalOrder which target other payment systems.
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 specifies prerequisites ('Requer conta ZuckPay com SPEI habilitado') and acceptable documents (RFC or CURP), but does not explicitly direct when to use this tool versus alternatives, although the sibling list provides implicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getBalanceConsultar saldo da contaARead-only
Consulta os saldos da conta ZuckPay autenticada: disponível para saque, bloqueado (em liberação — PIX libera em D+0; cartão segue o prazo da conta, ex.: D+8) e total, além dos limites e taxa de saque vigentes. Somente leitura, sem parâmetros.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint; the description adds valuable detail about which balances are returned (available, blocked with release timing, total) and that limits/rates are included. This goes beyond annotations to inform the agent of output contents and meaning.
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 sentence, front-loaded with the main action. However, it packs many details (three balance types, two release explanations, limits, rates) which could be slightly overwhelming. Still, it is concise overall and contains no 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?
Given there is no output schema, the description fully explains the return information (available, blocked with release specifics, total, limits, rates). It also confirms read-only and no parameters, leaving no ambiguity for a parameterless tool.
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?
With zero parameters and 100% schema coverage, the description simply confirms 'sem parâmetros'. Per guidelines, baseline for 0 params is 4; the description does not add extra semantic detail beyond stating there are none.
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?
Description explicitly states the tool checks balances of the authenticated ZuckPay account, listing specific components (available, blocked, total) and additional info (limits, rates). The verb 'consulta' and resource 'saldos' are clear. No sibling tool duplicates this purpose.
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?
Description notes the tool is read-only and has no parameters, implying it is used solely for balance inquiry. While it doesn't explicitly contrast with siblings, the lack of similar balance tools makes the usage context clear. A higher score would require explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCardGatewaysListar gateways de cartão (chaves públicas)ARead-only
Lista os gateways de cartão disponíveis na conta ZuckPay (Stripe internacional e/ou cartão nacional BRL) com suas chaves públicas (publishable keys). Somente leitura — a cobrança direta de cartão não é exposta via MCP por segurança (PCI); use o checkout hospedado da ZuckPay.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds value by explaining the security reason for not exposing card charging and specifying that it returns public keys (publishable keys). No contradiction with 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 a single, well-structured sentence in Portuguese. It includes the core purpose, the type of data returned, and an important security note. Every word serves a purpose, with no 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?
Given no output schema, the description adequately explains what the tool returns (list of gateways with publishable keys). It also provides context about the account and security. For a simple listing tool with no parameters, the description is complete.
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?
There are zero parameters, so the description does not need to explain them. The baseline for 0 parameters is 4, and the description appropriately mentions the account context (ZuckPay) implicitly. No additional parameter info is 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 clearly states the tool lists available card gateways with their publishable keys, specifying the scope (ZuckPay account) and types (Stripe international and/or national BRL card). It distinguishes itself from siblings by being a read-only listing tool, not involved in charging or creating payments.
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 states the tool is read-only and advises against using it for direct card charging due to PCI security; it directs users to use ZuckPay's hosted checkout instead. This provides clear when-to-use and when-not-to-use guidance, with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProductDetalhar produtoARead-only
Retorna os detalhes de um produto específico da conta ZuckPay autenticada, pelo ID. Somente leitura.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID numérico do produto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds context about the authenticated account scope and explicitly states 'Somente leitura' (read-only), which is consistent. No contradictions. It could mention behavior when ID is not found, but given annotations, this is adequate.
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?
A single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose and constraints.
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 tool with one parameter and no output schema, the description is complete. It covers what the tool does, input, and read-only nature. The annotations complement well.
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% with a good description of the 'id' parameter. The description adds no additional parameter meaning beyond 'pelo ID', 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 action ('Retorna os detalhes'), specific resource ('produto específico da conta ZuckPay autenticada'), and method (by ID). It distinguishes from siblings like listProducts which lists all products.
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 fetching a single product's details by ID. It does not explicitly mention when not to use or alternatives, but the sibling listProducts provides a clear alternative for listing. Could be improved by stating that this tool is for individual item retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getReferralStatsIndique e GanheARead-only
Estatísticas do programa Indique&Ganhe do seller autenticado: total de indicados, comissões (total/pendente/liberada), lista de indicados e histórico de comissões. Somente leitura, escopado estritamente ao próprio seller — nunca retorna ranking ou dado de outros sellers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds critical behavioral context: strict scoping to the authenticated seller, exclusion of ranking and other sellers' data, and a detailed list of returned fields (total referrals, commissions by status, list, history). This goes beyond what annotations provide and helps the agent understand the exact nature of the tool.
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 sentence that efficiently conveys the tool's purpose, output fields, and constraints. It is front-loaded with key information and contains no redundant or unnecessary words.
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 has no inputs and no output schema, so the description must compensate. It fully covers the output by listing the major categories (total, commissions, list of referrers, history) and the scope constraints. This is sufficient for an agent to understand what the tool returns without needing an output schema.
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?
There are no parameters, so schema coverage is 100%. The description does not need to add parameter information; the baseline score of 4 applies. The description does not mention any inputs, which is appropriate.
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 returns referral program statistics for the authenticated seller, listing specific data (totals, commissions breakdown, list of referrers, history). It also distinguishes itself from sibling tools by explicitly stating it is read-only and scoped only to the own seller, never returning ranking or other sellers' data.
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 clear context: it is read-only and restricted to the own seller. It explicitly states what it does NOT do (never returns ranking or other sellers' data), which helps an agent avoid misuse. However, it does not name specific alternative tools for cases where other sellers' data or rankings are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSalesTodayVendas de hojeARead-only
Resumo agregado das vendas do dia (horário de Brasília) da conta ZuckPay autenticada: total pago, contagem, ticket médio, breakdown por método de pagamento e total pendente. Somente leitura, não retorna transações individuais nem dado de comprador.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. The description adds specificity: read-only nature, timezone (Brasília), and that it returns only aggregate data. This adds value beyond annotations without contradiction.
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, includes key details, and avoids redundancy. Every word contributes clarity.
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?
Given no parameters and no output schema, the description covers the return fields explicitly (total pago, contagem, ticket médio, breakdown, total pendente). It lacks explanation of the exact structure or format, but the listed fields provide sufficient context for an agent.
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?
No parameters exist, and schema coverage is 100%. The description explains what the tool returns, fulfilling the need for parameter semantics since there are none to describe.
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 it provides an aggregate summary of daily sales (Brasília time) for the authenticated ZuckPay account, specifying included metrics (total paid, count, average ticket, payment method breakdown, pending total) and explicitly excluding individual transactions and buyer data. This distinguishes it from sibling tools like listTransactions.
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 a quick daily sales overview and explicitly states what it does not return (individual transactions or buyer data), guiding the agent to alternatives. However, it does not explicitly name those alternatives, leaving some inference needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStoreDetalhar lojaARead-only
Retorna os dados da loja (storefront) da conta ZuckPay autenticada: nome, status, slug, domínio, descrição e redes sociais. Somente leitura — não retorna código customizado nem config de pagamento.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint. The description adds that it is read-only ('Somente leitura') and explicitly lists what is not returned (código customizado, config de pagamento), providing behavioral transparency beyond 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?
Two sentences with no wasted words. The first sentence states the purpose and returned fields; the second adds exclusions. All information is front-loaded and concise.
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 has no output schema, so the description bears the burden. It lists return fields and scope (authenticated account). While it omits error conditions, for a simple read-only tool this is fairly complete.
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?
There are no parameters (schema coverage 100% baseline 4). The description adds meaning by listing the returned data fields, which the input schema cannot convey.
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 the verb 'retorna' and resource 'dados da loja' along with a list of specific fields (nome, status, slug, domínio, descrição, redes sociais). It clearly distinguishes from siblings by stating it returns store data, while no other sibling tool does the same.
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 states the tool is for the authenticated ZuckPay account, implying contextual use. However, it does not explicitly state when to use it vs alternatives, but there are no close sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTransactionStatusConsultar status de transaçãoARead-only
Consulta o status de uma transação ZuckPay (PIX, SPEI ou cartão) pelo transactionId OU pelo external_id_client do seu sistema (exatamente um dos dois). Status possíveis: PENDING, PAID, FAILED, EXPIRADO.
| Name | Required | Description | Default |
|---|---|---|---|
| transactionId | No | ID da transação retornado pela ZuckPay na criação da cobrança | |
| externalIdClient | No | ID externo do SEU sistema informado na criação (external_id_client) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the tool is clearly non-destructive. Description adds value by listing possible statuses and the ID constraint, complementing 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?
Two concise sentences; first covers purpose and constraints, second enumerates statuses. No unnecessary words.
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?
No output schema, but description lists possible statuses, giving the agent an expectation. For a simple status check, this is adequate. Could mention other potential return fields, but not critical.
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 covers 100% of parameters with descriptions. The description adds the crucial constraint that exactly one parameter must be provided, which is not in the schema constraints.
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?
Description clearly states the verb ('Consulta'), resource ('status de transação'), and identifiers (transactionId or externalIdClient). It distinguishes from siblings like listTransactions by being a specific lookup tool.
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 states the constraint that exactly one of the two IDs must be provided. However, no explicit mention of when not to use or alternative tools for listing all transactions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAcquirerRoutesListar rotas de adquirenteARead-only
Lista as rotas de adquirente disponíveis para a conta ZuckPay autenticada (PSP, domínio de checkout, taxa de conversão recente), já filtradas por bloqueios/modo configurados na conta. Somente leitura — nunca retorna credenciais de adquirente.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds value beyond annotations by stating it never returns credentials, is filtered by account config, and lists specific fields. Annotations already indicate readOnly and openWorld, but description enriches with behavioral details.
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, no wasted words, front-loaded with verb and resource. Every sentence provides essential information.
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?
Despite no output schema, description fully explains what the tool returns (PSP, domain, rate) and what it doesn't (credentials). For a simple list tool, this is complete.
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?
No parameters exist, so schema coverage is 100%. Description does not need to add parameter info; baseline 4 is appropriate.
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?
Description clearly states it lists acquirer routes for the authenticated account, specifying data types (PSP, checkout domain, conversion rate) and filtering. It distinguishes from siblings like getCardGateways by focusing on route availability and read-only nature.
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?
Description provides context for when to use (to see available routes for the account) but does not explicitly mention when not to use or alternative tools. However, the filtering and read-only hints give clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCoursesListar cursosARead-only
Lista os cursos (Meus Cursos / área de membros) dos quais o seller é dono na conta ZuckPay autenticada, com contagem de módulos/aulas/alunos. Somente leitura — não retorna dados de alunos matriculados.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Quantidade de cursos por página (1 a 100; padrão 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, openWorldHint), the description adds that the tool is read-only and does not return enrolled student data. It provides context about the data it does return (counts). This is useful behavioral information not captured 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 consists of two concise sentences. The first sentence front-loads the main purpose and scope, and the second adds a critical limitation. No redundant or excessive text.
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?
Given the simplicity of the tool (one optional parameter, no output schema), the description covers the essential aspects: what is listed, ownership, counts, and exclusions. It could mention pagination or sorting behavior, but the open world hint suggests more data exists, which is not clarified. Still, it is largely complete.
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 fully describes the limit parameter (range, default). The description does not add new meaning to parameters, but the schema coverage is 100%, so the baseline of 3 is appropriate.
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 it lists courses owned by the seller in the authenticated account, includes counts of modules/lessons/students, and explicitly excludes student enrollment data. It distinguishes itself from sibling tools like listProducts or listSubscriptions by specifying the resource type and 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 implies usage for listing courses but does not provide explicit guidance on when to use this tool versus alternatives. No when-not-to-use or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listInfractionsListar infrações e MEDARead-only
Lista chargebacks e pedidos de reembolso (Infrações e MED) da conta ZuckPay autenticada. Somente leitura. Documento e e-mail do comprador vêm sempre mascarados; nunca retorna o token de reembolso nem campos internos da triagem por IA.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filtra por tipo: chargebacks, refund_requests, ou all (ambos, padrão) | |
| limit | No | Quantidade por lista (1 a 50; padrão 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description confirms this with 'Somente leitura'. It adds specific behavioral details: buyer document and email are always masked, and the token and internal AI triage fields are never returned. This goes beyond the 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 extremely concise, consisting of two short sentences that convey all essential information without any fluff. It is front-loaded with the main action.
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 has no output schema, and the description does not detail the return structure or fields. It mentions data that is masked or withheld but lacks full completeness regarding what is returned. For a listing tool, this is a moderate gap.
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%, so baseline is 3. The description does not add any additional parameter semantics beyond what is already in the input schema; it merely restates the parameter names.
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 tool name and description clearly indicate it lists chargebacks and refund requests (infractions and MED) from the authenticated ZuckPay account. This distinguishes it from sibling tools like 'listTransactions' and 'getSalesToday', which handle different data.
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 states the tool is read-only and lists specific infractions, but does not explicitly compare it to alternatives or provide when-to-use guidance. Usage is implied by the tool's specific function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listIntegrationKeysListar chaves de integraçãoARead-only
Lista os metadados das chaves de integração (API keys) da conta ZuckPay autenticada: nome, domínio, client_id e data de criação. Somente leitura — NUNCA retorna o client_secret. Não existe tool para revelar, criar, rotacionar ou apagar chaves via MCP.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, openWorldHint), the description adds that it never returns client_secret and lists the specific fields returned, enriching behavioral understanding.
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, well-structured sentence that conveys all critical information efficiently without 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 zero-parameter, read-only list tool without output schema, the description provides complete context: input (none), output (specified fields), behavior (read-only, no secret), and tool ecosystem (no key management tools).
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?
With no parameters, the description adds meaning by detailing the output fields (nome, domínio, client_id, data de criação), compensating for absence of output schema.
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 it lists metadata of integration keys (name, domain, client_id, creation date) and explicitly distinguishes from any tool that would reveal secrets.
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?
It specifies the tool is read-only, never returns client_secret, and states that no MCP tool exists for revealing, creating, rotating, or deleting keys, providing explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPaymentLinksListar links de pagamentoARead-only
Lista os links de pagamento (Link de Pagamentos) cadastrados na conta ZuckPay autenticada: nome, valor, status, slug e visualizações. Somente leitura — não cria nem edita links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Quantidade de links por página (1 a 100; padrão 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=true, so the description's read-only disclosure adds no new safety info. It does add context about the scope (authenticated account) and listed fields, but this is marginal beyond 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?
Single sentence, front-loaded with the verb 'Lista', includes key details without any unnecessary words. Every part of the description carries meaning.
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?
Given the simple input schema (one parameter), complete annotations, and no output schema, the description covers the essential behavior. Minor gap: does not describe the return format (list of objects) or pagination details, but these are inferred from the action and parameter.
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 only parameter (limit) has 100% schema description coverage, fully explaining its range and default. The tool description does not add any extra meaning beyond the schema, so baseline score of 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?
Description clearly states it lists payment links from the authenticated ZuckPay account, specifying fields (nome, valor, status, slug, visualizações). This is a specific verb+resource scope that distinguishes it from sibling tools like createPixCharge or listTransactions.
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 states 'Somente leitura — não cria nem edita links' (read-only — does not create or edit links), giving clear when-to-use and when-not-to-use guidance. While it does not name alternative tools, the context from sibling names provides implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listProductsListar produtosARead-only
Lista os produtos cadastrados na conta ZuckPay autenticada (nome, preço, status, tipo). Somente leitura — não cria, edita nem exclui produtos.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Quantidade de produtos por página (1 a 100; padrão 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying the exact fields returned (name, price, status, type) and the scope (authenticated ZuckPay account). Annotations already provide readOnlyHint and openWorldHint, but the description offers concrete output context without contradicting any 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 only two sentences, front-loaded with purpose and key details. Every word adds value: first sentence lists the resource and returned fields, second sentence clarifies read-only nature. No wasted content.
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 optional parameter, the description covers purpose, scope, read-only nature, and output fields. However, it does not explicitly explain pagination behavior (e.g., that 'limit' controls page size) or mention that multiple pages may exist. The schema covers the parameter, but a brief note on pagination would improve completeness.
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%, with the 'limit' parameter fully described in the schema (min, max, default). The description does not mention the parameter, but since the schema already provides complete semantics, the description adds no extra parameter meaning. Baseline of 3 is appropriate.
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 lists registered products from the authenticated ZuckPay account, specifying the included fields (name, price, status, type). It distinguishes itself from the sibling 'getProduct' which likely retrieves a single product, though not explicitly. The read-only clarification further differentiates it from write tools.
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 indicates read-only use for listing products, which implies when to use it, but it does not provide explicit guidance on when not to use it or alternatives (e.g., 'getProduct' for single product). Usage context is implied rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSubscriptionsListar assinaturasARead-only
Lista as assinaturas (recorrências) da conta ZuckPay autenticada: produto, status (ativa/cancelada/inativa/pendente), valor, periodicidade e dados do assinante (mascarados). Somente leitura.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Quantidade por página (1 a 50; padrão 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses the read-only nature (matches readOnlyHint annotation) and adds specific behavior: subscriber data is masked. Provides more context than annotations alone.
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?
Single sentence effectively conveys purpose, resource, and returned fields. Could be slightly more structured (e.g., bullet points), but it is concise without being terse.
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 listing tool with one optional parameter and no output schema, the description covers the returned data and read-only nature. Annotations provide open world hint, making it sufficiently complete.
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 only parameter (limit) has 100% schema coverage with a clear description in the schema. The tool description adds no additional parameter information, so baseline score is appropriate.
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?
Description clearly states the tool lists subscriptions (recurrences) with specific fields (product, status, value, periodicity, masked subscriber data) and identifies the account context (autenticada ZuckPay). Differentiates from siblings like listTransactions and listProducts by resource.
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?
Description does not explicitly state when to use or when not to use. It implies read-only usage with 'Somente leitura' but lacks guidance on alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listTransactionsListar transaçõesARead-only
Lista as transações da conta ZuckPay autenticada (vendas e saques), da mais recente para a mais antiga, com filtros por status, tipo, método de pagamento, ID externo e período (datas no horário de Brasília). Paginada por cursor: traga uma página por vez (padrão 20, máx 50) e use pagination.next_cursor para avançar — NÃO tente carregar tudo de uma vez.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filtra por tipo: DEPOSIT (vendas/cobranças) ou WITHDRAW (saques) | |
| limit | No | Quantidade por página (1 a 50; padrão 20) | |
| cursor | No | Cursor opaco retornado em pagination.next_cursor da página anterior | |
| status | No | Filtra por status da transação (ex: PAID, PENDING) | |
| date_to | No | Data final (YYYY-MM-DD, horário de Brasília, inclusive) | |
| date_from | No | Data inicial (YYYY-MM-DD, horário de Brasília, inclusive) | |
| payment_method | No | Filtra por método de pagamento | |
| external_id_client | No | Filtra pelo ID externo do SEU sistema (external_id_client) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds significant behavioral context: ordering (newest first), pagination via cursor with limits, timezone (Brasília), and a strong warning against bulk loading. No contradiction with 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?
Description is relatively concise (one long sentence) and front-loaded with the core purpose. It efficiently packs ordering, filters, pagination, cursor, timezone, and a warning. Slight improvement possible by breaking into shorter sentences or bullet points, but it remains clear and readable.
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?
Given 8 parameters, no required params, 100% schema coverage, no output schema, and 18 sibling tools, the description covers all essential usage aspects: what is listed, ordering, all filter dimensions, pagination mechanics, timezone, and explicit guidance against loading all data at once. Highly complete for an agent to use 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% with detailed descriptions. The tool description restates the filtering capability (status, type, payment method, external ID, period) but does not add new semantic meaning beyond what the schema already provides. Baseline 3 is appropriate.
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?
Clearly states the tool lists transactions (vendas e saques) from the authenticated ZuckPay account, ordered newest to oldest, with multiple filters. Differentiates from sibling tools like getSalesToday or getTransactionStatus by listing all transactions with pagination and extensive filtering.
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 use cursor pagination, load one page at a time, and not attempt to load all at once. Provides clear usage context (filters, timezone). However, does not explicitly state when to prefer this over sibling tools like getSalesToday (specific focus) or getTransactionStatus (single transaction). A short 'when-to-use' would improve differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listWebhooksListar webhooksARead-only
Lista os webhooks configurados na conta ZuckPay autenticada (nome, URL, eventos, status). Somente leitura — criação/exclusão de webhook não está disponível via MCP nesta fase.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. The description adds useful context that webhook creation/deletion is not available via MCP at this phase, enhancing behavioral understanding beyond 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?
Two sentences, front-loaded with purpose, no redundant words. Every sentence adds 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?
Given no parameters and no output schema, the description completely covers purpose, scope, limitations, and read-only nature. No gaps for a simple list tool.
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?
Input schema has zero parameters, so description does not need to add meaning. Baseline score of 4 applies per rules.
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 it lists webhooks configured on the authenticated ZuckPay account, specifying included fields (name, URL, events, status). It differentiates from siblings by noting read-only nature and lack of create/delete capability.
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 states it is read-only and that creation/deletion is not available, telling the agent when not to use it. Provides clear context but does not name specific alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
20 tool updates
v0.3.0- First observed
capturePayPalOrder - First observed
createPayPalOrder - First observed
createPixCharge - First observed
createSpeiCashin - First observed
getBalance - First observed
getCardGateways - First observed
getProduct - First observed
getReferralStats - First observed
getSalesToday - First observed
getStore - First observed
getTransactionStatus - First observed
listAcquirerRoutes - First observed
listCourses - First observed
listInfractions - First observed
listIntegrationKeys - First observed
listPaymentLinks - First observed
listProducts - First observed
listSubscriptions - First observed
listTransactions - First observed
listWebhooks
TDQS
Scored across 20 tools
Each tool targets a distinct resource or action (e.g., sales aggregates vs. individual transactions; different charge creation tools for PIX, SPEI, PayPal; separate list/get for products, courses, subscriptions, etc.). There is no ambiguity or overlap in purpose.
All tool names follow a consistent verb_noun pattern in camelCase (e.g., getSalesToday, createPixCharge, listTransactions). The verb always precedes the noun, with no mixing of conventions.
20 tools cover a broad range of payment platform features. While slightly above the typical optimal range (3-15), the scope justifies the count. No tools are redundant; each serves a clear purpose.
The tool set is heavily read-only: most resources (products, courses, subscriptions, payment links, webhooks, etc.) lack create/update/delete operations. Only charges (PIX, SPEI, PayPal) can be created. This leaves significant gaps for common workflows like creating a product or managing subscriptions.
Maintenance
Related MCP Connectors
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
- LovableOAuthdev.lovable
Official MCP server for Lovable, the AI-powered full-stack app builder.
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
Official MCP server for Certifier to issue, manage, and track certificates and badges.
Related MCP Servers
AlicenseBqualityDmaintenanceOfficial MCP server for Safefy, enabling AI agents to manage PIX payments, withdrawals, customers, and transactions via the Safefy payment API.295 npmMIT- AlicenseAqualityDmaintenanceOfficial MCP server for FormaCV, enabling AI-powered CV formatting, anonymization, tailoring, and ATS push-back from AI agents like Claude Desktop and Cursor.819 npm1MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Brazilian data lookups (Pix codes, CEP, CNPJ) and web rendering tasks (Markdown, screenshots, PDFs) via a paid HTTP API with x402 billing.26 npm1MIT

OrcaRail MCPofficial
AlicenseBqualityAmaintenanceOfficial MCP server for accepting crypto payments through OrcaRail. It enables AI agents to create payment intents, manage subscriptions, handle product catalogs, and get exchange rates via natural language.252 npmMIT