ifthenpay Payments MCP

Permitir que agentes

Documentação

ifthenpay MCP — Payments

Documentação técnica do servidor MCP de pagamentos ifthenpay.
Cobre o protocolo de comunicação, todos os métodos disponíveis, o esquema de cada ferramenta e exemplos de solicitação/resposta.

Visão geral

O servidor ifthenpay MCP (Model Context Protocol) expõe as APIs de pagamento ifthenpay como ferramentas invocáveis para agentes de IA. Ele implementa o protocolo JSON-RPC 2.0 e a especificação MCP versão 2025-03-26.

O servidor é identificado como ifthenpay-mcp v1.0.0 e registra 9 ferramentas cobrindo todos os métodos de pagamento ifthenpay: Multibanco, MB WAY, Payshop, Credit Card, PinPay (Pay by Link), Cofidis Pay, PIX e consulta de pagamento.

ComponenteDetalhe
ProtocoloJSON-RPC 2.0 — Streamable HTTP (POST) + SSE (GET)
Versão MCP2025-03-26
Nome do servidorifthenpay-mcp
Versão do servidor1.0.0

Endpoint

https://ai.ifthenpay.com/mcp/payments/index.php

Dois transportes são suportados simultaneamente:

MétodoTransporteCaso de uso
POSTStreamable HTTP (JSON-RPC)Chamadas diretas de API, agentes, clientes MCP
GETFluxo SSEClaude desktop e outros hosts MCP via configuração de URL

POST — Streamable HTTP

Envie mensagens JSON-RPC 2.0 diretamente. Cabeçalho obrigatório:

Content-Type: application/json

Notificações (mensagens sem id) retornam HTTP 202 sem corpo. Todas as outras solicitações retornam HTTP 200 com corpo JSON.

GET — Transporte SSE

Abre uma conexão text/event-stream persistente. O servidor envia imediatamente um evento endpoint com a URL POST e mantém o fluxo ativo com pings periódicos:

event: endpoint
data: "https://ai.ifthenpay.com/mcp/payments/index.php"

: ping

Use este transporte ao conectar via Claude desktop ou qualquer host MCP que suporte a opção de configuração url — nenhum software local é necessário.

Configuração do Claude desktop

Adicione o seguinte a claude_desktop_config.json (localizado em %APPDATA%\Claude\ no Windows ou ~/Library/Application Support/Claude/ no macOS):

{
  "mcpServers": {
    "ifthenpay": {
      "url": "https://ai.ifthenpay.com/mcp/payments/index.php"
    }
  }
}

CORS

Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, Authorization, Mcp-Session-Id
Access-Control-Allow-Methods: GET, POST, OPTIONS

Solicitações preflight OPTIONS recebem uma resposta HTTP 200 imediata.

Integrações de Cliente

Qualquer cliente compatível com MCP pode se conectar usando o endpoint SSE. Abaixo estão configurações prontas para uso das ferramentas mais comuns. Se a autenticação estiver habilitada, adicione "headers": {"Authorization": "Bearer <token>"} a cada entrada.

Claude Desktop

Arquivo: %APPDATA%\Claude\claude_desktop_config.json (Windows) · ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

Cursor

Global: ~/.cursor/mcp.json · Por projeto: .cursor/mcp.json

Windsurf

Arquivo: ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "ifthenpay": {
      "serverUrl": "https://ai.ifthenpay.com/mcp/payments/index.php"
    }
  }
}

VS Code — GitHub Copilot

Arquivo: .vscode/mcp.json (por projeto) ou via Configurações do Usuário → MCP.

{
  "servers": {
    "ifthenpay": {
      "type": "sse",
      "url": "https://ai.ifthenpay.com/mcp/payments/index.php"
    }
  }
}

ChatGPT Desktop

Arquivo: %APPDATA%\ChatGPT\claude_desktop_config.json (Windows) · ~/Library/Application Support/ChatGPT/claude_desktop_config.json (macOS). Requer o aplicativo de desktop ChatGPT com suporte a MCP habilitado.

Continue.dev

Arquivo: ~/.continue/config.json (global) · .continue/config.json (por projeto)

{
  "mcpServers": [
    {
      "name": "ifthenpay",
      "transport": {
        "type": "sse",
        "url": "https://ai.ifthenpay.com/mcp/payments/index.php"
      }
    }
  ]
}

