Read Bill4Time clients, projects, time entries, expenses, invoices, payments, users and contacts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List clients (id, name, billing name, email, phone, city, account manager, status, billing rate type, currency). Filter by status, exact client name, id or creation date. Street addresses and tax ids are not returned. GET /clients.
Only the record with this id.
Records to return, 1-100 (default 25).
Records to skip (default 0). Pass the previous reply's next_skip to read the next page.
Field to sort by (default: Bill4Time's own order).
Sort descending (newest or highest first). Default ascending.
Exact client name (case rules are Bill4Time's).
Clients created on or after this date.
Clients created on or before this date.
Also return the custom fields (default false).
List clients (id, name, billing name, email, phone, city, account manager, status, billing rate type, currency). Filter by status, exact client name, id or creation date. Street addresses and tax ids are not returned. GET /clients.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| status | string | |
| descending | boolean | Sort descending (newest or highest first). Default ascending. |
| client_name | string | Exact client name (case rules are Bill4Time's). |
| created_after | string | Clients created on or after this date. |
| created_before | string | Clients created on or before this date. |
| include_custom_fields | boolean | Also return the custom fields (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"clientName",
"creationDate"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"status": {
"enum": [
"Active",
"Disabled"
],
"type": "string"
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"client_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact client name (case rules are Bill4Time's)."
},
"created_after": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Clients created on or after this date."
},
"created_before": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Clients created on or before this date."
},
"include_custom_fields": {
"type": "boolean",
"description": "Also return the custom fields (default false)."
}
}
}List contacts: name, email, work and mobile phone, city, status, creation date. Filter by status, id or creation date. Street addresses, home phone and notes are not returned. GET /contacts.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| status | string | |
| descending | boolean | Sort descending (newest or highest first). Default ascending. |
| created_after | string | Contacts created on or after this date. |
| created_before | string | Contacts created on or before this date. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"lastName",
"creationDate"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"status": {
"enum": [
"Active",
"Disabled"
],
"type": "string"
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"created_after": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Contacts created on or after this date."
},
"created_before": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Contacts created on or before this date."
}
}
}List expenses: client, project, user, expense date, cost and sell price, quantity, type, billing status, invoice id, public description. Filter by client, project, user, invoice, expense date range, billing status or exact expense type. Private notes are not returned unless include_private_notes is set. GET /expenses.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| date_to | string | Expenses dated on or before this date. |
| user_id | integer | |
| client_id | integer | |
| date_from | string | Expenses dated on or after this date. |
| descending | boolean |
List invoices: client, project, invoice date, status (prebill or finalized), paid status, totals (invoice, labor, expense, late fee), terms and notes. Filter by status, paid status, client, project, id or invoice date range. GET /invoices.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| status | string | |
| date_to | string | Invoices dated on or before this date. |
| client_id | integer | |
| date_from | string | Invoices dated on or after this date. |
| descending | boolean | Sort descending (newest or highest first). Default ascending. |
List payments: client, project, amount, date, type, method, public note. Filter by client, project, id or payment date range. Check numbers are not returned; the private note only with include_private_notes. GET /payments.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| date_to | string | Payments dated on or before this date. |
| client_id | integer | |
| date_from | string | Payments dated on or after this date. |
| descending | boolean | Sort descending (newest or highest first). Default ascending. |
| project_id | integer |
List projects (matters): id, name, client, status, billing method, rate overrides, assigned user, created/closed/due dates. Filter by status, billing method, client, id or creation date. GET /projects.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| status | string | |
| client_id | integer | Only projects of this client. |
| descending | boolean | Sort descending (newest or highest first). Default ascending. |
| created_after | string | Projects created on or after this date. |
| billing_method | string |
List time entries: client, project, user, entry date, billable and labor time, billable amount, rate, activity, ABA litigation code, billing status, invoice id, public description. Filter by client, project, user, invoice, entry date range or billing status. Private notes and contractor pay rates are not returned unless include_private_notes is set. GET /timeEntries.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| date_to | string | Entries dated on or before this date. |
| user_id | integer | |
| client_id | integer | |
| date_from | string | Entries dated on or after this date. |
| descending |
List the firm's users: name, email, user type, status, department, position, billing and overtime rate. Birth dates, addresses, phone numbers and contractor pay rates are not returned. Filter by status or id. GET /users.
| Argument | Type | Description |
|---|---|---|
| id | integer | Only the record with this id. |
| top | integer | Records to return, 1-100 (default 25). |
| skip | integer | Records to skip (default 0). Pass the previous reply's next_skip to read the next page. |
| sort | string | Field to sort by (default: Bill4Time's own order). |
| status | string | |
| descending | boolean | Sort descending (newest or highest first). Default ascending. |
| include_custom_fields | boolean | Also return the custom fields (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"lname"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"status": {
"enum": [
"Active",
"Disabled"
],
"type": "string"
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"include_custom_fields": {
"type": "boolean",
"description": "Also return the custom fields (default false)."
}
}
}| Sort descending (newest or highest first). Default ascending. |
| invoice_id | integer | Only expenses on this invoice. |
| project_id | integer | A project id, or -1 for expenses that belong to no project. |
| expense_type | string | Exact expense type name. |
| billing_status | string |
| include_custom_fields | boolean | Also return the custom fields (default false). |
| include_private_notes | boolean | Also return the private/internal notes (default false). Only set it when the user asks for internal notes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"expenseDate",
"createdDate"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"date_to": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Expenses dated on or before this date."
},
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"client_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"date_from": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Expenses dated on or after this date."
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"invoice_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only expenses on this invoice.",
"exclusiveMinimum": 0
},
"project_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "A project id, or -1 for expenses that belong to no project."
},
"expense_type": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact expense type name."
},
"billing_status": {
"enum": [
"Ready For Summary",
"Ready For Billing",
"Billing Complete",
"Pending Project Close"
],
"type": "string"
},
"include_custom_fields": {
"type": "boolean",
"description": "Also return the custom fields (default false)."
},
"include_private_notes": {
"type": "boolean",
"description": "Also return the private/internal notes (default false). Only set it when the user asks for internal notes."
}
}
}| project_id | integer |
| paid_status | string |
| include_custom_fields | boolean | Also return the custom fields (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"invoiceDate",
"createdDate"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"status": {
"enum": [
"prebill",
"finalized"
],
"type": "string"
},
"date_to": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Invoices dated on or before this date."
},
"client_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"date_from": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Invoices dated on or after this date."
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"project_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"paid_status": {
"enum": [
"Paid",
"Partially Paid",
"Unpaid"
],
"type": "string"
},
"include_custom_fields": {
"type": "boolean",
"description": "Also return the custom fields (default false)."
}
}
}| include_private_notes | boolean | Also return the private/internal notes (default false). Only set it when the user asks for internal notes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"paymentDate",
"createdDate"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"date_to": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Payments dated on or before this date."
},
"client_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"date_from": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Payments dated on or after this date."
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"project_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"include_private_notes": {
"type": "boolean",
"description": "Also return the private/internal notes (default false). Only set it when the user asks for internal notes."
}
}
}| created_before | string | Projects created on or before this date. |
| include_custom_fields | boolean | Also return the custom fields (default false). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"projectName",
"createdDate"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"status": {
"enum": [
"Open",
"Closed"
],
"type": "string"
},
"client_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only projects of this client.",
"exclusiveMinimum": 0
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"created_after": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Projects created on or after this date."
},
"billing_method": {
"enum": [
"Hourly",
"Flat Fee",
"Percentage"
],
"type": "string"
},
"created_before": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Projects created on or before this date."
},
"include_custom_fields": {
"type": "boolean",
"description": "Also return the custom fields (default false)."
}
}
}| boolean |
| Sort descending (newest or highest first). Default ascending. |
| invoice_id | integer | Only entries on this invoice. |
| project_id | integer |
| activity_type | string | Exact activity type name. |
| billing_status | string |
| include_custom_fields | boolean | Also return the custom fields (default false). |
| include_private_notes | boolean | Also return the private/internal notes (default false). Only set it when the user asks for internal notes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only the record with this id.",
"exclusiveMinimum": 0
},
"top": {
"type": "integer",
"maximum": 100,
"description": "Records to return, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_skip to read the next page."
},
"sort": {
"enum": [
"id",
"entryDate",
"createdDate"
],
"type": "string",
"description": "Field to sort by (default: Bill4Time's own order)."
},
"date_to": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Entries dated on or before this date."
},
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"client_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"date_from": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Entries dated on or after this date."
},
"descending": {
"type": "boolean",
"description": "Sort descending (newest or highest first). Default ascending."
},
"invoice_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only entries on this invoice.",
"exclusiveMinimum": 0
},
"project_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"activity_type": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact activity type name."
},
"billing_status": {
"enum": [
"Ready For Summary",
"Ready For Billing",
"Billing Complete",
"Pending Project Close"
],
"type": "string"
},
"include_custom_fields": {
"type": "boolean",
"description": "Also return the custom fields (default false)."
},
"include_private_notes": {
"type": "boolean",
"description": "Also return the private/internal notes (default false). Only set it when the user asks for internal notes."
}
}
}