MCP Server da AbacatePay

55 ferramentas de pagamento pro seu agente

Um servidor MCP remoto em mcp.abacatepay.com, com Streamable HTTP, login OAuth pela chave de API v2 e o código aberto. O Claude, o ChatGPT, o Cursor ou o agente que você monta chamam a API da AbacatePay como ferramentas.

  • Streamable HTTP e OAuth com PKCE
  • Ou a chave direto no header
  • Chave só leitura e modo de teste
  • Código aberto, licença MIT

Funciona em qualquer cliente MCP com HTTP.

  • ChatGPT
  • Claude
  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Gemini CLI
  • Zed
  • Cline
  • Warp
  • LM Studio
  • opencode
  • n8n
  • Postman
  • MCP Inspector

Por dentro: do login à chamada

O MCP é JSON-RPC sobre HTTP. Cada ferramenta vira uma requisição na API v2 da sua conta, com a sua chave e as mesmas regras de qualquer integração.

  1. Seu cliente de IAClaude, ChatGPT, Cursor ou o seu agente
  2. mcp.abacatepay.como servidor MCP
  3. api.abacatepay.com/v2a API da sua conta

Loginsó no OAuth

  1. cliente → servidor MCPGET /.well-known/… · POST /registerdescobre os endpoints e se registra sozinho (RFC 7591)
  2. cliente → servidor MCPGET /authorizeabre no navegador: você cola uma chave de API v2
  3. servidor MCP → API v2GET /v2/stores/geta chave só vale se a API responder 200
  4. servidor MCP → clientePOST /token → mcp_at_…PKCE S256; o token é opaco e a chave fica criptografada no servidor

Sessão

  1. cliente → servidor MCPinitializeAuthorization: Bearer com o token ou a própria chave
  2. servidor MCP → clienteMcp-Session-Idparada por 30 minutos, fecha; o cliente abre outra sozinho

Ferramentas

  1. cliente → servidor MCPtools/listo cliente pergunta o que o servidor sabe fazer
  2. servidor MCP → cliente55 ferramentas + JSON Schemanome, descrição e os parâmetros de cada uma

Chamada

  1. cliente → servidor MCPtools/call createTransparentPixo modelo preenche os argumentos: { "amount": 10000 }
  2. servidor MCPvalida o inputSchemaamount abaixo de 100 volta erro −32602, sem chamar a API
  3. servidor MCP → API v2POST /v2/transparents/createcom a sua chave, como qualquer integração
  4. API v2 → servidor MCP200 { data: { id, status, brCode } }a resposta da API
  5. servidor MCP → clienteresult · content[0].texttexto pronto pro modelo ler e responder

Conecte o seu assistente em 1 minuto

Um endereço só serve pra todos os assistentes. O login é a sua chave de API, e é ela que define se o agente só consulta ou também cria cobranças.

Endereço do MCPhttps://mcp.abacatepay.com/mcp
  1. 1

    Crie a chave de API

    Em app.abacatepay.com/api-keys, crie uma chave v2. “Somente leitura” basta pra relatórios; pra criar cobrança, “Leitura e escrita”.

  2. 2

    Adicione o MCP no assistente

    Cole o endereço do MCP no assistente e, na janela da AbacatePay, entre com a chave. Cada assistente tem o seu passo a passo.

  3. 3

    Peça em português

    Comece com “quanto vendi este mês?”. Pra testar sem dinheiro de verdade, use a chave do modo de teste.

Criar conta e gerar a chave →
Onde você vai usar

No Claude

  1. No Claude (web ou app), abra Configurações → Conectores.
  2. Clique em Adicionar conector personalizado e cole a URL abaixo.
  3. Na primeira vez, autorize o acesso na janela que abrir.
  4. Na janela da AbacatePay, cole uma chave de API v2, criada em app.abacatepay.com/api-keys. Pra testar, use uma chave do modo teste; relatórios funcionam com “Somente leitura”, e criar cobrança pede “Leitura e escrita”.
  5. Numa conversa, ligue o conector no menu + → Conectores.
https://mcp.abacatepay.com/mcp

No plano Team ou Enterprise, quem é dono da organização adiciona o conector primeiro.

