Shopee Affiliate MCP
You can browse Shopee Brasil affiliate offers, generate tracked affiliate links, pull commission reports, and keep a local observation history — all through an MCP server that runs in synthetic fixture mode by default or live mode with your own Shopee Open API credentials.
Check status:
affiliate_statusshows mode, local account reference, available tools and whether history is enabled (it does not authenticate you).Find products:
search_offersby keyword, shop, category, AMS/key-seller and sort order, with images, discounts, categories and commission components;get_offerre-queries a specific item/shop.Explore shops and campaigns:
search_shop_offers(shop type, commission, remaining budget) andsearch_campaign_offers(Shopee campaigns, category/collection, period).Work with official catalogs:
list_product_feeds(FULL/DELTA) andget_product_feedfor paged datafeed rows, with JSON numbers kept as strings for precision.Generate affiliate links:
generate_affiliate_link(up to 5 ordered subIDs, expected account reference) andgenerate_affiliate_links_batch(up to 20 links, validated up front, stops on first error).Handle product URLs:
parse_product_urlextracts item/shop IDs and builds a canonical URL offline;resolve_product_urlfollows short links after validating each redirect.Analyze commissions:
get_conversion_report(unvalidated conversions),get_validated_report(by validation ID from the billing panel; not proof of payment), andsummarize_reportgrouped by raw subID, campaign, UTC day, product or shop.Export data:
export_datareturns CSV or JSON for up to 500 caller-supplied rows, neutralizing spreadsheet formulas in CSV and never writing files.Track price history:
observe_offerrecords a new observation in the optional local SQLite history, andget_offer_historyreads observations back, separated by account, mode, item and shop.Connect how you like: stdio (with
run.py --mode live) or experimental Streamable HTTP with an OAuth screen, encrypted credential/session storage and per-connection accounts.Caveats: fixture mode is synthetic with no external calls; live mode needs your own credentials and verified profile; commission values are estimates,
complete=falsemeans partial results, and HTTP transport is experimental and should stay behind HTTPS on a private VPS.
Integrates with the Shopee Brasil Affiliate Open API, providing tools for affiliate product search, offer details, shop and campaign offers, product feeds, affiliate link generation, conversion and validated reports, URL parsing, and local offer-history observation.
Click 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., "@Shopee Affiliate MCPsearch Shopee Brasil for bluetooth earbuds with high commission"
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.
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 |
| Modo, referência local da conta, ferramentas e histórico habilitado; não autentica sozinho |
| Produtos por palavra-chave, loja, categoria, AMS/key seller e ordenação; imagens, desconto, categorias e componentes de comissão |
| Consulta atual do produto por item/shop IDs |
| Ofertas de lojas, tipo de loja, comissão e faixa de orçamento restante |
| Campanhas Shopee, categoria/coleção, comissão e período |
| Catálogos oficiais FULL/DELTA |
| Página de catálogo por datafeed ID e offset; colunas JSON preservadas |
| Link oficial com até cinco subIDs ordenados e conta esperada |
| Até 20 links; valida tudo antes de enviar e para no primeiro erro |
| Extrai IDs de URLs de produto e gera URL canônica; sem acesso à rede |
| Resolve link curto, validando cada destino antes de acessá-lo |
| Conversões e comissões reportadas ainda não validadas |
| Relatório validado por validation ID obtido no faturamento |
| Resumo por subID bruto, campanha, dia UTC, produto ou loja |
| CSV/JSON dos registros fornecidos; CSV neutraliza fórmulas |
| Coleta e grava uma observação de produto no histórico opcional |
| 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 --extendedO 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 liveO processo espera mensagens MCP e não mostra um menu. Ele recebe:
Variável | Uso |
| App ID da Open API de afiliados |
| Secret da mesma aplicação |
| Rótulo local, ASCII alfanumérico/underscore/hífen, até 64 caracteres |
| Caminho absoluto de |
| 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 -vCI 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 toolsaffiliate_statusARead-onlyIdempotent
Mostra modo e referência LOCAL da conta. Não autentica nem comprova titularidade na Shopee.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_dataARead-onlyIdempotent
Retorna CSV ou JSON dos registros fornecidos, sem escrever arquivos; neutraliza fórmulas em CSV.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| format | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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.
generate_affiliate_linkB
Gera link SOMENTE via operação oficial verificada, para a referência de conta esperada e subIDs explícitos. Nunca publica. Fixtures recusam geração.
| Name | Required | Description | Default |
|---|---|---|---|
| sub_ids | Yes | ||
| origin_url | Yes | ||
| expected_account_reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, so the safety profile is partly covered. The description adds genuinely new behavioral facts beyond that: it never publishes (a side-effect guarantee), it refuses to operate against fixtures, and it requires a verified official operation with the expected account reference — useful operational context not present in 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?
Three short, front-loaded fragments with no filler; the operative verb and its main constraint come first. It is terse to the point of being slightly cryptic ('Fixtures recusam geração'), but nothing is wasted.
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?
An output schema exists, so return-value explanation is not required, and the annotations cover the basic safety profile. Still, with three required parameters at 0% schema coverage, the description is not complete enough on parameter meaning and does not address the singular-vs-batch choice among siblings.
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 0%, so the description carries the full burden. It hints at two of the three parameters ('referência de conta esperada', 'subIDs explícitos') but says nothing about origin_url, nor about constraints such as the 1–5 subID limit or the allowed character pattern, leaving a required parameter semantically undefined.
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?
States a specific verb+resource ('Gera link') and constrains it to an official verified operation keyed to an expected account reference with explicit subIDs. However, it never differentiates itself from the sibling generate_affiliate_links_batch, so an agent cannot tell from the description alone when the singular tool is preferred over the batch variant.
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 constraints 'SOMENTE via operação oficial verificada' and 'Nunca publica' imply the intended usage context (official, non-publishing path), and 'Fixtures recusam geração' flags test data as a non-starter. But there is no explicit when-to-use/when-not-to-use framing and no routing to the batch sibling, leaving alternatives to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_affiliate_links_batchB
Gera até 20 links oficiais sequencialmente; valida todo o lote antes do envio e interrompe em erro.
| Name | Required | Description | Default |
|---|---|---|---|
| links | Yes | ||
| expected_account_reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, but the description adds genuine behavioral context beyond them: sequential generation, whole-batch validation before submission, and fail-fast abort on error. It omits auth prerequisites, rate limits, and whether partially generated links survive an abort.
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 dense sentence with no filler, front-loading the core action and the batch cap before the validation/abort behavior. Every clause earns its place.
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?
An output schema exists, so return values needn't be described, and the description covers the batch cap plus validation/abort semantics. However, for a non-read-only (mutating, non-idempotent) tool it leaves parameter meaning and account/authorization context entirely to an undocumented schema, leaving clear gaps.
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 0% and there are 2 required parameters, yet the description explains neither 'links'/'sub_ids'/'origin_url' nor 'expected_account_reference'. The only parameter-adjacent detail ('até 20') merely restates the schema's maxItems:20 constraint, so the description fails to compensate for the coverage gap.
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 Portuguese description states a specific verb+resource ("Gera... links oficiais") and scopes it as a batch of up to 20, which lets an agent distinguish it from the singular sibling generate_affiliate_link. It stops short of explicitly naming that sibling, so differentiation still requires inference from the name/limit.
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?
There is no explicit when-to-use guidance or reference to alternatives like generate_affiliate_link (single) or parse/resolve_product_url. The 'up to 20' limit implies batch usage but the description never tells the agent when the batch tool is preferable to the single-link tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversion_reportBRead-only
Consulta conversões e comissões ainda não validadas; paginação automática limitada e cursor de uso único/30s.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| shop_id | No | ||
| order_id | No | ||
| max_pages | No | ||
| product_id | No | ||
| order_status | No | ||
| purchase_time_end | Yes | ||
| purchase_time_start | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_offerARead-onlyIdempotent
Reconsulta oferta por item_id e shop_id. Retorna nova observação; não garante estoque, frete ou comissão aprovada.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ||
| shop_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_historyCRead-onlyIdempotent
Consulta observações coletadas neste servidor, separadas por conta e modo.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| item_id | Yes | ||
| shop_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_feedCRead-onlyIdempotent
Obtém uma página do feed oficial; preserva IDs e decimais como strings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| datafeed_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_reportBRead-only
Consulta comissões validadas por validationId do painel de faturamento; não comprova pagamento.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| max_pages | No | ||
| validation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_feedsBRead-onlyIdempotent
Lista catálogos oficiais FULL ou DELTA disponíveis para a conta.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_mode | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ||
| shop_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_urlCRead-onlyIdempotent
Extrai IDs de URL Shopee.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_urlBRead-onlyIdempotent
Resolve link curto Shopee, validando cada redirecionamento antes de consultar IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_offersCRead-onlyIdempotent
Pesquisa campanhas e ofertas Shopee com categoria/coleção e período.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| keyword | No | ||
| sort_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_offersCRead-onlyIdempotent
Pesquisa uma página; preço/comissão são observações estimadas. Modo fixture contém somente dados sintéticos.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| cursor | No | ||
| keyword | Yes | ||
| shop_id | No | ||
| sort_type | No | 1 relevância (com keyword), 2 vendas, 3 preço desc, 4 preço asc, 5 comissão desc | |
| category_id | No | ||
| is_ams_offer | No | ||
| is_key_seller | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_offersCRead-onlyIdempotent
Pesquisa ofertas de lojas, comissão, classificação e orçamento disponível.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| keyword | No | ||
| shop_id | No | ||
| sort_type | No | ||
| shop_types | No | ||
| is_key_seller | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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_reportCRead-only
Agrupa conversões por subID bruto, campanha ou dia UTC; informa quando o total cobre apenas parte do relatório.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| shop_id | No | ||
| group_by | No | ||
| order_id | No | ||
| max_pages | No | ||
| product_id | No | ||
| order_status | No | ||
| purchase_time_end | Yes | ||
| purchase_time_start | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| mode | Yes | |
| synthetic | Yes | |
| account_reference | Yes |
TDQS
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.
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.
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.
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.
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.
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.
17 tool updates
v0.3.0- First observed
affiliate_status - First observed
export_data - First observed
generate_affiliate_link - First observed
generate_affiliate_links_batch - First observed
get_conversion_report - First observed
get_offer - First observed
get_offer_history - First observed
get_product_feed - First observed
get_validated_report - First observed
list_product_feeds - First observed
observe_offer - First observed
parse_product_url - First observed
resolve_product_url - First observed
search_campaign_offers - First observed
search_offers - First observed
search_shop_offers - First observed
summarize_report
TDQS
Scored across 17 tools
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.
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.
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.
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
Related MCP Connectors
Google Shopping products, prices, sellers, and deals as structured data via a hosted MCP server.
All public upAPI operations as MCP tools: web scraping, search, screenshots, PDF, OCR and more.
Remote MCP connector for eBay, Shopify, Best Buy & Etsy marketplace data via the Commerce API
ScrapeCreators MCP — wraps the ScrapeCreators social-media + ad-library
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects 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-
- FlicenseNot gradedqualityCmaintenanceMCP server for searching Shopee products in Singapore or Indonesia and generating affiliate links via the Shopee Affiliate Open API.-
- FlicenseBqualityCmaintenanceManages Shopee shops via Open Platform API v2. Enables viewing shop info, products, orders, posting products, and updating prices and inventory.141-
- AlicenseAqualityBmaintenanceEnables 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.1291MIT