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. |
Capabilities
Features and capabilities supported by this server
| 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 | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Luminc/peil-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server