No ChatGPT

  1. No ChatGPT, abra Configurações → Apps e conectores → Avançado e ligue o Modo desenvolvedor (planos pagos).
  2. Volte em Apps e conectores, clique em Criar e cole a URL abaixo.
  3. Em autenticação, escolha OAuth e autorize na janela que abrir.
  4. Na janela da AbacatePay, cole uma chave de API v2, criada em app.abacatepay.com/api-keys. Pra testar, use uma chave do modo teste; relatórios funcionam com “Somente leitura”, e criar cobrança pede “Leitura e escrita”.
  5. Numa conversa, escolha o conector no menu + antes de pedir.
https://mcp.abacatepay.com/mcp

Se não achar o Modo desenvolvedor, ele pode estar em Configurações → Segurança na sua conta.

No Cursor

  1. Com o Cursor instalado, clique no botão: ele abre o app e já preenche o servidor.
  2. Na primeira vez, autorize o acesso na janela que abrir.
  3. Na janela da AbacatePay, cole uma chave de API v2, criada em app.abacatepay.com/api-keys. Pra testar, use uma chave do modo teste; relatórios funcionam com “Somente leitura”, e criar cobrança pede “Leitura e escrita”.
{
  "mcpServers": {
    "abacatepay": {
      "url": "https://mcp.abacatepay.com/mcp"
    }
  }
}

Sem o botão: cole o JSON em Configurações → MCP → Adicionar servidor.

No Claude Code

  1. Rode no terminal:
  2. Depois, dentro do Claude Code, rode /mcp pra autorizar.
  3. Na janela da AbacatePay, cole uma chave de API v2, criada em app.abacatepay.com/api-keys. Pra testar, use uma chave do modo teste; relatórios funcionam com “Somente leitura”, e criar cobrança pede “Leitura e escrita”.
claude mcp add --transport http abacatepay https://mcp.abacatepay.com/mcp

No VS Code

  1. Com o VS Code instalado, clique no botão e confirme a instalação do servidor.
  2. Na primeira vez, autorize o acesso na janela que abrir.
  3. Na janela da AbacatePay, cole uma chave de API v2, criada em app.abacatepay.com/api-keys. Pra testar, use uma chave do modo teste; relatórios funcionam com “Somente leitura”, e criar cobrança pede “Leitura e escrita”.
https://mcp.abacatepay.com/mcp

Os servidores MCP aparecem no modo agente do chat do Copilot.

No Grok

  1. Abra grok.com/connectors (ou Conectores, no menu do Grok).
  2. Clique em New Connector, escolha Custom e cole a URL abaixo.
  3. Na primeira vez, autorize o acesso na janela que abrir.
  4. Na janela da AbacatePay, cole uma chave de API v2, criada em app.abacatepay.com/api-keys. Pra testar, use uma chave do modo teste; relatórios funcionam com “Somente leitura”, e criar cobrança pede “Leitura e escrita”.
  5. Numa conversa, ligue o conector antes de pedir.
https://mcp.abacatepay.com/mcp

No plano Business ou Enterprise, um admin libera o conector antes.

No Outros

  1. Em qualquer cliente que aceite MCP remoto (HTTP), use esta configuração:
{
  "mcpServers": {
    "abacatepay": {
      "url": "https://mcp.abacatepay.com/mcp"
    }
  }
}

Endpoint e autenticação

Um endereço, três jeitos de entrar

https://mcp.abacatepay.com/mcp fala Streamable HTTP. O login é sempre uma chave de API v2 da sua conta, nunca a sua senha.

  • OAuth 2.0Claude, ChatGPT, Cursor, VS Code, Claude Code

    Cole a URL no assistente e entre com a chave na janela da AbacatePay. Ele recebe um token mcp_at_ e nunca vê a chave. É o único jeito no conector do Claude.ai.

  • Chave no headero seu agente, n8n, scripts

    Mande Authorization: Bearer <chave> ou X-API-Key em cada requisição. Sem navegador e sem janela.

  • Local, em stdioClaude Desktop e Cursor na sua máquina

    Rode o servidor com Bun: o cliente sobe o processo e a chave vai na variável ABACATE_PAY_API_KEY.

Toda ferramenta aceita também um apiKey opcional, pra usar outra chave numa chamada (a de teste, por exemplo).

Como conectar no MCP
agente.ts · @modelcontextprotocol/sdk
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(new URL("https://mcp.abacatepay.com/mcp"), {
  requestInit: { headers: { Authorization: `Bearer ${process.env.ABACATEPAY_API_KEY}` } },
});
const client = new Client({ name: "meu-agente", version: "1.0.0" });
await client.connect(transport);

