Servidor MCP
O Servidor MCP (Model Context Protocol) da OlaClick permite que agentes de IA e clientes compatíveis com MCP interajam com a OlaClick Public API. Conecte seu assistente de IA à OlaClick e consulte pedidos, clientes e dados de vendas de produtos usando linguagem natural.
O que é o MCP?
O Model Context Protocol é um padrão aberto que permite que assistentes de IA (como Claude, Cursor, ou qualquer cliente compatível com MCP) interajam de forma segura com APIs externas através de uma interface padronizada. Em vez de montar chamadas de API manualmente, seu assistente de IA pode usar as ferramentas da OlaClick diretamente.
O servidor MCP não lê mais apenas os dados do seu restaurante — ele pode operar toda a pilha: criar um pedido e conduzi-lo por seu ciclo de vida (adicionar itens, registrar pagamentos e descontos, aplicar cupons, mudar o status, cancelá-lo), cotar preços de entrega antes de criar um pedido, executar promoções e cupons de ponta a ponta (criar, atualizar, excluir), gerenciar assinaturas de webhook (criar, atualizar, excluir), expandir o menu (criar produtos e variantes, sincronizar categorias de modificadores), coordenar a logística (atribuir um entregador, atualizar o status de entrega), gerenciar clientes e seus endereços de entrega (criar, atualizar, listar, excluir), verificar o status da loja em apps de delivery e gerenciar conexões de connectors.
Duas formas de autenticar
- OAuth (recomendado) — para Claude.ai, Claude Desktop, Claude Code, ChatGPT e qualquer cliente MCP que suporte OAuth 2.1. Nenhuma API key para gerar ou colar: você faz login com sua conta do painel OlaClick e autoriza o connector para a filial em que está logado. Apenas usuários Admin ou Manager podem autorizar um connector.
- API key — para configurações locais/stdio e clientes sem suporte a OAuth. Você gera uma chave no painel e a envia você mesmo (header ou variável de ambiente).
Ambos os caminhos acessam as mesmas ferramentas e têm o mesmo escopo de permissões (veja Permissões (scopes)).
Ferramentas disponíveis
O servidor MCP da OlaClick expõe as ferramentas abaixo, agrupadas por domínio. Categoria é derivada do método HTTP subjacente: read (GET) nunca altera dados, write (POST/PUT/PATCH) cria ou atualiza dados, e destructive (DELETE) remove ou cancela algo — veja Ferramentas de escrita: como se comportam.
Orders
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
get_orders | Recupera pedidos com filtros (status, tipo de serviço, origem, datas) | orders:read | read |
get_order | Obtém um único pedido pelo UUID: itens, pagamentos, descontos, status | orders:read | read |
list_tables | Lista zonas e suas mesas, para um table_id válido em create_order | orders:read | read |
get_products_sold | Estatísticas de vendas de produtos (mais vendidos, quantidades, receita) | orders:read | read |
create_order | Cria um pedido (um rascunho por padrão) | orders:write | write |
update_order | Edita campos básicos de um pedido criado através da API | orders:write | write |
update_order_status | Avança o status de um pedido, incluindo confirmar um rascunho | orders:write | write |
cancel_order | Cancela um pedido criado através da API | orders:write | write |
add_order_combos | Adiciona um ou mais itens a um pedido | orders:write | write |
remove_order_combo | Cancela um item de um pedido | orders:write | destructive |
add_order_payment | Registra um pagamento em um pedido | orders:write | write |
remove_order_payment | Cancela um pagamento de um pedido | orders:write | destructive |
add_order_discount | Aplica um desconto manual a um pedido | orders:write | write |
remove_order_discount | Remove um desconto (ou cupom) de um pedido | orders:write | destructive |
apply_order_coupon | Resgata um código de cupom em um pedido | orders:write | write |
Promotions
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
get_active_promotions | Promoções resgatáveis neste momento, filtráveis por tipo de serviço e aplicabilidade | promotions:read | read |
list_promotions | Toda promoção atualmente válida (dentro do período, publicada, com resgates restantes) | promotions:read | read |
get_promotion | Obtém uma única promoção (cupom) pelo UUID | promotions:read | read |
create_promotion | Cria uma promoção: código, desconto, regras de elegibilidade | promotions:write | write |
update_promotion | Atualiza parcialmente uma promoção (pode definir um campo, não limpá-lo) | promotions:write | write |
delete_promotion | Exclui uma promoção — não pode ser desfeito | promotions:write | destructive |
Webhooks
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
list_webhooks | Lista todas as configurações de webhook | webhooks:read | read |
get_webhook | Obtém uma única configuração de webhook pelo UUID | webhooks:read | read |
create_webhook | Registra uma nova URL de webhook para receber notificações de eventos | webhooks:write | write |
update_webhook | Atualiza parcialmente uma configuração de webhook | webhooks:write | write |
delete_webhook | Remove uma assinatura de webhook — as entregas cessam imediatamente | webhooks:write | destructive |
Menu
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
get_menu | Catálogo do menu: categorias, produtos, preços, disponibilidade, imagens | menu:read | read |
list_categories | Lista categorias do menu (id, nome, posição, tipo, visibilidade) | menu:read | read |
get_category | Obtém uma categoria pelo UUID | menu:read | read |
list_products | Lista paginada de produtos, opcionalmente filtrada por categoria | menu:read | read |
get_product | Obtém um produto pelo UUID | menu:read | read |
list_product_variants | Lista as variantes de um produto (nome, preço) | menu:read | read |
list_kitchens | Lista as cozinhas da empresa | menu:read | read |
list_modifier_categories | Lista categorias de modificadores com seus modificadores | menu:read | read |
update_product | Atualiza o nome ou a descrição de um produto | menu:write | write |
create_product | Cria um produto com 1 a 30 variantes (somente JSON, sem imagem) | menu:write | write |
create_product_variant | Cria uma variante em um produto existente | menu:write | write |
update_product_variant | Atualiza parcialmente uma variante de produto | menu:write | write |
sync_product_modifier_categories | Substitui as associações de categorias de modificadores de um produto | menu:write | write |
Logistics
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
assign_rider | Atribui ou atualiza o entregador de um pedido | logistics:write | write |
unassign_rider | Remove o entregador atribuído de um pedido | logistics:write | destructive |
update_delivery_status | Atualiza o status de entrega de um pedido | logistics:write | write |
report_rider_position | Reporta a posição GPS atual do entregador | logistics:write | write |
Company & users
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
get_company | Perfil da empresa: identidade, localização, horário de funcionamento, indicador de aberto agora | companies:read | read |
list_payment_methods | Métodos de pagamento ativos da empresa | payment-methods:read | read |
list_users | Usuários da empresa paginados, filtráveis por função e status da conta | users:read | read |
get_clients | Lista clientes com filtros (nome, telefone, status, origem, pontos) | clients:read | read |
get_client | Obtém um único cliente pelo UUID: perfil, pontos, estatísticas de pedidos | clients:read | read |
create_client | Cria um novo cliente | clients:write | write |
update_client | Atualiza parcialmente o perfil de um cliente | clients:write | write |
Addresses
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
list_addresses | Lista os endereços de entrega de um cliente | addresses:read | read |
create_address | Cria um endereço de entrega para um cliente | addresses:write | write |
update_address | Atualiza parcialmente um endereço de entrega | addresses:write | write |
delete_address | Exclui um endereço de entrega | addresses:write | destructive |
Delivery
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
get_delivery_pricing | Obtém a configuração de preços de entrega da empresa | orders:read | read |
get_delivery_quote | Obtém uma cotação de preço de entrega para um endereço | orders:read | read |
Cash registers
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
list_cashiers | Lista os caixas da empresa (id, nome, padrão, aberto ou fechado); use o id para filtrar os balanços | cashiers:read | read |
list_cashier_balances | Aberturas e fechamentos de caixa: valor esperado, valor contado, sobra/falta e detalhamento por método de pagamento; filtre por status, caixa e intervalo de datas | cashiers:read | read |
get_cashier_balance | Obtém um único balanço de caixa pelo UUID | cashiers:read | read |
Dashboard
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
get_menu_visits_today | Visitas ao menu digital registradas hoje | reports:read | read |
get_menu_performance | Visitas ao menu digital, carrinhos confirmados e pedidos criados em um intervalo de datas, comparado com o período anterior | reports:read | read |
get_menu_conversion | As mesmas métricas em porcentagem das visitas ao menu | reports:read | read |
Other
| Ferramenta | O que faz | Scope necessário | Categoria |
|---|---|---|---|
get_store_status | Se a loja está aberta em cada app de delivery | stores:read | read |
list_conections | Lista conexões do connector autenticado | conections:read | read |
update_conection_status | Aceita ou rejeita uma conexão pendente | conections:write | write |
Ferramentas de escrita: como se comportam
Argumentos são os parâmetros de path e os campos de corpo do endpoint REST, achatados em uma única lista de argumentos com os mesmos nomes da API (ex.: create_order recebe service_type, client_id, table_id, ... — os mesmos campos do corpo de POST /v1/orders; add_order_combos recebe id, o UUID do pedido vindo do path, mais combos, o corpo).
Validação local é executada antes de qualquer chamada HTTP: enums, formato de UUID, limites numéricos e campos obrigatórios são verificados no próprio servidor MCP, da mesma forma que as ferramentas de leitura já validam um tamanho de página ou um UUID. Uma chamada malformada nunca chega à OlaClick.
create_order e idempotency_key: o endpoint REST exige um header Idempotency-Key. A ferramenta o expõe como um argumento opcional idempotency_key; quando omitido, o servidor gera um para você. Reutilize o mesmo idempotency_key ao repetir uma chamada que falhou — a API reproduz o resultado original em vez de criar um segundo pedido.
Anotações MCP: cada ferramenta anuncia readOnlyHint, destructiveHint e idempotentHint de acordo com sua categoria (veja as tabelas acima). Clientes MCP que respeitam essas dicas — Claude Desktop, Cursor e outros — podem pedir sua confirmação antes de executar uma ferramenta destructive.
Erros: uma chamada que falha retorna isError: true com os detalhes RFC 7807 da API (type, detail e um errors[] por campo quando aplicável) como resultado da ferramenta, em vez de uma exceção lançada, para que o assistente possa ler o motivo e corrigir a chamada (ex.: um campo obrigatório ausente, ou um 422 coupon_not_applicable).
Scopes são aplicados pela Public API, não pelo servidor MCP: uma ferramenta de escrita precisa do seu scope *:write correspondente na chave conectada (ex.: orders:write para create_order), da mesma forma que uma ferramenta de leitura precisa do seu scope *:read.
Permissões (scopes)
Seja autorizando um connector via OAuth ou gerando uma API key, o acesso é dividido nos mesmos scopes. Conceda apenas o que o assistente precisa.
| Scope | Desbloqueia |
|---|---|
menu:read | Ler categorias e produtos do menu |
menu:write | Criar e atualizar produtos |
orders:read | Ler pedidos |
orders:write | Criar pedidos, atualizar status, itens, pagamentos e descontos do pedido, e cancelar pedidos |
promotions:read | Ler promoções ativas e cupons |
promotions:write | Criar, atualizar e excluir promoções (cupons) |
clients:read | Ler a lista de clientes com filtros e paginação |
clients:write | Criar e atualizar clientes |
addresses:read | Ler endereços de entrega de clientes |
addresses:write | Criar, atualizar e excluir endereços de entrega de clientes |
reports:read | Ler relatórios |
webhooks:read | Listar e visualizar configurações de webhook |
webhooks:write | Criar, atualizar e excluir webhooks |
companies:read | Ler informações da empresa |
payment-methods:read | Ler os métodos de pagamento da empresa |
stores:read | Ler o status aberto/fechado da loja em apps de delivery |
users:read | Ler a lista de usuários da empresa com filtro de função e paginação |
fiscal-notes:write | Criar e atualizar notas fiscais |
logistics:write | Atribuir entregadores e atualizar o status de entrega |
cashiers:read | Ler caixas e aberturas e fechamentos de caixa |
Início Rápido
Pré-requisitos
- Uma conta no painel OlaClick (Admin ou Manager) para OAuth, ou uma API Key da OlaClick (gerada no painel do restaurante em Integrations > API Keys) para clientes stdio/locais
- Um cliente compatível com MCP (Claude Desktop, Claude Code, Cursor, VS Code com Copilot, etc.)
Configuração
O servidor MCP da OlaClick usa transporte HTTP (SSE). Os clientes se conectam ao endpoint remoto — nenhuma instalação local é necessária.
Configuração do cliente
Claude.ai / Claude Desktop (OAuth)
- Vá em Settings → Connectors → Add custom connector.
- Cole a URL do servidor:
https://public-api.olaclick.app/mcp. - Clique em Connect.
- Faça login no painel OlaClick.
- Revise as permissões solicitadas.
- Clique em Authorize.
- Você está de volta no Claude, conectado.
Os tokens são de curta duração e renovados automaticamente — você não precisará fazer login novamente, a menos que o acesso seja revogado. Você pode revogar o connector a qualquer momento no painel OlaClick.
Claude Code (OAuth)
claude mcp add --transport http olaclick https://public-api.olaclick.app/mcp
Depois execute /mcp dentro do Claude Code e siga o prompt para fazer login.
ChatGPT (OAuth)
O ChatGPT se conecta a servidores MCP remotos através do Developer Mode (planos Pro, Plus, Business, Enterprise e Education, na web).
- Vá em Settings → Apps & Connectors → Advanced settings e habilite o Developer mode.
- De volta em Apps & Connectors, clique em Create (ou +) para adicionar um connector.
- Cole a URL do servidor:
https://public-api.olaclick.app/mcpe escolha OAuth como autenticação. - Faça login no painel OlaClick, revise as permissões solicitadas e clique em Authorize.
- Inicie uma conversa, habilite o connector OlaClick no campo de mensagem, e pergunte o que precisar.
Ferramentas de escrita (criar pedido, criar produto, etc.) são anotadas como writes e as irreversíveis (cancelar um pedido, excluir uma promoção ou um webhook) como destructive, para que o ChatGPT possa aplicar suas próprias salvaguardas; se ele pede sua confirmação depende do ChatGPT e das suas configurações. Os tokens são de curta duração e renovados automaticamente.
Cursor
Add to CursorOu adicione manualmente ao .cursor/mcp.json do seu projeto:
{
"mcpServers": {
"olaclick": {
"url": "https://public-api.olaclick.app/mcp",
"headers": {
"Authorization": "Bearer olk_live_YOUR_KEY_HERE"
}
}
}
}
Claude Desktop
Adicione o seguinte ao arquivo de configuração do Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"olaclick": {
"url": "https://public-api.olaclick.app/mcp",
"headers": {
"Authorization": "Bearer olk_live_YOUR_KEY_HERE"
}
}
}
}
VS Code (Copilot / Kiro)
Adicione o seguinte a .vscode/mcp.json ou .kiro/settings/mcp.json:
{
"mcpServers": {
"olaclick": {
"url": "https://public-api.olaclick.app/mcp",
"headers": {
"Authorization": "Bearer olk_live_YOUR_KEY_HERE"
}
}
}
}
Remote HTTP (Hosted)
Conecte-se ao servidor MCP da OlaClick diretamente via HTTP:
{
"mcpServers": {
"olaclick": {
"url": "https://public-api.olaclick.app/mcp",
"headers": {
"Authorization": "Bearer olk_live_YOUR_KEY_HERE"
}
}
}
}
No modo HTTP, a API key é enviada através do header
Authorization: Bearerem cada conexão. Nenhuma variável de ambiente é necessária. Este é o caminho da API key — se você autorizar via OAuth (veja acima), as ferramentas deixam de expor um parâmetroapi_key, já que a sessão já está autenticada.
Exemplos de Prompts
Depois de conectado, tente perguntar ao Claude:
- "Mostre os pedidos de hoje e seus status"
- "Quais produtos venderam mais esta semana?"
- "Crie um pedido para viagem para a María com 2 cheeseburgers e uma Coca, pago em dinheiro"
- "Adicione um novo produto chamado 'Veggie Wrap' por $8.50 na categoria Sandwiches"
- "Liste os produtos na categoria Drinks com seus preços"
- "Quais promoções estão ativas agora?"
Ações de escrita (criar um pedido, criar um produto) são anotadas como writes e as irreversíveis como destructive; o Claude decide, com base nessas anotações e nas suas configurações, se deve pedir sua confirmação antes de executá-las.
Solução de problemas
- "Authorization failed" — certifique-se de ter feito login como um usuário Admin ou Manager; outras funções não podem autorizar um connector.
- "Couldn't reach the MCP server" — verifique se a URL termina em
/mcp. - Tokens expiram — o Claude os renova automaticamente; se o connector foi revogado, basta reconectar.
Referência de Ferramentas
Toda ferramenta valida seus argumentos antes de chamar a API: um tipo incorreto, um UUID malformado ou um tamanho de página fora do intervalo é rejeitado pelo servidor MCP e nunca chega à OlaClick.
get_orders
Recupera uma lista paginada de pedidos com filtros opcionais.
Nota: Se nenhum
start_datefor informado, o padrão são os pedidos de hoje.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
order_id | string | Não | UUID ou ID público (ex.: PE-1234567890) para obter um único pedido |
status | string | Não | PENDING, PREPARING, READY, DELIVERED, FINALIZED, CANCELLED |
service_types | string | Não | DELIVERY, TAKEAWAY, ONSITE, TABLE (separados por vírgula) |
source | string | Não | Filtra por origem (ex.: web, ifood, rappi, uber) |
payment_status | string | Não | Filtra por status de pagamento (ex.: PAID,PENDING) |
payment_method_ids | string | Não | UUIDs de métodos de pagamento separados por vírgula |
owner_ids | string | Não | UUIDs de owner/caixa separados por vírgula |
rider_ids | string | Não | UUIDs de entregadores separados por vírgula |
delivered_by | string | Não | Filtra por quem entregou (ex.: MERCHANT,IFOOD,PICKER) |
delivery_status | string | Não | Filtra por status de entrega |
is_scheduled | string | Não | Filtra pedidos agendados (true ou false) |
client_id | string | Não | Filtra por UUID do cliente |
public_id | string | Não | Busca por ID público parcial do pedido |
cancelation_reason | string | Não | Filtra por motivo de cancelamento |
start_date | string | Não | Data inicial (YYYY-MM-DD) |
end_date | string | Não | Data final (YYYY-MM-DD) |
start_time | string | Não | Horário inicial (HH:mm:ss) |
end_time | string | Não | Horário final (HH:mm:ss) |
time_type | string | Não | Coluna de data a filtrar (padrão: pending_at) |
timezone | string | Não | Timezone para os filtros de data (padrão: timezone da empresa) |
page | number | Não | Número da página (padrão: 1) |
per_page | number | Não | Itens por página (1-100, padrão: 50) |
Exemplo de prompt:
"Mostre os pedidos de delivery pendentes de hoje"
Formato da resposta:
{
"data": [
{
"id": "9c4f4203-9e2c-403d-88cc-7c0ce9e0f572",
"public_id": "PE-9799906639",
"status": "finalized",
"service_type": "onsite",
"source": "OUTBOUND",
"utm_source": "meta",
"utm_campaign": "combos-julio",
"client": {
"name": "John Doe"
},
"address": {
"city": "Lima",
"area": "Miraflores"
},
"total": 90,
"total_paid": 90,
"total_tips": 0,
"total_discounts": 0,
"delivery_price": 0,
"service_fee_price": 0,
"combos_price": 90,
"created_at": "2026-06-23T18:23:42+00:00",
"updated_at": "2026-06-23T18:56:00+00:00"
}
],
"pagination": {
"current_page": 1,
"per_page": 50,
"total": 12,
"has_more": false
}
}
get_clients
Recupera uma lista paginada de clientes com filtros opcionais.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
filter_name | string | Não | Correspondência parcial no nome do cliente (ignora acentuação) |
filter_phone_number | string | Não | Corresponde ao prefixo do número de telefone |
filter_country_calling_code | string | Não | Código de discagem do país (usado com phone_number) |
filter_type | string | Não | Classificação por frequência (separados por vírgula): ELITE_BUYER, TOP_BUYER, FREQUENT_BUYER, REPEAT_BUYER, BUYER, NO_BUYER |
filter_status | string | Não | Classificação por recência (separados por vírgula): ACTIVE, INACTIVE, SLEEPING, AT_RISK |
filter_source | string | Não | chatbot, ecommerce, panel (separados por vírgula) |
filter_available_points | number | Não | Clientes com available_points maior que este valor |
filter_used_points | number | Não | Clientes com used_points maior que este valor |
sort_by | string | Não | name, phone_number, available_points, used_points, source, total_orders, address |
direction | string | Não | asc ou desc |
include_addresses | boolean | Não | Incluir os endereços do cliente na resposta |
simple_paginate | boolean | Não | Usar paginação simples (mais rápida, sem contagem total) |
page | number | Não | Número da página (padrão: 1) |
per_page | number | Não | Itens por página (1-100, padrão: 25) |
Todo cliente carrega duas classificações independentes, ambas calculadas pela OlaClick:
type— com que frequência compra, pelo número total de pedidos:ELITE_BUYER(mais de 7 pedidos),TOP_BUYER(5–7),FREQUENT_BUYER(3–4),REPEAT_BUYER(2),BUYER(1),NO_BUYER(0).status— há quanto tempo comprou, pelos dias desde o último pedido:ACTIVE(menos de 16 dias),INACTIVE(16–30),SLEEPING(31–91),AT_RISK(mais de 91 dias, ou nunca pediu).
Combine-os para montar audiências: filter_status=SLEEPING encontra clientes a
ponto de churn, enquanto filter_status=AT_RISK mais um type diferente de NO_BUYER encontra
clientes inativos que vale a pena reconquistar.
Exemplo de prompt:
"Liste meus 10 principais clientes ordenados pelo total de pedidos"
Formato da resposta:
{
"data": [
{
"id": "9c8e720f-31b1-485a-85fa-0aaf552faaa9",
"name": "John Doe",
"email": "john@example.com",
"phone_number": "3001234567",
"country_calling_code": "57",
"available_points": 150,
"used_points": 0,
"status": "AT_RISK",
"type": "BUYER",
"source": "ecommerce",
"total_orders": 8,
"created_at": "2024-07-19T02:28:48+00:00"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total": 340,
"has_more": true
}
}
create_client
Cria um novo cliente para a empresa autenticada: nome, número de telefone (com código de discagem do país) e um email opcional.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do cliente, 1-150 caracteres |
phone_number | string | Sim | Número de telefone nacional, sem o código do país. Somente dígitos |
country_calling_code | string | Sim | Código de discagem do país, sem o "+" inicial, ex. "51" para o Peru |
email | string | Não | Endereço de email |
Exemplo de prompt:
"Crie um cliente chamado María López, telefone 987654321, código de país 51"
Um número de telefone duplicado falha com 422 client_already_exists.
update_client
Atualiza parcialmente um cliente pelo UUID: nome, número de telefone, código de discagem do país, ou email. Apenas os campos enviados são alterados.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do cliente |
name, phone_number, country_calling_code, email | — | Não* | *Ao menos um obrigatório |
Exemplo de prompt:
"Atualize o email do cliente X para maria@example.com"
list_addresses
Lista os endereços de entrega de um cliente: endereço completo, coordenadas, distrito de entrega (área), e qual é o padrão. Paginado.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
client_id | string (UUID) | Sim | UUID do cliente para listar os endereços |
page | integer | Não | Número da página (padrão: 1) |
per_page | integer | Não | Itens por página, 1-100 |
Exemplo de prompt:
"Liste os endereços salvos do cliente 9c8e720f-31b1-485a-85fa-0aaf552faaa9"
create_address
Cria um novo endereço de entrega para um cliente: endereço, complemento opcional, referência,
coordenadas e distrito de entrega. Retorna o endereço criado, cujo id pode ser usado como
address_id ao criar um pedido DELIVERY.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
client_id | string (UUID) | Sim | Cliente ao qual este endereço pertence |
address | string | Sim | Endereço, 1-191 caracteres |
complement | string | Não | Apartamento, sala, andar, etc. Máximo de 100 caracteres |
reference | string | Não | Um ponto de referência ou nota para ajudar a encontrar o endereço. Máximo de 100 caracteres |
latitude, longitude | number | Não* | *Ambos ou nenhum, graus decimais |
area_id | string (UUID) | Não | Id do distrito de entrega, para merchants precificados por distrito |
default | boolean | Não | Se este se torna o endereço de entrega padrão do cliente |
Exemplo de prompt:
"Salve um novo endereço para o cliente X em Av. Larco 345, Miraflores, lat -12.1211, long -77.0295, e torne-o o padrão"
update_address
Atualiza parcialmente um endereço de entrega de cliente pelo UUID. Apenas os campos enviados são alterados; o cliente proprietário não pode ser alterado. Retorna o endereço atualizado.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do endereço |
address, complement, reference, latitude, longitude, area_id, default | — | Não | Mesmo formato de create_address; latitude/longitude ainda devem ser enviados juntos |
Exemplo de prompt:
"Atualize o endereço X para latitude -12.1211 e longitude -77.0295"
delete_address
Exclui um endereço de entrega de cliente pelo UUID. Não pode ser desfeito.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do endereço |
get_delivery_pricing
Obtém a configuração de preços de entrega da empresa autenticada: se a entrega está ativa,
o modo de precificação e os parâmetros específicos do modo. Chame isso primeiro, antes de
get_delivery_quote, para saber qual modo de precificação se aplica e quais entradas a chamada de cotação
precisa — FIXED e BY_DISTRICT já trazem o preço de entrega nesta resposta, sem necessidade de chamada
de cotação.
Sem parâmetros. Equivale a GET /v1/delivery/pricing.
Exemplo de prompt:
"Como meu restaurante cobra pela entrega?"
get_delivery_quote
Resolve o preço de entrega para um endereço. Envie latitude/longitude para os modos
BY_AREA, BY_DRIVE_DISTANCE, ou BY_RANGE, ou district_id para BY_DISTRICT — chame
get_delivery_pricing primeiro para saber qual. Um preço de 0 com uma área nula significa que o endereço
está fora de cobertura, mas o merchant ainda assim o aceita.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
latitude, longitude | number | Não* | *Ambos ou nenhum, graus decimais |
district_id | string (UUID) | Não | Id do distrito a partir de districts[] de get_delivery_pricing |
Exemplo de prompt:
"Quanto custaria a entrega para latitude -34.5955, longitude -58.3930?"
get_menu
Recupera o catálogo do menu: o que você vende, a que preço, e se está disponível. Esta é a fonte para construir catálogos de produtos e feeds de anúncios (Meta / Google Shopping).
Nota: o menu não é paginado — um catálogo grande chega em uma única resposta. Envie
category_slugpara limitar a resposta a uma categoria. A ferramenta ainda busca o menu completo e o filtra para você.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
category_slug | string | Não | Retorna apenas a categoria cujo slug corresponder (ex.: combos). Use o valor de slug retornado por esta ferramenta para cada categoria, não o nome ou id da categoria. Um slug desconhecido retorna um erro listando os slugs disponíveis. |
available_only | boolean | Não | Remove produtos atualmente indisponíveis |
Exemplo de prompt:
"Liste meus combos com os preços e me diga quais estão fora de estoque"
Formato da resposta:
{
"data": {
"categories": [
{
"id": "026de0fc-85d9-47cd-9c34-627996b6c01c",
"slug": "combos",
"name": "Combos",
"position": 0,
"products": [
{
"id": "9c4f4203-9e2c-403d-88cc-7c0ce9e0f572",
"slug": "combo-classic-smash",
"name": "Combo Classic Smash",
"description": "Smash burger with fries",
"variants": [
{
"id": "6b2f1a04-1c7e-4a2b-9f11-2d8e0b3c4d55",
"name": "Default",
"price": 26,
"currency": "PEN"
}
],
"available": true,
"image_url": "https://assets.olaclick.app/combo-classic-smash.webp"
}
]
}
]
}
}
Os preços estão em unidades principais (26 significa 26.00) com uma currency ISO 4217.
image_url é apenas a imagem principal. Produtos sem variantes são omitidos,
já que não têm preço.
get_products_sold
Recupera estatísticas sobre os produtos mais vendidos.
Nota: Se nenhum
start_datefor informado, o padrão são os últimos 7 dias.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
include | string | Não | Agrupamento: products, products_modifiers, freehand |
show_products | number | Não | Limita aos top N produtos |
category_ids | string | Não | IDs de categoria separados por vírgula |
combo_type | string | Não | Filtro de tipo de combo freehand (somente quando include=freehand) |
status | string | Não | Status de pedido (ex.: finalized,delivered) |
sources | string | Não | Origens de pedido (ex.: inbound,outbound) |
service_types | string | Não | Tipos de serviço (ex.: delivery,onsite) |
start_date | string | Não | Data inicial (YYYY-MM-DD) |
end_date | string | Não | Data final (YYYY-MM-DD) |
timezone | string | Não | Timezone (padrão: timezone da empresa) |
page | number | Não | Número da página (padrão: 1) |
per_page | number | Não | Itens por página (1-100, padrão: 25) |
Exemplo de prompt:
"Quais são meus 5 produtos mais vendidos esta semana?"
Formato da resposta:
{
"data": [
{
"product_name": "Combo Classic Smash",
"product_quantity": 41,
"average_price": 39,
"total_sales": 1599,
"modifiers": [],
"product_id": "9c4f4203-9e2c-403d-88cc-7c0ce9e0f572",
"variant_id": "9c4f4203-a0ec-45bc-9810-3a8ada0838dd"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total": 45,
"has_more": true
}
}
update_product
Atualiza o nome e/ou a descrição de um produto.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
product_id | string | Sim | UUID do produto a atualizar |
name | string | Não** | Novo nome do produto (máx. 191 caracteres) |
description | string | Não** | Nova descrição do produto |
**Ao menos um entre name ou description deve ser enviado.
Exemplo de prompt:
"Renomeie o produto 9c4f4203-9e2c-403d-88cc-7c0ce9e0f572 para 'Double Smash Burger'"
Formato da resposta:
{
"data": {
"id": "9c4f4203-9e2c-403d-88cc-7c0ce9e0f572",
"name": "Double Smash Burger",
"description": "Two smashed beef patties with cheese"
}
}
list_categories
Lista as categorias do menu da empresa: id, name, position, type, visible. Sem
produtos, sem slug. Use-a para explorar a estrutura do catálogo antes de listar produtos.
Sem parâmetros. Equivale a GET /v1/menu/categories.
Exemplo de prompt:
"Quais categorias meu menu tem, e quais estão ocultas?"
get_category
Obtém uma única categoria do menu pelo UUID.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID da categoria |
Equivale a GET /v1/menu/categories/{id}. Um id que não seja UUID é rejeitado localmente.
list_products
Lista paginada de produtos: id, name, description, position, visible,
category_id por produto. Sem variantes, sem slug.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | integer | Não | Número da página, 1 ou mais (padrão: 1) |
per_page | integer | Não | Itens por página, 1-100 (padrão: 20) |
category_id | string (UUID) | Não | Somente produtos nesta categoria |
Equivale a GET /v1/menu/products. Um per_page fora de 1-100 é rejeitado localmente.
Exemplo de prompt:
"Liste os produtos da minha categoria Combos"
get_product
Obtém um único produto pelo UUID: id, name, description, position, visible,
category_id, além de suas variants.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do produto |
Equivale a GET /v1/menu/products/{id}.
list_product_variants
Lista as variantes de um produto: id, name, price, original_price, currency,
sku, stock, stock_threshold, position por variante. Use-a para ver as opções de compra
de um produto retornado por get_product ou list_products.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do produto |
Equivale a GET /v1/menu/products/{id}/variants.
Exemplo de prompt:
"Quais tamanhos e preços o produto 9c4f4203-9e2c-403d-88cc-7c0ce9e0f572 tem?"
list_kitchens
Lista as cozinhas configuradas para a empresa: id, name, default por cozinha. Use-a
para encontrar ids de cozinha válidos.
Sem parâmetros. Equivale a GET /v1/menu/kitchens.
list_tables
Lista as zonas (salões) da empresa e suas mesas: cada zona tem id, name e qrs
(as mesas/pontos de QR naquela zona, cada um com id, name, description opcional e
position). Use-a para encontrar valores válidos de table_id ao criar um pedido TABLE.
Sem parâmetros. Equivale a GET /v1/tables.
get_company
Obtém o perfil da empresa por trás da credencial: name, description, logo,
URL pública, language, currency, localização, horário de funcionamento semanal, e currently_open
calculado na timezone da empresa. Requer o scope companies:read.
Sem parâmetros. Equivale a GET /v1/company.
Exemplo de prompt:
"Meu restaurante está aberto agora, e qual é o horário de hoje?"
list_payment_methods
Lista os métodos de pagamento ativos da empresa: apenas os habilitados para ao menos um tipo
de serviço de pedido (ONSITE, TABLE, DELIVERY, TAKEAWAY) são retornados. Requer o scope
payment-methods:read.
Sem parâmetros. Equivale a GET /v1/company/payment-methods.
list_users
Lista paginada dos usuários da empresa, com função e status da conta. Requer o scope
users:read.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
role | string | Não | Funções separadas por vírgula: admin, manager, waiter, rider, cook, sales, cashier |
active | boolean | Não | true apenas usuários ativos, false apenas usuários desativados; omita para ambos |
page | integer | Não | Número da página, 1 ou mais (padrão: 1) |
per_page | integer | Não | Itens por página, 1-100 (padrão: 20) |
Equivale a GET /v1/users, onde role e active são enviados como filter[role] e filter[active].
Exemplo de prompt:
"Quais entregadores eu tenho ativos agora?"
create_order
Cria um pedido e o retorna. Começa como INITIATED (um rascunho) a menos que você envie status: PENDING. Adicione itens com add_order_combos, depois confirme o rascunho com update_order_status.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
service_type | string | Sim | ONSITE, TABLE, DELIVERY, ou TAKEAWAY |
client_id | string (UUID) | Não | Um cliente existente da sua empresa |
table_id | string (UUID) | Não | Apenas para pedidos TABLE; encontre um com list_tables |
address_id | string (UUID) | Não | Apenas para pedidos DELIVERY |
delivery_price | number | Não | Apenas para pedidos DELIVERY |
status | string | Não | Envie PENDING para pular o rascunho INITIATED |
comment, order_title, packaging_price, scheduled_delivery_date | — | Não | Metadados opcionais do pedido |
idempotency_key | string | Não | Reutilizado em uma nova tentativa para evitar um pedido duplicado; gerado quando omitido |
Exemplo de prompt:
"Crie um pedido para viagem para o cliente 9c8e720f-31b1-485a-85fa-0aaf552faaa9"
add_order_combos
Adiciona um ou mais itens a um pedido e o retorna com os totais recalculados.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do pedido |
combos | array | Sim | Itens a adicionar — cada um precisa de variant_id e quantity; modifiers é opcional (modifier_id, quantity por modificador) |
Exemplo de prompt:
"Adicione 2 combos Classic Smash ao pedido 9c4f4203-9e2c-403d-88cc-7c0ce9e0f572"
add_order_payment
Registra um pagamento em um pedido e o retorna com os totais de pagamento recalculados.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do pedido |
payment_method_id | string (UUID) | Sim | De list_payment_methods |
bill_amount | number | Sim | Valor cobrado |
received_amount | number | Não | Valor efetivamente recebido (dinheiro entregue) |
tip_amount | number | Não | Gorjeta incluída neste pagamento |
Exemplo de prompt:
"Registre um pagamento em dinheiro de 45.50 no pedido X"
apply_order_coupon
Resgata um código de cupom em um pedido e o retorna com os totais recalculados. O pedido deve ter um cliente vinculado.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do pedido |
code | string | Sim | Código do cupom, ex.: VERANO20 |
Exemplo de prompt:
"Aplique o cupom VERANO20 no pedido X"
update_order_status
Altera o status de um pedido e o retorna. Os pedidos só avançam.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do pedido |
status | string | Sim | Novo status, ex.: PENDING, PREPARING, READY, DELIVERED, FINALIZED |
Exemplo de prompt:
"Mova o pedido X para PREPARING"
cancel_order
Cancela um pedido criado através da API e o retorna. Ele não deve ter pagamentos ativos — remova-os primeiro com remove_order_payment.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do pedido |
reason | string | Sim | Código do motivo de cancelamento |
detail | string | Não | Detalhe em texto livre |
Exemplo de prompt:
"Cancele o pedido X, o cliente mudou de ideia"
create_promotion
Cria uma promoção (cupom): um código, um desconto e regras de elegibilidade.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name, coupon_code | string | Sim | Nome de exibição e o código resgatável |
discount_type, discount_value | string, number | Sim | ex.: PERCENTAGE + 20, ou um valor fixo |
minimum_order_amount | number | Sim | Piso do total do pedido para o cupom se aplicar |
valid_from, valid_until | string (date) | Sim | Janela de validade |
usage_limit | number | Sim | Total de resgates permitidos |
published | boolean | Sim | Se está ativo no menu digital |
promotion_type, products, service_types, audience, usage_limit_per_customer, schedule, terms | — | Não | Restrições e metadados opcionais |
Exemplo de prompt:
"Crie um cupom de 20% VERANO20 válido até dezembro apenas para delivery"
update_promotion
Atualiza parcialmente uma promoção. Mesmos campos de create_promotion, todos opcionais — um campo pode ser definido, mas não limpo de volta para indefinido.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID da promoção |
qualquer campo de create_promotion | — | Não | Apenas os campos enviados são alterados |
Exemplo de prompt:
"Estenda o valid_until da promoção X para 31 de janeiro"
delete_promotion
Exclui uma promoção pelo UUID. Não pode ser desfeito.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID da promoção |
Exemplo de prompt:
"Exclua a promoção VERANO20"
create_webhook
Registra uma nova URL de webhook para receber notificações de eventos.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
webhook_url | string (URL) | Sim | Endpoint HTTPS que recebe os eventos |
merchant_id | string | Sim | Seu próprio identificador para este merchant |
webhook_headers | object | Não | Headers personalizados enviados em cada entrega |
max_retry | integer | Não | Retentativas em caso de falha, 0-10 (padrão 3) |
ack_http_codes | array | Não | Códigos HTTP considerados sucesso (padrão [200, 201, 202]) |
event_types | array | Não | Tipos de evento para assinar; omita para todos os eventos |
Exemplo de prompt:
"Crie um webhook para https://example.com/hooks para o merchant store-42"
update_webhook
Atualiza parcialmente uma configuração de webhook. Apenas os campos enviados são alterados — envie is_active: false para pausar um webhook sem excluí-lo.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do webhook |
webhook_url, webhook_headers, is_active, max_retry, ack_http_codes, event_types | — | Não | Mesmo formato de create_webhook |
Exemplo de prompt:
"Pause meu webhook X"
delete_webhook
Remove uma assinatura de webhook pelo UUID. As entregas cessam imediatamente.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do webhook |
create_product
Cria um produto com 1-30 variantes somente via JSON (sem upload de imagem a partir do MCP). Os preços são decimais, não unidades menores.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
category_id, kitchen_id, name | string | Sim | De list_categories / list_kitchens |
variants | array | Sim | 1-30 variantes; cada uma precisa de name, price, original_price, sku |
description, visible, modifier_category_ids | — | Não | Campos opcionais |
Exemplo de prompt:
"Crie um produto 'Iced Latte' na categoria Drinks, uma variante a 12.00"
create_product_variant
Cria uma variante em um produto existente.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do produto |
name, price, original_price, sku | — | Sim | price não pode exceder original_price |
cost, packaging_price, stock, stock_threshold | — | Não | Campos opcionais |
Exemplo de prompt:
"Adicione uma variante Large a 15.50 no produto X"
update_product_variant
Atualiza parcialmente uma variante de produto. Todos os campos são opcionais, mas ao menos um deve ser enviado.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id, variantId | string (UUID) | Sim | UUIDs do produto e da variante |
name, price, original_price, cost, packaging_price, sku, stock, stock_threshold | — | Não* | *Ao menos um obrigatório |
sync_product_modifier_categories
Substitui as associações de categorias de modificadores de um produto, na ordem informada.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do produto |
modifier_category_ids | array (UUID) | Sim | UUIDs distintos, de list_modifier_categories; um array vazio desvincula todos |
assign_rider
Atribui ou atualiza o entregador de um pedido.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do pedido |
name | string | Sim | Nome do entregador |
provider | string | Não | api (padrão, entregador externo) ou olaclick |
user_id | string (UUID) | Não* | *Obrigatório quando provider: olaclick; deve ser um usuário ativo com função de entregador |
phone_number | string | Não | Número de telefone do entregador |
Exemplo de prompt:
"Atribua o entregador Marco ao pedido X, telefone 555-0100"
update_delivery_status
Atualiza o status de entrega de um pedido.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | UUID do pedido |
delivery_status | string | Sim | ex.: ON_THE_WAY_TO_PICK_UP, DELIVERING, DELIVERED |
Exemplo de prompt:
"Marque o pedido X como saiu para entrega"
Autenticação
O servidor MCP suporta dois métodos de autenticação no modo HTTP:
-
OAuth — Claude.ai, Claude Desktop, Claude Code e outros clientes com suporte a OAuth autenticam através do fluxo padrão OAuth 2.1 (veja Duas formas de autenticar). Nenhuma API key envolvida.
-
API key — clientes sem suporte a OAuth enviam uma API key através do header HTTP Authorization:
Authorization: Bearer olk_live_YOUR_KEY_HEREA chave é enviada na conexão HTTP/SSE inicial. Todas as chamadas de ferramenta dentro daquela sessão a herdam automaticamente — sem necessidade de enviá-la por chamada.
Exemplos de Conversas
Aqui estão alguns exemplos de prompts que você pode usar depois que o servidor MCP estiver conectado:
| Prompt | Ferramenta usada |
|---|---|
| "Quantos pedidos eu tive hoje?" | get_orders |
| "Mostre todos os pedidos cancelados da semana passada" | get_orders |
| "Liste os pedidos de delivery que ainda estão pendentes" | get_orders |
| "Quais pedidos vieram das minhas campanhas do Meta este mês?" | get_orders |
| "Quem são meus clientes mais frequentes?" | get_clients |
| "Encontre o cliente com o número de telefone 300..." | get_clients |
| "Quais clientes estão a ponto de churn?" | get_clients |
| "Liste meu menu com os preços" | get_menu |
| "Quais produtos estão fora de estoque agora?" | get_menu |
| "Qual é meu produto mais vendido este mês?" | get_products_sold |
| "Mostre o top 10 de produtos para pedidos de delivery" | get_products_sold |
| "Atualize a descrição do produto X" | update_product |
| "Quais categorias meu menu tem, e quais estão ocultas?" | list_categories |
| "Mostre os produtos da minha categoria Combos" | list_categories, depois list_products |
| "Quais são os detalhes do produto X?" | get_product |
| "Quais tamanhos e preços o produto X tem?" | list_product_variants |
| "Quais cozinhas eu tenho configuradas?" | list_kitchens |
| "Meu restaurante está aberto agora? Qual é o horário de hoje?" | get_company |
| "Quais métodos de pagamento eu aceito para delivery?" | list_payment_methods |
| "Quais entregadores estão ativos agora?" | list_users |
| "Liste meus gerentes e caixas" | list_users |
| "Crie um pedido para viagem para o cliente X com 2 hambúrgueres e registre um pagamento em dinheiro" | create_order, add_order_combos, add_order_payment |
| "Crie um cupom de 20% VERANO20 válido até dezembro apenas para delivery" | create_promotion |
| "Pause meu webhook" | update_webhook |
| "Adicione uma variante Large a 15.50 no produto X" | create_product_variant |
| "Atribua o entregador Y ao pedido Z" | assign_rider |
| "Marque o pedido Z como saiu para entrega" | update_delivery_status |
| "Cancele o pedido Z, o cliente mudou de ideia" | cancel_order |
Segurança
- As API keys nunca são registradas em log ou armazenadas pelo servidor MCP
- Toda comunicação usa HTTPS
- Cada usuário fornece sua própria chave através do header Authorization
- Os scopes são aplicados pela Public API, não pelo servidor MCP: chamar uma ferramenta
com uma chave que não possui o scope necessário (ex.:
menu:readparaget_menu) falha upstream com403 insufficient_scope - Ferramentas de escrita alteram dados reais — um pedido criado, uma promoção atualizada, ou um webhook excluído são reais; não há modo dry-run na camada MCP
- Use uma chave com escopo apenas para os scopes de escrita que um assistente realmente precisa (ex.:
não conceda
orders:writea um assistente que apenas lê o menu) - Ferramentas destructive (baseadas em
DELETE) carregam a anotaçãodestructiveHintdo MCP; clientes como Claude Desktop ou Cursor podem pedir sua confirmação antes de executar uma - Trate qualquer API key com um scope
*:writecomo uma credencial de produção — armazene e rotacione-a da mesma forma que faria com a senha de um banco de dados
Próximos passos
- Primeiros Passos — Obtenha sua API key e faça sua primeira chamada
- Referência da API — Documentação completa dos endpoints
- Webhooks — Notificações de eventos em tempo real