invoiceshelf-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| INVOICE_SHELF_BASE_URL | Yes | The base URL of your InvoiceShelf instance API, e.g. https://your-instance.example.com/api/v1 | |
| INVOICE_SHELF_API_TOKEN | Yes | Your InvoiceShelf API token, e.g. 1|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_invoicesA | List invoices, with optional pagination, search, status and customer filters. |
| get_invoiceA | Get full details for a single invoice by ID. |
| get_customer_invoicesA | Get all invoices for a specific customer, optionally filtered by status. |
| create_invoiceA | Create a new invoice. Handles InvoiceShelf's undocumented required fields internally. |
| update_invoiceC | Update fields on an existing invoice. |
| delete_invoiceA | Delete an invoice by ID. |
| send_invoiceA | Email an invoice to its customer. Looks up the sender address and the customer's email automatically. |
| get_estimatesA | List estimates, with optional pagination, search and customer filters. |
| get_estimateB | Get full details for a single estimate by ID. |
| create_estimateB | Create a new estimate. Handles InvoiceShelf's undocumented required fields internally. |
| update_estimateB | Update fields on an existing estimate. |
| delete_estimateA | Delete an estimate by ID. |
| send_estimateA | Email an estimate to its customer. Looks up the sender address and the customer's email automatically. |
| convert_estimate_to_invoiceC | Convert an accepted estimate into an invoice. |
| get_customersC | List customers, with optional pagination and search. |
| get_customerA | Get full details for a single customer by ID. |
| create_customerC | Create a new customer. |
| update_customerB | Update fields on an existing customer. |
| delete_customerB | Delete a customer by ID. |
| test_connectionA | Verify the API base URL and token work by calling /me. |
| get_dashboard_statsA | Get dashboard summary stats (totals due, paid, overdue, etc.). |
| get_usersA | List users on the InvoiceShelf instance. |
| get_userA | Get full details for a single user by ID. |
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 23 tools
Most tools map cleanly to a specific resource and action (get_invoices vs get_invoice vs get_customer are clear). The only real overlap is get_customer_invoices, which largely duplicates get_invoices with a customer filter, though the descriptions still make the intent understandable.
Tool names consistently follow verb_noun snake_case (get_, create_, update_, delete_, send_, convert_). Singular/plural distinctions are used predictably for list vs detail endpoints, and compound actions like convert_estimate_to_invoice follow the same pattern.
23 tools is on the heavy side, within the 16-25 borderline range. The count is justified by full CRUD for invoices, estimates, and customers plus send/convert/dashboard tools, but it is more than a typical focused MCP server.
The core invoice, estimate, and customer lifecycle has solid create/read/update/delete coverage plus send and convert actions. However, there are notable gaps for an invoicing domain: no payment recording, invoice line-item management, or user administration beyond read-only lookup.