const { tools } = await client.listTools(); // 55 ferramentas, com o inputSchema de cada uma

const resultado = await client.callTool({
  name: "createTransparentPix",
  arguments: { amount: 10000, description: "Pedido #1042" },
});
console.log(resultado.content);
terminal
# 1. Abre a sessão: o Mcp-Session-Id volta no header da resposta
curl -i https://mcp.abacatepay.com/mcp \
  -H "Authorization: Bearer $ABACATEPAY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"meu-agente","version":"1.0.0"}}}'

# 2. Chama uma ferramenta na mesma sessão
curl https://mcp.abacatepay.com/mcp \
  -H "Authorization: Bearer $ABACATEPAY_API_KEY" \
  -H "Mcp-Session-Id: $SESSAO" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"getBalanceReport","arguments":{}}}'
mcp.json · chave no header
{
  "mcpServers": {
    "abacatepay": {
      "url": "https://mcp.abacatepay.com/mcp",
      "headers": {
        "Authorization": "Bearer SUA_CHAVE_API_V2"
      }
    }
  }
}
terminal + mcp.json
git clone https://github.com/AbacatePay/abacatepay-mcp.git
cd abacatepay-mcp && bun install

# No mcp.json do Claude Desktop ou do Cursor (caminho absoluto):
{
  "mcpServers": {
    "abacate-pay": {
      "command": "bun",
      "args": ["/caminho/absoluto/abacatepay-mcp/src/index.ts"],
      "env": { "ABACATE_PAY_API_KEY": "SUA_CHAVE_API_V2" }
    }
  }
}

A resposta vem como text/event-stream. Sessão desconhecida volta 404 e o cliente abre outra; chave ausente volta 401 com o WWW-Authenticate que leva ao OAuth.

55 ferramentas, com os parâmetros de cada uma

Os nomes, os campos e as rotas que o seu cliente recebe no tools/list. Busque pelo que você quer fazer, por um parâmetro como externalId ou por uma rota da API.

Links e checkouts

Cobranças com página pronta: um link que vende várias vezes ou um checkout pra uma venda.

  • createPaymentLinkEscritaPOST /v2/payment-links/createCria um link de pagamento reutilizável com produtos cadastrados.13 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    items*{ id*, quantity }[]—
    methods("PIX" | "CARD" | "BOLETO")[]Padrão: PIX e CARD.
    card{ maxInstallments* }—
    returnUrlstringURL
    completionUrlstringURL
    customerIdstring—
    couponsstring[]até 50 itens
    externalIdstring—
    upSellProductIdstring—
    interest{ value* }—
    fine{ value*, type* }—
    dueDatestringYYYY-MM-DD
    metadataobject—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listPaymentLinksLeituraGET /v2/payment-links/listLista os links de pagamento da loja.11 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    keywordstring—
    statusstringum de: PENDING, EXPIRED, CANCELLED, PAID, UNDER_DISPUTE, REFUNDED, REDEEMED, APPROVED, FAILED
    customerIdstring—
    externalIdstring—
    method"PIX" | "CRYPTO" | "CARD" | "BOLETO"—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getPaymentLinkLeituraGET /v2/payment-links/getBusca um link pelo ID, com status e valores.4 parâmetros
    ParâmetroTipoDetalhe
    idstring—
    externalIdstring—
    customerIdstring—
    method"PIX" | "CRYPTO" | "CARD" | "BOLETO"—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • deletePaymentLinkEscritaPOST /v2/payment-links/deleteRemove um link de pagamento.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • refundPaymentLinkEscritaPOST /v2/payment-links/refundReembolsa por inteiro um pagamento feito pelo link.2 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    id*stringID público do pagamento (char_/pix_char_/card_).
    reasonstringMotivo do reembolso. · até 500 caracteres

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • createCheckoutEscritaPOST /v2/checkouts/createCria um checkout de pagamento único, com Pix, cartão ou boleto.13 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    items*{ id*, quantity }[]—
    methods("PIX" | "CARD" | "BOLETO")[]Padrão: PIX e CARD.
    card{ maxInstallments* }—
    returnUrlstringURL
    completionUrlstringURL
    customerIdstring—
    couponsstring[]até 50 itens
    externalIdstring—
    upSellProductIdstring—
    interest{ value* }—
    fine{ value*, type* }—
    dueDatestringYYYY-MM-DD
    metadataobject—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listCheckoutsLeituraGET /v2/checkouts/listLista os checkouts, com filtro por status e período.11 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    keywordstring—
    statusstringum de: PENDING, EXPIRED, CANCELLED, PAID, UNDER_DISPUTE, REFUNDED, REDEEMED, APPROVED, FAILED
    customerIdstring—
    externalIdstring—
    method"PIX" | "CRYPTO" | "CARD" | "BOLETO"—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getCheckoutLeituraGET /v2/checkouts/getBusca um checkout pelo ID.4 parâmetros
    ParâmetroTipoDetalhe
    idstring—
    externalIdstring—
    customerIdstring—
    method"PIX" | "CRYPTO" | "CARD" | "BOLETO"—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • deleteCheckoutEscritaPOST /v2/checkouts/deleteRemove um checkout.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • refundCheckoutEscritaPOST /v2/checkouts/refundReembolsa por inteiro um checkout pago.2 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    id*stringID público do recurso (char_/pix_char_/card_/bill_).
    reasonstringMotivo do reembolso. · até 500 caracteres

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

