Limite de Requisições
Os limites do MCP são os mesmos da API REST, contados por conta e por hora. O que decide o balde de uma requisição é o que ela faz:
| Requisição | Balde | Valor padrão |
|---|---|---|
tools/call de uma tool de escrita (inclusive as destrutivas) | O mesmo balde de POST da API REST | 5000 por hora |
tools/call de leitura, resources/read, prompts/get e GET / | Um balde de leitura próprio do MCP, com o mesmo valor do limite de GET da conta | 60 por hora |
initialize, server/discover, ping, as listagens (tools/list, resources/list, …), completion/complete e notificações | Nenhum | — |
| Qualquer requisição sem conta autenticada | Por IP | 120 por minuto |
Os valores da tabela são o padrão da conta. Se a sua conta tem limites próprios, valem os dela.
- Escrita gasta o mesmo orçamento da API. Um agente que emite boletos consome os mesmos
POSTque a sua integração. - Leitura tem balde próprio. No balde de
GETda API REST, uma conversa de agente gastaria o limite das suas integrações; por isso as leituras do MCP contam à parte, com o mesmo valor. - Conectar não gasta. Handshake, descoberta e listagens não contam.
- Corpo que não dá para classificar conta como escrita. Um corpo que não é JSON, ou grande demais para ser lido pela classificação, vai para o balde de escrita.
Quando o limite é atingido
O servidor responde 429, e a mensagem JSON-RPC não chega a ser processada:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json; charset=utf-8
ratelimit-name: rate_limits_mcp_read_hour
ratelimit-limit: 60
ratelimit-remaining: 0
ratelimit-reset: 1793037600
retry-after: 1834
{ "status": 429, "errors": [{
"title": "Limite de leituras do MCP(60) por hora excedido para essa conta.",
"code": 429,
"detail": "Veja mais em https://docs.banking.kobana.com.br/pt/api/overview/rate-limit"
}] }
Espere os segundos de retry-after antes da próxima requisição. Para aumentar o limite da conta, fale com o suporte ou com o comercial: veja Limite de requisições da API.
Gastando menos
Um agente consome o mesmo orçamento que o seu backend, e ainda paga contexto por linha que traz. Três hábitos resolvem quase tudo:
- Filtre antes de paginar.
{ "filters": { "status": "overdue", "expire_at": { "lt": "2026-11-01" } } }custa uma chamada; varrer todos os boletos para filtrar no modelo custa dezenas. - Peça só os campos que interessam.
fields: ["amount", "expire_at"]não reduz o número de chamadas, mas reduz muito o contexto gasto. Veja Listagem, filtros e campos. - Use
resources/listpara "o mais recente". Anexar um registro recente como resource não gasta chamada de listagem.