I built an MCP server so Claude can send my invoices

sirjrg2 pts0 comments

~63px AFTER hydration, pushing<br>content down. Reserve the single-line height (48px) now (single source:<br>keep in sync with geo-banner.tsx COUNTRY_MAP + padding/line-height) so<br>the banner fades into pre-reserved space with no jump. -->Connect Your AI — 60-second Setup | Holdings MCP ) --><br>Skip to main content<br>Sign inOpen account

Agent Setup · 60 seconds

Connect your AI.<br>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.

Get a free API key What is agentic invoicing? →

Quickstart

Four steps.<br>Under a minute.<br>Sign up (free, no card)<br>Create a Holdings account at workspace.getholdings.com. Signup is instant. No trial, no card required for invoicing.

Generate a per-company API key<br>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.

Paste the config into your AI client<br>Pick your client below. Copy the block. Restart the client. That’s it.

Ask your AI to send an invoice<br>&ldquo;Draft an invoice to Acme Corp for $4,200, net 30.&rdquo; 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.<br>Copy the block.<br>Claude Desktop<br>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.<br>"mcpServers": {<br>"holdings": {<br>"url": "https://mcp.holdings.io/v1/mcp",<br>"headers": {<br>"Authorization": "Bearer YOUR_HOLDINGS_API_KEY"<br>Cursor<br>MCP support via ~/.cursor/mcp.json.

Add the block below to ~/.cursor/mcp.json. Restart Cursor. The Holdings tools appear in the composer.<br>"mcpServers": {<br>"holdings": {<br>"url": "https://mcp.holdings.io/v1/mcp",<br>"headers": {<br>"Authorization": "Bearer YOUR_HOLDINGS_API_KEY"<br>Zed &middot; Windsurf<br>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.<br>"context_servers": {<br>"holdings": {<br>"command": {<br>"url": "https://mcp.holdings.io/v1/mcp",<br>"env": {<br>"AUTH_TOKEN": "YOUR_HOLDINGS_API_KEY"<br>ChatGPT<br>Via a Custom GPT + the Holdings connector.

In ChatGPT: Create a GPT → Configure → Actions → Import from URL:<br>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<br>Anything that speaks MCP. Or plain HTTPS.

MCP endpoint:<br>https://mcp.holdings.io/v1/mcp Or hit the REST API directly — same tools, no MCP required:<br>curl https://api.holdings.io/v1/invoices \<br>-H "Authorization: Bearer YOUR_HOLDINGS_API_KEY" \<br>-H "Content-Type: application/json"

Capabilities

What your agent can do.<br>And what it can’t.<br>The agent can<br>Draft invoices and quotes from natural-language descriptions<br>Send invoices (with your approval) with card + ACH payment links<br>Convert quotes to invoices; schedule recurring invoices<br>Chase overdue clients with configurable reminders<br>Mark payments received; reconcile paid entries into the books<br>Read balances, statuses, and history for reporting<br>Log every action to the audit trail

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

FAQ<br>Straight answers.<br>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.<br>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.<br>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.<br>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...

holdings invoices agent claude json https

Related Articles