Pix e boleto direto

Checkout transparente: o QR Code do Pix ou o boleto saem direto, sem página hospedada.

  • createTransparentPixEscritaPOST /v2/transparents/createGera um QR Code Pix com valor, descrição e validade.7 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    amount*integerValor em centavos, mínimo 100.
    externalIdstring—
    expiresInnumberSegundos até expirar, mínimo 60.
    descriptionstringaté 140 caracteres
    customer{ name*, cellphone*, email*, taxId* }—
    utm{ source, medium, campaign, term, content }—
    metadataobject—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • createTransparentBoletoEscritaPOST /v2/transparents/createEmite um boleto com vencimento, multa e juros.9 parâmetros · 2 obrigatórios
    ParâmetroTipoDetalhe
    amount*integerValor em centavos, mínimo 100.
    customer*{ name*, taxId*, email, cellphone, zipCode }—
    dueDatestringYYYY-MM-DD
    descriptionstringaté 500 caracteres
    externalIdstring—
    interest{ value* }—
    fine{ value*, type* }—
    utm{ source, medium, campaign, term, content }—
    metadataobject—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • checkTransparentPixLeituraGET /v2/transparents/checkConsulta rápido se o Pix já foi pago.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • simulateTransparentPixPaymentEscritaPOST /v2/transparents/simulate-paymentSimula o pagamento de um Pix. Só com a chave de teste.2 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—
    metadataobject—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getTransparentLeituraGET /v2/transparents/getBusca um Pix ou boleto pelo ID.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listTransparentLeituraGET /v2/transparents/listLista Pix e boletos, com filtro por status e meio.9 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    externalIdstring—
    method"PIX" | "CARD" | "PIX_QRCODE" | "BOLETO"—
    statusstringum de: PENDING, EXPIRED, CANCELLED, PAID, UNDER_DISPUTE, REFUNDED, REDEEMED, APPROVED, FAILED
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • refundTransparentEscritaPOST /v2/transparents/refundReembolsa por inteiro um Pix ou boleto pago.2 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    id*stringID público do recurso (char_/pix_char_/card_).
    reasonstringMotivo do reembolso. · até 500 caracteres

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

Clientes, produtos e cupons