Zed

Arquivo: ~/.config/zed/settings.json — adicione à chave context_servers.

{
  "context_servers": {
    "ifthenpay": {
      "command": {
        "path": "php",
        "args": ["/path/to/mcp/stdio-bridge.php"]
      }
    }
  }
}

O Zed atualmente suporta apenas transporte stdio. Baixe stdio-bridge.php e atualize o caminho de acordo.

Gemini (Google AI Studio)

No Google AI Studio, vá para Configurações → Ferramentas → Adicionar Servidor MCP e insira a URL do endpoint diretamente:

O suporte nativo a MCP nos produtos Gemini está em evolução — consulte a documentação do Google AI para as etapas de configuração mais recentes.

Protocolo JSON-RPC 2.0

Formato de solicitação

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "<method>",
  "params": { /* method-specific parameters */ }
}

Resposta de sucesso

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": { /* result */ }
}

Resposta de erro

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": { "code": -32600, "message": "error description" }
}

Métodos disponíveis

MétodoDescrição
initializeHandshake inicial — retorna versão do protocolo e capacidades
pingVerificação de saúde — retorna um objeto vazio
tools/listLista todas as ferramentas registradas com seus esquemas
tools/callExecuta uma ferramenta com os argumentos fornecidos

Método — initialize

Handshake obrigatório para estabelecer a sessão MCP. Deve ser a primeira solicitação.

Solicitação

{
  "jsonrpc": "2.0", "id": 1, "method": "initialize",
  "params": {
    "protocolVersion": "2025-03-26",
    "clientInfo": { "name": "my-client", "version": "1.0.0" }
  }
}

Resposta

{
  "jsonrpc": "2.0", "id": 1,
  "result": {
    "protocolVersion": "2025-03-26",
    "serverInfo": { "name": "ifthenpay-mcp", "version": "1.0.0" },
    "capabilities": { "tools": {} }
  }
}

Método — ping

Verifica se o servidor está acessível. Nenhum parâmetro é necessário.

// Request
{ "jsonrpc": "2.0", "id": 2, "method": "ping" }

// Response
{ "jsonrpc": "2.0", "id": 2, "result": {} }

Método — tools/list

Retorna todas as ferramentas registradas com nome, descrição e esquema de entrada (JSON Schema Draft 7).

// Request
{ "jsonrpc": "2.0", "id": 3, "method": "tools/list" }

// Response (abbreviated)
{
  "jsonrpc": "2.0", "id": 3,
  "result": {
    "tools": [
      {
        "name": "multibanco_create_reference",
        "description": "Creates a Multibanco payment reference...",
        "inputSchema": { "type": "object", "properties": { /* ... */ } }
      }
      // ... + 8 more tools
    ]
  }
}

Método — tools/call

Executa uma ferramenta. O campo name identifica a ferramenta; arguments contém os parâmetros de acordo com o esquema.

// Request
{
  "jsonrpc": "2.0", "id": 4, "method": "tools/call",
  "params": {
    "name": "<tool_name>",
    "arguments": { /* tool parameters */ }
  }
}
{
  "jsonrpc": "2.0", "id": 4,
  "result": {
    "content": [{ "type": "text", "text": "{\"entity\":\"11249\",\"reference\":\"123456789\",...}" }],
    "isError": false
  }
}

content[0].text contém uma string JSON com os dados retornados pela API ifthenpay. Quando isError é true, text contém a mensagem de erro.

multibanco_create_reference POST

Cria uma referência de pagamento Multibanco para pagamento em qualquer caixa eletrônico português ou internet banking.

Entrada

CampoTipoObrig.Descrição
mb_keystringObrigatórioChave Multibanco ifthenpay
order_idstringObrigatórioIdentificador único do pedido
amountnumberObrigatórioValor em EUR (ex.: 10.50)
expiry_daysintegerOpcionalDias até a referência expirar; omita para sem expiração

Saída (content[0].text — JSON)

CampoTipoDescrição
entitystringEntidade Multibanco (5 dígitos)
referencestringReferência de pagamento (9 dígitos)
amountstringValor do pagamento
expiry_datestring|nullData de expiração (YYYYMMDD) ou null
request_idstringIdentificador único da solicitação

Exemplo

