Rightshold™ Sign up

Answers · agent payments

We want an AI assistant to read our business bank account, categorize transactions and prepare bill payments. How do we connect it so it can't send money on its own, what can it still change without approval, and what should we avoid giving it?

Last updated

TL;DR: Connect it through the bank's own agent integration with OAuth and the fewest scopes, never with your password, a browser session or a read-write API token. Mercury's Agent Controls (announced November 5, 2026) are a concrete example of what to look for: the agent's permissions can't exceed the connecting person's role, each write action needs its own OAuth scope, the agent can only create payment and transfer requests (its docs say it can't approve them or move money, and a request needs approval in Mercury even where the company's policy would let a person skip approval), there's an activity log of what agents did, and you can disconnect an agent at once. Three gaps remain. Some write actions apply immediately with no approval, such as category and note edits and budget changes, including raising a budget's amount per person. Read access alone exposes balances, transaction history and recipients' bank details if the AI tool or a prompt injection leaks them. And the approval only protects you if the person approving checks the recipient, amount and timing in the bank's app, because a confirmation in chat isn't approval.

What should I check, step by step?

1. Use the bank's official agent connection (for Mercury, its MCP server at its official address) with OAuth. Don't share your password, let the agent drive your signed-in browser or give it a general API token.

  1. Connect the agent from a person whose role is no broader than the job, because the role sets the ceiling; then grant only the scopes the task needs. Start read-only and add a write scope only when a task requires it.
  2. Grant payment and transfer request scopes only if the agent prepares payments, and confirm in the bank's docs that requests can't be approved by the same connection.
  3. Leave out scopes for actions that apply immediately unless the job needs them: in Mercury, budgets:manage lets the agent change a published budget's amount per person, archive budgets and reassign transactions without a separate approval.
  4. Approve every request in the bank's app after checking the recipient or destination account, amount, payment method and timing. Treat "request created" in chat as nothing more than a request.
  5. Have the agent check for an existing request before creating another after an error or timeout, so a retry doesn't leave two payment requests for one bill.
  6. If an agent needs a card, give it a dedicated agent card with its own limit rather than access to your main cards. Mercury's agent cards can't have their limits raised or be unfrozen through its API.
  7. Keep the agent away from untrusted content in the same session (emailed invoices, web pages, shared docs), or at least away from write scopes when it reads them, because prompt injection can create unwanted requests or leak data.
  8. Review the agent activity log regularly and disconnect agents you no longer use; check that leavers' agents were disconnected.

Can an AI agent connected to Mercury send money without approval?

Mercury's announcement describes five layers: who can connect agents (Admins and Bookkeepers can, Teammates can't, custom roles choose), how much access an agent gets (never more than the connecting person, and you can scope it down), a permission check by Mercury on every request, a person approving every payment, and disconnecting an agent in seconds. When an employee is removed, their agents disconnect automatically, and payment requests an agent prepares are marked so the approver knows an agent was involved.

What can an AI agent change in a Mercury account without approval?

Mercury's supported-tools page says createCategory, editCategory and updateTransaction (notes and categories) apply immediately. The budget tools do too: updateBudget changes a budget's name, amount per user, frequency or dates immediately, with a published budget getting a new version; archiveBudget archives a published budget or deletes a draft; and assignTransactionToBudget moves a transaction between budgets. createBudget only makes a draft that a person must publish.

Should you give an AI agent a bank API token or your login?

A read-and-write API token. Mercury's API also has a send-money endpoint whose reference says it creates a transaction that will be processed immediately or may require approval, alongside the request-to-send-money endpoint that always goes through approval. Its token policy requires an IP allowlist for read-and-write tokens and automatically downgrades tokens that hold more permission than they use in 45 days, but an agent holding such a token isn't limited by the MCP's request-only design.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Before you change any budget, category or transaction in our bank account through its MCP connection, ask me to approve the exact tool and arguments, and wait for my yes or no.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "action": {
      "tool": "updateBudget",
      "arguments": "<the exact arguments object you will send>"
    },
    "summary": "Raise the Team lunches budget from $200 to $250 per person (agent proposal).",
    "expires_in_minutes": 60
  }
}

Rightshold records approvals and spending decisions for AI agents. It isn't a bank, doesn't connect to bank accounts and isn't affiliated with Mercury or any bank named here. Mercury is used as an example because its agent controls are publicly documented; the details come from its November 5, 2026 announcement and its MCP and API docs as checked on November 10, 2026, and the MCP is in beta, so features may change. Not financial advice.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'