ifthenpay Payments MCP

Permite a agentes de IA generar pagos, recuperar el historial de transacciones e interactuar con los servicios de ifthenpay a través de MCP.

Documentación

ifthenpay MCP — Pagos

Documentación técnica para el servidor MCP de pagos ifthenpay.
Cubre el protocolo de comunicación, todos los métodos disponibles, el esquema de cada herramienta y ejemplos de solicitud/respuesta.

Descripción general

El servidor MCP (Model Context Protocol) de ifthenpay expone las API de pago de ifthenpay como herramientas invocables para agentes de IA. Implementa el protocolo JSON-RPC 2.0 y la especificación MCP versión 2025-03-26.

El servidor se identifica como ifthenpay-mcp v1.0.0 y registra 9 herramientas que cubren todos los métodos de pago de ifthenpay: Multibanco, MB WAY, Payshop, Tarjeta de Crédito, PinPay (Pago por Enlace), Cofidis Pay, PIX y consulta de pagos.

ComponenteDetalle
ProtocoloJSON-RPC 2.0 — HTTP Streamable (POST) + SSE (GET)
Versión MCP2025-03-26
Nombre servidorifthenpay-mcp
Versión servidor1.0.0

Endpoint

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

Se admiten dos transportes simultáneamente:

MétodoTransporteCaso de uso
POSTHTTP Streamable (JSON-RPC)Llamadas API directas, agentes, clientes MCP
GETFlujo SSEClaude desktop y otros hosts MCP mediante configuración de URL

POST — HTTP Streamable

Envíe mensajes JSON-RPC 2.0 directamente. Cabecera requerida:

Content-Type: application/json

Las notificaciones (mensajes sin id) devuelven HTTP 202 sin cuerpo. Todas las demás solicitudes devuelven HTTP 200 con un cuerpo JSON.

GET — Transporte SSE

Abre una conexión persistente text/event-stream. El servidor envía inmediatamente un evento endpoint con la URL POST y luego mantiene el flujo activo con pings periódicos:

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

: ping

Utilice este transporte al conectarse mediante Claude desktop o cualquier host MCP que admita la opción de configuración url — no se requiere software local.

Configuración de Claude desktop

