Skip to main content
Glama
jeffmonteiroo

Shopee Affiliate MCP

Shopee Affiliate MCP — 0.5.0

Servidor MCP em Python para a Open API de Afiliados Shopee Brasil. Expõe 17 ferramentas por stdio ou Streamable HTTP com OAuth e usa consultas GraphQL assinadas com App ID e Secret da conta configurada.

O modo padrão é fixture: produtos sintéticos e nenhuma chamada externa. O modo live exige credenciais e o perfil administrativo oficial. Os contratos foram conferidos no portal brasileiro em 2026-10-01. As novas operações foram testadas com respostas simuladas; a aceitação real depende das permissões da conta.

Uso público e privacidade

Projeto independente, sem vínculo, endosso ou suporte oficial da Shopee. Licença MIT. Cada instalação precisa das próprias credenciais e do acesso à Open API de afiliados; o repositório não fornece uma conta nem um serviço compartilhado. A licença do código não concede direitos sobre dados, marcas ou serviços da Shopee.

O modo live pode devolver links com atribuição, identificadores de pedidos, subIDs e valores de comissão. Esses resultados e os exports devem ser tratados como dados privados da conta. Revise conversas, logs e arquivos antes de compartilhá-los. O histórico opcional fica no SQLite local. Publicar o código não publica esses dados, mas o cliente MCP pode guardar as respostas. Veja orientações de segurança.

Esta versão é inicial: as novas ferramentas passaram em testes simulados e ainda precisam de validação com a API real. HTTP permanece experimental e local; não exponha esse transporte na internet.

Related MCP server: shopee-mcp

Ferramentas

Ferramenta

Função

affiliate_status

Modo, referência local da conta, ferramentas e histórico habilitado; não autentica sozinho

search_offers

Produtos por palavra-chave, loja, categoria, AMS/key seller e ordenação; imagens, desconto, categorias e componentes de comissão

get_offer

Consulta atual do produto por item/shop IDs

search_shop_offers

Ofertas de lojas, tipo de loja, comissão e faixa de orçamento restante

search_campaign_offers

Campanhas Shopee, categoria/coleção, comissão e período

list_product_feeds

Catálogos oficiais FULL/DELTA

get_product_feed

Página de catálogo por datafeed ID e offset; colunas JSON preservadas

generate_affiliate_link

Link oficial com até cinco subIDs ordenados e conta esperada

generate_affiliate_links_batch

Até 20 links; valida tudo antes de enviar e para no primeiro erro

parse_product_url

Extrai IDs de URLs de produto e gera URL canônica; sem acesso à rede

resolve_product_url

Resolve link curto, validando cada destino antes de acessá-lo

get_conversion_report

Conversões e comissões reportadas ainda não validadas

get_validated_report

Relatório validado por validation ID obtido no faturamento

summarize_report

Resumo por subID bruto, campanha, dia UTC, produto ou loja

export_data

CSV/JSON dos registros fornecidos; CSV neutraliza fórmulas

observe_offer

Coleta e grava uma observação de produto no histórico opcional

get_offer_history

Histórico local separado por conta, modo, item e loja

Conectar pelo ChatGPT ou Hermes

Para uso pessoal em Codex, Hermes e Claude Code, siga PRIVATE.md. O formulário exige uma chave privada antes de autorizar as credenciais Shopee.

Para subir no Coolify, siga o guia de configuração.

O transporte oauth-http oferece uma única tela com App ID e App Secret. Não exige cadastro ou senha adicional. Valida o acesso à Shopee antes de autorizar o cliente. As credenciais e sessões ficam criptografadas em SQLite num volume persistente e sobrevivem a reinícios; o servidor entrega tokens próprios ao cliente MCP.

Hospede atrás de HTTPS na VPS e configure MCP_PUBLIC_URL e SHOPEE_VERIFIED_PROFILE. Cada conexão usa sua própria conta. Conexões com as mesmas credenciais compartilham o cliente e os controles locais. Histórico SQLite fica desabilitado neste transporte.

Veja o guia de conexão remota, o Compose e o exemplo Hermes com OAuth. Esta integração é experimental e passou em testes simulados; a conexão real pelo ChatGPT/Hermes e a VPS ainda precisam de aceitação.

