Receivables Reminder Engine
Supports SAP as a data source through web API/OData connectors, enabling open invoices, customer contacts, payments, and disputes to be pulled into the receivables reminder workflow.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Receivables Reminder Engine
Payment reminders that a finance team can trust: the AI prepares, people decide.

Try the interactive demo: https://claude.ai/artifact/8mfiu4ABYxhwFJqKNbdf5M (synthetic data, nothing is sent)
An AI-ready tool that chases overdue invoices the way a careful credit controller would. It finds what is overdue, checks it is still unpaid and not disputed, drafts one reminder per customer in their language, and sends only after a named person approves. It logs every step and sends the CFO a note for each email sent.
There are three ways to use it, all on the same engine and data:
AI assistant: a remote MCP server for Claude, Microsoft Copilot Studio or any MCP client
Approval page: a web page where finance users review, approve or reject, and send (no AI)
Scheduled job: prepares drafts automatically every day and never sends on its own
Version 0.1, built entirely on synthetic data: all companies, people and amounts are invented.
What it does
Step | What happens |
Preview | Lists the emails it would prepare and every skipped invoice with its reason (paid, disputed, not due, too early, final already sent) |
Prepare | One draft per customer, in FR, EN, ES or PT. Final notices always go in a separate email. Each invoice PDF is read and checked against the register. |
Approve / reject | A named approver. Drafts with warnings (for example a PDF total that differs from the register) can't be approved without explicit acknowledgement. |
Send | Re-checks payments first and cancels a draft if the invoice was paid after approval. Then sends, logs each invoice's level and sends the CFO a note. |
Audit | Full history per invoice and an audit log of who did what and when |
Catches problems before sending | Writes in the customer's language |
|
|
Reminder levels (configurable in config/settings.json, created from config/settings.example.json on first start):
Level | Default | Wording |
1st reminder | 7 days overdue | Polite reminder |
2nd reminder | 21 days overdue | Same template, "second" instead of "first" |
Final notice | 35 days overdue | Firm deadline (8 days). For EU customers: statutory interest (reference rate + 8 points) and EUR 40 compensation per invoice under Directive 2011/7/EU. For non-EU customers: contractual wording. |
Plug-ins: general (any overdue invoice), vat_recovery (VAT wording) and intercompany (friendly tone, netting, no final notice).
Related MCP server: SettleMate
Where the data comes from
Each list has its own source and a column mapping. Both are set on the Settings page, so no file editing is needed.
Data | Possible sources |
Open invoices (required) | Excel/CSV upload · file on the server · OneDrive · SharePoint · SQL database · web API / OData (SAP, Dynamics 365) |
Customer contacts (required) | Same as above |
Payments, disputes (optional) | Same as above, or not used when the export already has an open-amount column |
Invoice PDFs | Folder on the server · OneDrive · SharePoint, found by file-name pattern or by a link column |
Sending email | Test mode (.eml files) · Outlook through Microsoft 365, from your own or a shared mailbox |

