Clio MCP by usefulapi
REMOTE · CLIO.USEFULAPI.IO
Read Clio matters, contacts, time, tasks, calendar and bills; add matters, time entries, notes.
Available components
Last scanned (1 hour ago)
Scores higher than 46% of remote servers
Reachable. Last reached 25 Oct 2026.
Category CRM and Sales
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security78
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly. See how to fix → View diagnostics → Fail
Schema Quality & AI Usability74
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6471 tokens (~281/item across 23 items; 23 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
- Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 23 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 24 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Oct 26 +1
- Server version: 1.5.0 → 1.5.3 functional
- 24 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “clio_log_communication”, which the server declares destructive security
- Tool “clio_get_contact” rewrote its description, which is the text the model reads security
- Tool “clio_get_matter” rewrote its description, which is the text the model reads security
- Tool “clio_list_contacts” rewrote its description, which is the text the model reads security
- Tool “clio_list_matters” rewrote its description, which is the text the model reads security
- Schema quality: 5185 → 6471 ▼ functional
- Schema quality: 5185 → 6455 ▼ functional
- Stability: unverified → 0.03 ▲ functional
- Server version: 1.4.0 → 1.5.0 functional
- Server version: 1.3.0 → 1.4.0 functional
- Server version: 1.0.0 → 1.3.0 functional
- New tool “clio_list_communications” functional
- New tool “clio_list_custom_fields” functional
- “clio_list_contacts” added an optional parameter “custom_field_id” cosmetic
- “clio_list_contacts” added an optional parameter “custom_field_operator” cosmetic
- “clio_list_contacts” added an optional parameter “custom_field_value” cosmetic
- “clio_list_matters” added an optional parameter “custom_field_id” cosmetic
- “clio_list_matters” added an optional parameter “custom_field_operator” cosmetic
- “clio_list_matters” added an optional parameter “custom_field_value” cosmetic
- 23 Oct 26 61
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Oct 2026 · Probed https://clio.usefulapi.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=usefulapi.io | CN=WE1,O=Google Trust Services,C=US | 13 Sept 2026 | 12 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | d9be3287b0fde9630e825ba1f79bff3f |
| SANs: usefulapi.io, *.usefulapi.io | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of clio.usefulapi.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 38690, 57355 | 8, 8 | Verified |
| usefulapi.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 302 |
WWW-Authenticate challenge Bearer realm="OAuth", resource_metadata="https://clio.usefulapi.io/.well-known/oauth-protected-resource/mcp"
Bearer realm="OAuth", resource_metadata="https://clio.usefulapi.io/.well-known/oauth-protected-resource/mcp" Protected resource metadata
| Document | https://clio.usefulapi.io/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://clio.usefulapi.io/mcp |
| Authorisation server | https://clio.usefulapi.io |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://clio.usefulapi.io/mcp | Redirected | 302 | https://usefulapi.io/clio/ |
| http (plaintext) | http://clio.usefulapi.io/mcp | Inconclusive | 302 | http://clio.usefulapi.io/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
clio_create_calendar_entry Create a calendar entry ~249
WRITE: Put an event on a Clio calendar — a hearing, meeting or deadline — optionally linked to a matter. calendar_id is the calendar to put it on (the token user's own is default_calendar_id from clio_who_am_i). Clio: POST /calendar_entries.json.
| Name | Type | Req | Description |
|---|---|---|---|
| all_day | boolean | – | An all-day event. |
| calendar_id | integer | yes | The calendar's numeric Clio id. |
| description | string | – | Longer description. |
| end_at | string | yes | End (ISO-8601 timestamp). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| location | string | – | Where it takes place. |
| matter_id | integer | – | The matter this event belongs to. |
| send_email_notification | boolean | – | Email the attendees. |
| start_at | string | yes | Start (ISO-8601 timestamp, e.g. 2026-10-02T09:30:00-07:00). |
| summary | string | yes | Short title of the event. |
No output schema declared.
No examples provided.
clio_create_contact Create a contact ~250
WRITE: Create a contact — a person (give first_name and/or last_name) or a company (give name) — optionally with an email address and phone number. Clio: POST /contacts.json.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | An email address to add. | |
| email_type | string | – | Label for the email address (default Work). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| first_name | string | – | Person: first name. |
| last_name | string | – | Person: last name. |
| middle_name | string | – | Person: middle name. |
| name | string | – | Company: the company name. (For a person, prefer first_name/last_name.) |
| phone | string | – | A phone number to add. |
| phone_type | string | – | Label for the phone number (default Work). |
| prefix | string | – | Personal title, e.g. Dr. |
| title | string | – | Professional title, e.g. General Counsel. |
| type | string | yes | Person or Company. |
No output schema declared.
No examples provided.
clio_create_matter Create a matter ~241
WRITE: Open a new matter for an existing client contact. Requires the client's contact id and a description. Clio: POST /matters.json.
| Name | Type | Req | Description |
|---|---|---|---|
| billable | boolean | – | Whether the matter is billable. |
| client_id | integer | yes | The client contact's numeric Clio id. |
| client_reference | string | – | The client's own reference for this matter. |
| description | string | yes | What the matter is, e.g. 'Smith v. Jones — lease dispute'. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| location | string | – | Location of the matter. |
| open_date | string | – | Open date (ISO-8601 date, YYYY-MM-DD). |
| originating_attorney_id | integer | – | Originating attorney (user id). |
| practice_area_id | integer | – | Practice area id. |
| responsible_attorney_id | integer | – | Responsible attorney (user id). |
| status | string | – | Initial status (Clio defaults to open). |
No output schema declared.
No examples provided.
clio_create_note Create a note ~175
WRITE: Add a note to a matter (type Matter + matter_id) or to a contact (type Contact + contact_id). Clio: POST /notes.json.
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | integer | – | For type Contact: the contact's id. |
| date | string | – | Date of the note (ISO-8601 date, YYYY-MM-DD). |
| detail | string | yes | Note body (plain text). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| matter_id | integer | – | For type Matter: the matter's id. |
| subject | string | – | Note subject. |
| type | string | yes | Attach to a matter or a contact. |
No output schema declared.
No examples provided.
clio_create_task Create a task ~255
WRITE: Create a task and assign it to a firm user or a contact, optionally on a matter with a due date and priority. Clio: POST /tasks.json.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee_id | integer | yes | The user or contact to assign the task to. |
| assignee_type | string | yes | Whether assignee_id is a User or a Contact. |
| description | string | yes | Longer description of the task. |
| due_at | string | – | Due date (ISO-8601 date, YYYY-MM-DD). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| matter_id | integer | – | The matter the task belongs to. |
| name | string | yes | Short name of the task. |
| notify_assignee | boolean | – | Notify the assignee on creation. |
| permission | string | – | Visibility (Clio default public). |
| priority | string | – | Priority. |
| status | string | – | Initial status (without advanced tasks, only pending or complete). |
| statute_of_limitations | boolean | – | Mark as a statute-of-limitations task. |
No output schema declared.
No examples provided.
clio_create_time_entry Record a time entry ~280
WRITE: Record billable (or non-billable) time on a matter. Give hours as a decimal (1.5 = 90 minutes); it is sent to Clio as seconds. If price (hourly rate) is omitted Clio applies the firm's rate hierarchy; if user_id is omitted it records for the token's user. Clio: POST /activities.json with type TimeEntry.
| Name | Type | Req | Description |
|---|---|---|---|
| activity_description_id | integer | – | An activity description (billing code) id. |
| date | string | yes | The day the work was done (ISO-8601 date, YYYY-MM-DD). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| hours | number | yes | Time spent, in hours (decimal). |
| matter_id | integer | yes | The matter's numeric Clio id. |
| non_billable | boolean | – | Keep this entry off the bill. |
| note | string | – | What the time was for — this appears on the bill. |
| price | number | – | Hourly rate override. Omit to use Clio's rate hierarchy. |
| user_id | integer | – | The user who did the work (default: the token's user). |
No output schema declared.
No examples provided.
clio_get_bill Get one bill ~98
Fetch a single bill by id with its state, totals, balance, client and matters. Clio: GET /bills/{id}.json.
| Name | Type | Req | Description |
|---|---|---|---|
| bill_id | integer | yes | The bill's numeric Clio id. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
No output schema declared.
No examples provided.
clio_get_contact Get one contact ~124
Fetch a single contact by id with all email addresses, phone numbers, postal addresses, web sites and custom field values (field_name + value; a picklist value is an option id, see clio_list_custom_fields). Clio: GET /contacts/{id}.json.
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | integer | yes | The contact's numeric Clio id. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
No output schema declared.
No examples provided.
clio_get_matter Get one matter ~124
Fetch a single matter by id, with its client, practice area, stage, attorneys and custom field values (field_name + value; a picklist value is an option id, see clio_list_custom_fields). Clio: GET /matters/{id}.json.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| matter_id | integer | yes | The matter's numeric Clio id. |
No output schema declared.
No examples provided.
clio_list_activities List activities (time and expenses) ~347
List activities — time entries, expense entries and fixed fees — with hours, rate, total and billing status. Filter by matter, user, type, status or date range. `quantity` is in seconds; `quantity_in_hours` is hours. Clio: GET /activities.json.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Only activities dated on or before this day (ISO-8601 date or timestamp). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| limit | integer | – | Records per page, 1-200 (default 50). |
| matter_id | integer | – | Only this matter's activities. |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| query | string | – | Wildcard search on the activity's note. |
| start_date | string | – | Only activities dated on or after this day (ISO-8601 date or timestamp). |
| status | string | – | Only activities in this billing status. |
| type | string | – | Only this kind of activity. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
| user_id | integer | – | Only this user's activities. |
No output schema declared.
No examples provided.
clio_list_bills List bills ~373
List bills (invoices) with state, totals, amount due and dates. Filter by client, matter, state, overdue, or issue/due date. Clio: GET /bills.json.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | integer | – | Only this client's bills. |
| due_after | string | – | Only bills due after this day (ISO-8601 date, YYYY-MM-DD). |
| due_before | string | – | Only bills due before this day (ISO-8601 date, YYYY-MM-DD). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| issued_after | string | – | Only bills issued after this day (ISO-8601 date, YYYY-MM-DD). |
| issued_before | string | – | Only bills issued before this day (ISO-8601 date, YYYY-MM-DD). |
| limit | integer | – | Records per page, 1-200 (default 50). |
| matter_id | integer | – | Only this matter's bills. |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| overdue_only | boolean | – | Only overdue bills. |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| state | string | – | Only bills in this state. |
| type | string | – | Only revenue or trust bills. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
No output schema declared.
No examples provided.
clio_list_calendar_entries List calendar entries ~314
List calendar entries (hearings, meetings, deadlines) in a time window, optionally for one matter or calendar. Set expanded=true to get each occurrence of recurring events. Clio: GET /calendar_entries.json.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar_id | integer | – | Only entries on this calendar. |
| expanded | boolean | – | Return one record per occurrence of recurring events. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| from | string | – | Only entries ending on or after this ISO-8601 timestamp. |
| is_all_day | boolean | – | Only all-day (true) or timed (false) entries. |
| limit | integer | – | Records per page, 1-200 (default 50). |
| matter_id | integer | – | Only this matter's entries. |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| query | string | – | Search text. |
| to | string | – | Only entries starting on or before this ISO-8601 timestamp. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
No output schema declared.
No examples provided.
clio_list_communications List communications ~371
List logged communications — phone calls and emails recorded on matters — with subject, body, date, senders and receivers. Filter by matter, contact, user, type or date range, or search subject and body. Clio: GET /communications.json.
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | integer | – | Only communications with this contact. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| having_time_entries | boolean | – | Only communications with (true) or without (false) time entries. |
| limit | integer | – | Records per page, 1-200 (default 20: email bodies can be long). |
| matter_id | integer | – | Only this matter's communications. |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| query | string | – | Wildcard search on subject and body. |
| received_before | string | – | Only communications on or before this day (ISO-8601 date, YYYY-MM-DD). |
| received_since | string | – | Only communications on or after this day (ISO-8601 date, YYYY-MM-DD). |
| type | string | – | Only phone calls or only emails. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
| user_id | integer | – | Only communications of this user. |
No output schema declared.
No examples provided.
clio_list_contacts List contacts ~441
Search and list contacts — clients, prospective clients, companies, opposing parties and co-counsel. `query` wildcard-matches name, email, phone, address and more; custom_field_id + custom_field_value filter by one of the firm's custom fields. Clio: GET /contacts.json.
| Name | Type | Req | Description |
|---|---|---|---|
| client_only | boolean | – | Only contacts who are clients. |
| custom_field_id | integer | – | Only records whose custom field with this id (from clio_list_custom_fields) matches custom_field_value. |
| custom_field_operator | string | – | Required for currency, date, time and numeric fields (= for an exact match); leave it out for every other field type. |
| custom_field_value | string | – | The value to match. Checkbox: true or false; picklist: the option id; contact or matter field: the record id; date: YYYY-MM-DD. Text, checkbox, picklist, contact and matter fields always match exactl… |
| email_only | boolean | – | Only contacts that have an email address. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| initial | string | – | Only contacts whose last name or company name starts with this letter (A-Z). |
| limit | integer | – | Records per page, 1-200 (default 50). |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| query | string | – | Wildcard search across name, title, email, phone, address, web site and custom fields. |
| type | string | – | Only people or only companies. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
No output schema declared.
No examples provided.
clio_list_custom_fields List custom fields ~291
List the firm's custom fields for matters or contacts — name, type, whether required, and the options of picklist fields (option id + text). Use the ids to filter clio_list_matters / clio_list_contacts and to read the values that clio_get_matter / clio_get_contact return. Clio: GET /custom_fields.json.
| Name | Type | Req | Description |
|---|---|---|---|
| deleted | boolean | – | Only fields deleted for future use (true) or active ones (false). |
| field_type | string | – | Only fields of this type. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| limit | integer | – | Records per page, 1-200 (default 50). |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| parent_type | string | – | Only matter fields or only contact fields. |
| query | string | – | Wildcard search on the field name. |
| visible_and_required | boolean | – | Only fields that are visible and required. |
No output schema declared.
No examples provided.
clio_list_documents List documents ~307
List documents (metadata only: name, file name, type, size, category, dates) for a matter, a contact or a folder, or search them by name. Clio: GET /documents.json.
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | integer | – | Only this contact's documents. |
| document_category_id | integer | – | Only documents in this category. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| limit | integer | – | Records per page, 1-200 (default 50). |
| matter_id | integer | – | Only this matter's documents. |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| parent_id | integer | – | Only documents in this folder. |
| query | string | – | Wildcard search on the document name. |
| scope | string | – | With parent_id: direct children only (default) or everything beneath the folder. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
No output schema declared.
No examples provided.
clio_list_matters List matters ~510
Search and list matters (the firm's cases) with their client, practice area, responsible attorney and status. `query` wildcard-matches matter number or description and the client's name; custom_field_id + custom_field_value filter by one of the firm's custom fields (e.g. a court case number). Clio: GET /matters.json.
| Name | Type | Req | Description |
|---|---|---|---|
| billable | boolean | – | Only billable (true) or non-billable (false) matters. |
| client_id | integer | – | Only this client's (contact id) matters. |
| custom_field_id | integer | – | Only records whose custom field with this id (from clio_list_custom_fields) matches custom_field_value. |
| custom_field_operator | string | – | Required for currency, date, time and numeric fields (= for an exact match); leave it out for every other field type. |
| custom_field_value | string | – | The value to match. Checkbox: true or false; picklist: the option id; contact or matter field: the record id; date: YYYY-MM-DD. Text, checkbox, picklist, contact and matter fields always match exactl… |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| limit | integer | – | Records per page, 1-200 (default 50). |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc), the only order that allows unlimited cursor paging. |
| originating_attorney_id | integer | – | Only matters with this originating attorney (user id). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| practice_area_id | integer | – | Only matters in this practice area. |
| query | string | – | Wildcard search on display number, number, description, or the client's name. |
| responsible_attorney_id | integer | – | Only matters with this responsible attorney (user id). |
| status | string | – | open, closed or pending — or several comma-separated, e.g. open,pending. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
No output schema declared.
No examples provided.
clio_list_notes List notes ~277
List notes on a matter or a contact, with subject, body, date and author. Clio requires type; narrow to one matter or contact with matter_id or contact_id. Clio: GET /notes.json.
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | integer | – | For type Contact: the contact's id. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| limit | integer | – | Records per page, 1-200 (default 50). |
| matter_id | integer | – | For type Matter: the matter's id. |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| query | string | – | Wildcard search across subject and detail. |
| type | string | yes | Matter notes or contact notes. |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
No output schema declared.
No examples provided.
clio_list_tasks List tasks ~419
List tasks with status, priority, due date, matter and assignee. Filter by matter, assignee, status, priority or a due-date range — e.g. what is due this week. Clio: GET /tasks.json.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee_id | integer | – | Only tasks assigned to this user or contact id. Requires assignee_type. |
| assignee_type | string | – | Whether assignee_id is a user or a contact. |
| complete | boolean | – | Only complete (true) or incomplete (false) tasks. |
| due_at_from | string | – | Start of a due-date range (ISO-8601 date, YYYY-MM-DD). |
| due_at_to | string | – | End of a due-date range (ISO-8601 date, YYYY-MM-DD). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| limit | integer | – | Records per page, 1-200 (default 50). |
| matter_id | integer | – | Only this matter's tasks. |
| offset | integer | – | next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records). |
| order | string | – | Sort order. Default id(asc). |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| priority | string | – | Only tasks with this priority. |
| query | string | – | Wildcard search on the task's name or description. |
| status | string | – | Only tasks in this status (without advanced tasks, only pending or complete). |
| statute_of_limitations | boolean | – | Only statute-of-limitations tasks (true) or others (false). |
| updated_since | string | – | Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z. |
No output schema declared.
No examples provided.
clio_list_users List users ~188
List the firm's Clio users (attorneys and staff) — use their ids for responsible attorneys, time entries and task assignees. Clio: GET /users.json.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | – | Only enabled (true) or disabled (false) users. |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| limit | integer | – | Records per page, 1-2000 (default 50). |
| name | string | – | Only users with this name. |
| page_token | string | – | next_page.page_token from the previous page. Omit for the first page. |
| role | string | – | Only users with this role. |
| subscription_type | string | – | Only attorneys or non-attorneys. |
No output schema declared.
No examples provided.
clio_log_communication Log a phone call or email ~248
WRITE: Record a phone call or an email on Clio's communication log, optionally on a matter, with who it was from and to. This only records it: Clio sends nothing. To bill the time, also use clio_create_time_entry. Clio: POST /communications.json.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | What was said or written (plain text). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| matter_id | integer | – | The matter it belongs to. |
| received_at | string | yes | When it took place (ISO-8601 timestamp, e.g. 2026-10-02T09:30:00-07:00). |
| receivers | array | – | Who it went to: firm users and/or contacts. |
| senders | array | – | Who it came from: firm users and/or contacts. |
| subject | string | yes | Subject line, e.g. 'Call with client about settlement'. |
| type | string | yes | A phone call or an email. |
No output schema declared.
No examples provided.
clio_update_task Update a task ~216
WRITE: Update a task — mark it complete, change its status, due date, priority, name or description, or reassign it. Only the fields given are changed. Clio: PATCH /tasks/{id}.json.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee_id | integer | – | Reassign to this user or contact. Requires assignee_type. |
| assignee_type | string | – | Whether assignee_id is a User or a Contact. |
| description | string | – | New description. |
| due_at | string | – | New due date (ISO-8601 date, YYYY-MM-DD). |
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
| name | string | – | New name. |
| priority | string | – | New priority. |
| status | string | – | New status, e.g. complete. |
| task_id | integer | yes | The task's numeric Clio id. |
No output schema declared.
No examples provided.
clio_who_am_i Who am I ~110
Fetch the Clio user this access token belongs to — name, email, subscription type, time zone and default_calendar_id (needed to create calendar entries). A cheap way to confirm the token and region are right. Clio: GET /users/who_am_i.json.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | – | Override the returned fields: a comma-separated list, nested resources in braces one level deep, e.g. id,name,matter{id,display_number}. Omit for a sensible default. |
No output schema declared.
No examples provided.
How do I install the Clio MCP by usefulapi server?
Clio MCP by usefulapi is a hosted endpoint at https://clio.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · clio.usefulapi.io
claude mcp add --transport http io-usefulapi-clio 'https://clio.usefulapi.io/mcp'
What is the Clio MCP by usefulapi server?
Clio MCP by usefulapi is listed in the public MCP registry as io.usefulapi/clio. Read Clio matters, contacts, time, tasks, calendar and bills; add matters, time entries, notes. This page covers its hosted endpoint (https://clio.usefulapi.io/mcp).
Is the Clio MCP by usefulapi server safe to use?
Clio MCP by usefulapi scores 62 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Clio MCP by usefulapi server expose?
Clio MCP by usefulapi exposes 23 tools: clio_who_am_i, clio_list_users, clio_list_matters, clio_get_matter, clio_list_contacts, and 18 more. Their descriptions and schemas cost roughly 6,208 tokens of context every time the server is loaded.
Does the Clio MCP by usefulapi server require authentication?
Yes. Clio MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Clio MCP by usefulapi server still maintained?
Clio MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.