Para agentes de código
Agentes (MCP)
Grip Rails trae un servidor MCP para que tu agente de código (Claude Code, Cursor, Claude Desktop o cualquier cliente MCP) integre contra el sandbox: opera la API, te ayuda a escribir la integración y te explica por qué falla algo.
Qué hace
- Opera la API. Una herramienta por operación del contrato, con su esquema tal cual. Cada respuesta empieza con una línea legible, con los montos en pesos, y trae el
FCM-Request-Id. - Te ayuda a construir la integración. Busca en esta documentación, te da los ejemplos oficiales de firma y de verificación de webhooks, y trae comandos guiados para integrar, recorrer el sandbox y preparar producción.
- Diagnostica. Revisa la firma que arma tu código y te dice qué parte está mal, verifica webhooks, chequea tu configuración y espera el resultado de una transferencia por vos.
Garantías
- Sólo sandbox. Habla con
https://empresas-sandbox.fcmpayments.com. No arranca con la URL de producción ni con una API keyfcm_live_…. - Tus claves no salen de tu máquina. Corre localmente y cada pedido se firma ahí (RFC 9421). La API key viaja sólo al sandbox.
- Reintentos seguros. Las escrituras que mueven plata o estado exigen
idempotency_key: si se corta la conexión, el agente reintenta con la misma clave y la API devuelve la misma respuesta. Nunca se paga dos veces. - Sin secretos en las respuestas. La API key y las claves privadas se tapan en todo lo que el servidor devuelve.
Acceso
El paquete @grip-labs/rails-mcp está en acceso anticipado para integradores con el sandbox activo: pedíselo a tu contacto en Grip Rails. Se entrega como un archivo con su huella SHA-256 y se instala con el árbol de dependencias fijado (Node 22 o superior):
shasum -a 256 grip-labs-rails-mcp-<versión>.tgz # tiene que dar la huella que te mandamos
mkdir -m 700 grip-rails-mcp
tar -xzf grip-labs-rails-mcp-<versión>.tgz -C grip-rails-mcp
cd grip-rails-mcp/package
cp npm-shrinkwrap.json package-lock.json # instala exactamente el árbol fijado
npm ci --omit=dev --ignore-scripts --no-audit --no-fund
node dist/main.js --helpCreá tu sandbox en segundos
Sin pedirnos credenciales: el MCP da de alta en el sandbox una entidad de prueba nueva, con sus cuentas y dos CVU. Desde la terminal:
node /ruta/absoluta/grip-rails-mcp/package/dist/main.js init --altaGenera tu par de claves de firma Ed25519 en ~/.grip-rails/ (la privada, con permisos 0600), da el alta firmada con tu clave, guarda la API key y el id de tu clave en ~/.grip-rails/config.json (también 0600) y la confirma. Al final muestra la entidad, los CVU y el comando exacto para conectar el MCP, ya sin variables. Con --nombre "…" le ponés nombre a la entidad. Si algo se corta, volvé a correrlo: retoma donde quedó, con las mismas claves.
O desde el agente, sin terminal: conectá el MCP sin credenciales (el primer comando de Conectarlo) y pedile «creá mi sandbox». Sin credenciales arranca en modo preparación, con la documentación, los ejemplos, rails_check_setup y rails_create_sandbox, que hace lo mismo que init --alta; al terminar, el MCP pasa a modo completo sin reiniciar.
Conectarlo
Si creaste tu sandbox con init --alta, las credenciales ya están en ~/.grip-rails/config.json y no hacen falta variables. En Claude Code:
claude mcp add grip-rails -- node /ruta/absoluta/grip-rails-mcp/package/dist/main.jsSi ya tenés credenciales del sandbox, pasalas como variables: la API key fcm_test_…, el keyid (ck_…) de tu clave pública registrada y la ruta a tu clave privada, nunca el PEM pegado:
claude mcp add grip-rails \
-e GRIP_RAILS_API_KEY=fcm_test_… \
-e GRIP_RAILS_KEY_ID=ck_… \
-e GRIP_RAILS_SIGNING_KEY=/ruta/a/tu-clave-privada.pem \
-- node /ruta/absoluta/grip-rails-mcp/package/dist/main.jsQueda en tu configuración local. No uses --scope project con la API key: quedaría escrita en el .mcp.json del repositorio.
En Cursor (~/.cursor/mcp.json) o Claude Desktop (claude_desktop_config.json). Con config.json, sin el bloque env:
{
"mcpServers": {
"grip-rails": {
"command": "node",
"args": ["/ruta/absoluta/grip-rails-mcp/package/dist/main.js"],
"env": {
"GRIP_RAILS_API_KEY": "fcm_test_…",
"GRIP_RAILS_KEY_ID": "ck_…",
"GRIP_RAILS_SIGNING_KEY": "/ruta/a/tu-clave-privada.pem"
}
}
}
}Primera prueba
Pedile al agente: «corré rails_check_setup». Responde listo con tu entidad, el desfase de reloj y la versión de la API. Después, probá un comando guiado.
Herramientas
Una por operación de la API, con los nombres y esquemas del contrato:
| Grupo | Herramientas |
|---|---|
| Entidad y cuentas | rails_get_entity, rails_list_accounts, rails_get_account, rails_list_account_numbers, rails_get_account_number |
| Transferencias salientes | rails_create_counterparty_validation, rails_create_outgoing_transfer, rails_list_outgoing_transfers, rails_get_outgoing_transfer |
| Créditos entrantes | rails_list_incoming_transfers, rails_get_incoming_transfer |
| Eventos e idempotencia | rails_list_events, rails_get_event, rails_get_idempotency_key, rails_get_jwks |
| Simuladores (sólo sandbox) | rails_simulate_incoming_transfer, rails_simulate_rail_result, rails_simulate_late_settlement_review, rails_get_sandbox_clock, rails_advance_sandbox_clock |
Y ocho de ayuda:
| Herramienta | Qué hace |
|---|---|
rails_check_setup | Revisa tu configuración: credenciales, desfase de reloj, clave registrada y versión de la API. Si algo falla, dice qué y cómo resolverlo. |
rails_search_docs, rails_read_doc | Buscan y leen esta documentación, con el enlace a cada sección. |
rails_get_code_example | Los ejemplos oficiales de firma de pedidos y verificación de webhooks, en TypeScript, Python y Go. |
rails_check_signature | Le pasás el pedido que firmó tu código y te dice qué parte de la firma está mal: componentes, Content-Digest, created, keyid. |
rails_verify_webhook | Verifica un webhook recibido contra el JWKS y explica cada control. |
rails_wait_for_outgoing_transfer, rails_wait_for_events | Esperan el estado final de una transferencia o los eventos nuevos, sin consultar a mano. |
Sin credenciales, además, rails_create_sandbox: ver Creá tu sandbox en segundos.
Comandos guiados
Son prompts MCP; en Claude Code aparecen con /.
| Comando | Qué hace |
|---|---|
integrar | Guía para integrar Grip Rails en tu código: firma con el ejemplo oficial, idempotencia persistida, conciliación por sequence y webhooks verificados. Acepta el lenguaje. |
recorrido_sandbox | El recorrido completo del sandbox: crédito entrante, validación de contraparte, transferencia saliente, los caminos de falla (importes que terminan en …13, …70 y …99) y la acreditación tardía. |
checklist_produccion | Lo que tenés que tener resuelto antes de pedir producción. |
Próximamente
- Instalación en una línea desde npm.