// Request
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "multibanco_create_reference",
    "arguments": { "mb_key": "{mb_key}", "order_id": "1001", "amount": 25.00 }
  }
}

// Response
{
  "result": {
    "content": [{ "type": "text", "text": "{\"entity\":\"11249\",\"reference\":\"123456789\",\"amount\":\"25.00\",\"expiry_date\":null,\"request_id\":\"req_abc123\"}" }],
    "isError": false
  }
}

mbway_request_payment POST

Envia uma solicitação de pagamento para o telefone do cliente via aplicativo MB WAY. O cliente tem 4 minutos para aprovar.

Entrada

CampoTipoObrig.Descrição
mbway_keystringObrigatórioChave MB WAY ifthenpay
order_idstringObrigatórioIdentificador único do pedido
amountnumberObrigatórioValor em EUR (ex.: 10.50)
phonestringObrigatórioNúmero de telefone no formato 351#912345678 (código do país#número)
descriptionstringOpcionalDescrição exibida no aplicativo MB WAY

Saída

CampoTipoDescrição
request_idstringToken para consulta de status via mbway_check_status
statusstringStatus inicial — sempre "pending"
messagestringMensagem de status

Exemplo

// Request
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "mbway_request_payment",
    "arguments": { "mbway_key": "{mbway_key}", "order_id": "912345678", "amount": 15.50, "phone": "351#912345678" }
  }
}

// Response
{
  "result": {
    "content": [{ "type": "text", "text": "{\"request_id\":\"mbw_7f3a1b2c\",\"status\":\"pending\",\"message\":\"Payment request sent\"}" }],
    "isError": false
  }
}

mbway_check_status GET

Verifica o status de uma solicitação de pagamento MB WAY. Use o request_id retornado por mbway_request_payment.

Entrada

CampoTipoObrig.Descrição
mbway_keystringObrigatórioChave MB WAY ifthenpay
request_idstringObrigatórioID da solicitação retornado pela solicitação de pagamento

Saída

CampoTipoDescrição
statusstringpaid | rejectedexpireddeclinedpendingunknown
status_codestringCódigo bruto da API: 000=pago, 020=rejeitado, 101=expirado, 122=cancelado
messagestringMensagem de status
created_atstring|nullTimestamp de criação
updated_atstring|nullTimestamp da última atualização

Exemplo

// Request
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "mbway_check_status",
    "arguments": { "mbway_key": "{mbway_key}", "request_id": "mbw_7f3a1b2c" }
  }
}

// Response — approved
{
  "result": {
    "content": [{ "type": "text", "text": "{\"status\":\"paid\",\"status_code\":\"000\",\"message\":\"Payment approved\",\"created_at\":\"2026-06-18 10:00:00\",\"updated_at\":\"2026-06-18 10:02:34\"}" }],
    "isError": false
  }
}

payshop_create_reference POST

Gera uma referência Payshop para pagamento em dinheiro em mais de 5.000 agentes, agências dos CTT e lojas de conveniência em Portugal.

Entrada

CampoTipoObrig.Descrição
payshop_keystringObrigatórioChave Payshop ifthenpay
order_idstringObrigatórioIdentificador único do pedido (máx. 25 caracteres)
amountnumberObrigatórioValor em EUR (ex.: 10.50)
expiry_datestringOpcionalData de expiração no formato YYYYMMDD; omita para sem expiração

Saída

CampoTipoDescrição
referencestringReferência Payshop (13 dígitos)
request_idstringIdentificador único da solicitação
amountstringValor do pagamento

Exemplo

// Request
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "payshop_create_reference",
    "arguments": { "payshop_key": "{payshop_key}", "order_id": "2024001", "amount": 50.00 }
  }
}

// Response
{
  "result": {
    "content": [{ "type": "text", "text": "{\"reference\":\"1234567890123\",\"request_id\":\"ps_req456\",\"amount\":\"50.00\"}" }],
    "isError": false
  }
}

creditcard_create_payment POST

Cria uma sessão de pagamento hospedada com cartão de crédito/débito. Suporta Visa e Mastercard.

Quando invocado através do agente de IA, este método é redirecionado para pinpay_create_payment com selected_method="4". A invocação direta via MCP mantém o comportamento original.

Entrada

