Mercury MCP server for AI agents

Live

OAUTH 2.1

BANKING

Accounting & Finance

Mercury MCP gives your agent read access to business banking in Mercury: accounts, transactions, cards, statements, invoices, recipients, and treasury.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Mercury MCP
agent · Acme Q3
Run
List transactions over $5,000 from last month across all accounts.
S
mercurymcp_listtransactions
188ms
Finance agent
12 transactions over $5,000 posted last month, totaling $184,320. The largest was a $42,000 payment to Northwind Payroll.
Sources: 3 Mercury accounts, last month
mercurymcp
12 transactions
18:29
Message Claude...

Tools your finance agent reaches for on Mercury, scoped per user.

CALL ANY TOOL
35 read-only tools for business banking data in Mercury: accounts, transactions, cards, statements, invoices, customers, recipients, treasury, and webhooks.
mercurymcp_getaccount
Getaccount
Retrieve details of a specific Mercury account by its ID.
Parameters
Name
Type
Required
Description
accountId
string
Required
Mercury account ID. Get it from Get Accounts.
mercurymcp_getaccountcards
Getaccountcards
mercurymcp_getaccounts
Getaccounts
mercurymcp_getaccountstatements
Getaccountstatements
mercurymcp_getattachment
Getattachment
mercurymcp_getcard
Getcard
mercurymcp_getcustomer
Getcustomer
mercurymcp_getinvoice
Getinvoice
mercurymcp_getorganization
Getorganization
mercurymcp_getrecipient
Getrecipient
mercurymcp_getrecipientinvite
Getrecipientinvite
mercurymcp_getrecipients
Getrecipients
mercurymcp_getsaferequests
Getsaferequests
mercurymcp_gettransaction
Gettransaction
mercurymcp_gettransactionbyid
Gettransactionbyid
mercurymcp_gettreasury
Gettreasury
mercurymcp_gettreasurystatements
Gettreasurystatements
mercurymcp_gettreasurytransactions
Gettreasurytransactions
mercurymcp_getusers
Getusers
mercurymcp_getwebhook
Getwebhook
mercurymcp_getwebhooks
Getwebhooks
mercurymcp_listcards
Listcards
mercurymcp_listcategories
Listcategories
mercurymcp_listcredit
Listcredit
mercurymcp_listinvoiceattachments
Listinvoiceattachments
mercurymcp_listinvoices
Listinvoices
mercurymcp_listmerchants
Listmerchants
mercurymcp_listrecipientinvites
Listrecipientinvites
mercurymcp_listrecipientsattachments
Listrecipientsattachments
mercurymcp_listsendmoneyapprovalrequests
Listsendmoneyapprovalrequests

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Mercury MCP tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mercurymcp"], toolNames: [
    "mercurymcp_getaccounts",
    "mercurymcp_listtransactions",
    "mercurymcp_listinvoices",
    "mercurymcp_gettreasury"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "List transactions over $5,000 from last month across all accounts" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mercurymcp"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "List transactions over $5,000 from last month across all accounts" }],
  tools,
});

// Execute the tool call with the user's vaulted Mercury token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mercurymcp"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "List transactions over $5,000 from last month across all accounts" }],
  tools,
});

// Tool call runs with the user's vaulted Mercury token
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["mercurymcp"] }, pageSize: 100,
});

const agent = new Agent({
  name: "finance_agent",
  model: "gemini-2.5-pro",
  instruction: "Mercury MCP tools scoped to this user",
  tools,
});

await agent.run("List transactions over $5,000 from last month across all accounts");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Mercury MCP tool. Click to copy, paste into your agent, done.
Accounts and statements
Copy the prompt
Copied
List all our Mercury accounts.
Copy the prompt
Copied
Get last month's statement for the operating account.
Copy the prompt
Copied
Show our treasury accounts and their recent transactions.
Transactions and cards
Copy the prompt
Copied
List transactions over $5,000 from last month across all accounts.
Copy the prompt
Copied
Show every card on the operating account.
Copy the prompt
Copied
Get this transaction by ID with its attachments.
Invoices and recipients
Copy the prompt
Copied
List our invoices and the customers they were sent to.
Copy the prompt
Copied
Show pending send money approval requests.
Copy the prompt
Copied
List recipient invites that are still pending.
SEE HOW AUTH WORKS
Each user signs in to Mercury once; Scalekit stores and refreshes their tokens. Every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Mercury MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Mercury MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Mercury MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Mercury MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other banking and finance connectors.
GTM and RevOps Teams
Revenue forecast commentary
Pulls open pipeline from Salesforce and HubSpot, calculates coverage against quota, flags at-risk stages, posts commentary to Slack, and logs every snapshot to Google Sheets.
GTM and RevOps Teams
Deal intelligence agent
Pulls recent Gong calls, scores deal risk with an LLM, cross-references the record in Attio, and DMs each owner their at-risk deals in Slack. Every read is scoped to that rep's own access.
GTM and RevOps Teams
CRM AI agent
Reads the Granola transcript after every call, extracts next steps and updates the HubSpot record, drafts the follow-up in Gmail, and confirms in Slack, all on the rep's own delegated OAuth.
Engineering Teams
Slack triage
Polls Slack for new messages, classifies bugs and support requests with a LangGraph router, files GitHub issues or Zendesk tickets, and confirms in the thread.
Test other agents
See the same per-user auth pattern across other banking and finance connectors.
GTM
Revenue forecast agent
Score pipeline coverage against quota across Salesforce and HubSpot, post forecast commentary to Slack, log snapshots to Sheets.
SALES
Deal intelligence agent
Score Gong call risk with an LLM, cross-reference the Attio record, and DM each owner their at-risk deals in Slack.
GTM
CRM AI agent
Turn each Granola call transcript into a HubSpot record update, a drafted Gmail follow-up, and a Slack recap.
ENGINEERING
Slack triage agent
Classify new Slack messages as bugs or support requests, file the GitHub issue or Zendesk ticket, and reply in the thread.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Mercury token looks fine in a demo. In production every banking query looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Mercury today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Mercury as the user or through a shared account?
As the user. Each user signs in to Mercury once, and Scalekit stores and refreshes their tokens. Audit logs attribute every banking query to that user, not a shared service account.
Where is the Mercury OAuth token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Mercury?
Yes. Filter by tool name in listScopedTools, for example only the account and transaction tools for a reconciliation agent. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Mercury access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Can the agent move money in Mercury?
No. All 35 Mercury MCP tools are read-only. The agent can read accounts, transactions, cards, statements, invoices, recipients, treasury, and approval requests, but it cannot send payments or change anything in Mercury.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""mercurymcp"": {
""url"": ""https://mcp.scalekit.com/mercurymcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.mercurymcp]
url = ""https://mcp.scalekit.com/mercurymcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""mercurymcp"": {
""url"": ""https://mcp.scalekit.com/mercurymcp"",
""type"": ""http""
}
}
}