O cadastro que as cobranças usam: quem compra, o que você vende e os descontos.

  • createCustomerEscritaPOST /v2/customers/createCadastra um cliente. Só o e-mail é obrigatório.6 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    email*stringe-mail
    namestring—
    cellphonestring—
    taxIdstring—
    zipCodestring—
    metadataobject—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listCustomersLeituraGET /v2/customers/listLista os clientes da loja.10 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    emailstring—
    taxIdstring—
    namestring—
    cellphonestring—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getCustomerLeituraGET /v2/customers/getBusca um cliente pelo ID.3 parâmetros
    ParâmetroTipoDetalhe
    idstring—
    emailstring—
    taxIdstring—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • deleteCustomerEscritaPOST /v2/customers/deleteRemove um cliente.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • createProductEscritaPOST /v2/products/createCria um produto avulso ou com ciclo, com trial e arquivo pra baixar.10 parâmetros · 3 obrigatórios
    ParâmetroTipoDetalhe
    externalId*string—
    name*string—
    price*integerPreço em centavos. · mín. 1
    currency"BRL"padrão "BRL"
    descriptionstring—
    imagestringURL de imagem remota; será baixada e re-hospedada (máx. 5MB).
    imageUrlstringURL
    fileUrlstringURL de arquivo remoto (PDF, máx. 20MB); vira download após a compra.
    cyclestringOmitido = produto avulso (não recorrente); presente = elegível para assinaturas. · um de: DAILY, WEEKLY, MONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY
    trialDaysintegermín. 1 · máx. 90

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listProductsLeituraGET /v2/products/listLista os produtos cadastrados.11 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    externalIdstring—
    keywordstring—
    namestring—
    statusstring—
    currencystring—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getProductLeituraGET /v2/products/getBusca um produto pelo ID.3 parâmetros
    ParâmetroTipoDetalhe
    idstring—
    namestring—
    externalIdstring—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • deleteProductEscritaPOST /v2/products/deleteRemove um produto.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • createCouponEscritaPOST /v2/coupons/createCria um cupom em % ou valor fixo, com validade e limite de usos.7 parâmetros · 3 obrigatórios
    ParâmetroTipoDetalhe
    code*string—
    discountKind*"PERCENTAGE" | "FIXED"—
    discount*number—
    notesstring—
    maxRedeemsnumber-1 para ilimitado. Padrão: -1 se omitido.
    startsAtstringInício da validade (ISO). Precisa ser posterior a hoje.
    expiresAtstringFim da validade (ISO). Precisa ser posterior a hoje e a startsAt.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listCouponsLeituraGET /v2/coupons/listLista os cupons.7 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    status"ACTIVE" | "DELETED" | "DISABLED"—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getCouponLeituraGET /v2/coupons/getBusca um cupom pelo ID.2 parâmetros
    ParâmetroTipoDetalhe
    idstring—
    status"ACTIVE" | "DELETED" | "DISABLED"—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • toggleCouponEscritaPOST /v2/coupons/toggleLiga ou desliga um cupom.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • deleteCouponEscritaPOST /v2/coupons/deleteRemove um cupom.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

Assinaturas

Cobrança recorrente no cartão ou no Pix, com troca de plano e cobrança por uso.

  • createSubscriptionEscritaPOST /v2/subscriptions/createCria o checkout de uma assinatura, com retentativa de cobrança.14 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    items*{ id*, quantity }[]—
    methods("CARD" | "PIX")[]Padrão: CARD.
    returnUrlstringURL
    completionUrlstringURL
    customerIdstring—
    couponsstring[]até 50 itens
    externalIdstring—
    upSellProductIdstring—
    card{ maxInstallments* }—
    interest{ value* }—
    fine{ value*, type* }—
    dueDatestringYYYY-MM-DD
    retryPolicy{ maxRetry, retryEvery }Política de novas tentativas em caso de falha de cobrança.
    metadataobject—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listSubscriptionsLeituraGET /v2/subscriptions/listLista as assinaturas, com filtro por status.6 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    statusstringum de: PENDING, EXPIRED, CANCELLED, PAID, UNDER_DISPUTE, REFUNDED, REDEEMED, APPROVED, FAILED
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getSubscriptionLeituraGET /v2/subscriptions/getBusca uma assinatura pelo ID.4 parâmetros
    ParâmetroTipoDetalhe
    idstring—
    externalIdstring—
    customerIdstring—
    method"PIX" | "CRYPTO" | "CARD" | "BOLETO"—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • changeSubscriptionPlanEscritaPOST /v2/subscriptions/change-planAgenda a troca de plano pro próximo ciclo.4 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    id*stringID da assinatura (subs_...).
    productIdstringID do novo produto (com ciclo).
    quantityintegermín. 1
    items{ productId*, quantity* }[]Alternativa a productId/quantity; tem prioridade se informado.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • cancelSubscriptionEscritaPOST /v2/subscriptions/cancelCancela uma assinatura ativa na hora.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*stringID da assinatura (subs_...).

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • recordSubscriptionUsageEscritaPOST /v2/subscriptions/record-usageRegistra o consumo de uma assinatura cobrada por uso.4 parâmetros · 4 obrigatórios
    ParâmetroTipoDetalhe
    id*stringID da assinatura (subs_...).
    productId*stringID do produto de uso (sem ciclo).
    units*integerUnidades a registrar. · mín. 1
    action*"add" | "subtract"add: acrescenta; subtract: estorna.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

Pix enviado e saques