Instalação

Python 3.11+:

python3 -m venv .venv
.venv/bin/python -m pip install -c requirements.lock -e .

requirements.lock fixa o conjunto de dependências testado. Nenhum segredo deve estar no código, no Git ou nos argumentos de ferramentas.

Testar localmente

.venv/bin/python local_test.py --fixture --extended
.venv/bin/python local_test.py --extended

O segundo comando pede App ID e App Secret com entrada oculta no Terminal e mantém os valores somente em memória. Verifica initialize/list/status, pesquisa/detalhe de produto, ofertas de lojas, campanhas e lista de feeds. Não gera links nem consulta relatórios financeiros automaticamente. Veja teste local.

Para iniciar um servidor stdio, o cliente MCP deve executar:

.venv/bin/python run.py --mode live

O processo espera mensagens MCP e não mostra um menu. Ele recebe:

Variável

Uso

SHOPEE_APP_ID

App ID da Open API de afiliados

SHOPEE_APP_SECRET

Secret da mesma aplicação

SHOPEE_ACCOUNT_REFERENCE

Rótulo local, ASCII alfanumérico/underscore/hífen, até 64 caracteres

SHOPEE_VERIFIED_PROFILE

Caminho absoluto de examples/profile.official.json

SHOPEE_HISTORY_DB

Opcional: caminho absoluto do SQLite de observações

O servidor não carrega .env automaticamente. O arquivo .env.example contém somente nomes e caminhos de exemplo. Injete segredos pelo ambiente protegido do processo. Confirme no painel que a aplicação está associada à conta correta; o rótulo local não comprova titularidade.

Modelos: cliente MCP, Hermes. Substitua os caminhos pelo diretório de instalação e disponibilize as credenciais ao processo.

Relatórios e precisão

Use timestamps Unix em segundos para purchase_time_start e purchase_time_end. get_validated_report recebe validation_id do painel. max_pages controla a paginação automática (1 por padrão, até 10); limit aceita até 500 registros. complete=false significa que o retorno cobre apenas parte do relatório. next_cursor deve ser usado em até 30 segundos e uma única vez. Consultas de relatórios não recebem retry automático; consultas iniciais sem cursor exigem intervalo maior que 30 segundos por tipo de relatório/processo.

Exemplo de argumentos para summarize_report:

{
  "purchase_time_start": 1790812800,
  "purchase_time_end": 1790899199,
  "group_by": "utm_content",
  "limit": 100,
  "max_pages": 5
}

SubID é preservado como utm_content bruto, sem presumir o separador entre slots. Resumos por produto/loja usam comissão dos itens, sem distribuir arbitrariamente a comissão líquida da conversão. Valores ausentes têm contadores explícitos. Comissão validada não comprova depósito recebido. clickTime representa o clique associado a uma conversão; não fornece todos os cliques da campanha.

IDs são strings e valores monetários são strings decimais. O feed preserva números JSON como strings para não perder precisão. Nos relatórios, ajustes monetários negativos são preservados. BRL é inferido do mercado brasileiro.

Histórico e exportação

Configure SHOPEE_HISTORY_DB para habilitar as ferramentas de histórico. Somente observe_offer grava uma nova observação. Esse histórico começa quando você inicia a coleta; não recupera preços antigos anteriores a ela.

export_data recebe uma lista rows com até 500 objetos e format: "csv" ou "json". Retorna o conteúdo ao cliente sem aceitar caminhos de arquivo. O cliente pode salvar esse conteúdo como um artefato. Dados exportados têm origem caller_supplied_data.

VPS

Veja instalação na VPS. Para Hermes na mesma VPS, stdio dispensa porta pública. O Dockerfile roda como usuário sem privilégios e inicia em fixture por padrão. A CI valida o build Docker e initialize/list/status MCP dentro do container em fixture. A configuração HTTPS e o fluxo live ainda precisam de teste no destino.

O transporte private-http permanece experimental, restrito ao loopback e protegido por um token separado. Para conexão remota, use oauth-http atrás de HTTPS conforme o guia.

Verificação

