peil-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PEIL_API_KEY | Yes | Scoped API key from Peil, created under Settings → Developer settings. Required for any tool that reads or writes your data. | |
| PEIL_API_URL | No | Override the API base URL. Defaults to https://api.peil.app/api/v1. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_clients | List the user's clients (names to use with the other Peil tools). |
| log_hoursA | Log worked hours for a client in Peil's timesheet. Omit |
| list_unbilled | List billable hours not yet on any invoice, grouped per client. |
| 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. |
| send_invoiceA | Send an invoice to the client BY EMAIL. Irreversible and client-facing.
|
| orientation_snapshot | Where does the user stand financially? Outstanding, overdue, drafts, YTD. |
| edit_hoursA | 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. |
| 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. |
| get_client_details | Show a client's details, including whether a default rate is configured. |
| create_client | Create a new client. Requires clients:write. Set a default_rate so hours logged for this client aren't billed at €0. |
| update_clientA | Update a client's details. Only the fields you pass change. Requires clients:write. |
| delete_clientA | Delete a client. Destructive — confirm first. Blocked (409) if the client has projects or sent/paid invoices. Requires clients:write. |
| list_invoices | List invoices, most recent first. Optionally filter by status and/or client. |
| set_invoice_status | Change an invoice's status (e.g. mark paid). Requires invoices:write.
|
| 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. |
| 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. |
| archive_invoice | Archive an invoice (hidden from default views, kept for records). Requires invoices:write. |
| schedule_sendA | Schedule a DRAFT invoice to be emailed at a future time. Client-facing.
|
| cancel_scheduled_sendB | Cancel a previously scheduled send. Requires invoices:send. |
| send_reminderA | 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. |
| get_reminder_copyB | Show the user's custom reminder email copy and schedule. |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Each tool targets a distinct action (e.g., cancel_scheduled_send vs schedule_send, delete_client vs update_client). No significant overlap.
All tool names follow a consistent verb_noun pattern with underscores, making them predictable and easy to understand.
9 tools is well-scoped for a time tracking and invoicing server, covering key operations without being bloated.
Missing essential CRUD operations like create_client and get_invoices; the focus on sending/managing invoices and timesheet entries leaves gaps in client and invoice lifecycle management.