O dinheiro saindo: Pix pra terceiros e saque pra conta da própria empresa.

  • sendPixEscritaPOST /v2/pix/sendEnvia um Pix pra chave de outra pessoa ou empresa.4 parâmetros · 3 obrigatórios
    ParâmetroTipoDetalhe
    externalId*stringObrigatório: identificador único no seu sistema.
    amount*numberValor em centavos, mínimo 100.
    pix*{ type*, key* }—
    descriptionstring—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • createPayoutEscritaPOST /v2/payouts/createSaca o saldo pra uma chave Pix da própria loja, no mesmo CNPJ.4 parâmetros · 2 obrigatórios
    ParâmetroTipoDetalhe
    amount*numberValor em centavos. · mín. 1
    pix*{ type*, key* }Chave PIX de destino (deve ser da própria loja).
    externalIdstring—
    descriptionstring—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listPayoutsLeituraGET /v2/payouts/listLista os saques.6 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getPayoutLeituraGET /v2/payouts/getBusca um saque pelo ID.2 parâmetros
    ParâmetroTipoDetalhe
    idstring—
    externalIdstring—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getPixTransactionLeituraGET /v2/pix/getBusca um Pix enviado pelo ID.2 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—
    externalIdstring—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listPixTransactionsLeituraGET /v2/pix/listConsulta os Pix enviados.2 parâmetros · 1 obrigatório
    ParâmetroTipoDetalhe
    id*string—
    externalIdstring—

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

Relatórios

Os números da conta, calculados pela AbacatePay: o agente não precisa somar nada.

  • getBalanceReportLeituraGET /v2/reports/run?reportId=balance_nowSaldo disponível, a receber, em antecipação e bloqueado.Sem parâmetros

    A ferramenta usa a loja da chave de API.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getCashFlowReportLeituraGET /v2/reports/run?reportId=cash_flowEntradas, saídas, taxas e resultado por dia.3 parâmetros · 2 obrigatórios
    ParâmetroTipoDetalhe
    startDate*stringInício do período, YYYY-MM-DD (inclusivo).
    endDate*stringFim do período, YYYY-MM-DD (inclusivo).
    timezonestringTimezone IANA do recorte. Padrão: America/Sao_Paulo.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getRevenueByMethodReportLeituraGET /v2/reports/run?reportId=revenue_by_methodReceita por meio de pagamento, com ticket médio.3 parâmetros · 2 obrigatórios
    ParâmetroTipoDetalhe
    startDate*stringInício do período, YYYY-MM-DD (inclusivo).
    endDate*stringFim do período, YYYY-MM-DD (inclusivo).
    timezonestringTimezone IANA do recorte. Padrão: America/Sao_Paulo.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getFeesReportLeituraGET /v2/reports/run?reportId=fees_summaryTaxas pagas por meio, com a taxa efetiva.3 parâmetros · 2 obrigatórios
    ParâmetroTipoDetalhe
    startDate*stringInício do período, YYYY-MM-DD (inclusivo).
    endDate*stringFim do período, YYYY-MM-DD (inclusivo).
    timezonestringTimezone IANA do recorte. Padrão: America/Sao_Paulo.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getReceivablesReportLeituraGET /v2/reports/run?reportId=receivables_summaryRecebíveis do cartão que ainda vão cair.Sem parâmetros

    A ferramenta usa a loja da chave de API.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getWithdrawalsReportLeituraGET /v2/reports/run?reportId=withdrawals_summarySaques do período, pra conferir com o extrato do banco.3 parâmetros · 2 obrigatórios
    ParâmetroTipoDetalhe
    startDate*stringInício do período, YYYY-MM-DD (inclusivo).
    endDate*stringFim do período, YYYY-MM-DD (inclusivo).
    timezonestringTimezone IANA do recorte. Padrão: America/Sao_Paulo.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getDisputesReportLeituraGET /v2/reports/run?reportId=disputes_summaryDisputas e a taxa de chargeback do cartão.3 parâmetros · 2 obrigatórios
    ParâmetroTipoDetalhe
    startDate*stringInício do período, YYYY-MM-DD (inclusivo).
    endDate*stringFim do período, YYYY-MM-DD (inclusivo).
    timezonestringTimezone IANA do recorte. Padrão: America/Sao_Paulo.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

Webhooks e loja

