bill4time-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BILL4TIME_API_KEY | No | Your Bill4Time API key. If not provided, the server will look in the OS keyring or ~/.bill4time-mcp/.env file. | |
| BILL4TIME_MCP_USE_KEYRING | No | Set to '0' to disable keyring and use file fallback. | 1 |
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_clientsC | List clients. Use filter_expr for OData filtering, e.g. "status eq 'Active'". |
| get_clientB | Get a client by ID. |
| list_active_clientsC | List all active clients. |
| list_disabled_clientsC | List all disabled clients. |
| list_projectsC | List projects. Use filter_expr for OData filtering, e.g. "status eq 'Open'". |
| get_projectC | Get a project by ID. |
| list_projects_for_clientB | List all projects for a specific client. |
| list_open_projectsC | List all open projects. |
| list_closed_projectsC | List all closed projects. |
| list_projects_by_billing_methodB | List projects by billing method. Values: Hourly, Flat Fee, Percentage. |
| list_time_entriesC | List time entries. Use filter_expr for OData filtering. |
| get_time_entryB | Get a time entry by ID. |
| list_time_entries_for_clientA | List all time entries for a specific client. |
| list_time_entries_for_projectC | List all time entries for a specific project. |
| list_time_entries_for_userC | List all time entries for a specific user. |
| list_time_entries_for_invoiceA | List all time entries attached to a specific invoice. |
| list_time_entries_for_date_rangeB | List time entries within a date range (YYYY-MM-DD format). |
| list_time_entries_by_billing_statusC | List time entries by billing status. Values: Ready For Summary, Ready For Billing, Billing Complete, Pending Project Close. |
| list_expensesC | List expenses. Use filter_expr for OData filtering. |
| get_expenseC | Get an expense by ID. |
| list_expenses_for_clientC | List all expenses for a specific client. |
| list_expenses_for_projectC | List all expenses for a specific project. |
| list_expenses_for_invoiceC | List all expenses attached to a specific invoice. |
| list_expenses_for_date_rangeC | List expenses within a date range (YYYY-MM-DD format). |
| list_invoicesC | List invoices. Use filter_expr for OData filtering. |
| get_invoiceC | Get an invoice by ID. |
| list_invoices_for_clientB | List all invoices for a specific client. |
| list_invoices_for_projectB | List all invoices for a specific project. |
| list_prebill_invoicesC | List all invoices in prebill status. |
| list_finalized_invoicesC | List all finalized invoices. |
| list_unpaid_invoicesC | List all unpaid invoices. |
| list_partially_paid_invoicesC | List all partially paid invoices. |
| list_paid_invoicesB | List all fully paid invoices. |
| list_invoices_for_date_rangeC | List invoices within a date range (YYYY-MM-DD format). |
| list_paymentsC | List payments. Use filter_expr for OData filtering. |
| get_paymentC | Get a payment by ID. |
| list_payments_for_clientB | List all payments for a specific client. |
| list_payments_for_projectB | List all payments for a specific project. |
| list_payments_for_date_rangeC | List payments within a date range (YYYY-MM-DD format). |
| list_payments_appliedC | List payments-applied records. Use filter_expr for OData filtering. |
| get_payment_appliedC | Get a payments-applied record by ID. |
| list_payments_applied_for_invoiceA | List all payment applications for a specific invoice. |
| list_payments_applied_for_paymentC | List all invoice applications for a specific payment. |
| list_payments_applied_for_date_rangeB | List payments-applied within a date range (YYYY-MM-DD format). |
| list_usersC | List users. Use filter_expr for OData filtering. |
| get_userB | Get a user by ID. |
| list_contactsC | List contacts. Use filter_expr for OData filtering. |
| get_contactB | Get a contact by ID. |
| list_active_contactsC | List all active contacts. |
| list_contacts_for_date_rangeB | List contacts created within a date range (YYYY-MM-DD format). |
| list_contact_connectionsC | List all contact connections. Use filter_expr for OData filtering. |
| list_contact_connections_for_contactA | List all client/project connections for a specific contact. |
| list_contact_connections_for_clientC | List all contact connections for a specific client. |
| list_contact_connections_for_projectC | List all contact connections for a specific project. |
| list_trust_recordsC | List trust accounting records. Use filter_expr for OData filtering. |
| get_trust_recordB | Get a trust accounting record by ID. |
| list_trust_records_for_clientB | List all trust accounting records for a specific client. |
| list_trust_records_for_projectC | List all trust accounting records for a specific project. |
| list_trust_records_for_date_rangeB | List trust records created within a date range (YYYY-MM-DD format). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| unbilled_time_report | Report on unbilled time entries for a date range — billing status review workflow. |
| client_billing_summary | Full billing picture for a single client: projects, time, invoices, payments. |
| trust_account_review | Review trust accounting records for a client — compliance-oriented workflow. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| active_clients_resource | Active clients from Bill4Time — read-only reference data. |
| users_resource | Bill4Time users (timekeeper list) — read-only reference data. |
| security_notes_resource | Security posture documentation for this Bill4Time MCP server. |
TDQS
Scored across 59 tools
Every tool targets a distinct entity or filter combination. The 'get_' and 'list_' prefixes clearly separate single-record retrieval from multiple-record listing, and the various 'list_*_for_*' tools are explicitly scoped to specific relationships, eliminating ambiguity.
All tools follow a consistent 'verb_noun' pattern, with 'get_' for individual records and 'list_' for collections. Suffixes like '_for_client' or '_for_date_range' are uniformly applied, making the naming predictable and easy to navigate.
With 59 tools, the set is excessively large. Many 'list_' variants (e.g., list_active_clients, list_disabled_clients) could be consolidated into a single list_clients with a filter parameter, making the surface unnecessarily bloated for the apparent scope.
The tool set is entirely read-only, lacking any create, update, or delete operations. Such a critical gap for a billing/time-tracking domain means agents cannot perform essential workflows like creating invoices or recording payments, severely limiting usefulness.