MCP Mercado Livre
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., "@MCP Mercado Livre liste minhas perguntas não respondidas"
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.
MCP Mercado Livre
Servidor MCP (Model Context Protocol) em TypeScript para a API do Mercado Livre, focado em vendedores. Permite que LLMs (Claude Desktop, Kimi Code, Cursor etc.) pesquisem o marketplace, publiquem e gerenciem anúncios, respondam perguntas, acompanhem pedidos, envios, reclamações, reputação, catálogo, promoções e muito mais — tudo por linguagem natural.
Projeto open source (MIT) — contribuições são bem-vindas! Veja Contribuindo.
Destaques
42 ferramentas cobrindo o ciclo completo do vendedor (busca, publicação, gestão, pós-venda, reputação, catálogo, promoções, Ads, Full, Shops)
OAuth 2.0 com refresh automático — tokens de 6h renovados 5 min antes de expirar, com persistência da rotação do refresh token
Suporte a Docker Compose — rode o servidor e a autenticação em containers, com tokens em volume persistente
Erros graciosos — falhas da API (validação, escopo, permissão) retornam a mensagem do Mercado Livre de forma clara, sem derrubar o servidor
Zero dependências além do essencial — apenas
@modelcontextprotocol/sdkezod; HTTP viafetchnativo do Node 18+
Related MCP server: BopMarket MCP Server
Início rápido
🔰 Nunca usou MCP ou a API do Mercado Livre? Siga o guia de instalação detalhado para iniciantes — passo a passo com prints do que esperar em cada etapa.
Via npm (recomendado — sem clonar o repositório)
Crie o aplicativo no portal de desenvolvedores do Mercado Livre (detalhes no guia de instalação) e anote o Client ID e o Client Secret.
Escolha uma pasta fixa para os tokens (ex.
~/mcp-meli), entre nela e autentique:mkdir -p ~/mcp-meli && cd ~/mcp-meli npx -y -p @gustavohssouza/mcp-mercadolivre mcp-mercadolivre-authO navegador abre, você autoriza, e o
tokens.jsoné salvo nessa pasta. Como clientes MCP podem iniciar o servidor com outro diretório de trabalho, o passo seguinte apontaML_TOKENS_FILEpara esse arquivo.Configure o cliente MCP (Claude Desktop, Cursor, Kimi Code):
{ "mcpServers": { "mercadolivre": { "command": "npx", "args": ["-y", "@gustavohssouza/mcp-mercadolivre"], "env": { "ML_CLIENT_ID": "seu_client_id", "ML_CLIENT_SECRET": "seu_client_secret", "ML_SITE_ID": "MLB", "ML_TOKENS_FILE": "/caminho/absoluto/para/mcp-meli/tokens.json" } } } }
Alternativa: instalação a partir do código-fonte
Para contribuir ou modificar o código:
git clone https://github.com/SEU_USUARIO/mcp_mercadolivre
cd mcp_mercadolivrePré-requisitos
Node.js >= 18 (ou Docker + Docker Compose)
Um aplicativo criado em developers.mercadolivre.com.br com a Redirect URI
http://localhost:3333/callback
Configuração
Instale as dependências:
npm installCrie o arquivo de ambiente:
cp .env.example .envPreencha
.envcomML_CLIENT_IDeML_CLIENT_SECRETdo seu aplicativo.Compile:
npm run buildAutentique (abre o navegador, captura o código e salva os tokens em
tokens.json):npm run authConfigure seu cliente MCP (veja Configuração nos clientes MCP) e comece a conversar.
Os tokens são renovados automaticamente (vida útil de 6h, com refresh 5 min antes de expirar). O refresh token é rotacionado pelo Mercado Livre e sempre persistido junto.
Ferramentas disponíveis (42)
Legenda: 📖 leitura · ✏️ escrita (operação real na conta)
Busca & Leitura
Ferramenta | Tipo | Descrição |
| 📖 | Busca produtos em todo o marketplace (filtros de categoria e faixa de preço) |
| 📖 | Detalhes de um anúncio pelo ID (preço, estoque, vendidos, fotos, atributos) |
| 📖 | Lista os anúncios do vendedor autenticado (filtro por status: active/paused/closed) |
| 📖 | Perguntas recebidas (filtro por status, ex. UNANSWERED, e por anúncio) |
| 📖 | Pedidos/vendas do vendedor, mais recentes primeiro |
Publicação
Ferramenta | Tipo | Descrição |
| 📖 | Prevê a categoria ideal a partir do título do produto |
| 📖 | Lista os atributos (e quais são obrigatórios) de uma categoria |
| 📖 | Lista os tipos de anúncio disponíveis (Clássica, Premium etc.) |
| 📖 | Estima as taxas de venda por tipo de anúncio para um dado preço |
| ✏️ | Cria e publica um novo anúncio |
| ✏️ | Faz upload de imagem (URL pública ou arquivo local) e retorna o ID da foto |
| ✏️ | Faz upload de vídeo (arquivo local) e retorna o |
Gestão de anúncios
Ferramenta | Tipo | Descrição |
| ✏️ | Atualiza preço, estoque, título ou vídeo de um anúncio existente |
| ✏️ | Pausa, ativa ou fecha um anúncio (fechar com vendas é irreversível) |
Perguntas
Ferramenta | Tipo | Descrição |
| ✏️ | Responde uma pergunta de comprador (pública e não editável) |
| 📖/✏️ | Gerencia a blacklist de perguntas (listar, bloquear, desbloquear usuários) |
Envios
Ferramenta | Tipo | Descrição |
| 📖 | Detalhes do envio de uma venda (status, rastreio, endereço, itens) |
| 📖 | Baixa a etiqueta de envio (PDF ou ZPL2) em |
Mensagens
Ferramenta | Tipo | Descrição |
| 📖 | Lê a conversa de pós-venda com o comprador de um pedido |
| ✏️ | Envia mensagem ao comprador (moderada; máx. 350 caracteres) |
Reclamações & Devoluções
Ferramenta | Tipo | Descrição |
| 📖 | Busca reclamações do vendedor (filtros de status e período) |
| 📖 | Detalhes de uma reclamação, incluindo as mensagens do thread |
| ✏️ | Responde dentro do thread de uma reclamação (visível à mediação) |
| 📖 | Lista devoluções de produtos, geralmente ligadas a reclamações |
Reputação & Métricas
Ferramenta | Tipo | Descrição |
| 📖 | Termômetro de reputação e métricas (claims, atrasos, cancelamentos) |
| 📖 | Visitas por anúncio em um período (padrão: últimos 30 dias) |
Catálogo
Ferramenta | Tipo | Descrição |
| 📖 | Busca produtos do catálogo (listings compartilhados com buy box) |
| 📖 | Detalhes do produto de catálogo, incluindo quem vence o buy box |
| ✏️ | Vincula um anúncio existente a um produto de catálogo |
Preço & Mercado
Ferramenta | Tipo | Descrição |
| 📖 | Sugestão de preço competitivo do Mercado Livre para um anúncio |
| 📖 | Termos de busca em alta no marketplace (site ou por categoria) |
| 📖 | Taxa de câmbio atual entre moedas |
Categorias
Ferramenta | Tipo | Descrição |
| 📖 | Categorias de primeiro nível do site |
| 📖 | Detalhes, filhos e restrições de uma categoria (máx. fotos etc.) |
Promoções
Ferramenta | Tipo | Descrição |
| 📖 | Lista campanhas/promoções oferecidas ao vendedor (candidatas e ativas) |
| 📖 | Itens participando de uma promoção, com preço promocional |
| ✏️ | Inscreve um anúncio em uma campanha com o preço oferecido |
Mercado Ads
Ferramenta | Tipo | Descrição |
| 📖 | Lista campanhas de Product Ads (status, orçamento, estratégia) |
| 📖 | Métricas de uma campanha (impressões, cliques, CTR, custo, ACOS) |
Fulfillment (Full)
Ferramenta | Tipo | Descrição |
| 📖 | Estoque armazenado nos centros de fulfillment do Mercado Livre |
Mercado Shops & Depósitos
Ferramenta | Tipo | Descrição |
| 📖 | Informações da Mercado Shop do vendedor (se a conta tiver uma) |
| 📖 | Depósitos/origens de estoque cadastrados pelo vendedor |
Nota: as ferramentas de Mercado Ads, Fulfillment (Full) e Mercado Shops exigem que a conta/aplicativo tenha esses recursos habilitados (escopo de advertising, conta Full, loja criada). Caso contrário, o erro retornado pelo Mercado Livre é exibido claramente pela ferramenta.
Fluxos recomendados
Criar um anúncio
predict_categorycom o título do produto → obtém ocategory_idideal.get_category_attributescom a categoria escolhida → descobre os atributos obrigatórios.(opcional)
get_listing_typeseget_listing_prices→ escolhe o tipo de anúncio e estima as taxas.(opcional)
upload_picturee/ouupload_video→ envia as mídias locais antes, caso não estejam em URLs públicas, e guarda os IDs retornados.create_itemcom todos os atributos obrigatórios preenchidos (evideo_idse houver vídeo) → publica o anúncio.
Se o Mercado Livre rejeitar a criação com erro de validação, o corpo completo do erro é retornado — basta corrigir os campos indicados e tentar novamente.
Operação diária do vendedor
get_questionscomstatus=UNANSWERED→ responde comanswer_question(conversão depende disso).get_orders→ novos pedidos;get_shipment+get_shipment_labelpara despachar.get_claimscomstatus=opened→ entende comget_claim_detaile responde comsend_claim_message(prazos contam para a reputação).get_item_visits+get_my_items→ detecta anúncios com visitas e sem vendas; ajusta preço comget_price_suggestioneupdate_item.get_seller_reputation→ acompanha o termômetro e as métricas de claims/atrasos/cancelamentos.
Uso com Docker Compose
# build da imagem
docker compose build
# autenticação (publica a porta 3333 e imprime a URL para abrir no navegador)
docker compose --profile auth run --rm --service-ports auth
# executar o servidor MCP manualmente (stdio)
docker compose run --rm mcp-mercadolivreOs tokens ficam no volume nomeado meli-data (/app/data/tokens.json dentro do container), compartilhado entre os serviços auth e mcp-mercadolivre.
Configuração nos clientes MCP
Execução local (Node)
Claude Desktop (claude_desktop_config.json), Kimi Code ou Cursor — trecho mcpServers:
{
"mcpServers": {
"mercadolivre": {
"command": "node",
"args": ["/caminho/absoluto/para/mcp_mercadolivre/dist/index.js"],
"env": {
"ML_CLIENT_ID": "seu_app_id",
"ML_CLIENT_SECRET": "seu_client_secret",
"ML_SITE_ID": "MLB"
}
}
}
}O caminho exato do arquivo de configuração de cada cliente (macOS/Windows/Linux) está no guia de instalação.
Execução via Docker
{
"mcpServers": {
"mercadolivre": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--env-file", "/caminho/absoluto/para/mcp_mercadolivre/.env",
"-e", "ML_TOKENS_FILE=/app/data/tokens.json",
"-v", "mcp_mercadolivre_meli-data:/app/data",
"mcp-mercadolivre"
]
}
}
}Importante: rode a autenticação (
docker compose --profile auth run --rm --service-ports auth) antes de usar o servidor via Docker, para que os tokens existam no volume.
Segurança
O servidor inclui um pacote de proteções para operar sua conta com segurança, especialmente enquanto você experimenta.
Modo somente leitura (ML_READ_ONLY)
Defina ML_READ_ONLY=true no .env e nenhuma ferramenta de escrita é registrada — o tools/list expõe apenas 32 ferramentas de leitura (incluindo manage_question_blacklist, que nesse modo aceita somente a ação list; block/unblock retornam erro explicando o modo). Recomendado: use ML_READ_ONLY=true nos primeiros experimentos e só desligue quando estiver confortável.
Perfis de ferramentas (ML_TOOL_PROFILE)
Limita quais ferramentas o servidor expõe:
Perfil | Ferramentas | Total |
| Todas | 42 |
| Apenas leitura | 31 |
| Leitura + responder perguntas, mensagens ao comprador, mensagens em reclamações, blacklist de perguntas | 35 |
| Leitura + criar/atualizar anúncios, upload de mídia, opt-in de catálogo | 37 |
Confirmação de ação irreversível
update_item_status com action="close" exige o parâmetro confirm: true — sem ele, a chamada é recusada com uma mensagem pedindo a confirmação explícita (fechar um anúncio com vendas é irreversível).
Guarda de conteúdo em mensagens
send_message e send_claim_message varrem o texto antes de chamar a API e bloqueiam mensagens contendo e-mails, telefones (formatos BR) ou links/domínios — conteúdo proibido pela moderação do Mercado Livre, que pode sancionar a conta. A mensagem de bloqueio explica o motivo para o texto ser reformulado.
Log de auditoria
Toda invocação de ferramenta de escrita é registrada em audit.log (raiz do projeto, append-only, gitignored) com timestamp, ferramenta, parâmetros (truncados em 500 caracteres) e resultado (ok/error). Ferramentas de leitura não são logadas.
Permissões do arquivo de tokens
Na inicialização e após salvar tokens, o servidor verifica tokens.json: se as permissões forem mais abertas que 0600 (legível por grupo/outros), um aviso é impresso e o modo é corrigido automaticamente para 0600.
Solução de problemas
O cadastro do app rejeita a Redirect URI
http://localhost:3333/callback: o Mercado Livre exige HTTPS para apps em produção, mas aceitahttp://localhostdurante a autenticação. Se o formulário de cadastro recusar, cadastre temporariamente uma URL HTTPS qualquer (ex.https://localhost/callback) e, na hora de autenticar, mantenhaML_REDIRECT_URI=http://localhost:3333/callbackno.env— ou use uma URL HTTPS válida e ajusteML_REDIRECT_URIe oauth-clide acordo.Redirect URI mismatch na autenticação: o
ML_REDIRECT_URIdo.envprecisa ser idêntico ao cadastrado no aplicativo (incluindo porta e path). Qualquer diferença faz o Meli recusar o callback.No tokens stored: rodenpm run auth(ou o serviçoauthdo compose) novamente.Erros 401 persistentes / refresh token expirado: o refresh token tem validade máxima (~6 meses) e é rotacionado a cada refresh — se a conta ficou muito tempo sem uso ou o arquivo de tokens foi perdido, refaça a autenticação.
Erros de escopo/permissão nas ferramentas de Ads, Full ou Shops (403/404): essas APIs exigem recursos extras — escopo de advertising concedido ao app, conta Full habilitada, ou uma Mercado Shop criada. O servidor retorna a mensagem do Meli como está; habilite o recurso na conta/app e tente novamente.
Erros de validação no
create_item: o corpo completo do erro do Meli é retornado — normalmente indica atributos obrigatórios faltando (rodeget_category_attributesna categoria) ou valores fora do permitido. Corrija os campos indicados e reenvie.Etiqueta de envio não encontrada: a etiqueta só existe quando o envio está
ready_to_ship, e tipos logísticos comoflex/self_servicenão têm etiqueta para impressão.
Estrutura do projeto
mcp_mercadolivre/
├── src/
│ ├── index.ts # Servidor MCP: registro das 42 ferramentas
│ ├── meli-client.ts # Cliente HTTP da API Meli (Bearer, retry 401, multipart, binário)
│ ├── auth.ts # OAuth 2.0: URL de autorização, troca/refresh de tokens
│ ├── auth-cli.ts # CLI de autenticação (servidor local :3333 + browser)
│ ├── token-store.ts # Persistência dos tokens em tokens.json (0600)
│ ├── safety.ts # Perfis, read-only, guarda de conteúdo, audit log
│ └── config.ts # Variáveis de ambiente + parser de .env sem dependências
├── docs/
│ ├── instalacao.md # Guia de instalação passo a passo para iniciantes
│ ├── arquitetura.md # Arquitetura, fluxo OAuth e decisões de design
│ ├── tools.md # Referência completa das 42 ferramentas
│ └── api-map.md # Mapa de endpoints da API Meli utilizados e cobertura
├── dist/ # Build (tsc)
├── Dockerfile
├── docker-compose.yml
├── LICENSE # Licença MIT
├── CONTRIBUTING.md # Guia de contribuição
├── .env.example
└── package.jsonDocumentação
docs/instalacao.md — guia de instalação passo a passo (para quem nunca usou MCP)
docs/arquitetura.md — arquitetura interna, fluxo OAuth e estratégia de erros
docs/tools.md — referência detalhada de cada ferramenta (parâmetros, endpoints, notas)
docs/api-map.md — endpoints da API do Mercado Livre utilizados e áreas não cobertas
Contribuindo
Contribuições são muito bem-vindas — issues, sugestões de novas ferramentas e pull requests. Leia o CONTRIBUTING.md para os padrões do código e o checklist de como adicionar uma nova ferramenta.
Licença
Distribuído sob a licença MIT. Veja o arquivo LICENSE para o texto completo.
Autor & Contato
Nome: Gustavo Santos
GitHub: https://github.com/gustavossouza
WhatsApp: +55 41 99101-6997
Available Tools
42 toolsadd_item_to_promotionA
Submit one of your items to a promotion campaign with the offered deal price — this is a REAL write operation: if Meli approves, the item starts being sold at the promotional price for the campaign duration. Confirm the price with the user before calling. Flow: get_promotions (find a 'candidate' campaign) → add_item_to_promotion with the deal_price within the campaign's allowed range. Returns the submission result with item id and status.
Inputs: item_id (required), deal_price (required), promotion_id (required), top_deal_price.
answer_questionA
Post a public answer to a buyer's pre-sale question. The answer is visible to everyone viewing the listing and CANNOT be edited or deleted afterwards — confirm the exact text with the user before sending. Get the question_id from get_questions (typically with status='UNANSWERED'). Returns the answer id, text, status and creation date.
Inputs: text (required), question_id (required).
convert_currencyA
Get the current Mercado Livre exchange rate between two currencies (e.g. USD → BRL). Useful for cross-border pricing or comparing prices across Meli sites. Returns the conversion ratio and both currency codes.
Inputs: to (required), from (required).
create_catalog_listingA
Opt one of your EXISTING listings into catalog competition by linking it to a catalog product — this is a real write operation. The listing keeps its identity but starts competing for the buy box under catalog rules: display and sales conditions change (e.g. free-shipping and price rules may differ from a standalone listing). Confirm with the user before calling. Flow: search_catalog → get_catalog_product (check the winner's price) → create_catalog_listing. The item must belong to the authenticated seller and match the catalog product. Returns the linked item id, status and permalink.
Inputs: item_id (required), catalog_product_id (required).
create_itemA
Create and PUBLISH a new listing on Mercado Livre — this is a real write operation: the item becomes public (immediately or per account settings) and selling fees apply once it sells. Confirm the details with the user before calling. Recommended flow: (1) predict_category with the title to get category_id; (2) get_category_attributes on that category and fill every attribute marked required via the attributes parameter; (3) optionally get_listing_types/get_listing_prices to choose the listing type and estimate fees; (4) call create_item. The title is limited to 60 characters. If Meli rejects the payload with a validation error, the full error body is returned — read it, fix the offending fields (usually missing required attributes) and retry. Returns the created item id, status and permalink.
Inputs: price (required), title (required), category_id (required), available_quantity (required), +9 more.
get_ads_campaign_metricsA
Get performance metrics of a Mercado Ads campaign over a date range (defaults to the last 30 days): impressions, clicks, CTR, cost, attributed sales and ACOS when present. Use this to evaluate ad spend efficiency — a high ACOS means advertising costs eat a large share of the revenue it generates. Get campaign ids from get_ads_campaigns. Requires the advertising scope; scope errors are surfaced clearly. Date format: YYYY-MM-DD.
Inputs: campaign_id (required), date_to, date_from.
get_ads_campaignsA
List the seller's Mercado Ads (Product Ads) campaigns. Use this for advertising questions: which campaigns exist, their status, daily budget and bidding strategy. Gotcha: this requires the advertising scope granted to the app and an active ads account — if either is missing, Meli answers with a scope/permission error, which is surfaced clearly so you know the feature isn't available. Get campaign ids here, then check performance with get_ads_campaign_metrics. Returns a compact list with campaign id, name, status, budget and strategy.
Inputs: limit, offset, status.
get_catalog_productA
Get full details of a catalog product, including who is currently winning the buy box (buy_box_winner: price and seller id). Use this after search_catalog to study the competition before linking your listing with create_catalog_listing — the winner's price is the reference your listing must beat (along with reputation and shipping) to take the buy box. Returns name, attributes, picture URLs, main features and the buy box winner when present.
Inputs: product_id (required).
get_categoryA
Get details of a category: its name, full path from the root, child categories (to keep drilling down the tree) and the listing settings that apply to it — including constraints relevant BEFORE create_item such as max pictures per item and max description length. A category with no children is a leaf and can be used as category_id in create_item; then call get_category_attributes for its mandatory attributes.
Inputs: category_id (required).
get_category_attributesA
Get the attributes defined for a Mercado Livre category. Call this AFTER picking a category with predict_category and BEFORE create_item, to learn which attributes are mandatory (required=true) and what values are allowed. Every attribute flagged as required MUST be included in create_item's attributes parameter or the publication will be rejected with a validation error. Returns id, name, value_type (string/number/boolean/list/...), required flag, and allowed values (id + name) when the attribute is a closed list.
Inputs: category_id (required).
get_claim_detailA
Get the full details of a single claim (reclamação), including its type, status, stage, reason, related order id, the parties involved (complainant = buyer, respondent = seller), the resolution when the claim is closed, and the recent messages in the claim thread. Use this after get_claims to understand a specific claim before replying with send_claim_message. If the messages endpoint is unavailable, messages are simply omitted — the rest of the detail is still returned.
Inputs: claim_id (required).
get_claimsA
Search the authenticated seller's claims (reclamações) — buyer complaints opened against sales. Open claims hurt seller reputation and have response deadlines, so use this to find claims needing attention (e.g. status 'opened'). Optional status filter and date range (ISO 8601); results are paginated with limit/offset. Returns a compact list with claim id, type (e.g. 'claim', 'return'), status, stage (e.g. 'claim', 'mediation'), resource_id (the related order id), reason id and creation date. Call get_claim_detail on a claim id for the full picture.
Inputs: limit, offset, status, date_to, +1 more.
get_fulfillment_stockA
List the seller's stock stored at Mercado Livre fulfillment centers (Full), with available and non-sellable (e.g. damaged) quantities. Use this for inventory questions about Full — for regular (seller-shipped) stock use get_my_items/get_item instead. Gotcha: this only works for accounts enrolled in Full; otherwise Meli answers with an error, which is surfaced clearly.
Inputs: limit.
get_itemA
Get full details of a single Mercado Livre listing by its item id. The id must be the complete id including the site prefix, e.g. 'MLB123456789' — bare numbers do not work. Use this to inspect a specific listing (yours or a competitor's) in depth: stock, sales count, pictures and attributes. For bulk listing of the seller's own items use get_my_items instead. Returns title, price, currency, available_quantity, sold_quantity, condition, status (active/paused/closed/...), permalink, picture URLs and attributes (id/name/value).
Inputs: item_id (required).
get_item_visitsA
Get the number of page visits per listing in a date range (defaults to the last 30 days when no dates are given). Use this to measure listing traffic — a powerful combo is get_my_items + get_item_visits to find listings with many views but few or no sales (a sign the price, pictures or listing type may need work). Accepts up to 50 item ids at once; returns one entry per item id with the total visits in the range.
Inputs: item_ids (required), date_to, date_from.
get_listing_pricesA
Estimate the selling fees for publishing an item at a given price, optionally for a specific category and listing type. Use this BEFORE create_item so the seller knows the commission cost of each exposure plan (Clássica vs Premium) before committing. Returns one entry per listing type with the sale fee percentage, fee amount and related flags for the given price.
Inputs: price (required), category_id, listing_type_id.
get_listing_typesA
List the listing types (exposure plans) available on the configured site, e.g. 'gold_special' (Clássica) and 'gold_pro' (Premium). Each type has different fees and exposure; higher tiers usually charge more commission but boost visibility. Call this (optionally together with get_listing_prices) before create_item to choose the listing_type_id. Returns ids and names.
Inputs: no named parameters.
get_mercado_shopA
Get the seller's Mercado Shop info (id, name, URL, status) if the account has one. Mercado Shops is an optional storefront feature — accounts without a shop get a graceful 'no shop' response instead of a hard error. Use this when the user asks about their store page or wants the shop URL.
Inputs: no named parameters.
get_my_itemsA
List the authenticated seller's own listings, with optional status filter. Use this whenever the user asks about 'my listings/ads/products' — for marketplace-wide search use search_products instead. Status filter values: 'active' (published and visible), 'paused' (temporarily hidden), 'closed' (finished; items with sales usually end here). Results are paginated via limit/offset; each entry is hydrated with id, title, status, price, currency and permalink. Requires authentication.
Inputs: limit, offset, status.
get_order_messagesA
Read the post-sale message conversation with the buyer of a specific order. Use this to see what the buyer asked after the purchase (delivery questions, invoice requests, etc.). The pack id in the messaging API equals the order id. Returns each message with sender/recipient (user id + role, e.g. 'buyer'/'seller'), text, date (ISO 8601) and whether it was read. To reply, use send_message with the same order id.
Inputs: order_id (required), limit.
get_ordersA
List the authenticated seller's orders (sales), newest first (sort=date_desc). Use this for questions about recent sales, revenue, or what a specific buyer purchased. The optional status filter accepts Mercado Livre order statuses such as 'confirmed', 'payment_required', 'payment_in_process', 'paid', 'shipped', 'delivered' and 'cancelled'. Each order includes id, creation date (ISO 8601), status, total amount, currency, buyer nickname, and line items with item id, title, quantity and unit price. Paginated via limit/offset. Requires authentication.
Inputs: limit, offset, status.
get_price_suggestionA
Get Mercado Livre's competitive price suggestion for one of your listings — the price Meli estimates would make the listing more competitive, based on comparable sales. Use it when the user asks whether a listing is priced right or wants to undercut the competition. Gotcha: not every listing has a suggestion (insufficient data); in that case the endpoint returns partial data and whatever comes back is surfaced as-is. Returns current price, suggested price and the basis of the suggestion when present.
Inputs: item_id (required).
get_promotion_itemsA
List the items already participating in a specific promotion campaign, with their promotional price, original price and status. Use this to check which of your items are in a campaign (and at what price) after adding them with add_item_to_promotion, or to audit active discounts. Get the promotion_id from get_promotions. Paginated with limit/offset.
Inputs: promotion_id (required), limit, offset.
get_promotionsA
List the promotions/campaigns Mercado Livre offers to the authenticated seller (daily deals, lightning deals, etc.) — both campaigns you can join (status 'candidate') and ones already running ('started'). Use this to discover discount opportunities, then inspect participants with get_promotion_items or join with add_item_to_promotion. May legitimately return an empty list when there are no active campaigns for the account. Returns a compact list with id, type, status, title and start/finish dates, paginated with limit/offset.
Inputs: limit, offset, status, promotion_type.
get_questionsA
List pre-sale questions buyers asked on the authenticated seller's listings, newest first. Use status='UNANSWERED' to find questions still waiting for a reply — that is the most common use case, since unanswered questions hurt conversion. Other status values: 'ANSWERED', 'DELETED', 'BANNED', 'DISABLED'. Use item_id to restrict to one listing. Each question comes back with its id (needed by answer_question), text, item id, status, creation date (ISO 8601), and the answer (text + date) when one exists. Requires authentication.
Inputs: limit, status, item_id.
get_returnsA
List the authenticated seller's product returns (devoluções) — items buyers sent back, usually linked to a claim. Use this to track return requests and their statuses; call get_claim_detail on the linked claim id for the full context and message thread. Returns a compact list with return id, claim id, order id, status and creation date, paginated with limit/offset. Accounts without returns may yield an API error — it is surfaced gracefully instead of crashing.
Inputs: limit, offset, status.
get_seller_reputationA
Get a seller's reputation profile on Mercado Livre — the authenticated account by default, or any seller by user_id (public data). Use this to check the seller's reputation thermometer and service metrics. The level_id is Meli's color scale: red (1_red) is worst, then orange/yellow/light_green, up to green (5_green) — plus Mercado Líder tiers in power_seller_status (e.g. 'silver', 'gold', 'platinum') for top sellers. Metrics include the rates of claims, delayed handling time and cancellations over the last period; keeping these low is what maintains a green reputation. Returns nickname, registration date, transaction totals (total/completed/canceled) and each metric with its rate and value.
Inputs: user_id.
get_shipmentA
Get the shipping details of a sale: status, substatus, tracking number, dates (ISO 8601), receiver address, shipped items and logistic type (e.g. 'me2', 'flex', 'self_service'). Shipment ids come from orders: each order returned by get_orders has a shipping id (order.shipping.id) — if you only have an order id, call get_orders first to find the shipment id. Status values include 'pending', 'ready_to_ship', 'shipped', 'delivered' and 'cancelled'. Use get_shipment_label to download the printable label for the shipment.
Inputs: shipment_id (required).
get_shipment_labelA
Download the Mercado Envios shipping label for a shipment and save it to a local file. Returns the absolute file path and size in bytes so the user can open/print it. The label comes back as PDF (default) or ZPL2 for thermal printers. Gotchas: the label only exists after the shipment is 'ready_to_ship', and some logistic types (e.g. flex / self-service) do not have a printable label — in those cases Meli returns an error, which is surfaced as-is. Shipment ids come from orders (order.shipping.id); call get_orders first if you only have an order id.
Inputs: shipment_id (required), response_type.
get_site_categoriesA
List the top-level categories of the configured site (MLB by default). This is the entry point for browsing the category tree: pick a category here, then drill down with get_category to reach a leaf category usable in create_item. For a title-driven shortcut to the right leaf category, predict_category is usually faster. Returns a list of {id, name}.
Inputs: no named parameters.
get_trendsA
Get the trending search terms on the marketplace (top searches buyers are making right now). Great for product research and demand discovery; pass a category_id to see niche trends within a specific category (find ids with get_site_categories or predict_category). Returns keyword + URL for each trend, trimmed to the requested limit.
Inputs: limit, category_id.
get_warehousesA
List the seller's registered warehouses (multi-origin stock locations / depósitos) with their ids, descriptions and addresses. Useful for accounts shipping from multiple addresses and for setting up shipping options per origin. Accounts without registered warehouses get an empty list or a clear API error.
Inputs: no named parameters.
manage_question_blacklistA
Manage the seller's questions blacklist. 'list' shows the blocked users; 'block' prevents a user from asking questions on your listings; 'unblock' reverses it. Use 'block' only for abusive users — note this ONLY blocks new questions from that user; they can still buy from you, and blocking/unblocking is a real change to the account, so confirm with the user first. Get user ids from buyers' questions (get_questions) or orders.
Inputs: action (required), user_id.
predict_categoryA
Predict the best Mercado Livre category for a product title. ALWAYS call this BEFORE create_item: create_item requires a category_id, and publishing in the wrong category hurts visibility and can be rejected. Pass the product title you intend to publish and pick the top prediction. After choosing a category, call get_category_attributes to discover which attributes are mandatory for that category. Returns a list of predicted categories with id, name and full path (e.g. 'Celulares e Telefones > Celulares e Smartphones').
Inputs: title (required).
search_catalogA
Search Mercado Livre's product catalog. Catalog products are shared listings where multiple sellers compete for the buy box on price and reputation — opt-ing into catalog can bring much more traffic than a standalone listing. Use this to find the catalog_product_id for a product you sell, then inspect it with get_catalog_product and link your listing with create_catalog_listing. Returns a compact list with product id, name, thumbnail and main attributes, paginated with limit/offset.
Inputs: query (required), limit, offset.
search_productsA
Search public listings on Mercado Livre for the configured site (ML_SITE_ID, default MLB = Brazil). Use this to research competitors, market prices, or find item/category ids by keyword — it searches the whole marketplace, NOT the seller's own listings (use get_my_items for that). Results are paginated: use limit (max 50) and offset to page through. Returns total count plus a compact list with id, title, price, currency, permalink, thumbnail, condition (new/used) and free-shipping flag.
Inputs: query (required), limit, offset, category, +2 more.
send_claim_messageA
Send a message inside a claim (reclamação) thread as the seller. This is a REAL message visible to the buyer AND to Mercado Livre's mediation team — it becomes part of the claim record, so confirm the exact text with the user before sending. The same moderation rules as buyer messaging apply: no contact information, links, phone numbers or e-mails, under risk of sanctions. Use get_claim_detail first to read the thread context. Returns the created message id and date.
Inputs: text (required), claim_id (required).
send_messageA
Send a post-sale message to the buyer of a specific order — this is a REAL message delivered to the buyer, so confirm the exact text with the user before sending. Only for post-sale communication tied to an order. Important Mercado Livre moderation rules: messages are moderated and must NOT contain contact information — no links, phone numbers, e-mails or social media handles; violations can lead to sanctions on the seller's account, up to suspension. Text is limited to 350 characters. Use get_order_messages first to read the conversation context. Returns the sent message id, moderation status and date.
Inputs: text (required), order_id (required).
update_itemA
Update mutable fields of an existing listing owned by the authenticated seller: price, stock (available_quantity), title or video. Use this for price changes and stock adjustments; to change visibility (pause/activate/close) use update_item_status instead. Only the provided fields are sent. Gotcha: the title can only be changed while the item has no sales — once units are sold, Meli rejects title updates. Returns the updated item id, price, available_quantity and status.
Inputs: item_id (required), price, title, video_id, +1 more.
update_item_statusA
Change the visibility status of a listing: 'pause' temporarily hides it (reversible), 'activate' re-publishes a paused item, and 'close' finishes the listing. WARNING: closing is effectively irreversible for items that had sales — a closed item cannot be reactivated; a new listing would have to be created. Because of that, action='close' is refused unless confirm=true is passed explicitly. Always confirm with the user before closing. Paused items keep their history and can be reactivated at any time with 'activate'. Returns the item id and its new status.
Inputs: action (required), item_id (required), confirm.
upload_pictureA
Upload a picture to the seller's Mercado Livre account and get back a picture id. Provide exactly ONE of: url (a public image URL that Meli will download) or file_path (a local image file, uploaded as multipart). Use the returned id in create_item's pictures when the images are local files; for images already hosted at a public URL, passing the URL directly to create_item also works. Returns the picture id, source URL and size variations.
Inputs: url, file_path.
upload_videoA
Upload a product video from a local file to the seller's Mercado Livre account and get back a video_id. Pass that video_id to create_item or update_item to attach the video to a listing. Only local files are supported (mp4, mov, avi, mkv, webm). Meli enforces size/duration limits on product videos — very large or long files are rejected by the API, and in that case the API error is returned as-is so you can adjust the file and retry. Returns the video_id plus basic response info (id, max size/quality when present).
Inputs: file_path (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 42 tools
Despite the large set, the descriptions draw very clear boundaries between similar-sounding tools (e.g. search_products vs search_catalog, get_my_items vs get_item, send_message vs send_claim_message, get_promotions vs get_promotion_items). Each tool targets a distinct resource or action, and the detailed flow guidance further reduces misselection risk.
All tool names follow a consistent snake_case verb_noun pattern (get_*, create_*, update_*, send_*, search_*, upload_*, etc.). Compound names like add_item_to_promotion and manage_question_blacklist still fit the same convention, with no camelCase or mixed verb styles.
42 tools is well beyond the threshold where a tool set starts to feel heavy for an agent, and it spans many subdomains (listings, ads, claims, catalog, fulfillment, etc.). While the breadth mirrors Mercado Livre's seller API, the count increases selection burden and context cost considerably.
The surface covers most core seller workflows: listings, orders, questions, messages, shipments, claims, returns, promotions, ads, catalog, reputation and visits. However, there are minor lifecycle gaps such as no single-order retrieval by id, no return-processing actions, no promotion removal, and no ads campaign write operations.
Maintenance
Related MCP Connectors
Hosted MCP server for 3Dsellers, the multichannel selling platform. Connect Claude, ChatGPT, Cursor, VS Code or any MCP client and manage your eBay, Amazon, Walmart, Etsy, Shopify, WooCommerce and TikTok Shop stores in plain language: search and update products, publish listings, sync inventory, tag and track orders, run bulk actions and CSV imports, and reply to customer messages. 120+ tools. Sign in with OAuth or a personal token. No eBay developer account and nothing to install. Setup guides and config examples for every client: https://github.com/3dsellers/ebay-mcp-server
Run storefronts, listings, orders, content, fulfillment, and analytics through AI.
Run an eBay seller account from your AI assistant: orders, listings, stock, fees and payouts.
AI marketplace: search, buy, sell across Amazon, eBay, AliExpress. 13 tools.
Related MCP Servers
- AlicenseCqualityAmaintenanceProvides AI assistants with comprehensive access to eBay's Sell APIs, including 325 tools for inventory management, order fulfillment, marketing campaigns, analytics, and more.379498 npm194MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search, compare, buy, and sell products across multiple e-commerce platforms through 13 marketplace tools.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables eBay sellers to manage inventory, view orders, handle messages, and browse listings through AI assistants using eBay seller APIs.-
- AlicenseAqualityCmaintenanceEnables AI agents to read and work with Wildberries, Ozon, and Yandex Market seller accounts through typed tools, multi-account support, unified data schemas, rate limiting, audit, and encrypted credential storage.1767 npmMIT