Skip to content
MCPSTAMP

Reminder letterHosted URL

Dunning Letters

Chase late invoices with three letters, on a schedule.

Free tier needs no key. See the exact limits.

What you get

Second reminder

INV-0388

Text

Overdue

35 days

ItemGBP
INV-03882,400.00
Late fee2% a month
OVERDUE
Send date
on record
Example from "Second reminder with a late fee". Invented names, real math from the tools.

Register an unpaid invoice and it tells you who to chase today. It writes reminder 1 at 7 days past due, reminder 2 at 14 and a final notice at 21, with the gaps adjustable per invoice. It can add a late fee and gives you an aging summary of what is owed.

Made for Freelancers, Small businesses, Bookkeepers

3 requests, start to finish

Example chats. Each one uses real tools of this server, named as they run. The people and firms are made up.

Example done on the free tier. Doing this every week? Pro removes the limit for $19, once. Free vs Pro

  1. Example 1 · Freelance photographer in WarsawMonday chase list

    Who do I need to chase today?
    • chase_today Lists invoices due for a letter today
    • letter_render Writes each letter

    Two letters: a first reminder to one client and a final notice to another, ready to send.

    Saves about 20 min (our estimate)

  2. Example 2 · IT contractor in ManchesterSecond reminder with a late fee

    INV-0388 for GBP 2,400 is 35 days overdue. Write the second reminder with 2% a month late fee.
    • invoice_register Registers the invoice with the late fee rate
    • letter_render Writes reminder 2 with the accrued fee
    • letter_sent Records that it went out

    A firm but polite second reminder with the fee stated, and the send date on record.

    Saves about 15 min (our estimate)

  3. Example 3 · Bookkeeper for a Dublin print shopWhat is owed and how old

    Give me the aging summary as of today.
    • aging_summary Buckets unpaid invoices by days overdue

    Unpaid totals by age bucket and currency.

    Saves about 15 min (our estimate)

Free and Pro, line by line

The free column is yours with no key. The Pro column costs $19 once, or comes with the $39 bundle.

Free

$0 no key

Pro

$19 once, lifetime

3 unpaid invoices chased at once
Unlimited unpaid invoices
All three letters in both formats
Aging and chase list
Late fee accrual

Saw a message that says the free tier allows a set number per month? That's the limit Pro removes. Paste the key where the token goes, or set MCP_LICENSE_KEY.

Or Pro on all 49 paid servers for $39 once. Get the bundle

Limits read from the code: servers/dunning-letters/src/index.ts:23 (FREE_ACTIVE_UNPAID = 3), :137

Install

Works with Claude, Cursor, VS Code and other MCP clients. The hosted URL needs no install at all.

npm @theluckystrike/mcp-dunning-letters

  1. Get a free token. It lasts 30 days and allows 600 calls per hour. Or open the connect page for a ready URL.
  2. Paste the URL with your token as a custom connector in your MCP client.

1. Free token

curl -s -X POST https://mcp.zovo.one/mcp/token

2. Connector URL (replace <token>)

https://mcp.zovo.one/mcp/dunning-letters/t/<token>

Download the .mcpb bundle and open it. Claude Desktop installs it in one click.

Download dunning-letters.mcpb

Add this to your MCP client config (Claude Desktop, Cursor, VS Code). Needs Node.js.

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

One command in your terminal.

claude mcp add --transport http dunning-letters https://mcp.zovo.one/mcp/dunning-letters/t/<token>

# or run it locally
claude mcp add dunning-letters -- npx -y @theluckystrike/mcp-dunning-letters

Jobs this server does

All tools (9)

ToolWhat it does
aging_summaryThe aging summary across every unpaid invoice: current, 1-30, 31-60, 61-90 and 91+ day buckets, with counts and totals in integer cents, per currency.
chase_todayThe day's chase list: which invoices cross an escalation threshold today, which letter to send each and how long it has been waiting, what falls due in the next few days, and which invoices have had all three letters...
invoice_deleteDelete an invoice entered wrongly, by id or reference: the record, its payments and its letter history.
invoice_registerStart chasing an unpaid invoice: register the client, the invoice reference, the amount in integer cents, the currency and the due date, and get the three-letter escalation schedule (reminder 1, reminder 2, final...
invoice_statusOne chased invoice in full: what was billed, what has been paid and what is still owed, every letter sent with its date, the escalation schedule with each stage's state, and what happens next and when.
letter_renderChase an unpaid invoice: generate the letter for the current stage of the ladder, reminder 1 (polite), reminder 2 (firm, with the late fees note) or the final notice (before-action wording), as Markdown or as...
letter_sentRecord that a chase letter was actually sent, with its date, so the ladder advances to the next stage.
overdue_listEvery unpaid invoice past its due date: how many days late, what is still owed, which letters have gone out, and what is due next and when.
payment_recordRecord money received against a chased invoice, in whole MINOR units: a part payment lowers what is still chased, a payment that covers the balance closes the ladder and frees the free-tier slot.

Questions

Does it send the emails?
No. It writes the letters and records when you sent them. Sending stays with you.
What happens when the client pays?
Record the payment with payment_record and the invoice leaves the chase list.

More in Invoicing

Dunning Letters Pro, $19 once

Buy Pro