Locked JSON-RPC at /mcp
tools/list and tools/call. Unauthenticated calls fail. X-API-Key on /mcp and /audit. Optional OAuth2 resource server when the oauth profile is on.
Toolplane
We put API keys, an audit trail, and human-in-the-loop in front of payment tools. Agents may search and explain. They may not complete a credit transfer until an operator approves it. The local demo runs on synthetic data and stubs — no paid model calls.
What we ship
Locked JSON-RPC, human approval on money movement, and an audit record of every tool call.
tools/list and tools/call. Unauthenticated calls fail. X-API-Key on /mcp and /audit. Optional OAuth2 resource server when the oauth profile is on.
create_transfer stays PENDING until POST /approvals/{id}/approve with a key. That is the whole point.
Who (key id), tool, args hash, decision, latency, timestamp. Kafka topic toolplane.audit.v1 when a broker exists; the database still writes if it does not.
Tools declared with @McpTool. We do not expose Spring AI’s unauthenticated HTTP MCP transport. Toolplane is that door, locked.
Access
The implementation lives in a private GitHub repository. We do not treat a clone URL as the product. If you want a two-week diagnostic on a Java/Spring payments or operations stack — invoice nSave ACH or Payoneer — write the company inbox.
Write us. We will tell you whether a diagnostic is the right next step.