PYTHONPATH=src:tests .venv/bin/python -m unittest discover -s tests -v

CI no GitHub testa Python 3.11 e 3.12. A verificação local passou em 77 testes, incluindo MCP stdio real, assinaturas, precisão, relatórios paginados, batch com resultado incerto, redirecionamentos e isolamento do histórico. O teste HTTP em memória ainda registra avisos de encerramento do SDK; detalhes em VERIFICATION.md.

Limites atuais: sem estoque/frete/cupons/avaliações textuais, publicação em redes sociais, compras, administração de vendedor ou métricas de todos os cliques. O escopo é a API de afiliados disponível à conta.

Fontes

Implementação própria baseada na documentação oficial brasileira: produtos, lojas, campanhas, feeds, conversões, relatórios validados. Veja contratos e políticas locais.

Available Tools

17 tools
affiliate_statusA
Read-onlyIdempotent

Mostra modo e referência LOCAL da conta. Não autentica nem comprova titularidade na Shopee.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the safety profile is covered. The description adds a non-obvious caveat beyond those: it explicitly warns that this is a LOCAL read that does not authenticate or prove Shopee ownership, preventing a plausible misuse.

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

Conciseness5/5

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

Two short sentences with no filler. The core scope statement is front-loaded and the caveat follows immediately, so every clause earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the no-param signature is trivially covered. The only remaining gap is that 'modo' is not defined in prose, leaving the precise semantics of what is returned partly to the output schema.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty, so there is nothing to document; a baseline of 4 applies. The description correctly implies a no-argument account inspection.

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

Purpose3/5

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

It states a verb and resource ('Mostra modo e referência LOCAL da conta'), but 'modo' and 'referência LOCAL' are undefined, so it is unclear what status is actually being inspected. It never distinguishes itself from the offer/link/report siblings, which makes selection harder.

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

Usage Guidelines3/5

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

The second sentence gives a genuine negative guardrail ('Não autentica nem comprova titularidade na Shopee'), telling the agent what this tool cannot be used for. However, there is no positive when-to-use condition and no alternative tool is named.

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

export_dataA
Read-onlyIdempotent

Retorna CSV ou JSON dos registros fornecidos, sem escrever arquivos; neutraliza fórmulas em CSV.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYes
formatYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety bar is low. The description still adds real value: it confirms no files are written and discloses CSV formula-injection neutralization, a security behavior found nowhere in the structured fields.

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

Conciseness5/5

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

A single tight sentence, front-loaded with the return value and format, then the two behavioral caveats. Nothing is redundant and nothing needs trimming.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers format plus the two non-obvious behaviors. Given only two simple parameters, an agent has enough to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It names the two concerns (format, records) and the CSV/JSON choice, but adds no detail on row shape, the 500-row cap, or the 100-property limit beyond what the schema already encodes.

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

Purpose4/5

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

States a specific verb ('Retorna') and resource ('registros fornecidos') plus the output formats (CSV/JSON), so the agent knows exactly what the tool produces. It does not differentiate from any sibling, but the sibling list is entirely unrelated (offers, reports, links), so the purpose stands on its own.

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

Usage Guidelines2/5

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

The clause 'sem escrever arquivos' implies a use case (in-memory serialization rather than file output), but there is no explicit when-to-use, when-not, or alternative named. An agent gets no routing guidance beyond inferring from the name.

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

get_conversion_reportB
Read-only

Consulta conversões e comissões ainda não validadas; paginação automática limitada e cursor de uso único/30s.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
shop_idNo
order_idNo
max_pagesNo
product_idNo
order_statusNo
purchase_time_endYes
purchase_time_startYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly, destructive=false, and idempotent=false. The description adds genuinely non-obvious behavior: automatic pagination is bounded and the cursor is single-use with a 30s lifetime, which explains the non-idempotent hint and warns the agent not to reuse cursors. Good added context beyond the structured fields.

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

Conciseness4/5

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

A single dense sentence that front-loads the core purpose and appends the pagination constraint; no filler. The semicolon-packed phrasing is slightly terse but every clause carries information.

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

Completeness2/5

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

