Skip to main content
Glama
ptrinh

Final Notice

by ptrinh
README.md
# Final Notice — MCP server

[![ptrinh/finalnotice-mcp MCP server](https://glama.ai/mcp/servers/ptrinh/finalnotice-mcp/badges/score.svg)](https://glama.ai/mcp/servers/ptrinh/finalnotice-mcp)

Free, no-registration **Model Context Protocol** server that generates professional
debt-collection demand letters: a print-ready PDF (formal letter + matching envelope),
localized and legally formatted for **100+ jurisdictions** and **33 languages**
(including Arabic/RTL, CJK, Indic, Thai, Cyrillic, and Greek).

- **Website:** https://finalnotice.io
- **Hosted MCP endpoint:** `https://finalnotice.io/mcp` (Streamable HTTP, JSON-RPC 2.0)
- **No auth, no API key, free.**

The rendering engine (fonts, layout, jurisdiction rules) runs on the hosted service.
This package is a thin **stdio** MCP server that forwards the three tools to the free
public API, so you can run it locally or point any MCP client at the hosted endpoint.

## Use it

### A) Hosted endpoint (nothing to install)

```bash
claude mcp add --transport http final-notice https://finalnotice.io/mcp
```

```json
{
  "mcpServers": {
    "final-notice": { "type": "http", "url": "https://finalnotice.io/mcp" }
  }
}
```

### B) Run the stdio server locally (npx)

```json
{
  "mcpServers": {
    "final-notice": { "command": "npx", "args": ["-y", "finalnotice-mcp"] }
  }
}
```

### C) Docker

```bash
docker build -t finalnotice-mcp .
docker run -i --rm finalnotice-mcp
```

The stdio server calls `https://finalnotice.io` by default; override with the
`FINALNOTICE_API_BASE` environment variable.

## Tools

| Tool | Description |
|------|-------------|
| `list_jurisdictions` | Supported countries, currencies, languages, and tones. Call first to pick a valid jurisdiction + language. |
| `preview_demand_letter` | Render the letter's text (title, subject, body, amount, legal reference, closing) as structured JSON — no PDF — to review wording. |
| `generate_demand_letter` | Generate the finished PDF (letter + envelope) and return it as a base64 resource. |

### Minimal example (`generate_demand_letter` arguments)

```json
{
  "jurisdiction": "GB",
  "language": "en",
  "tone": "final",
  "senderName": "Acme Ltd",
  "senderType": "business",
  "attested": true,
  "senderAddress": "1 High St\nLondon",
  "debtorName": "J. Smith",
  "debtorAddress": "2 Park Rd\nLeeds",
  "debtorType": "individual",
  "amount": 2450,
  "currency": "GBP",
  "invoiceNumber": "INV-1042",
  "deadlineDays": 14
}
```

Required fields: `senderName`, `senderAddress`, `debtorName`, `debtorAddress`, `amount` (> 0).
Business/firm senders must set `attested: true`. Set `debtorType: "individual"` to apply
consumer-protection rules where they exist (e.g. the UK Pre-Action Protocol for Debt
Claims 30-day period, or the Dutch WIK fourteen-day wording).

## Notes

- A REST API mirrors the MCP tools: `GET /api/meta`, `POST /api/preview`, `POST /api/generate`.
- This is not legal advice; letters are factual, non-threatening templates.
- The service is free; an optional donation link is at https://finalnotice.io/donate.

## License

MIT — see [LICENSE](./LICENSE).

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a unique purpose: listing jurisdictions, previewing text, and generating the PDF. No overlap or ambiguity.

Naming Consistency5/5

All tools follow the same snake_case verb_noun pattern (list_jurisdictions, preview_demand_letter, generate_demand_letter), providing a predictable naming convention.

Tool Count5/5

Three tools is precisely the right number for this domain—covering listing, preview, and generation without bloat or insufficiency.

Completeness5/5

The tool set fully covers the demand letter workflow: jurisdiction selection, content preview, and final PDF generation. No obvious gaps.

Maintenance

ActivityStale
ResponsivenessNo issues