# List Time Entries

`lawmatics_list-time-entries` · Lawmatics MCP tool · Time Entries

List time entries from Lawmatics with optional pagination and sorting. Time entries record time spent on a matter or contact; durations are in hours and hourly rates are in integer cents. Each row carries a `relationships` envelope of to-one {id,type} pointers (the matter or contact billed to, staff and creating users, activity type, invoice).

## Input

- **page** `integer` (> 0) — Page number (1-based)
- **sortBy** `string` (enum: "id", "created_at", "updated_at") — Column to sort by
- **sortOrder** `string` (enum: "asc", "desc") — Sort direction; ascending or descending

## Output

- **timeEntries** `array` (required) — Time entries on this page of results
  - **[]** `object`
    - **id** `string` (required) — Unique ID of the time entry
    - **description** `string | null` (required) — Description of the work performed; null if unset
    - **duration** `number` (required) — Duration in hours as a float (e.g. 1.5 = 1 hour 30 minutes), NOT minutes
    - **durationRounded** `number | null` (required) — Duration rounded to the firm's billing increment, in hours; null if not reported
    - **billable** `boolean | null` (required) — Whether the time is billable; null if not reported
    - **rateFlatFee** `boolean | null` (required) — Whether this is a flat-fee entry; null if not reported
    - **rateCents** `integer | null` (required) — Hourly rate in integer cents (e.g. 12000 = $120.00/hr); null if not reported
    - **rateCurrency** `string | null` (required) — ISO currency code of the rate (e.g. "USD"); null if not reported
    - **runningSince** `string | null` (required) — When the entry's live timer started, as an ISO 8601 timestamp; null when no timer is running
    - **startedAt** `string | null` (required) — When the time entry started, as an ISO 8601 timestamp; null if unset
    - **completedAt** `string | null` (required) — When the time entry completed, as an ISO 8601 timestamp; null while incomplete (only completed entries can be added to invoices)
    - **createdAt** `string` (required) — When the time entry record was created, as an ISO 8601 timestamp
    - **updatedAt** `string` (required) — When the time entry record was last updated, as an ISO 8601 timestamp
    - **relationships** `object` (required) — To-one JSON:API relationship pointers as {id,type} stubs. Not materialized — follow a pointer by calling that resource's own tool (e.g. type 'user' -> get-user, type 'prospect' -> get-matter, type 'contact' -> get-contact, type 'invoice' -> get-invoice).
      - **activityType** `object | null` (required) — Billing activity type pointer; null when unset
        - **id** `string` (required) — ID of the referenced Lawmatics record
        - **type** `string` (required) — JSON:API record class of the reference (e.g. "user", "contact", "prospect", "firm"); resolve it by calling that resource's own get/find tool — this pointer is not materialized
      - **contactable** `object | null` (required) — Pointer to the record the time is billed to; type is "prospect" for a matter or "contact" for a contact; null when unassociated
        - **id** `string` (required) — ID of the referenced Lawmatics record
        - **type** `string` (required) — JSON:API record class of the reference (e.g. "user", "contact", "prospect", "firm"); resolve it by calling that resource's own get/find tool — this pointer is not materialized
      - **createdBy** `object | null` (required) — Pointer to the user who created the record; null when unattributed
        - **id** `string` (required) — ID of the referenced Lawmatics record
        - **type** `string` (required) — JSON:API record class of the reference (e.g. "user", "contact", "prospect", "firm"); resolve it by calling that resource's own get/find tool — this pointer is not materialized
      - **invoice** `object | null` (required) — Pointer to the invoice this entry is attached to; null when not invoiced
        - **id** `string` (required) — ID of the referenced Lawmatics record
        - **type** `string` (required) — JSON:API record class of the reference (e.g. "user", "contact", "prospect", "firm"); resolve it by calling that resource's own get/find tool — this pointer is not materialized
      - **staff** `object | null` (required) — Pointer to the user who performed the time entry; null when unattributed
        - **id** `string` (required) — ID of the referenced Lawmatics record
        - **type** `string` (required) — JSON:API record class of the reference (e.g. "user", "contact", "prospect", "firm"); resolve it by calling that resource's own get/find tool — this pointer is not materialized
- **pagination** `object` (required) — Pagination metadata derived from the API `meta` envelope
  - **totalPages** `number` (required) — Total number of pages available
  - **limitPerPage** `number` (required) — Maximum time entries returned per page
  - **totalEntries** `number` (required) — Total number of time entries across all pages
