RAILS
Sandbox

Para agentes de código

Agentes (MCP)

O Grip Rails traz um servidor MCP para que o seu agente de código (Claude Code, Cursor, Claude Desktop ou qualquer cliente MCP) integre com o sandbox: ele opera a API, ajuda você a escrever a integração e explica por que algo falha.

O que faz

  • Opera a API. Uma ferramenta por operação do contrato, com o seu esquema tal como está. Cada resposta começa com uma linha legível, com os valores em pesos, e traz o FCM-Request-Id.
  • Ajuda você a construir a integração. Busca nesta documentação, entrega os exemplos oficiais de assinatura de requisições e de verificação de webhooks, e traz comandos guiados para integrar, percorrer o sandbox e preparar a produção.
  • Diagnostica. Revisa a assinatura que o seu código monta e diz qual parte está errada, verifica webhooks, confere a sua configuração e espera o resultado de uma transferência por você.

Garantias

  • Só sandbox. Fala com https://empresas-sandbox.fcmpayments.com. Não inicia com a URL de produção nem com uma API key fcm_live_….
  • As suas chaves não saem da sua máquina. Roda localmente e cada requisição é assinada ali (RFC 9421). A API key viaja só para o sandbox.
  • Novas tentativas seguras. As escritas que movimentam dinheiro ou estado exigem idempotency_key: se a conexão cair, o agente tenta de novo com a mesma chave e a API devolve a mesma resposta. Nunca se paga duas vezes.
  • Sem segredos nas respostas. A API key e as chaves privadas são ocultadas em tudo o que o servidor devolve.

Acesso

O pacote @grip-labs/rails-mcp está em acesso antecipado para integradores com o sandbox ativo: peça-o ao seu contato no Grip Rails. É entregue como um arquivo com a sua impressão digital SHA-256 e instalado com a árvore de dependências fixada (Node 22 ou superior):

BASH
shasum -a 256 grip-labs-rails-mcp-<versão>.tgz      # tem que dar a impressão digital que enviamos
mkdir -m 700 grip-rails-mcp
tar -xzf grip-labs-rails-mcp-<versão>.tgz -C grip-rails-mcp
cd grip-rails-mcp/package
cp npm-shrinkwrap.json package-lock.json            # instala exatamente a árvore fixada
npm ci --omit=dev --ignore-scripts --no-audit --no-fund
node dist/main.js --help

Crie o seu sandbox em segundos

Sem nos pedir credenciais: o MCP cadastra no sandbox uma entidade de teste nova, com as suas contas e dois CVU (números de conta virtual argentinos). No terminal:

BASH
node /caminho/absoluto/grip-rails-mcp/package/dist/main.js init --alta

Gera o seu par de chaves de assinatura Ed25519 em ~/.grip-rails/ (a privada, com permissões 0600), faz o cadastro com uma requisição assinada com a sua chave, guarda a API key e o id da sua chave em ~/.grip-rails/config.json (também 0600) e o confirma. No fim, mostra a entidade, os CVU e o comando exato para conectar o MCP, já sem variáveis. Com --nombre "…" você dá um nome à entidade. Se algo for interrompido, rode de novo: ele retoma de onde parou, com as mesmas chaves.

Ou pelo agente, sem terminal: conecte o MCP sem credenciais (o primeiro comando de Como conectar) e peça “crie o meu sandbox”. Sem credenciais, ele inicia em modo de preparação, com a documentação, os exemplos, rails_check_setup e rails_create_sandbox, que faz o mesmo que init --alta; ao terminar, o MCP passa ao modo completo sem reiniciar.

Como conectar

Se você criou o seu sandbox com init --alta, as credenciais já estão em ~/.grip-rails/config.json e não são necessárias variáveis. No Claude Code:

BASH
claude mcp add grip-rails -- node /caminho/absoluto/grip-rails-mcp/package/dist/main.js

Se você já tem credenciais do sandbox, passe-as como variáveis: a API key fcm_test_…, o keyid (ck_…) da sua chave pública registrada e o caminho para a sua chave privada, nunca o PEM colado:

BASH
claude mcp add grip-rails \
  -e GRIP_RAILS_API_KEY=fcm_test_… \
  -e GRIP_RAILS_KEY_ID=ck_… \
  -e GRIP_RAILS_SIGNING_KEY=/caminho/para/sua-chave-privada.pem \
  -- node /caminho/absoluto/grip-rails-mcp/package/dist/main.js

Fica na sua configuração local. Não use --scope project com a API key: ela ficaria escrita no .mcp.json do repositório.

No Cursor (~/.cursor/mcp.json) ou no Claude Desktop (claude_desktop_config.json). Com config.json, sem o bloco env:

JSON
{
  "mcpServers": {
    "grip-rails": {
      "command": "node",
      "args": ["/caminho/absoluto/grip-rails-mcp/package/dist/main.js"],
      "env": {
        "GRIP_RAILS_API_KEY": "fcm_test_…",
        "GRIP_RAILS_KEY_ID": "ck_…",
        "GRIP_RAILS_SIGNING_KEY": "/caminho/para/sua-chave-privada.pem"
      }
    }
  }
}

Primeiro teste

Peça ao agente: “rode rails_check_setup”. Ele responde listo com a sua entidade, a diferença de relógio e a versão da API. Depois, experimente um comando guiado.

Ferramentas

Uma por operação da API, com os nomes e os esquemas do contrato:

GrupoFerramentas
Entidade e contasrails_get_entity, rails_list_accounts, rails_get_account, rails_list_account_numbers, rails_get_account_number
Transferências de saídarails_create_counterparty_validation, rails_create_outgoing_transfer, rails_list_outgoing_transfers, rails_get_outgoing_transfer
Créditos recebidosrails_list_incoming_transfers, rails_get_incoming_transfer
Eventos e idempotênciarails_list_events, rails_get_event, rails_get_idempotency_key, rails_get_jwks
Simuladores (só sandbox)rails_simulate_incoming_transfer, rails_simulate_rail_result, rails_simulate_late_settlement_review, rails_get_sandbox_clock, rails_advance_sandbox_clock

E oito de apoio:

FerramentaO que faz
rails_check_setupRevisa a sua configuração: credenciais, diferença de relógio, chave registrada e versão da API. Se algo falhar, diz o quê e como resolver.
rails_search_docs, rails_read_docBuscam e leem esta documentação, com o link para cada seção.
rails_get_code_exampleOs exemplos oficiais de assinatura de requisições e verificação de webhooks, em TypeScript, Python e Go.
rails_check_signatureVocê passa a requisição que o seu código assinou e ela diz qual parte da assinatura está errada: componentes, Content-Digest, created, keyid.
rails_verify_webhookVerifica um webhook recebido contra o JWKS e explica cada controle.
rails_wait_for_outgoing_transfer, rails_wait_for_eventsEsperam o estado final de uma transferência ou os eventos novos, sem consultar manualmente.

Sem credenciais, existe também rails_create_sandbox: veja Crie o seu sandbox em segundos.

Comandos guiados

São prompts MCP; no Claude Code aparecem com /.

ComandoO que faz
integrarGuia para integrar o Grip Rails no seu código: assinatura com o exemplo oficial, idempotência persistida, conciliação por sequence e webhooks verificados. Aceita a linguagem.
recorrido_sandboxO percurso completo do sandbox: crédito recebido, validação de contraparte, transferência de saída, os caminhos de falha (valores que terminam em …13, …70 e …99) e a liquidação tardia.
checklist_produccionO que você precisa ter resolvido antes de pedir produção.

Em breve

  • Instalação em uma linha pelo npm.