Añada lo siguiente a claude_desktop_config.json (ubicado en %APPDATA%\Claude\ en Windows o ~/Library/Application Support/Claude/ en 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

Las solicitudes de verificación previa OPTIONS reciben una respuesta inmediata HTTP 200.

Integraciones de cliente

Cualquier cliente compatible con MCP puede conectarse mediante el endpoint SSE. A continuación se muestran configuraciones listas para usar de las herramientas más comunes. Si la autenticación está habilitada, añada "headers": {"Authorization": "Bearer <token>"} a cada entrada.

Claude Desktop

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

Cursor

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

Windsurf

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

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

VS Code — GitHub Copilot

Archivo: .vscode/mcp.json (por proyecto) o mediante User Settings → MCP.

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

ChatGPT Desktop

Archivo: %APPDATA%\ChatGPT\claude_desktop_config.json (Windows) · ~/Library/Application Support/ChatGPT/claude_desktop_config.json (macOS). Requiere la aplicación de escritorio ChatGPT con soporte MCP habilitado.

Continue.dev

Archivo: ~/.continue/config.json (global) · .continue/config.json (por proyecto)

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

Zed

Archivo: ~/.config/zed/settings.json — añada a la clave context_servers.

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

Zed actualmente solo admite transporte stdio. Descargue stdio-bridge.php y actualice la ruta en consecuencia.

Gemini (Google AI Studio)

En Google AI Studio, vaya a Settings → Tools → Add MCP Server e introduzca la URL del endpoint directamente:

El soporte MCP nativo en los productos Gemini está en evolución — consulte la documentación de Google AI para conocer los últimos pasos de configuración.

Protocolo JSON-RPC 2.0

Formato de solicitud

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

Respuesta de éxito

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

Respuesta de error

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

Métodos disponibles

MétodoDescripción
initializeProtocolo de inicio — devuelve la versión del protocolo y las capacidades
pingComprobación de estado — devuelve un objeto vacío
tools/listLista todas las herramientas registradas con sus esquemas
tools/callEjecuta una herramienta con los argumentos proporcionados

Método — initialize

Protocolo de inicio obligatorio para establecer la sesión MCP. Debe ser la primera solicitud.

Solicitud

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

Respuesta

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

Método — ping

Comprueba que el servidor es accesible. No requiere parámetros.

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

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

Método — tools/list

Devuelve todas las herramientas registradas con su nombre, descripción y 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

Ejecuta una herramienta. El campo name identifica la herramienta; arguments contiene los parámetros según el 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 contiene una cadena JSON con los datos devueltos por la API de ifthenpay. Cuando isError es true, text contiene el mensaje de error.

multibanco_create_reference POST

Crea una referencia de pago Multibanco para el pago en cualquier cajero automático portugués o banca en línea.

Entrada

CampoTipoReq.Descripción
mb_keystringObligatorioClave Multibanco de ifthenpay
order_idstringObligatorioIdentificador de pedido único
amountnumberObligatorioImporte en EUR (p. ej. 10.50)
expiry_daysintegerOpcionalDías hasta que caduque la referencia; omitir para sin caducidad

Salida (content[0].text — JSON)

CampoTipoDescripción
entitystringEntidad Multibanco (5 dígitos)
referencestringReferencia de pago (9 dígitos)
amountstringImporte del pago
expiry_datestring|nullFecha de caducidad (YYYYMMDD) o null
request_idstringIdentificador de solicitud único

Ejemplo

// 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

Envía una solicitud de pago al teléfono del cliente mediante la aplicación MB WAY. El cliente dispone de 4 minutos para aprobarla.

Entrada

CampoTipoReq.Descripción
mbway_keystringObligatorioClave MB WAY de ifthenpay
order_idstringObligatorioIdentificador de pedido único
amountnumberObligatorioImporte en EUR (p. ej. 10.50)
phonestringObligatorioNúmero de teléfono en formato 351#912345678 (código de país#número)
descriptionstringOpcionalDescripción mostrada en la aplicación MB WAY

Salida

CampoTipoDescripción
request_idstringToken para consultar el estado mediante mbway_check_status
statusstringEstado inicial — siempre "pending"
messagestringMensaje de estado

Ejemplo

// 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

Comprueba el estado de una solicitud de pago MB WAY. Utilice el request_id devuelto por mbway_request_payment.

Entrada

CampoTipoReq.Descripción
mbway_keystringObligatorioClave MB WAY de ifthenpay
request_idstringObligatorioID de solicitud devuelto por la solicitud de pago

Salida

CampoTipoDescripción
statusstringpaid | rejectedexpireddeclinedpendingunknown
status_codestringCódigo API bruto: 000=paid, 020=rejected, 101=expired, 122=cancelled
messagestringMensaje de estado
created_atstring|nullMarca de tiempo de creación
updated_atstring|nullMarca de tiempo de última actualización

Ejemplo

// 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

Genera una referencia Payshop para pago en efectivo en más de 5.000 agentes, oficinas de correos CTT y tiendas de conveniencia en Portugal.

Entrada

CampoTipoReq.Descripción
payshop_keystringObligatorioClave Payshop de ifthenpay
order_idstringObligatorioIdentificador de pedido único (máx. 25 caracteres)
amountnumberObligatorioImporte en EUR (p. ej. 10.50)
expiry_datestringOpcionalFecha de caducidad en formato YYYYMMDD; omitir para sin caducidad

Salida

CampoTipoDescripción
referencestringReferencia Payshop (13 dígitos)
request_idstringIdentificador de solicitud único
amountstringImporte del pago

Ejemplo

// 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

Crea una sesión de pago alojada con tarjeta de crédito/débito. Admite Visa y Mastercard.

Cuando se invoca a través del agente de IA, este método se redirige a pinpay_create_payment con selected_method="4". La invocación directa mediante MCP conserva el comportamiento original.

Entrada

CampoTipoReq.Descripción
ccard_keystringObligatorioClave de Tarjeta de Crédito de ifthenpay
order_idstringObligatorioIdentificador de pedido único (máx. 15 caracteres)
amountnumberObligatorioImporte en EUR
success_urlstringObligatorioURL tras el pago correcto
error_urlstringObligatorioURL en caso de fallo del pago
cancel_urlstringObligatorioURL si el cliente cancela
languagestringOpcionalIdioma del proceso de pago: "pt" o "en"; predeterminado: "pt"

Salida

CampoTipoDescripción
payment_urlstringURL del proceso de pago alojado
request_idstringIdentificador de solicitud único
amountstringImporte del pago

pinpay_create_payment POST

Crea un enlace de pago PinPay (Pago por Enlace) que admite múltiples métodos de pago. Devuelve una URL y un código PIN para que el cliente acceda al proceso de pago.

Entrada

CampoTipoRequeridoDescripción
gateway_keystringRequeridoClave de pasarela ifthenpay
order_idstringRequeridoIdentificador único de pedido (máx. 15 caracteres)
amountnumberRequeridoImporte (EUR o BRL para PIX)
accountsstringOpcionalMétodos separados por punto y coma en formato MÉTODO|CLAVE — ver tabla a continuación
selected_methodstringOpcionalPreselecciona un método: 1=MB, 2=MBWAY, 3=Payshop, 4=Tarjeta, 7=Cofidis, 8=PIX. Omitir cuando hay múltiples métodos.
otpstringOpcionalPago de un solo uso: "true" — el enlace caduca después de un uso
expiry_datestringOpcionalFecha de caducidad del enlace en formato YYYYMMDD
descriptionstringOpcionalDescripción en la página de pago (máx. 200 caracteres)
langstringOpcionalIdioma: "pt", "en", "es", "fr"
success_urlstringOpcionalURL después del pago exitoso
error_urlstringOpcionalURL en caso de fallo del pago
cancel_urlstringOpcionalURL si el cliente cancela
btn_close_urlstringOpcionalURL para el botón de cierre en la página de pago
btn_close_labelstringOpcionalEtiqueta para el botón de cierre

Prefijos de método para el campo accounts

MétodoPrefijoselected_method
MultibancoMB|{mb_key}1
MB WAYMBWAY|{mbway_key}2
PayshopPAYSHOP|{payshop_key}3
Tarjeta 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

Ejemplo con todos los 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}"