An output schema exists so return values need not be described, but for a 9-parameter read tool with 0% schema coverage, the description leaves the required time-range parameters and all filter semantics undocumented. An agent cannot confidently construct a valid call from the description alone.

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

Parameters2/5

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

Schema description coverage is 0% for 9 parameters, so the description must compensate, but it only touches pagination concepts (limit/max_pages/cursor) and cursor lifetime. The two REQUIRED parameters (purchase_time_start/end), plus shop_id, order_id, product_id, and order_status, get no explanation at all.

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

Purpose4/5

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

States a specific verb and resource ('Consulta conversões e comissões') with an important qualifier ('ainda não validadas') that implicitly contrasts it with the sibling get_validated_report. An agent can tell it retrieves not-yet-validated conversions, though the exact scope relative to summarize_report or export_data is not spelled out.

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

Usage Guidelines3/5

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

The phrase 'ainda não validadas' implies the tool is the counterpart to get_validated_report, giving an implicit selection cue. But there is no explicit when-to-use/when-not statement and no named alternative, so the routing is left to inference.

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

get_offerA
Read-onlyIdempotent

Reconsulta oferta por item_id e shop_id. Retorna nova observação; não garante estoque, frete ou comissão aprovada.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
shop_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds genuine behavioural value beyond that: it states a fresh observation is returned and that stock, freight, and approved commission are explicitly NOT guaranteed — a useful caveat about result freshness and trustworthiness.

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

Conciseness5/5

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

One compact sentence with the action front-loaded and the caveat trailing it; no filler, no redundancy, and the key scoping information arrives first.

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

Completeness3/5

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

An output schema exists, so return-value shape need not be explained, and the caveat about non-guarantees is valuable. What is missing is where this fits relative to the many sibling lookup tools (observe_offer, get_offer_history, search_offers), which is the main thing an agent still needs.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load. It names both parameters (item_id, shop_id) and frames them as offer lookup keys, but adds no format, source, or matching semantics beyond the numeric pattern already enforced in the schema.

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

Purpose4/5

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

States a specific verb and resource ('Reconsulta oferta') and names the two lookup keys (item_id, shop_id), so the agent knows exactly what is being fetched. It does not, however, distinguish itself from near-neighbour siblings such as observe_offer or get_offer_history, leaving the agent to guess which lookup variant applies.

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

Usage Guidelines2/5

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

The only additional clause ('não garante estoque, frete ou comissão aprovada') is a limitation notice, not guidance on when to call this instead of search_offers, observe_offer, or get_offer_history. No prerequisites, triggers, or exclusions are given.

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

get_offer_historyC
Read-onlyIdempotent

Consulta observações coletadas neste servidor, separadas por conta e modo.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
item_idYes
shop_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds only that observations are 'collected on this server' and grouped by account and mode, giving no ordering, time-window, or pagination behavior, and the mention of 'modo' does not correspond to any schema parameter.

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

Conciseness3/5

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

It is a single, front-loaded sentence with no padding or repetition, which is structurally efficient. However, the brevity comes at the cost of substance, and the 'modo' clause introduces potentially misleading content rather than useful detail.

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

Completeness2/5

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

Although an output schema exists and return values need not be explained, the description still leaves the three input parameters (including two required identifiers) completely undocumented. Combined with the absent usage guidance, the definition is not sufficient for an agent to call this tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, so the description carries the full burden, yet it never mentions item_id, shop_id, or limit and their required/optional status or formats. It instead references an 'account' and a 'mode' dimension that only loosely (and in the case of 'mode', not at all) map to the actual parameters.

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

Purpose2/5

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

The description says it queries 'observations collected on this server', but the tool is named get_offer_history and none of its siblings or parameters are referenced, so the agent cannot tell whether this retrieves offer history, observed-offer data, or something else. The stated resource ('observações') does not clearly align with the tool name, making the purpose ambiguous rather than tautological.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no naming of alternatives such as get_offer or observe_offer, despite a crowded sibling set that overlaps heavily with offers. The agent is left to infer selection entirely from the tool name.

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

get_product_feedC
Read-onlyIdempotent