CampoTipoObrig.Descrição
ccard_keystringObrigatórioChave de Cartão de Crédito ifthenpay
order_idstringObrigatórioIdentificador único do pedido (máx. 15 caracteres)
amountnumberObrigatórioValor em EUR
success_urlstringObrigatórioURL após pagamento bem-sucedido
error_urlstringObrigatórioURL em caso de falha no pagamento
cancel_urlstringObrigatórioURL se o cliente cancelar
languagestringOpcionalIdioma do checkout: "pt" ou "en"; padrão: "pt"

Saída

CampoTipoDescrição
payment_urlstringURL de checkout hospedado
request_idstringIdentificador único da solicitação
amountstringValor do pagamento

pinpay_create_payment POST

Cria um link de pagamento PinPay (Pay by Link) com suporte a múltiplos métodos de pagamento. Retorna uma URL e um código PIN para o cliente acessar o checkout.

Entrada

CampoTipoObrig.Descrição
gateway_keystringObrigatórioChave de gateway ifthenpay
order_idstringObrigatórioIdentificador único do pedido (máx. 15 caracteres)
amountnumberObrigatórioValor (EUR ou BRL para PIX)
accountsstringOpcionalMétodos separados por ponto e vírgula no formato MÉTODO|CHAVE — veja a tabela abaixo
selected_methodstringOpcionalPré-seleciona um método: 1=MB, 2=MBWAY, 3=Payshop, 4=Cartão, 7=Cofidis, 8=PIX. Omita quando houver múltiplos métodos.
otpstringOpcionalPagamento de uso único: "true" — o link expira após um uso
expiry_datestringOpcionalData de expiração do link no formato AAAAMMDD
descriptionstringOpcionalDescrição na página de pagamento (máx. 200 caracteres)
langstringOpcionalIdioma: "pt", "en", "es", "fr"
success_urlstringOpcionalURL após pagamento bem-sucedido
error_urlstringOpcionalURL em caso de falha no pagamento
cancel_urlstringOpcionalURL se o cliente cancelar
btn_close_urlstringOpcionalURL para o botão de fechar na página de pagamento
btn_close_labelstringOpcionalRótulo para o botão de fechar

Prefixos de método para o campo accounts

MétodoPrefixoselected_method
MultibancoMB|{mb_key}1
MB WAYMBWAY|{mbway_key}2
PayshopPAYSHOP|{payshop_key}3
Cartão de CréditoCCARD|{ccard_key}4
Cofidis PayCOFIDIS|{cofidis_key}7
PIXPIX|{pix_key}8
Google PayGOOGLE|{google_key}4
Apple PayAPPLE|{apple_key}4

Exemplo com todos os métodos:

"MB|{mb_key};MBWAY|{mbway_key};PAYSHOP|{payshop_key};CCARD|{ccard_key};COFIDIS|{cofidis_key};PIX|{pix_key};GOOGLE|{google_key};APPLE|{apple_key}"

Saída

CampoTipoDescrição
redirect_urlstringURL de pagamento para compartilhar com o cliente
pinpay_urlstring|nullURL direta do pinpay.pt
pin_codestring|nullCódigo PIN para acessar o checkout
amountstringValor do pagamento

Exemplo — link de cartão de crédito de uso único

// Request
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "pinpay_create_payment",
    "arguments": {
      "gateway_key": "{gateway_key}", "order_id": "CC-001", "amount": 99.99,
      "accounts": "CCARD|{ccard_key}", "selected_method": "4", "otp": "true"
    }
  }
}

// Response
{
  "result": {
    "content": [{ "type": "text", "text": "{\"redirect_url\":\"https://pinpay.pt/pay/a1b2c3\",\"pin_code\":\"123456\",\"amount\":\"99.99\"}" }],
    "isError": false
  }
}

cofidis_create_payment POST

Cria um pagamento parcelado Cofidis Pay. Disponível principalmente em Portugal e Espanha.

Quando invocado pelo agente de IA, este método é redirecionado para pinpay_create_payment com accounts="COFIDIS|{cofidis_key}" e selected_method="7".

Entrada

CampoTipoObrig.Descrição
cofidis_keystringObrigatórioChave Cofidis Pay ifthenpay
order_idstringObrigatórioIdentificador único do pedido (máx. 15 caracteres)
amountnumberObrigatórioValor em EUR (sujeito aos limites da Cofidis)
return_urlstringObrigatórioURL de retorno; a API acrescenta &Success=True na aprovação
descriptionstringOpcionalDescrição ou referência do pagamento
customer_namestringOpcionalNome completo do cliente
customer_emailstringOpcionalE-mail do cliente
customer_phonestringOpcionalTelefone com código do país (ex.: +351256245560)

