MCP server that connects Claude to Bling e-commerce API for product management, sales analysis, and price/description updates with two-phase approval workflow
Server has 10 tools with complete schemas and descriptions. Naming follows verb_noun convention (listar_, buscar_, propor_, aplicar_, rejeitar_). Descriptions are present (avg ~120 chars) and explain WHAT and WHEN. However, parameter descriptions lack detail on constraints (e.g., date format validation, price bounds, array item types). Output schemas are documented in code but not formally declared in tool definitions. Error handling is minimal, no recovery guidance or actionable error messages. Two-phase proposal pattern (propor_* → aplicar_*) is well-designed for safety but lacks explicit confirmation/dry-run semantics. Missing: per-parameter type validation hints, enum constraints for categorical inputs, and structured error responses.
Analisa as vendas do período: campeões de receita, com margem por produto. Datas em YYYY-MM-DD. Use isto ANTES de propor mudanças de preço/descrição.
Aplica APENAS as propostas que você aprova (lista de IDs). Registra tudo no applied_log.jsonl com antes/depois.
Busca um produto específico pelo ID.
Lista produtos do Bling (paginado). Retorna campos resumidos.
Lista todas as propostas de alteração aguardando aprovação (preço e descrição).
Lista pedidos de venda crus num intervalo (datas em YYYY-MM-DD).
Date parameters lack format validation. 'data_inicial' and 'data_final' accept strings but no regex pattern or explicit YYYY-MM-DD constraint in schema. LLMs may pass invalid dates like '2024-13-45'.
Numeric parameters (novo_preco, top_n, max_pedidos, max_produtos, limite, pagina) lack min/max bounds in schema. LLMs could pass negative, zero, or absurdly large values (e.g., pagina=-1, limite=999999).
Error handling is absent. No try-catch blocks visible in tool implementations. If Bling API fails, raw exceptions propagate. LLM receives no recovery guidance (e.g., 'retry with different date range', 'check API key').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Lista produtos COM estoque que NÃO venderam (ou venderam pouco) no período. Bons candidatos a promoção ou revisão de descrição.
Registra uma PROPOSTA de alteração de nome e/ou descrição curta. NÃO altera o Bling. Pelo menos um dos campos deve ser informado.
Registra uma PROPOSTA de alteração de preço. NÃO altera o Bling. Variações acima de MAX_VARIACAO_PCT são bloqueadas (a menos que forcar=True).
Remove propostas da fila (você não quer aplicá-las).
Output schemas not formally documented. Tools return JSON strings but no schema definition (e.g., 'returns object with fields: {id, nome, preco, ...}'). LLM must infer structure from examples.
Destructive operations (aplicar_alteracoes_aprovadas, rejeitar_propostas) lack explicit confirmation or dry-run. No tool annotation (destructiveHint) to signal irreversibility to the LLM.