Avisos de pagamento pro seu sistema e os dados da conta.

  • createWebhookEscritaPOST /v2/webhooks/createCadastra um endpoint HTTPS pra receber os eventos que você escolher.4 parâmetros · 4 obrigatórios
    ParâmetroTipoDetalhe
    name*stringNome identificador do webhook.
    endpoint*stringURL HTTPS que recebe as notificações.
    secret*stringSegredo usado para autenticar o webhook (você define; não é gerado pela API).
    events*string[]Eventos a assinar. · valores: checkout.completed, checkout.refunded, checkout.disputed, checkout.lost, transparent.completed, transparent.refunded, transparent.disputed, transparent.lost, subscription.completed, subscription.trial_started, subscription.cancelled, subscription.renewed, subscription.plan_changed, subscription.payment_failed, payout.completed, payout.failed, transfer.completed, transfer.failed

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listWebhooksLeituraGET /v2/webhooks/listLista os webhooks cadastrados.7 parâmetros
    ParâmetroTipoDetalhe
    searchstring—
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getWebhookLeituraGET /v2/webhooks/getBusca um webhook pelo ID.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*stringID do webhook (webh_...).

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • deleteWebhookEscritaPOST /v2/webhooks/deleteRemove um webhook.1 parâmetro · 1 obrigatório
    ParâmetroTipoDetalhe
    id*stringID do webhook (webh_...).

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • getStoreLeituraGET /v2/stores/getDados da loja e o saldo.Sem parâmetros

    A ferramenta usa a loja da chave de API.

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

  • listStoresLeituraGET /v2/stores/listLista as lojas que a chave enxerga.7 parâmetros
    ParâmetroTipoDetalhe
    afterstring—
    beforestring—
    limitnumbermín. 1 · máx. 100
    idstring—
    namestring—
    startDatestringYYYY-MM-DD
    endDatestringYYYY-MM-DD

    * obrigatório. Toda ferramenta aceita também apiKey, opcional.

A chave decide o que o agente pode

Crie a chave em app.abacatepay.com/api-keys e escolha a permissão. O MCP não tem permissão própria: quem diz sim ou não é a API, em cada chamada.

Somente leitura

30 ferramentas

O agente consulta e não muda nada: vendas, clientes, saldo e os 7 relatórios financeiros.

  • getBalanceReport
  • getRevenueByMethodReport
  • listCheckouts
  • checkTransparentPix
  • getCustomer

Bom pra: o assistente do financeiro, um bot de relatório no Slack, perguntas sobre o mês.

Leitura e escrita

55 ferramentas

Tudo o que a leitura faz e mais 25 ferramentas que criam, mudam ou apagam: cobranças, reembolsos, Pix e saques.

  • createTransparentPix
  • createPaymentLink
  • refundCheckout
  • sendPix
  • createPayout

Bom pra: o agente que vende, o suporte que reembolsa, a automação que cobra.

Modo de teste

Conecte primeiro com a chave de teste

Com a chave do modo de teste, o agente cria cobranças que não cobram ninguém e pode pagar um Pix de mentira com o simulateTransparentPixPayment, que só funciona com ela. Quando estiver tudo certo, troque pela chave de produção: as ferramentas são as mesmas.

  • Relatório na conta de teste**Conta em modo de testes — estes números não são da operação real.**
  • Chave apagada ou inválidaHTTP 401: Invalid or inactive API key
  • Argumento fora do schemaMCP error -32602: Input validation error … expected number to be >=100 at amount

Acesso de agente, controle de dono

O MCP não abre nenhuma porta nova na sua conta: ele usa a mesma API, com a mesma chave e o mesmo antifraude de qualquer venda.

Cada chamada aparece na sua conta

O que o agente faz pelo MCP vira requisição na API v2: entra no painel e dispara os webhooks, como qualquer integração.

Token opaco

O cliente recebe um mcp_at_; a chave fica criptografada e só o hash do token é guardado.

Revogue na hora

Apague a chave no painel ou revogue o token: o agente perde o acesso na hora.

Saque só pra sua chave

O createPayout só manda pra uma chave Pix no mesmo CNPJ da loja.

Schema antes da API

Argumento fora do inputSchema volta erro antes de chegar na sua conta.

0senhas da sua conta no assistente
Só a chave

O login é uma chave de API que você cria, limita e apaga quando quiser.

Código aberto

Leia o servidor antes de conectar

Você vai dar acesso à sua conta pra um agente: dá pra ver linha por linha o que cada ferramenta faz com a sua chave.

  • TypeScript com o SDK oficial do MCP e Zod nos schemas, rodando em Bun.
  • Um arquivo por recurso em src/tools: cada ferramenta é uma chamada na API v2.
  • Rode local em stdio ou HTTP, e teste com o MCP Inspector (bun run inspector).
  • Licença MIT: leia, abra issue, mande PR com a ferramenta que falta.