Obtém uma página do feed oficial; preserva IDs e decimais como strings.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
datafeed_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds a real behavioral nuance not present in annotations: IDs and decimals are returned as strings, which matters for downstream type handling. It still omits pagination behavior and whether the end of the feed is signaled.

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

Conciseness4/5

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

A single short sentence, front-loaded with the action and scoping, with the string-preservation caveat appended. Nothing is wasted, though it is arguably too terse for a three-parameter tool.

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

Completeness2/5

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

An output schema exists, so return values need no explanation, but the description leaves pagination semantics, datafeed_id sourcing, and sibling selection entirely unaddressed for a tool whose schema has zero parameter documentation. An agent cannot call it confidently without outside knowledge.

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

Parameters2/5

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

Schema description coverage is 0% across all three parameters. The phrase 'uma página' hints that limit/offset paginate, but the description never names or explains limit, offset, or datafeed_id, and adds no format or constraint detail (e.g. max page size) beyond what the schema bounds already impose.

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

Purpose4/5

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

States a specific verb and resource ('Obtém uma página do feed oficial'), so an agent knows this returns a paginated slice of an official feed. However, it does not differentiate itself from the sibling list_product_feeds or explain what 'feed oficial' means versus other feeds in this API family.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus list_product_feeds or the offer-search siblings, and no mention of prerequisites such as where datafeed_id comes from. The agent must infer the context entirely.

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

get_validated_reportB
Read-only

Consulta comissões validadas por validationId do painel de faturamento; não comprova pagamento.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
max_pagesNo
validation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true). The description adds genuine context beyond them: the result represents validated commissions and explicitly does not constitute proof of payment, which matters for downstream decisions. It stops short of describing the paginated retrieval behavior implied by the limit/cursor/max_pages parameters.

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

Conciseness5/5

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

A single compact sentence that front-loads the action and resource, then appends the most important caveat. Every clause earns its place.

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

Completeness3/5

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

An output schema exists, so return-value shape need not be described. However, for a paginated read tool with four params at 0% schema description coverage and no sibling routing, the definition leaves real gaps an agent needs before invoking it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, so the description carries the burden. It only alludes to validation_id; limit, cursor, and max_pages — the pagination contract — are explained nowhere, and the fact that max_pages caps traversal is undocumented.

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

Purpose4/5

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

States a specific verb (consulta) and resource (comissões validadas) plus the key by which it is retrieved (validationId) and the source system (painel de faturamento). It does not name or distinguish itself from siblings like get_conversion_report or summarize_report, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and names no alternative, despite several report-oriented siblings (get_conversion_report, summarize_report, export_data). The caveat 'não comprova pagamento' is a semantic limitation of the data, not routing advice.

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

list_product_feedsB
Read-onlyIdempotent

Lista catálogos oficiais FULL ou DELTA disponíveis para a conta.

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_modeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds only the scoping fact that results are limited to the account and to FULL/DELTA feeds; it says nothing about pagination, volume, or empty-result behavior, but with an output schema present that is a modest gap.

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

Conciseness4/5

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

A single, front-loaded sentence with no filler; the resource and scope come first. It is appropriately sized, though it is almost too terse to carry any operational detail.

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

Completeness3/5

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

For a simple, annotated, read-only list tool with an output schema, the essentials are largely present, so return values need not be described. Still missing are the optional-filter semantics of feed_mode and any hint about result size or pagination, which leaves the definition merely adequate.

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

Parameters3/5

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

Schema coverage is 0% and the single parameter is an enum (FULL/DELTA), whose values the description merely restates without explaining whether feed_mode filters the listing, defaults to both when omitted, or behaves otherwise. It adds marginal meaning over the schema.

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

Purpose4/5

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

The description gives a specific verb+resource ("Lista catálogos oficiais FULL ou DELTA") scoped to the account, which is clearly distinct from a get-by-id tool. However it never names its closest sibling get_product_feed, so the list-vs-fetch routing is only implied by the plural name.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no pointer to get_product_feed for retrieving a single catalog's details. Usage is only inferable from the word "Lista".

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

observe_offerC

