Skip to main content
Glama
README.md
# Catalog Intelligence Agent

**Agente MCP de enriquecimento autônomo de catálogo para STOREFRONTS (lojas próprias).**
Trilha *Catalog & Content* — Hackathon [Agents for Commerce](https://hackathon.decocms.com/agents-for-commerce) (Deco, 01–09/08/2026).

> Recebe **dados brutos de ERP** (título em CAIXA ALTA, sem descrição, marca genérica, sem imagem)
> e devolve o **produto pronto para publicar na loja própria do lojista** — com título SEO,
> bullets de benefícios, descrição HTML mobile-first, slug/meta, **schema.org JSON-LD** e imagem.

Não é integrador de marketplace: foca no motor central de higienização que qualquer storefront
(deco.cx, VTEX, Shopify, Nuvemshop…) consome via um agente de IA.

---

## Ferramentas MCP (5)

| Tool | O que faz |
|---|---|
| `lookup_ean` | Dados de referência por EAN/GTIN (valida dígito verificador + cascade: Bluesoft Cosmos BR → Open Food Facts → EAN-Search) |
| `search_images` | URLs de imagem candidatas por EAN **ou título** (marca própria sem EAN → Unsplash/Pexels) |
| `enrich_product` | Pipeline completo: higieniza título → bullets → descrição HTML → SEO → schema.org JSON-LD → imagem (rembg fundo branco) → análise visual → SEO da imagem (alt/filename/caption) |
| `validate_listing` | Score 0–100 de completeza p/ loja própria (SEO on-page, dados, schema.org, imagem, **regras de moda**: grade/composição/cor/medidas) + issues |
| `enrich_batch` | Orquestra lote de até 50 produtos → relatório consolidado |
| `analyze_url` | Raspa e diagnostica a página de um produto na loja do cliente (título, preço, marca, SKU, imagens, EAN) |
| `analyze_image` | Analisa a imagem: resolução, proporção, fundo, nitidez, **metadados EXIF** + prontidão p/ loja |
| `fetch_product_images` | Baixa até 10 imagens e exibe **galeria no chat** (data-URLs) ou retorna caminhos locais |
| `prepare_shopify_payload` | Converte o produto enriquecido no **payload GraphQL productCreate** (publicação automática na loja, sem copiar/colar) |

## Impacto financeiro (pitch)

- Operação de **5.000 SKUs** gasta ~**200 h/mês** de equipe de catálogo → **R$ 5.000/mês** em horas (R$25/h)
- Concorrência (PIMs + IA): US$600–1.000/mês para 500 SKUs — **nosso custo ≈ R$0–50/lote**
- Demo inteira roda em free tiers (~R$0)

## Execução

```bash
npm install
npm run build        # tsc → dist/
npm run dev          # modo dev (tsx watch) — MCP server stdio
npm start            # node dist/server.js — MCP server stdio
npm test             # testes unitários (9): EAN, validate, schema
npm run smoke        # smoke end-to-end do protocolo MCP (6 checks, stdio)
```

### Conectar em um cliente MCP

**Claude Desktop / Cursor / CLI:**
```json
{ "mcpServers": { "catalog-intelligence": { "command": "node", "args": ["/caminho/para/dist/server.js"] } } }
```

**deco Studio (Custom Connection):** rode o servidor HTTP e aponte a Connection para o endpoint:

```bash
PORT=8788 node dist/http.js     # Streamable HTTP em http://localhost:8788/mcp
```

No Studio: *Agent → Settings → Connections → Add Connection → Custom Connection* →
cole a URL → selecione as tools do agente.

### Teste com MCP Inspector

```bash
npx @modelcontextprotocol/inspector node dist/server.js
```

---

## Exemplo

**Entrada (ERP):**
```json
{ "ean": "7891234567890", "title": "FURADEIRA IMPACTO 750W 110V", "brand": "SEM MARCA" }
```

**Saída (storefront):**
```json
{
  "title": "Furadeira de Impacto 750W 110V",
  "slug": "furadeira-de-impacto-750w-110v",
  "meta_title": "Furadeira de Impacto 750W 110V — Compre Online",
  "bullets": ["✅ Potência de 750W...", "✅ Mandril 13mm...", "✅ Ideal para uso doméstico e profissional..."],
  "description_html": "<p>Furadeira de impacto profissional...</p>",
  "seo_keywords": ["furadeira", "furadeira de impacto", "750w"],
  "schema_org": { "@type": "Product", "name": "Furadeira de Impacto 750W 110V", "sku": "7891234567890", "brand": {"@type":"Brand","name":"..."} },
  "image_url": "https://...",
  "warnings": []
}
```

## Stack

- TypeScript ESM (Node 22+)
- `@modelcontextprotocol/sdk` (MCP) + `zod` (schemas)
- Transportes: **stdio** (dev) + **Streamable HTTP** (deco Studio)
- IA: qualquer endpoint OpenAI-compatível via env (`AI_ENDPOINT`, `AI_MODEL`, `AI_API_KEY`) — **sem key, o agente funciona 100% determinístico**
- Zero dependências proprietárias — sem regras de marketplace, sem pricing engine

## Env vars

| Var | Uso | Obrigatória |
|---|---|---|
| `AI_ENDPOINT` | Endpoint OpenAI-compatível (default: Nous inference) | não |
| `AI_MODEL` | Modelo (default: `deepseek-v4-flash`) | não |
| `AI_API_KEY` | Key da IA (sem ela → fallback determinístico) | não |
| `COSMOS_TOKEN` | Bluesoft Cosmos BR (opcional, 1ª fonte EAN) | não |
| `EAN_SEARCH_TOKEN` | EAN-Search.org (opcional, 3ª fonte) | não |
| `PORT` | Porta do Streamable HTTP (default 8788) | não |

## Integração com deco Studio

O servidor é um **MCP server padrão** — pluga como *Connection* customizada no Studio
(control plane de agentes da Deco). A demo mostra o agente rodando **dentro do Studio**:
conectar → chamar `enrich_product` → ver trace/custo no Monitor.

## Author

Carlos Nunes — ClickPim (consultor Amazon BR / automação de catálogo).
Submissão individual, hackathon Agents for Commerce — trilha Catalog & Content.

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct action and resource: EAN lookup, image search, enrichment, validation, batch enrichment, URL analysis, image analysis, image fetching, Shopify payload prep, and OCR. While enrich_product and enrich_batch overlap in purpose, their single vs. batch scope is clearly described.

Naming Consistency5/5

All tools follow a consistent lowercase_with_underscores verb_noun pattern (lookup_ean, search_images, enrich_product, validate_listing, enrich_batch, analyze_url, analyze_image, fetch_product_images, prepare_shopify_payload, ocr_image). The only slight deviation is ocr_image, where 'ocr' is an acronym used as a verb, but it still fits the pattern.

Tool Count5/5

10 tools is within the ideal 3-15 range and covers the spectrum from data lookup to enrichment, validation, auditing, and Shopify payload generation without redundancy.

Completeness4/5

The toolset covers the core workflows: reference lookup, image retrieval, enrichment (single and batch), validation, page auditing, image quality assessment, chat display, and Shopify publication preparation. Minor gap: no tool to update an existing Shopify listing, but the agent may rely on external services for execution.

Maintenance

ActivitySlowing
ResponsivenessNo issues