AbacatePay/abacatepay-mcpTypeScriptMIT
  • src/
  • index.tsstdio
  • http-server.tsStreamable HTTP
  • http/middleware.tsBearer, X-API-Key, mcp_at_
  • oauth//authorize, /token, /revoke
  • tools/
  • checkouts.ts5
  • coupons.ts5
  • customers.ts4
  • payment-links.ts5
  • payouts.ts3
  • pix-send.ts3
  • products.ts4
  • reports.ts7
  • store.ts2
  • subscriptions.ts6
  • transparents.ts7
  • webhooks.ts4

src/tools55 ferramentas

Dúvidas sobre o MCP

O que perguntam antes de ligar o MCP da AbacatePay num cliente ou num agente próprio.

O que é o MCP Server da AbacatePay?

É um servidor MCP (Model Context Protocol) remoto, em https://mcp.abacatepay.com/mcp, que entrega a API v2 da AbacatePay como 55 ferramentas. O seu cliente de IA lista as ferramentas, escolhe a certa e chama com os argumentos; o servidor faz a requisição na API com a sua chave e devolve o resultado em texto.

Qual o transporte e como autentica?

Streamable HTTP, com JSON-RPC. Pra entrar, OAuth 2.0 (registro dinâmico, PKCE S256 e um token opaco mcp_at_), que é o que o Claude, o ChatGPT e o Cursor usam, ou a chave de API direto no header Authorization: Bearer ou X-API-Key. Também dá pra rodar o servidor na sua máquina, em stdio, com Bun.

Que chave de API eu uso?

Uma chave da API v2, criada em app.abacatepay.com/api-keys; chaves v1 não funcionam. “Somente leitura” deixa o agente só consultar; “Leitura e escrita” libera criar cobrança, reembolsar, enviar Pix e sacar. Pra testar, use a chave do modo de teste.

Quais clientes funcionam?

Qualquer um que aceite MCP remoto por HTTP: Claude, ChatGPT no modo desenvolvedor, Claude Code, Cursor, VS Code com o Copilot, Windsurf, n8n e o agente que você monta com o SDK do MCP. O conector do Claude.ai exige OAuth; os outros aceitam também a chave no header.

O que acontece quando o agente chama uma ferramenta?

O cliente manda um tools/call com o nome e os argumentos. O servidor confere os argumentos com o inputSchema (fora dele, volta erro sem chamar a API), faz a requisição na API v2 com a sua chave, como o POST /v2/transparents/create do createTransparentPix, e devolve o resultado em texto.

Dá pra testar sem dinheiro de verdade?

Dá. Conecte com a chave do modo de teste: as cobranças não cobram ninguém, o simulateTransparentPixPayment paga um Pix de teste e os relatórios avisam que a conta está em modo de teste. Quando estiver tudo certo, troque pela chave de produção.

É seguro dar acesso pra um agente?

A chave não vai pro assistente: no OAuth, ele recebe um token opaco (mcp_at_) e a chave fica criptografada com AES-256-GCM no servidor. Apagou a chave no painel, o acesso acaba. O saque só vai pra uma chave Pix da própria empresa, o reembolso é sempre integral e cada ação aparece na sua conta como qualquer integração.

Onde está o código?

No GitHub, em AbacatePay/abacatepay-mcp, com licença MIT: TypeScript, Bun e um arquivo por recurso em src/tools. Dá pra rodar na sua máquina, em stdio ou HTTP, e testar com o MCP Inspector.

Quanto custa?

Conectar o MCP não custa nada: você paga só as taxas das vendas, como em qualquer integração. R$ 0,80 fixo por Pix e, no cartão, de 5,42% + R$ 0,60 à vista a 17,37% + R$ 0,60 em 12x. Sem mensalidade e sem adesão.

Preciso de CNPJ?

Sim. Por enquanto a AbacatePay é só pra CNPJ. MEI serve.

Ver o código no GitHub

Conectar o MCP não custa nada.

tools/call.
Pix criado.

Crie a conta, gere a chave de teste e conecte o MCP no seu cliente em 1 minuto. Sem mensalidade e sem adesão.

Criar conta grátis

Sem mensalidade. Aprovação não leva semanas.

Ilustração renascentista com anjos e um abacate numa concha