Track cash, burn and runway across your Mercury accounts every week

Every Monday: total cash across your Mercury accounts, net burn over the last 30 days, runway in months, and where the money went.

Runs
Mondays at 8:00
Uses
Mercury
Posts
Stat tile

From your apps to your board

How the skill works: your agent reads balances from Mercury, mondays at 8:00, and gives you cash and the report in the chat.

Reads

  • MercuryBalances
reads
Your agentClaude Code, Codex, Cursor or GeminiMondays at 8:00
posts

You get

  • CashA stat tile on your board, with its trend
  • The report in the chatEvery run, with or without Briefkin

What you get

  • Total cash across Mercury accounts, with an 8-week trend.
  • Net burn over the last 30 days, with money in and money out.
  • Runway in months at that burn.
  • Biggest outflows by counterparty, and the balance of each account.

The card on the right is a sample. Yours shows your own numbers and updates in place every run.

What lands on your board

AcmeCash$1.84M-5% vs previous period, worsevs last report
30-day net burn$198,400
Money in$61,200
Runway9.3months
An example with made-up numbers. Your agent posts your real ones.

What it does

For a startup banking with Mercury, cash is the one number that ends the company if you misread it. The dashboard shows balances well; burn and runway are a spreadsheet someone updates monthly, usually after the board asks.

The agent reads balances and the last 30 days of transactions with a read-only token every Monday. It leaves out transfers between your own accounts and failed payments, works out net burn and runway, and lists the five biggest outflows. You see the trend weekly instead of discovering it at month end.

How it works

  1. 1Read balances

    GET https://api.mercury.com/api/v1/accounts and add up currentBalance across active checking and savings accounts. Keep each account's name and balance for the breakdown.

  2. 2Read 30 days of transactions

    For each account, GET /api/v1/account/{accountId}/transactions?start=<30 days ago>&end=<today>&limit=1000. Drop transactions whose status is failed or cancelled, and every kind: internalTransfer, which only moves money between your accounts. Mercury also has a top-level GET /api/v1/transactions that lists all accounts at once.

  3. 3

    3Work out burn and runway

    Split transactions into money in and money out by the sign of amount (confirm the sign on one payment you know). Net burn is money out minus money in. Runway is total cash over net burn, in months; if money in exceeds money out, say so instead.

  4. 4

    4Find where it went

    Group money out by counterpartyName and list the 5 largest, so a one-off (an annual insurance bill, a tax payment) is visible next to payroll.

  5. 5

    5Post the tile

    Total cash is the headline with 8 weekly snapshots of history. Net burn, money in and runway go in the glance; the accounts and the biggest outflows open with the card.

  6. Post it to the board

    With BRIEFKIN_TOKEN set, the agent sends the result as one card that updates in place every run. Without it, you get the report in the chat.

Install and run it

Pick your agent, where the data comes from and how to schedule it; the commands below follow.

Agent
Data
Schedule
  1. Install the skill

    One command. It puts the SKILL.md in ~/.claude/skills and in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Copilot CLI and OpenCode read too.

    shellcurl -fsSL https://briefkin.dev/skills/mercury-cash-balance-and-burn/install | sh
  2. Run it

    Ask Claude Code:

    promptRun the mercury-cash-balance-and-burn skill

    Or paste the prompt instead of installing:

    promptUsing the Mercury API with a read-only token (or Mercury's MCP server, read only), add up the current balance of my active Mercury accounts. Read the last 30 days of transactions for each account, leaving out failed and cancelled transactions and internal transfers between my own accounts. Split into money in and money out by the sign of amount, and work out net burn (out minus in) and runway in months (cash over net burn). List the 5 largest outflows by counterparty. Give me total cash, net burn, money in and runway, and say if anything unusual drove the last week.
  3. Put it on a schedule

    Mondays at 8:00, from cron on any machine where Claude Code is signed in:

    crontab0 8 * * 1 claude -p "Run the mercury-cash-balance-and-burn skill"

    Add it with crontab -e. A laptop asleep at that time runs it when it wakes if you use launchd or Task Scheduler instead; GitHub Actions works for the API route.

  4. Send it to your board

    Connect Briefkin once with curl -fsSL https://briefkin.dev/install | sh and every run lands on your board as a stat tile. How setup works

View the SKILL.mdRaw file
SKILL.md---
name: mercury-cash-balance-and-burn
description: "Every Monday: total cash across your Mercury accounts, net burn over the last 30 days, runway in months, and where the money went. Use when the user asks for this, or when it runs on a schedule."
---

# Mercury cash balance and burn

Every Monday: total cash across your Mercury accounts, net burn over the last 30 days, runway in months, and where the money went.

For a startup banking with Mercury, cash is the one number that ends the company if you misread it. The dashboard shows balances well; burn and runway are a spreadsheet someone updates monthly, usually after the board asks.

The agent reads balances and the last 30 days of transactions with a read-only token every Monday. It leaves out transfers between your own accounts and failed payments, works out net burn and runway, and lists the five biggest outflows. You see the trend weekly instead of discovering it at month end.

## Two ways to get the data

Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.

## Route A: API or MCP server

### What you need

- A Mercury API token of the Read Only type (Settings > API Tokens; no IP allowlist needed), in `MERCURY_API_TOKEN`, sent as `Authorization: Bearer secret-token:<token>`.
- Or Mercury's MCP server (`https://mcp.mercury.com/mcp`, beta, OAuth), approved with the `read` scope only.

If something is missing, say what and stop; do not invent numbers.

### Steps

1. **Read balances** (Mercury): `GET https://api.mercury.com/api/v1/accounts` and add up `currentBalance` across active checking and savings accounts. Keep each account's name and balance for the breakdown.
2. **Read 30 days of transactions** (Mercury): For each account, `GET /api/v1/account/{accountId}/transactions?start=<30 days ago>&end=<today>&limit=1000`. Drop transactions whose `status` is `failed` or `cancelled`, and every `kind: internalTransfer`, which only moves money between your accounts. Mercury also has a top-level `GET /api/v1/transactions` that lists all accounts at once.
3. **Work out burn and runway**: Split transactions into money in and money out by the sign of `amount` (confirm the sign on one payment you know). Net burn is money out minus money in. Runway is total cash over net burn, in months; if money in exceeds money out, say so instead.
4. **Find where it went**: Group money out by `counterpartyName` and list the 5 largest, so a one-off (an annual insurance bill, a tax payment) is visible next to payroll.
5. **Post the tile**: Total cash is the headline with 8 weekly snapshots of history. Net burn, money in and runway go in the glance; the accounts and the biggest outflows open with the card.

## Route B: the browser

### What you need

- Signed in to Mercury as an Admin, Bookkeeper or a Custom user whose role includes viewing all accounts and Insights; Card-only users cannot see balances.

If something is missing, say what and stop; do not invent numbers.

### Steps

Start at https://app.mercury.com/dashboard. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.

1. **Read the balances**: The **Dashboard** shows total cash across accounts and each checking, savings and Treasury balance. Write down the total and the per-account figures.
2. **Open Insights for burn and runway**: Click **Insights** in the sidebar. In the top-right timeframe picker choose the last 30 days (or **Last month**). Read **Burn rate** (average monthly net spend, internal transfers already excluded) and **Runway**; Mercury hides runway when cashflow is positive, in which case say so.
3. **Read money in and money out**: In the cashflow overview read **Money in** and **Money out** for the period. Switch Money out to **by recipient** and note the 5 largest rows; click a row to see the transactions behind it if a name is unclear.
4. **Cross-check against Transactions**: Open **Transactions**, filter to the last 30 days and all accounts, and use **Export** to CSV if you need to confirm that failed or cancelled payments and internal transfers are excluded from the totals.
5. **Report**: Total cash, net burn, money in, runway in months, the 5 biggest outflows and each account's balance, plus one line if the last week was unusual.

Note: Insights computes burn as an average monthly figure over the selected range and defaults to the last three full months, so set 30 days to match this report. Its runway includes Treasury balances. The Transactions list paginates; export when there are more than a few hundred entries.

## The report

- **Total cash** across Mercury accounts, with an 8-week trend.
- **Net burn** over the last 30 days, with money in and money out.
- **Runway** in months at that burn.
- **Biggest outflows** by counterparty, and the balance of each account.

## Post it to Briefkin

When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.

```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
  -H "authorization: Bearer $BRIEFKIN_TOKEN" \
  -H "content-type: application/json" \
  -d @- <<'JSON'
{
  "v": 1,
  "event_id": "mercury-cash-balance-and-burn/<date of this run, e.g. 2026-10-16>",
  "item_key": "mercury-cash-balance-and-burn",
  "project": "Acme",
  "source": "Mercury cash balance and burn skill",
  "kind": "metric",
  "title": "$1.84M in the bank, 9.3 months of runway",
  "metric": {
    "label": "Cash",
    "value": 1842300,
    "prefix": "$",
    "better": "higher",
    "period_start": "<start of the period, ISO 8601>",
    "period_end": "<end of the period, ISO 8601>"
  },
  "glance": {
    "type": "Grid",
    "props": {
      "columns": 3
    },
    "children": [
      {
        "type": "Stat",
        "props": {
          "label": "30-day net burn",
          "value": 198400,
          "prefix": "$",
          "better": "lower"
        }
      },
      {
        "type": "Stat",
        "props": {
          "label": "Money in",
          "value": 61200,
          "prefix": "$"
        }
      },
      {
        "type": "Stat",
        "props": {
          "label": "Runway",
          "value": 9.3,
          "unit": "months"
        }
      }
    ]
  },
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Biggest outflows, 30 days",
          "Amount"
        ],
        "align": [
          "left",
          "right"
        ],
        "rows": [
          [
            "Payroll (Gusto)",
            "$162,400"
          ],
          [
            "Annual insurance (Vouch)",
            "$31,800"
          ],
          [
            "Amazon Web Services",
            "$24,900"
          ],
          [
            "Office lease",
            "$14,500"
          ],
          [
            "Google Workspace",
            "$2,100"
          ]
        ]
      }
    },
    {
      "type": "Callout",
      "props": {
        "text": "Cash fell $89,400 last week, about twice the usual: the $31,800 annual insurance bill landed in the same week as payroll.",
        "tone": "info"
      }
    }
  ],
  "size": "md"
}
JSON
```

Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.

Set `period_start` and `period_end` to the window the number covers: the tile names it from them ("Last 7 days", "Today", "This month"). For a count right now (open items, a balance), send `"period_label": ""` so no period shows; for another name, send it as `period_label` (at most 24 characters).

## Run it on a schedule

Suggested: Mondays at 8:00 (`0 8 * * 1`). From cron, with the agent signed in on that machine:

```bash
0 8 * * 1 claude -p "Run the mercury-cash-balance-and-burn skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```

Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/mercury-cash-balance-and-burn#schedule

Source: https://briefkin.dev/skills/mercury-cash-balance-and-burn

What your agent needs

  • A Mercury API token of the Read Only type (Settings > API Tokens; no IP allowlist needed), in MERCURY_API_TOKEN, sent as Authorization: Bearer secret-token:<token>.

  • Or Mercury's MCP server (https://mcp.mercury.com/mcp, beta, OAuth), approved with the read scope only.

Connecting Mercury

  1. Mercury MCP, Mercury's official remote server at https://mcp.mercury.com/mcp, signed in with OAuth. It's in Claude's connector directory. In Claude Code run claude mcp add --transport http -s user mercury https://mcp.mercury.com/mcp and then claude mcp login mercury; in Codex, codex mcp add mercury --url https://mcp.mercury.com/mcp; Cursor takes the same URL (docs). Its tools load accounts, transactions, statements, recipients and cards.
  2. API with a Read Only token. In the Mercury dashboard, open the organization menu, then Settings > Tokens, and create an API token of the Read Only type, which needs no IP whitelist. Store it in MERCURY_API_TOKEN and send it as Authorization: Bearer.

At the MCP consent screen, grant only read: the write scopes (transactions:request, transfers:request, transactions:update and the category scopes) let an agent request payments or recategorize transactions. A Read Only API token fetches everything a report needs and can't move money.

Questions

Can the token move money?

A Read Only token cannot: Mercury separates read-only tokens from read-and-write ones, and writes need an IP allowlist. Mercury's MCP server can request payments and transfers if you grant the write scopes, and even those need approval in Mercury before money moves, so approve only the read scope for this skill.

Why is burn so lumpy from week to week?

Payroll lands twice a month and annual bills land once a year, so a single week tells you little. The skill uses a rolling 30 days for burn and runway. If one-offs distort it, ask for a 90-day average divided by three as a second runway figure.

Do I need Briefkin to use the Mercury cash balance and burn skill?

No. The skill runs with your own agent and gives you the report in the chat. With a Briefkin token set, each run also posts it to your board as a stat tile, so you can glance at it instead of asking again.

Which agents can run it?

Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, Windsurf and Amp all read SKILL.md files. The install command puts it in ~/.claude/skills and ~/.agents/skills, where they look. ChatGPT, the Claude app and Grok take the prompt instead. Pick your agent under "Install and run it" and the commands change to match.

Can it work without an API or MCP server, from my browser?

Yes. Switch the data source to "Your browser" and the steps change to the Mercury pages themselves: the agent opens app.mercury.com/dashboard in a browser you are signed in to and reads the numbers off the page. Claude Code, Codex, Cursor, Claude app and ChatGPT can drive a browser out of the box; Gemini CLI, Copilot CLI and OpenCode need a Playwright or Chrome DevTools MCP server first. It is slower than the API and needs you signed in, so it suits a report you run by hand or from a scheduler on your own computer.

Watch cash on your board, run after run

Skills are free to use with any agent. Briefkin is where their results land: one board for every report, number and question your agents send, with a ping when something needs you.

Free during the open beta. No card.