Registra uma nova observação do produto em SQLite local habilitado pelo administrador.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
shop_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the mutation profile is covered. The description adds that writes go to a local, administrator-enabled SQLite store, which is useful context. It does not disclose whether the observation is created remotely as well (openWorldHint=true suggests yes), leaving a mild tension with the "local" claim that is not fully resolved.

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

Conciseness4/5

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

A single compact sentence with no padding. It is appropriately sized, though it is so terse that efficiency shades into under-specification.

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

Completeness2/5

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

An output schema exists, so return values need not be described. But for a 2-required-parameter, non-idempotent write tool with zero schema coverage and no parameter explanation, the description leaves the core question — what an "observação" actually is and when to create one — unanswered.

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

Parameters2/5

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

Schema description coverage is 0% for both required parameters, so the description carries the full burden of explaining item_id and shop_id — yet it mentions neither. It does not explain why a shop_id is required to record a product observation, nor the numeric-string ID format the schema enforces.

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

Purpose3/5

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

"Registra uma nova observação do produto" gives a verb (register) and an object (product observation), plus a storage target (local SQLite). However, "observação" is ambiguous — it could mean a user note, a watch/star flag, or a scraper snapshot — and nothing distinguishes this tool from siblings like get_offer_history or get_offer.

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

Usage Guidelines2/5

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

The description offers no when-to-use condition, no prerequisite beyond the vague "habilitado pelo administrador", and never names an alternative tool. An agent has no way to know whether this should be called instead of, or in addition to, get_offer_history.

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

parse_product_urlC
Read-onlyIdempotent

Extrai IDs de URL Shopee.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on what happens with a malformed or non-Shopee URL, and no mention of failure behavior for a pure parsing function.

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

Conciseness3/5

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

One short sentence with no waste and the key concept front-loaded, so it is structurally fine. However, the brevity reflects under-specification rather than efficiency — the same length could have carried one clarifying clause at no structural cost.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, and this is a simple one-parameter read tool. Even so, the definition omits URL-format expectations and error behavior, leaving the agent without what it needs to call the tool reliably on non-trivial inputs.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the burden for the single 'url' parameter, yet it only implies 'a Shopee URL'. It does not describe accepted URL shapes (short links, mobile links, query-string variants), which is the exact information needed to supply a valid value.

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

Purpose3/5

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

The description names a verb ('Extrai') and a resource ('URL Shopee'), but 'IDs' is left ambiguous — the schema and siblings (e.g., resolve_product_url) give no hint as to whether this returns item, shop, or affiliate IDs. It is identifiable but not sharply differentiated from resolve_product_url.

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

Usage Guidelines2/5

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

There is no 'when to use this' statement and no reference to any alternative, despite a closely related sibling (resolve_product_url) that an agent could easily confuse it with. The agent must guess the selection criteria.

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

resolve_product_urlB
Read-onlyIdempotent

Resolve link curto Shopee, validando cada redirecionamento antes de consultar IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds process context by saying each redirect is validated before IDs are queried, but it omits auth needs, rate limits, and error behavior.

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

Conciseness4/5

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

One front-loaded sentence with no wasted text. It is appropriately sized for a simple resolution tool, though adding a brief usage clause would improve structure without excessive length.

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

Completeness3/5

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

With rich annotations and an output schema, the description need not cover returns or safety. However, for a 1-param tool with 0% schema description coverage, it should say more about the URL format and when to choose this tool over siblings.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the burden. It identifies the input as a Shopee short link, which gives the url parameter useful meaning beyond a plain string, but it provides no format example or constraint details.

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

Purpose4/5

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

States a specific verb (resolve) and resource (Shopee short link), plus an internal validation step. It is clear what the tool does, but it does not explicitly distinguish itself from the sibling parse_product_url.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided. The short-link phrasing implies a context, but it does not name alternatives like parse_product_url or explain which URL types select this tool.

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

search_campaign_offersC
Read-onlyIdempotent

Pesquisa campanhas e ofertas Shopee com categoria/coleção e período.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
keywordNo
sort_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds no behavioral context beyond that: no note on pagination, result caps, rate limits, or what a campaign/offer result contains, even though openWorld implies external variability.

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

Conciseness4/5

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

