RAILS
Sandbox

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 key fcm_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):

BASH
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 --help

Creá 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:

BASH
node /ruta/absoluta/grip-rails-mcp/package/dist/main.js init --alta

Genera 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:

BASH
claude mcp add grip-rails -- node /ruta/absoluta/grip-rails-mcp/package/dist/main.js

Si 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:

BASH
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.js

Queda 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:

JSON
{
  "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:

GrupoHerramientas
Entidad y cuentasrails_get_entity, rails_list_accounts, rails_get_account, rails_list_account_numbers, rails_get_account_number
Transferencias salientesrails_create_counterparty_validation, rails_create_outgoing_transfer, rails_list_outgoing_transfers, rails_get_outgoing_transfer
Créditos entrantesrails_list_incoming_transfers, rails_get_incoming_transfer
Eventos e idempotenciarails_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:

HerramientaQué hace
rails_check_setupRevisa 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_docBuscan y leen esta documentación, con el enlace a cada sección.
rails_get_code_exampleLos ejemplos oficiales de firma de pedidos y verificación de webhooks, en TypeScript, Python y Go.
rails_check_signatureLe 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_webhookVerifica un webhook recibido contra el JWKS y explica cada control.
rails_wait_for_outgoing_transfer, rails_wait_for_eventsEsperan 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 /.

ComandoQué hace
integrarGuí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_sandboxEl 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_produccionLo que tenés que tener resuelto antes de pedir producción.

Próximamente

  • Instalación en una línea desde npm.