Saída

CampoTipoDescrição
payment_urlstringURL do checkout Cofidis
request_idstringIdentificador único da solicitação
amountstringValor do pagamento

pix_create_payment POST

Cria um pagamento PIX para clientes brasileiros. Requer o CPF do cliente.

Quando invocado pelo agente de IA, este método é redirecionado para pinpay_create_payment com accounts="PIX|{pix_key}" e selected_method="8".

Entrada

CampoTipoObrig.Descrição
pix_keystringObrigatórioChave PIX ifthenpay
order_idstringObrigatórioIdentificador único do pedido (máx. 25 caracteres)
amountnumberObrigatórioValor em BRL (ex.: 50.00)
redirect_urlstringObrigatórioURL de retorno após o pagamento
customer_namestringObrigatórioNome completo do cliente (máx. 150 caracteres)
customer_cpfstringObrigatórioCPF — apenas dígitos (ex.: 74026594025)
customer_emailstringObrigatórioE-mail do cliente
customer_phonestringObrigatórioTelefone com código do país (ex.: +5585912345678)
descriptionstringOpcionalDescrição (máx. 200 caracteres)
customer_addressstringOpcionalEndereço
customer_citystringOpcionalCidade
customer_statestringOpcionalEstado (ex.: CE, SP)
customer_zip_codestringOpcionalCódigo postal

Saída

CampoTipoDescrição
request_idstringIdentificador único da solicitação
payment_urlstringURL de pagamento
qr_code_valuestring|nullValor do QR code PIX
amountstringValor do pagamento

payments_list POST

Lista pagamentos concluídos via Chave de Backoffice. Suporta filtros por método, datas, ID do pedido, referência ou ID da solicitação. Retorna até 1.000 registros sem filtros.

Entrada

CampoTipoObrig.Descrição
bo_keystringObrigatórioChave de Backoffice ifthenpay (fornecida no seu contrato)
entitystringOpcionalFiltro por método: MB, MBWAY, PAYSHOP, CCARD, COFIDIS, GOOGLE, APPLE, PIX, ou número da entidade (5 dígitos). Omita para todos.
sub_entitystringOpcionalChave do método ou subentidade
order_idstringOpcionalFiltrar por ID do pedido
referencestringOpcionalFiltrar por referência
request_idstringOpcionalFiltrar por ID da solicitação
amountstringOpcionalFiltrar por valor exato
date_startstringOpcionalData inicial: dd-MM-yyyy HH:mm:ss
date_endstringOpcionalData final: dd-MM-yyyy HH:mm:ss

Saída

CampoTipoDescrição
countintegerNúmero de registros retornados
paymentsarrayLista de objetos de pagamento

Exemplo — pagamentos MB de junho de 2026

// Request
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "payments_list",
    "arguments": {
      "bo_key": "{bo_key}", "entity": "MB",
      "date_start": "01-06-2026 00:00:00", "date_end": "30-06-2026 23:59:59"
    }
  }
}

// Response
{
  "result": {
    "content": [{ "type": "text", "text": "{\"count\":2,\"payments\":[{\"order_id\":\"1001\",\"amount\":\"25.00\",\"status\":\"paid\"},{\"order_id\":\"1002\",\"amount\":\"80.00\",\"status\":\"paid\"}]}" }],
    "isError": false
  }
}

Erros

Erros HTTP

HTTPCausa
405Método HTTP não permitido — apenas POST é aceito

Erros JSON-RPC

CódigoSignificado
-32700Erro de análise — JSON inválido
-32600Solicitação inválida — campos obrigatórios ausentes
-32601Método não encontrado — método desconhecido
-32602Parâmetros inválidos — ferramenta não encontrada ou argumentos inválidos
-32603Erro interno — erro inesperado do servidor

Erros de ferramenta (isError: true)

Quando uma ferramenta falha, a resposta tem isError: true e content[0].text contém a mensagem:

{
  "result": {
    "content": [{ "type": "text", "text": "Invalid key or API error: ..." }],
    "isError": true
  }
}