Column names are matched automatically in English, French, Spanish, Portuguese, Danish and German, and for common ERP field names. European number and date formats, Excel dates, title rows above the table and country names are all handled. Rows that can't be read are reported, never guessed. Secrets (database passwords, API keys, the Microsoft 365 app secret) stay in environment variables.
Architecture
MCP client (Claude, Copilot, …)
│ streamable HTTP
reminders/server.py ← MCP tools
reminders/service.py ← workflow: preview → prepare → approve → send → log
├─ engine.py who gets which level (pure logic)
├─ render.py HTML + text email, invoice table, final-notice figures
├─ templates.py approved wording in 4 languages
├─ plugins.py general / VAT recovery / intercompany
├─ extract.py reads invoice PDFs and cross-checks the register
├─ connectors/ files (local/OneDrive/SharePoint), SQL, web API, Microsoft Graph, column mapping
├─ mailer.py test outbox (.eml files); Outlook sending is in connectors/graph.py
└─ store.py drafts, reminder log, audit trail (SQLite now; Azure SQL next)Run it
For users: double-click Start Reminders.bat (Windows) or Start Reminders.command (Mac). See TESTING.md and SETUP_MICROSOFT365.md.
For developers:
pip install -r requirements.txt
python data/generate_synthetic.py --as-of 2026-11-04 # synthetic invoices, contacts, payments, PDFs
python -m reminders.server --port 8765 # MCP endpoint: http://127.0.0.1:8765/mcp
python demo_client.py http://127.0.0.1:8765/mcp # full cycle through the MCP protocol
python run_job.py --as-of 2026-11-04 # scheduled job: prepares drafts
python run_web.py # approval page: http://127.0.0.1:8080/?as_of=2026-11-04
pytest -q # automatic checksSent emails are written to outbox/ as .eml files, which open in Outlook.
To try it interactively, point the MCP Inspector (npx @modelcontextprotocol/inspector) at the URL above. To use it from Claude or Copilot, deploy it behind a public HTTPS URL and add that URL as a custom connector.
Deploy to Azure (EU region)
az group create -n rg-reminders -l westeurope
az containerapp up -n reminders-mcp -g rg-reminders --source . --ingress external --target-port 8000Before you use it with real data:
Add OAuth sign-in (Microsoft Entra ID).
Keep secrets in Azure Key Vault.
Mount persistent storage, or switch the store to Azure SQL.
Use it from an AI assistant
Add the server to the Claude desktop app (Settings → Developer → Edit Config):
{"mcpServers": {"receivables-reminders": {"command": "C:\\path\\to\\receivables-reminder-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\receivables-reminder-mcp\\run_server.py", "--transport", "stdio"]}}}In the cloud, the same server runs over HTTP (/mcp) for Claude or Microsoft Copilot Studio.
Roadmap
Hosting on Azure with Microsoft Entra sign-in for the approval page, so users only open a link
Approver identity from the login instead of a typed name
Notification to the approver when new drafts are waiting (email or Teams)
Dispute detection from customer replies, which pauses the reminder chain
Weekly CFO digest as an alternative to one note per send
Privacy by design
Personal configuration (company details, data sources, Microsoft 365 tenant and client IDs) is stored in
config/settings.jsonandconfig/sources.json. Both files are created locally from the*.example.jsontemplates and are excluded from version control.The Microsoft 365 sign-in is kept only in
config/.m365_token_cache.json, which is also excluded. Secrets such as the app secret and database passwords are read from environment variables.All data in this repository is synthetic.
Author
Marie Candy Kobli, Business Analyst. Part of a portfolio of AI tools built from real finance, manufacturing, M&A and project-feasibility processes.
This server cannot be deployed
Maintenance
Related MCP Connectors
Evidence-backed UBL, PDF, and image invoice checks before approval or payment.
Create, send and track invoices from a conversation in Claude, ChatGPT or any MCP client that supports OAuth. Draft an invoice from one sentence or from last month's invoice for the same client, finalize it, email it to your client and send payment reminders for overdue ones. See revenue by month and by client, download PDFs and e-invoices (ZUGFeRD, XRechnung), and export DATEV packages for your tax advisor. Invoices follow the tax rules of 25 countries, including reverse charge and the small-business VAT exemption. New invoices are drafts, and nothing is emailed until you ask. Pay per invoice with no subscription: the first invoice is free.
Find overdue invoices, draft invoices, and chase payment. Sends need your confirmation.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceSelf-serve MCPB demo for accounts payable invoice exception review. It performs deterministic matching across invoice, purchase order, goods receipt, vendor master, invoice history, tax code master, and payment rules.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that acts as an AI collections agent for Australian tradies and SMEs, enabling automated chasing of overdue invoices, payment plans, and payments through a secure permissions engine.12 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to search and inspect an invoice ledger, generate VAT summaries, run OCR on local documents, and use reusable prompts for chasing overdue invoices and reconciling entries.2-
- AlicenseNot gradedqualityBmaintenanceEnables autonomous agents to optimize payment recovery by applying decline-code-specific retry windows and reducing involuntary churn through MCP-accessible ledger and fraud-checking workflows.7MIT

