Skip to main content
Glama
mcp-credit-note

mcp-credit-note

mcp-credit-note

MCP server for credit notes and credit memos against an invoice or standalone. Credit notes against an invoice or standalone: drafts, finalization, rendering and totals, all in integer minor units.

Works with Claude Desktop, Claude Code, Cursor and any Model Context Protocol client. Runs on your own machine, or hosted with no install.

Product page: https://mcp.zovo.one/s/credit-note - what it does, the tools it exposes, and a live token endpoint.

Install

Hosted, nothing to install. Get a token from https://mcp.zovo.one/mcp/connect (the connect page) or https://mcp.zovo.one/mcp/token (the same token as JSON); a free anonymous one is issued on the spot and a Pro key works the same way. Then point an MCP client at https://mcp.zovo.one/mcp/credit-note over streamable-http and send the token as Authorization: Bearer <token>.

If your client cannot set headers, put the token in the path instead: https://mcp.zovo.one/mcp/credit-note/t/<token>. Both forms work. The bare URL with no token answers 401 on tools/call, so the token is not optional.

Claude Desktop, one click. Download credit-note.mcpb from the latest release and double-click it.

From source. The mirror is self-contained: every @theluckystrike/* dependency is vendored, so a fresh clone builds with no extra setup.

git clone https://github.com/theluckystrike/mcp-credit-note.git
cd mcp-credit-note
npm install && npm run build

Then point your client at the built entry point:

{
  "mcpServers": {
    "credit-note": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-credit-note/dist/index.js"]
    }
  }
}

@theluckystrike/mcp-credit-note is not published on npm yet, so an npx -y @theluckystrike/mcp-credit-note command will fail. The three paths above are the working ones and each is exercised by CI.

credit-note demo

Read-only mirror of mcp-servers/servers/credit-note. See MIRROR.md.

theluckystrike/mcp-credit-note MCP server

In the official MCP Registry (io.github.theluckystrike/credit-note). Credit notes (credit memos) for freelancers and small businesses, kept the way the paperwork keeps them. Issue a credit against an invoice or standalone: the recipient, the reason (returned goods, overcharge, discount correction, service issue, other), line items with quantity, unit price and tax rate, and the currency. Every credit note starts as a draft you can revise and delete; finalizing burns the final CN-YYYY-NNNN number and freezes it, because a finalized credit note is a document the client may have seen. Render one to Markdown to paste into an email, or to a self-contained printable HTML page, and get the totals credited per currency, reason and month. Every amount is an integer number of minor units, and nothing is sent anywhere.

Built by theluckystrike.

npm publish for @theluckystrike/mcp-credit-note is pending, so npx -y @theluckystrike/mcp-credit-note returns 404 today. Until then, a clone+build is the working path.

Related MCP server: mcp-server-billing

Install

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "credit-note": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-credit-note"]
    }
  }
}

Claude Code

claude mcp add credit-note -- npx -y @theluckystrike/mcp-credit-note

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.

Tools

tool

what it does

credit_note_create

Issue a credit note against an invoice or standalone: recipient, reason, lines with quantity, unit price in minor units and tax rate, currency. Returns a CN-DRAFT-YYYY-NNNN draft

credit_note_update

Revise a draft while it is still a draft: recipient, reason, lines, currency, invoice reference, issue date or notes. New lines replace all old ones. A finalized note is refused by name

credit_note_finalize

Burn the final CN-YYYY-NNNN number and freeze the note: from here it cannot be edited or deleted, only rendered and listed

credit_note_list

List credit notes with number, recipient, reason, status, issue date and total. Filter by recipient, reason, status, and issue-date period

credit_note_get

Read one credit note in full by CN number or draft id: every line, the tax lines, the totals, the reason and the notes

credit_note_delete

Delete a draft entered wrongly. A finalized note is refused: it is a document the client may have seen

credit_note_render

Render a credit note as Markdown to paste into an email, or as a self-contained printable HTML page. Drafts render with a DRAFT banner

credit_note_summary

Total credited per currency over finalized notes, broken down by reason and by month, in an optional issue-date period

license_status / license_activate

Free or Pro, and the key

Free vs Pro

Free

Pro

Finalized credit notes

10, lifetime

Unlimited

Drafts (credit_note_create, credit_note_update)

Unlimited

Unlimited

Delete a draft (credit_note_delete)

Yes

Yes

Listing, reading (credit_note_list, credit_note_get)

Unlimited

Unlimited

Rendering (credit_note_render)

Unlimited, one-line footer

Unlimited, no footer

Totals (credit_note_summary)

Unlimited

Unlimited

Finalizing is the metered act because that is what turns a draft into the document the client sees. Everything else is free and unlimited: a free tier that withholds the rendered document or the totals is a demo, and ten real finalized credit notes is a working year for a freelancer who credits an invoice now and then.

Get Pro: https://mcp.zovo.one/buy/credit-note, $19 one-time for this server, or $39 for the bundle.

The rounding rule

Every amount is an integer number of minor units (cents), and the line math is documented so the printed document reproduces on a calculator:

  1. The unit price enters as integer minor units, so nothing is rounded on input. The line gross is quantity x unit price, rounded half-up once: gross = round_half_up(quantity * unit_price_minor). A whole quantity is exact; a fractional one (2.5 hours at EUR 33.33) lands on the nearest cent, and 2.5 x 3333 = 8332.5 rounds to 8333, never banker's 8332.

  2. Tax is computed per line and rounded half-up per line: tax = round_half_up(gross * rate / 100).

  3. The line total is gross + tax, and the note totals are plain integer sums of the already-rounded line values.

Round per line, then sum: a total can never drift from the printed lines by more than the rounding already visible on those lines, so the tax line at 23% is on its own base (the 23% lines only), not on the whole subtotal.

Numbering

Drafts carry a CN-DRAFT-YYYY-NNNN id no client sees. The final CN-YYYY-NNNN number is assigned only at finalize, in the issue date's year, and the counter is written before the record, so a crash burns a number rather than reusing one. Because drafts never hold a final number and finalized notes cannot be deleted, the final series never has a gap.

Privacy

All data stays local, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/credit-note/. Two files: notes.json, counter.json. Nothing is sent anywhere, there is no account, no API key and no network call in this server at all. License keys are verified offline. The Markdown and HTML renders are returned as text; this server writes no document files.

Built by theluckystrike. https://github.com/theluckystrike

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:

Available Tools

10 tools
credit_note_createIssue a credit noteA

Issue a credit note against an invoice, or standalone: the recipient, the reason (returned goods, overcharge, discount correction, service issue, other), line items with quantity, unit price and tax rate, and the currency. Returns a draft you can still revise; credit_note_finalize burns the final CN number.

Inputs: lines (required), reason (required), currency (required), recipient (required), +5 more.

credit_note_deleteDelete a draft credit noteA

Delete a draft credit note entered wrongly, by its draft id. A finalized note is refused by name: it is a document the client may have seen, and deleting it would leave their copy pointing at nothing.

Inputs: id (required).

credit_note_finalizeFinalize a credit noteA

Finalize a draft: burn the final CN-YYYY-NNNN number and freeze the note. From here it cannot be edited or deleted, only rendered and listed, because it is now the document the client sees. Free tier: 10 finalized credit notes; Pro removes the limit.

Inputs: id (required).

credit_note_getRead one credit note in fullA

Return one credit note by its CN number or draft id: every line with quantity, unit price and tax, the totals per tax rate, the reason, the invoice it credits, and the notes. Reads only; use credit_note_list for the ids.

Inputs: id (required).

credit_note_listList credit notesA

List credit notes: number or draft id, recipient, reason, status, issue date and total. Filter by recipient (a part of the name is enough), by reason, by status draft or final, and by issue-date period with from and to.

Inputs: to, from, limit, reason, +2 more.

credit_note_renderRender a credit note as Markdown or printable HTMLA

Turn a credit note into the document: Markdown to paste into an email or ticket, or a self-contained printable HTML page with every style inline. Drafts render with a DRAFT banner so a half-finished credit cannot be sent by mistake. Writes nothing. Free; the free tier stamps a one-line footer.

Inputs: id (required), format.

credit_note_summaryTotal credited by period, currency and reasonA

How much you have credited: totals per currency over finalized credit notes, broken down by reason and by month, in an optional issue-date period. Drafts count for nothing until they are finalized. Currencies are never added together.

Inputs: to, from.

credit_note_updateRevise a draft credit noteA

Change a draft credit note while it is still a draft: recipient, reason, lines, currency, invoice reference, issue date or notes. Pass only what changes; new lines replace all old ones. A finalized note is immutable and is refused by name.

Inputs: id (required), lines, notes, reason, +5 more.

license_activateActivate licenseA

Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back.

Inputs: key (required).

license_statusLicense statusA

Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each credit note tool targets a distinct stage or view: create, update, finalize, list, get, delete, render, and summary are mutually exclusive operations. The two license tools are also clearly distinct from the credit note set and from each other.

    Naming Consistency5/5

    All tools use a consistent snake_case noun_verb pattern, with credit_note_* for the core domain and license_* for server licensing. No mixed conventions or vague verbs.

    Tool Count5/5

    Ten tools is well-scoped: eight cover the full credit note lifecycle, two handle licensing. No redundant or filler tools.

    Completeness5/5

    The credit note surface covers creation, drafting, revision, finalization, listing, retrieval, deletion of drafts, rendering, and summary reporting. License status and activation are also present, leaving no obvious dead ends for the stated domain.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables creation and management of invoices with JSON storage and LaTeX-based PDF rendering. Supports draft creation and professional PDF generation through customizable LaTeX templates.
      Apache 2.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server providing guarded access to a B2B SaaS billing database (customers, subscriptions, invoices, credit notes) and live ECB exchange rates, with read-only tools and one capped, idempotent write for issuing credit notes.
      -
    • A
      license
      A
      quality
      B
      maintenance
      Enables building client statements of account from existing invoices, credit notes, and deposits, with aged outstanding balances, PDF/plain-text output, and drafted payment chasers at friendly, firm, or final levels.
      8
      60 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables users to track unpaid invoices and generate an escalating ladder of payment-reminder letters — first reminder, second reminder, and final notice — anchored to the due date, plus overdue listings, aging buckets, and a daily chase list of what to send today. It records payments and letters sent, rendering each letter as Markdown or printable HTML without ever emailing anything itself.
      11
      46 npm
      MIT