A single short sentence with the verb and resource front-loaded; nothing padded. Its brevity is appropriate, though the content it does include is partly inaccurate.

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

Completeness2/5

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

An output schema exists, so return values need not be described, but for a four-parameter search tool the description omits pagination behavior, result volume, and sort_type meaning while promising filter dimensions the schema cannot honor. An agent cannot call this confidently from the definition alone.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters (page, limit, keyword, sort_type), so the description must carry the load and does not. Worse, it advertises 'categoria/coleção' and 'período' filters that do not exist in the schema, while leaving sort_type's 1-2 range and the page/limit semantics unexplained.

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

Purpose4/5

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

The description gives a specific verb+resource ('Pesquisa campanhas e ofertas Shopee') and names the filter axes, which is enough to separate it from search_offers at a glance. It stops short of explicitly distinguishing itself from the sibling tools, and the named filters (categoria/coleção, período) do not actually map to any schema parameter.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no condition that selects this tool over search_offers or search_shop_offers, and no exclusions or prerequisites. The agent must infer the routing from the nouns alone.

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

search_offersC
Read-onlyIdempotent

Pesquisa uma página; preço/comissão são observações estimadas. Modo fixture contém somente dados sintéticos.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
cursorNo
keywordYes
shop_idNo
sort_typeNo1 relevância (com keyword), 2 vendas, 3 preço desc, 4 preço asc, 5 comissão desc
category_idNo
is_ams_offerNo
is_key_sellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: price/commission are estimated observations and fixture mode contains only synthetic data. However, it does not explain what activates fixture mode or how estimates affect results, so the added transparency is meaningful but incomplete.

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

Conciseness3/5

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

The description is two short sentences and is front-loaded with the action, so it avoids bloat. However, for a nine-parameter search tool with very low schema coverage, this size is under-specified rather than appropriately concise, and the structure does not help an agent understand invocation.

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

Completeness2/5

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

The annotations cover safety and an output schema exists, so return values and read-only behavior need not be explained. But with nine parameters at 11% schema description coverage, the description should compensate with parameter and usage context; it instead omits both, leaving the definition incomplete for correct invocation.

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

Parameters1/5

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

Schema description coverage is only 11% (only sort_type has an enum description), so the description must compensate for eight undocumented parameters. It provides no meaning for keyword, page, limit, cursor, shop_id, category_id, is_ams_offer, or is_key_seller, leaving parameter semantics almost entirely unexplained.

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

Purpose2/5

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

The description says 'Pesquisa uma página' (searches a page) but never identifies what is searched—offers—and does not distinguish the tool from sibling search tools like search_shop_offers or search_campaign_offers. The added caveats about price/commission estimates and fixture mode are side notes, not a clear statement of purpose.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives such as search_shop_offers, search_campaign_offers, or get_offer. The fixture-mode note is a data condition, not a usage instruction, and no prerequisites or exclusions are provided.

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

search_shop_offersC
Read-onlyIdempotent

Pesquisa ofertas de lojas, comissão, classificação e orçamento disponível.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
keywordNo
shop_idNo
sort_typeNo
shop_typesNo
is_key_sellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, so the safety profile is covered structurally. The description adds essentially nothing behavioral beyond that — no pagination behavior, no rate limits, no indication of what 'orçamento disponível' means operationally.

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

Conciseness4/5

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

A single compact sentence with no filler. It is front-loaded and wastes no words, though brevity here comes at the cost of the missing information noted elsewhere.

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

Completeness2/5

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

An output schema exists, so return-value explanation is not required. But with 7 undocumented optional parameters, no usage routing, and a complex sibling landscape, the definition leaves the agent without enough to call the tool correctly.

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

Parameters1/5

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

Seven parameters with 0% schema description coverage means the description carries the full burden, and it supplies none of it. The nouns it mentions (comissão, classificação, orçamento) are return-data concepts, not any of the actual parameters (page, limit, keyword, shop_id, sort_type, shop_types, is_key_seller), so the agent learns nothing about how to invoke it.

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

Purpose3/5

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

