MCP.so
Sign In

HoldingsVerifiedFeatured

@holdings-io

About Holdings

Let your AI send invoices and take payment — card or ACH. Free. Holdings MCP server for Claude, ChatGPT & Cursor.

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "holdings": {
      "command": "npx",
      "args": [
        "-y",
        "@getholdings/mcp"
      ],
      "env": {
        "HOLDINGS_API_KEY": "hw_live_your_key_here"
      }
    }
  }
}

Tools

14

Turn a natural-language request into candidate Holdings actions. Use when the user's intent is ambiguous; show the candidates as options. No side effects.

Collect fields and PREVIEW an action. Returns either the missing fields to ask the user, or a humanized preview plus a confirmationToken. For a write you MUST get approval before execute_action. Use details the user ALREADY gave (e.g. a named client) — don't re-ask; pass them and let the server resolve/confirm. Include ONLY fields the user asked for; any optional add-ons the preview lists (tax, billing address, PO, dates, terms) are an OFFER, never auto-add them. CRITICAL: present preview.body to the user EXACTLY as returned — copy it verbatim inside a fenced code block (```), preserving every line break and space. Do NOT reword, summarize, reformat, add a preamble, restate it, or drop any lines. Then show confirm.prompt on its own line below the block. Never fabricate a confirmationToken.

Execute an action. For a WRITE, pass the actionId from prepare_action (AFTER the user approved the preview) — that alone is enough; do not resend fields or the token. Reads execute with operationId + fields. Present the returned message to the user VERBATIM, preserving line breaks (including any 'Next:' block); do not reword or drop lines. If the response includes nextActions, OFFER those as options — do NOT perform any of them (e.g. sending after creating) unless the user explicitly asks. Each nextActions entry may carry an `explainer` (what that follow-up does + its consequences/conditions) and pre-filled `fields`: if the user ASKS what an offered action will do, answer from its explainer WITHOUT calling prepare/execute; when they choose it, use its fields to prepare it. Do exactly the one action requested.

Company status snapshot. Read-only. Good first call to orient.

What this key/company can do right now. Read-only.

List invoices (optionally by status). Read-only.

Get one invoice by id or number: line items, totals, who it's for, a status callout (overdue/paid/due soon), suggested follow-ups, and a PDF link. Relay the callout; offer the follow-ups. Read-only.

List quotes/estimates (optionally by status). Read-only.

Get one quote by id or number: line items, totals, who it's for, a status callout (expired/draft/accepted), suggested follow-ups, and a PDF link. Relay the callout; offer the follow-ups. Read-only.

List clients. Read-only.

Get one client by id. Read-only.

List recorded payments. Read-only.

Totals across ALL invoices (no cap): outstanding, overdue, billed, collected, per-status breakdown. Use for 'total up what's overdue'. Read-only.

Get the company profile. Read-only.

Overview

Holdings is agentic invoicing — software your AI can run. Connect Claude, ChatGPT, or Cursor, tell it who to bill, and it drafts the invoice, shows you a preview, and sends it the moment you confirm. Your client pays by card or ACH; you're told when the money lands.

Free, no monthly fee.

How to use Holdings?

  1. Create a free API key in your Holdings workspace → Settings → API keys.
  2. Connect any MCP client — via npm (npx -y @getholdings/mcp), the hosted endpoint at https://mcp.getholdings.com/mcp, or one-click on Smithery.
  3. Ask your AI: "Send Acme the December retainer — $8,400, net 30." Every write is confirm-gated — nothing sends until you approve.

Key features

  • Invoices — draft, preview, send, and track; get paid by card or ACH
  • Quotes — send estimates; turn accepted quotes into invoices
  • Clients — keep the people and businesses you bill
  • Payments — see what's paid and what's outstanding
  • Confirm-gated — a draft is created first; amounts are recomputed server-side; you stay in control

Use cases

  • Bill a client straight from Claude or ChatGPT without opening a dashboard
  • Turn an accepted quote into an invoice and send a payment link
  • Chase outstanding invoices and see paid vs. owed at a glance
  • Set up recurring invoices for retainers

FAQ

Is it really free? Invoicing has no monthly fee — you pay standard payment-processing fees only when a client pays.

Do I stay in control? Yes. Every write creates a draft first; nothing reaches a client until you explicitly confirm.

Which clients work? Any MCP client — Claude Desktop, ChatGPT, Cursor, Cline, Windsurf — via npm, the hosted remote, or Smithery.

Where's the source? The repo linked on this page (github.com/holdings-io/mcp); the package is on npm as @getholdings/mcp.

Comments

More Finance & Commerce MCP servers