Salida

CampoTipoDescripción
redirect_urlstringURL de pago para compartir con el cliente
pinpay_urlstring|nullURL directa de pinpay.pt
pin_codestring|nullCódigo PIN para acceder al pago
amountstringImporte del pago

Ejemplo — enlace de tarjeta de crédito de un solo uso

// 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

Crea un pago a plazos de Cofidis Pay. Disponible principalmente en Portugal y España.

Cuando se invoca a través del agente de IA, este método se redirige a pinpay_create_payment con accounts="COFIDIS|{cofidis_key}" y selected_method="7".

Entrada

CampoTipoRequeridoDescripción
cofidis_keystringRequeridoClave de Cofidis Pay de ifthenpay
order_idstringRequeridoIdentificador único de pedido (máx. 15 caracteres)
amountnumberRequeridoImporte en EUR (sujeto a los límites de Cofidis)
return_urlstringRequeridoURL de retorno; la API añade &Success=True al aprobarse
descriptionstringOpcionalDescripción o referencia del pago
customer_namestringOpcionalNombre completo del cliente
customer_emailstringOpcionalCorreo electrónico del cliente
customer_phonestringOpcionalTeléfono con código de país (p. ej. +351256245560)

Salida

CampoTipoDescripción
payment_urlstringURL de pago de Cofidis
request_idstringIdentificador único de solicitud
amountstringImporte del pago

pix_create_payment POST

Crea un pago PIX para clientes brasileños. Requiere el CPF del cliente.

Cuando se invoca a través del agente de IA, este método se redirige a pinpay_create_payment con accounts="PIX|{pix_key}" y selected_method="8".

Entrada

CampoTipoRequeridoDescripción
pix_keystringRequeridoClave PIX de ifthenpay
order_idstringRequeridoIdentificador único de pedido (máx. 25 caracteres)
amountnumberRequeridoImporte en BRL (p. ej. 50.00)
redirect_urlstringRequeridoURL de retorno después del pago
customer_namestringRequeridoNombre completo del cliente (máx. 150 caracteres)
customer_cpfstringRequeridoCPF — solo dígitos (p. ej. 74026594025)
customer_emailstringRequeridoCorreo electrónico del cliente
customer_phonestringRequeridoTeléfono con código de país (p. ej. +5585912345678)
descriptionstringOpcionalDescripción (máx. 200 caracteres)
customer_addressstringOpcionalDirección
customer_citystringOpcionalCiudad
customer_statestringOpcionalEstado (p. ej. CE, SP)
customer_zip_codestringOpcionalCódigo postal

Salida

CampoTipoDescripción
request_idstringIdentificador único de solicitud
payment_urlstringURL de pago
qr_code_valuestring|nullValor del código QR PIX
amountstringImporte del pago

payments_list POST

Lista los pagos completados mediante la clave de Backoffice. Admite filtrado por método, fechas, ID de pedido, referencia o ID de solicitud. Devuelve hasta 1,000 registros sin filtros.

Entrada

CampoTipoRequeridoDescripción
bo_keystringRequeridoClave de Backoffice de ifthenpay (proporcionada en su contrato)
entitystringOpcionalFiltro de método: MB, MBWAY, PAYSHOP, CCARD, COFIDIS, GOOGLE, APPLE, PIX, o número de entidad (5 dígitos). Omitir para todos.
sub_entitystringOpcionalClave de método o subentidad
order_idstringOpcionalFiltrar por ID de pedido
referencestringOpcionalFiltrar por referencia
request_idstringOpcionalFiltrar por ID de solicitud
amountstringOpcionalFiltrar por importe exacto
date_startstringOpcionalFecha de inicio: dd-MM-yyyy HH:mm:ss
date_endstringOpcionalFecha de fin: dd-MM-yyyy HH:mm:ss

Salida

CampoTipoDescripción
countintegerNúmero de registros devueltos
paymentsarrayLista de objetos de pago

Ejemplo — pagos MB de junio 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
  }
}

Errores

Errores HTTP

HTTPCausa
405Método HTTP no permitido — solo se acepta POST

Errores JSON-RPC

CódigoSignificado
-32700Error de análisis — JSON no válido
-32600Solicitud no válida — faltan campos obligatorios
-32601Método no encontrado — método desconocido
-32602Parámetros no válidos — herramienta no encontrada o argumentos no válidos
-32603Error interno — error inesperado del servidor

Errores de herramienta (isError: true)

Cuando una herramienta falla, la respuesta tiene isError: true y content[0].text contiene el mensaje:

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