States a verb ('Pesquisa') and a resource ('ofertas de lojas') along with some returned data fields (comissão, classificação, orçamento). However, it gives no signal distinguishing it from the many sibling search tools (search_offers, search_campaign_offers, search_shop_offers' nearest analogues), so an agent cannot confidently pick it over them.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the sibling search tools it competes with. The agent must infer that this is the shop-scoped variant purely from the name.

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

summarize_reportC
Read-only

Agrupa conversões por subID bruto, campanha ou dia UTC; informa quando o total cobre apenas parte do relatório.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
shop_idNo
group_byNo
order_idNo
max_pagesNo
product_idNo
order_statusNo
purchase_time_endYes
purchase_time_startYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
modeYes
syntheticYes
account_referenceYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, idempotentHint=false). The description adds a genuinely useful behavioral note that it signals when the total covers only part of the report (partial-coverage indicator), but says nothing about pagination via limit/cursor/max_pages or the required time window.

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

Conciseness4/5

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

A single compact sentence with the grouping behavior front-loaded and no filler. It is efficient, though its brevity comes at the cost of coverage elsewhere rather than being a structural flaw.

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

Completeness2/5

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

An output schema exists, so return values need not be described. But for a 10-parameter tool with 0% schema coverage and required time-range bounds, the description is far too thin to let an agent invoke it correctly without guessing at parameter meaning and pagination.

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

Parameters2/5

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

Schema description coverage is 0% across 10 parameters, so the description must carry the burden and largely does not. It loosely maps three grouping modes to the group_by enum values, but the two required parameters (purchase_time_start/end), limit, cursor, max_pages, and the filter params are left completely unexplained.

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

Purpose3/5

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

The description states a specific verb (Agrupa/groups) and resource (conversões), and names three grouping modes (subID bruto, campanha, dia UTC). However, it does not distinguish this tool from close siblings like get_conversion_report, get_validated_report, or export_data, which an agent could easily confuse with a report-summarizing tool.

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

Usage Guidelines2/5

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

There is no guidance on when to use summarize_report versus the similar-sounding get_conversion_report or get_validated_report siblings. The description lists what it groups but gives no conditions, prerequisites, or routing cues.

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.

  1. 17 tool updatesv0.3.0
    • First observedaffiliate_status
    • First observedexport_data
    • First observedgenerate_affiliate_link
    • First observedgenerate_affiliate_links_batch
    • First observedget_conversion_report
    • First observedget_offer
    • First observedget_offer_history
    • First observedget_product_feed
    • First observedget_validated_report
    • First observedlist_product_feeds
    • First observedobserve_offer
    • First observedparse_product_url
    • First observedresolve_product_url
    • First observedsearch_campaign_offers
    • First observedsearch_offers
    • First observedsearch_shop_offers
    • First observedsummarize_report

TDQS

B3/5.0

Scored across 17 tools

Disambiguation4/5

Tools mostly target distinct resources: search_offers/search_shop_offers/search_campaign_offers differ by scope, and get_offer/observe_offer/get_offer_history differ by action. The two generate_affiliate_link variants and the report trio could be momentarily confused, but descriptions clarify their boundaries.

Naming Consistency4/5

Almost all tools follow a verb_noun snake_case pattern (search_offers, get_offer, generate_affiliate_link, get_conversion_report). The lone deviation is the noun-only affiliate_status, which is a minor inconsistency.

Tool Count4/5

17 tools is slightly heavy but each maps to a real affiliate workflow step (search, offer lookup, link generation, feeds, reports, URL parsing, observation history). Nothing appears redundant enough to trim.

Completeness4/5

The surface covers the affiliate lifecycle well: discovery (offers/shops/campaigns), link generation, feed access, reporting, and local observation history. Missing update/delete style operations and explicit account auth, but those are out of scope per descriptions.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Connects AI agents to the Shopee platform for real-time product searches and category mapping via the Affiliate and Seller Center APIs. It enables users to filter products by keyword, category, and commission rates directly through natural language.
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to automate the full affiliate e-commerce workflow across Shopee and TikTok Shop, including product hunting, seller auditing, review mining, and generating video storyboards and VideoFactory projects. It provides nine MCP tools for search, intelligence extraction, database queries, and system health checks.
    12
    9
    1
    MIT