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.

ToolRiskSide effectsApproval
list_clients
List the user's clients (names to use with the other Peil tools).
readfalseunknown
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.
writetrueunknown
create_client
Create a new client. Requires clients:write. Set a default_rate so hours logged for this client aren't billed at €0.
writetrueunknown
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.
unknownunknownunknown
orientation_snapshot
Where does the user stand financially? Outstanding, overdue, drafts, YTD.
unknownunknownunknown
list_unbilled
List billable hours not yet on any invoice, grouped per client.
readfalseunknown
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.
writetrueunknown
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.
unknownunknownunknown
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.
destructivetruetrue
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.
writetrueunknown
get_client_details
Show a client's details, including whether a default rate is configured.
readfalseunknown
delete_client
Delete a client. Destructive — confirm first. Blocked (409) if the client has projects or sent/paid invoices. Requires clients:write.
destructivetruetrue
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.
destructivetruetrue
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.
writetrueunknown
update_client
Update a client's details. Only the fields you pass change. Requires clients:write.
writetrueunknown
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.
writetrueunknown
cancel_scheduled_send
Cancel a previously scheduled send. Requires invoices:send.
destructivetruetrue
list_invoices
List invoices, most recent first. Optionally filter by status and/or client.
readfalseunknown
archive_invoice
Archive an invoice (hidden from default views, kept for records). Requires invoices:write.
destructivetruetrue
get_reminder_copy
Show the user's custom reminder email copy and schedule.
readfalseunknown
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.
writetrueunknown
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.
writetrueunknown

02Install & source
uvx peil-mcp
uvx

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_statusindex9 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. Peil MCP — as seen on mcpexplorer.com

[![Peil MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/peil.svg)](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 →