cd /news/ai-tools/i-built-an-mcp-server-so-claude-can-… · home topics ai-tools article
[ARTICLE · art-96000] src=getholdings.com ↗ pub= topic=ai-tools verified=true sentiment=· neutral

I built an MCP server so Claude can send my invoices

Holdings, an invoicing platform, launched an MCP server that lets AI assistants such as Claude Desktop, Cursor, Zed, Windsurf, and ChatGPT send invoices via natural language, with setup under a minute and no card required. The server, available at https://mcp.holdings.io/v1/mcp, requires a per-company API key and enforces human approval for sending invoices, with capabilities including drafting, sending, and reconciling invoices, while restricting actions like deleting records or moving money without sign-off.

read4 min views1 publishedAug 13, 2026
I built an MCP server so Claude can send my invoices
Image: source

Agent Setup · 60 seconds

#

Connect your AI.

Start sending invoices.

Holdings speaks MCP. Any AI that speaks MCP can operate your invoicing directly. Below: the exact config for the clients that ship it. Under a minute, end to end.

Quickstart

#

Four steps.

Under a minute.

  • 1

Sign up (free, no card)

Create a Holdings account at

workspace.getholdings.com. Signup is instant. No trial, no card required for invoicing. - 2

Generate a per-company API key

Inside workspace, go to

Settings → Developers → Agent Connect. Generate a key scoped to the company you want the agent to operate on. Keys can be rotated or revoked anytime. - 3

Paste the config into your AI client

Pick your client below. Copy the block. Restart the client. That’s it.

  • 4

Ask your AI to send an invoice

“Draft an invoice to Acme Corp for $4,200, net 30.” Your AI drafts it. You approve. Holdings sends it with a card + ACH payment link. When the customer pays, your AI knows.

Client configs

#

Pick your AI.

Copy the block.

Claude Desktop

Anthropic’s native MCP client. First-class support.

Add to ~/Library/Application Support/Claude/claude_desktop_config.json

(macOS) or %APPDATA%\Claude\claude_desktop_config.json

(Windows). Restart Claude.

{
  "mcpServers": {
    "holdings": {
      "url": "https://mcp.holdings.io/v1/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_HOLDINGS_API_KEY"
      }
    }
  }
}

Cursor

MCP support via ~/.cursor/mcp.json

.

Add the block below to ~/.cursor/mcp.json

. Restart Cursor. The Holdings tools appear in the composer.

{
  "mcpServers": {
    "holdings": {
      "url": "https://mcp.holdings.io/v1/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_HOLDINGS_API_KEY"
      }
    }
  }
}

Zed · Windsurf

Same MCP config shape. Both editors ship native support.

In Zed: ~/.config/zed/settings.json

, add context_servers

. In Windsurf: Settings → MCP → Add Server. Same URL + Bearer key.

{
  "context_servers": {
    "holdings": {
      "command": {
        "url": "https://mcp.holdings.io/v1/mcp",
        "env": {
          "AUTH_TOKEN": "YOUR_HOLDINGS_API_KEY"
        }
      }
    }
  }
}

ChatGPT

Via a Custom GPT + the Holdings connector.

In ChatGPT: Create a GPTConfigureActions → Import from URL:

https://mcp.holdings.io/v1/openapi.json

Authentication: API Key, header Authorization

, value Bearer YOUR_HOLDINGS_API_KEY

. Save. Your custom GPT can now use every Holdings tool.

Custom agent

Anything that speaks MCP. Or plain HTTPS.

MCP endpoint:

https://mcp.holdings.io/v1/mcp

Or hit the REST API directly — same tools, no MCP required:

curl https://api.holdings.io/v1/invoices \
  -H "Authorization: Bearer YOUR_HOLDINGS_API_KEY" \
  -H "Content-Type: application/json"

Capabilities

#

What your agent can do.

And what it can’t.

The agent can

  • Draft invoices and quotes from natural-language descriptions
  • Send invoices (with your approval) with card + ACH payment links
  • Convert quotes to invoices; schedule recurring invoices
  • Chase overdue clients with configurable reminders
  • Mark payments received; reconcile paid entries into the books
  • Read balances, statuses, and history for reporting
  • Log every action to the audit trail

The agent cannot

  • Send anything without your explicit approval
  • Touch existing paid invoices or reconciled entries
  • Delete records
  • Move money out (wires, ACH out) without human sign-off
  • Access scopes it wasn’t granted
  • Bypass the audit trail

FAQ

Straight answers. #

Which AI clients does this work with? #

Anything that speaks MCP. Claude Desktop and Claude web have first-class support. Cursor, Zed, and Windsurf ship MCP support natively. ChatGPT can connect via a custom GPT + the Holdings connector. Any custom agent you build can use the same protocol.

Do I need to pay anything to try it? #

Nope. Sign up, generate a key, connect. Sending invoices and taking payments is free with no monthly fee. You pay Stripe's standard rate (~3% + $0.30) only when a customer actually pays you — same as any card processor. Full accounting is a separate $25/mo add-on for when you want the books; it's not required for invoicing.

What can the agent actually do? #

Draft invoices and quotes from natural language, convert quotes to invoices, send with card + ACH payment links, schedule recurring invoices, chase overdue clients, mark payments received, and reconcile paid entries into the books. Every send requires your approval. The agent cannot delete existing records or move money without your say-so — the audit trail logs every action.

Where does authentication live? #

Per-company API keys generated inside workspace.getholdings.com — Settings → Developers. Each key is scoped to one company. Rotate anytime. OAuth flow (one-click Connect Holdings) is available for supported clients; API key is the fallback that always works.

Is the agent operating live money? #

Reads: yes — balances, invoice status, transactions, and books data. Writes: invoicing and payment link generation happen with your approval on every send. Moving money out (wires, ACH out) still routes through the same regulated banking flows with human approval on anything material. Banking sits underneath via i3 Bank (Member FDIC, coverage to $3M). Agentic doesn’t mean unsupervised.

Something isn’t working. Where do I go? #

The Agent Connect screen inside workspace (Settings → Developers) shows a live capability matrix: what your agent can do right now, what’s not yet enabled, and the exact next step to fix each gap. For anything else, email support@getholdings.com.

#

Give your AI a real job.

Start now.

Sign up, generate a key, paste the config. Under a minute.

── more in #ai-tools 4 stories · sorted by recency
── more on @holdings 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-an-mcp-serve…] indexed:0 read:4min 2026-08-13 ·