servers / peil
Peil MCP server
communitystdiolocaldestructive capablehealthy
Log hours, draft invoices and check where you stand — finance for Dutch freelancers.
01Tools · 22
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| list_clients List the user's clients (names to use with the other Peil tools). | read | false | unknown |
| send_invoice Send an invoice to the client BY EMAIL. Irreversible and client-facing.
`invoice` is a numeric id or invoice number. Only call this when the user has
explicitly confirmed sending this specific invoice. Requires invoices:send.
| write | true | unknown |
| create_client Create a new client. Requires clients:write.
Set a default_rate so hours logged for this client aren't billed at €0.
| write | true | unknown |
| log_hours Log worked hours for a client in Peil's timesheet.
Omit `rate` to use the client's default rate. `date` is ISO YYYY-MM-DD.
Requires the timesheet:write key permission.
| unknown | unknown | unknown |
| orientation_snapshot Where does the user stand financially? Outstanding, overdue, drafts, YTD. | unknown | unknown | unknown |
| list_unbilled List billable hours not yet on any invoice, grouped per client. | read | false | unknown |
| edit_hours Edit an existing time entry. Only the fields you pass are changed.
Confirm with the user before editing an entry that's already on a sent/paid
invoice (the server blocks it with INVOICE_LOCK). Requires timesheet:write.
| write | true | unknown |
| draft_invoice Create a DRAFT invoice from a client's unbilled hours in a period.
Nothing is sent to the client — the user reviews the draft in Peil (or asks
explicitly to send it via send_invoice). Grouping: 'summary' (one line per
description), 'by_project', or 'per_day'. Requires invoices:write.
| unknown | unknown | unknown |
| delete_hours Delete a time entry. Destructive — confirm with the user first.
Entries on a sent/paid/archived invoice are blocked server-side. Requires
timesheet:write.
| destructive | true | true |
| set_invoice_status Change an invoice's status (e.g. mark paid). Requires invoices:write.
`invoice` is a numeric id or invoice number. This does NOT email anyone —
it only records the status. Use send_invoice to actually email the client.
| write | true | unknown |
| get_client_details Show a client's details, including whether a default rate is configured. | read | false | unknown |
| delete_client Delete a client. Destructive — confirm first.
Blocked (409) if the client has projects or sent/paid invoices. Requires
clients:write.
| destructive | true | true |
| delete_invoice Delete an invoice. Destructive — confirm first.
Paid invoices can't be deleted (archive instead); sent invoices are blocked
unless the user is sure. Requires invoices:write.
| destructive | true | true |
| send_reminder Email a payment reminder for a sent/overdue invoice. Irreversible, client-facing.
Only call this when the user has explicitly confirmed reminding about this
specific invoice. Requires invoices:send.
| write | true | unknown |
| update_client Update a client's details. Only the fields you pass change. Requires clients:write. | write | true | unknown |
| update_invoice Update safe invoice fields (due date, payment date, notes). Requires invoices:write.
Line items and amounts are not edited here — redraft from hours for those.
| write | true | unknown |
| cancel_scheduled_send Cancel a previously scheduled send. Requires invoices:send. | destructive | true | true |
| list_invoices List invoices, most recent first. Optionally filter by status and/or client. | read | false | unknown |
| archive_invoice Archive an invoice (hidden from default views, kept for records). Requires invoices:write. | destructive | true | true |
| get_reminder_copy Show the user's custom reminder email copy and schedule. | read | false | unknown |
| schedule_send Schedule a DRAFT invoice to be emailed at a future time. Client-facing.
`scheduled_at` is an ISO datetime (e.g. 2026-07-20T09:00:00). Only call this
when the user has explicitly confirmed sending this invoice at this time.
Requires invoices:send.
| write | true | unknown |
| set_reminder_copy Set the reminder email copy for one tone/language. Requires invoices:write.
Tones: pre_due (before due date), overdue (0–7 days late), formal (>7 days).
Other tones/languages are preserved. Use {invoice_number}, {total_amount},
{due_date} placeholders as in Peil's editor.
| write | true | unknown |
02Install & source
uvx peil-mcp
uvx- repohttps://github.com/Luminc/peil-mcp
- homepagehttps://peil.app
- licenseMIT
- adoption0 stars · 0 forks
03Access granted
Process payments · destructive
The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.
05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-07-21 12:11Z
next_check2026-07-22 16:58Z
cadenceevery 29h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex — 9 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/peil)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →