clio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLIO_REGION | Yes | The region your Clio account lives in: us, eu, ca or au. | |
| CLIO_APP_KEY | Yes | The Clio App Key (Client ID) from your Developer Application. | |
| CLIO_LANGUAGE | No | Language of messages (previews, errors and notes). Optional, default en. Available: en or cs. | en |
| CLIO_APP_SECRET | Yes | The Clio App Secret (Client Secret) from your Developer Application. | |
| CLIO_DOCX_LABELS | No | Advanced: extra single-colon labels for the text-to-DOCX markup. Optional. | |
| CLIO_WORK_FOLDER | No | Folder on your PC where documents are downloaded for editing. Optional, default Documents\Clio MCP. | Documents\Clio MCP |
| CLIO_DOCX_INDENT_CM | No | Advanced: the hanging indent (default 1.4 cm) for numbered paragraphs. Optional. | 1.4 |
| CLIO_DOCUMENT_FOLDER | No | Folder name in Clio for documents created by Claude. Optional, default Claude. | Claude |
| CLIO_DEFAULT_TEMPLATE | No | Default letterhead / template. Name (or beginning of the name, or id) of the Clio Document Template to use for new documents. Optional. | |
| CLIO_INTERNAL_TEMPLATE | No | Template for internal documents. Template used when Claude is asked for an internal document (kind=internal). Optional. | |
| CLIO_PER_USER_TEMPLATES | No | Per-user letterheads. If each lawyer has their own letterhead template: jane@firm.com=Jane_letterhead;john@firm.com=John_letterhead. Optional. | |
| CLIO_WRITE_CONFIRMATION | No | How Claude confirms writes to Clio. Optional, default auto. Modes: auto or ask. | auto |
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 |
|---|---|
| clio_authenticateA | Starts the Clio Manage sign-in (OAuth 2.0) and IMMEDIATELY returns the sign-in URL. It tries to open the browser; if it does not open, show the URL to the user so they can open it manually. The user signs in to Clio in the browser and approves access; the tokens are then stored encrypted on this computer in the background. Verify the result with clio_auth_status (or clio_who_am_i). Use on first run or whenever another tool reports that you are not signed in. |
| clio_auth_statusB | Checks whether a valid Clio token is stored on this computer, who it belongs to and when it expires; also reports the state of a sign-in in progress. |
| clio_logoutA | Deletes the tokens stored on this computer. With revoke=true it also asks Clio to invalidate the access token. |
| clio_who_am_iA | Returns the signed-in Clio user (id, name, e-mail, roles) and the current rate-limit state. Use it to verify the connection and to find your own user id. |
| clio_describe_apiA | Searches Clio API v4 endpoints by keywords (e.g. 'matters', 'time entry', 'bills line items', 'document templates') or describes a specific endpoint (method + path). Returns parameters, request-body fields and response fields usable in the fields parameter. Use it before clio_api_request when no curated tool exists. |
| clio_api_requestA | Performs a GET, POST or PATCH on any Clio API v4 endpoint (path relative to /api/v4, e.g. '/matters' or '/matters/123'; or a full URL from meta.paging.next). DELETE is not allowed. The request is validated against the OpenAPI catalog (unknown path = error; unknown parameters = warning). For GET pass query.fields (without it the API returns only id and etag). The POST/PATCH body is automatically wrapped in {"data": ...}. Writes follow the preview → confirm handshake: the first call returns a preview with a confirmation token; repeat with confirm set to that token after the user approves. |
| clio_diagnosticsA | Returns the server configuration (without secrets): region, URLs, ports, file paths, the work folder for documents, Node version and the token storage method. |
| clio_document_searchA | Searches documents in Clio by matter (matter_id), folder (parent_id), contact, name (query) or category. Returns metadata including id, name, size, version and location. Paginates via page_token. For the contents of a folder use parent_id + scope=children. |
| clio_document_getA | Returns document metadata and the version history (version id, number, size, author, date). Does not return a download URL – use clio_document_download. |
| clio_document_readA | Returns the content of a Clio document directly in the response – no disk access needed. DOCX/PDF with a text layer/TXT/EML/HTML → text (paginate with offset/max_chars). Scanned PDFs without a text layer and images (JPG/PNG) → returns the pages as images that Claude reads (visual OCR); select pages with page_from/page_to (max 4 per call). mode: auto (default), text (text layer only), images (always page images – e.g. for stamps, signatures, tables). Accepts document_id or file_path. |
| clio_document_downloadA | Downloads a document (or a specific version) from Clio to the work folder on the PC (default /root/Documents/Clio MCP, subfolder per matter) and returns the file path. Intended for opening and editing the document with Claude; upload the edited file back as a new version with clio_document_upload_version. |
| clio_document_upload_versionA | Uploads a local file as a new version of an existing document in Clio (previous versions stay in the history). Write operation – preview first, then confirm with the token from the preview. |
| clio_document_uploadA | Uploads a local file as a new document into a matter. Without folder_id the document is stored in the "Claude" folder in the root of the matter's documents (created if it does not exist) – every document created by Claude belongs there. For new letters/filings first use clio_document_create_from_letterhead (letterhead), then this tool. Write operation – preview first, then confirm with the token from the preview. |
| clio_letterheads_listA | Lists the document templates (Document Templates) in Clio including letterheads and shows which template will be used for the signed-in user and for internal documents. |
| clio_document_create_from_letterheadA | Creates a new document in a matter from a letterhead / template (Document Template in Clio): selected by template_id or template, otherwise by configuration (user → template map, default template, kind=internal → internal template). RECOMMENDED APPROACH (works everywhere, even without disk access): pass the finished text in the content parameter – the server inserts it into the letterhead (docx) and uploads it to the "Claude" folder in the matter (preview, then confirm with the token). content format: empty line = empty paragraph; '# ' / '## ' / '### ' = Heading 2/3/4 of the template; bold; '[ 1. ] text' = numbered paragraph (number in the margin, text with a hanging indent); 'Label:: text' = bold label + tab; '- ' bullet; '\t' tab; '---pagebreak---' page break; ':::center text' centred, ':::right text' right-aligned. Follow the user's conventions for the document structure (addressee, reference numbers, date, heading, enclosures) if they state them. Alternatives: without content, mode='download' only downloads the template for manual editing (Cowork with a connected folder); mode='automation' lets Clio generate the document via Document Automation. Without a letterhead only with without_letterhead=true. Do not create empty documents: if the user has not provided the text (and the document type, addressee, matter), ask before calling this tool. mode='download' serves only a user who will edit the file in a connected folder (Cowork) – never download a template just to upload it unchanged. Choose filename from the document type and addressee (e.g. 'Letter_to_opposing_counsel_2026-10-03.docx') unless the user names it. |
| clio_document_writeA | Creates a new version of an existing DOCX document in Clio from the given text (same markdown-lite format as clio_document_create_from_letterhead). The document body is REPLACED by the new text; header, footer and styles are kept (template = the document itself, or base='letterhead' = the current letterhead of the user). Suitable for fixing documents created by Claude; for third-party documents with complex formatting prefer downloading and editing in Cowork. Write operation – preview first, then confirm with the token from the preview. |
| clio_folder_listB | Lists the folders (and optionally documents) in a matter or under a given folder – to find out where to store a document. |
| clio_folder_createA | Creates a folder in a matter (parent = Matter) or inside another folder (parent = Folder). Write operation – preview first, then confirm with the token from the preview. |
| clio_document_comment_addA | Adds a comment to the current version of a document (visible in Clio next to the document). Write operation – preview first, then confirm with the token from the preview. |
| clio_time_entries_listA | Lists time entries (TimeEntry) and optionally expenses by matter, user, period and billing status (unbilled/billed/non_billable/draft). Also returns a summary of hours and amounts for the listed page. Without matter_id and user_id it returns entries for the whole firm – for large periods use limit and page_token. |
| clio_time_summaryB | Sums hours and amounts across all time entries by matter, user and period (walks all pages, max. 2000 entries). Broken down by user and billing status. |
| clio_activity_descriptions_listA | Lists ActivityDescriptions (activity/expense types with their default rate) – needed to fill in activity_description_id correctly when recording time. |
| clio_time_entry_createB | Records a time entry (TimeEntry) on a matter: date, hours (decimal, e.g. 0.5), note, optionally activity description (activity_description_id), rate (price per hour), user (default: signed-in user), billable/non-billable. Write operation – preview first, then confirm with the token from the preview. |
| clio_expense_createA | Records an expense (ExpenseEntry) on a matter: date, amount (price × quantity), description, optionally expense category. Write operation – preview first, then confirm with the token from the preview. |
| clio_activity_updateB | Updates an existing entry (as long as it has not been billed): date, hours, note, rate, activity description, billable/non-billable. Write operation – preview first, then confirm with the token from the preview. |
| clio_timerA | Shows the signed-in user's running timer, or starts a new timer on a matter (action=start; creates an in-progress TimeEntry). Stopping: action=stop. Starting/stopping is a write operation – confirm (preview → token). |
| clio_billable_matters_listB | Lists matters with unbilled hours/amounts (basis for preparing bills), optionally for a period and client. Intended for monthly billing. |
| clio_bills_listC | Lists bills (in Clio only the basis for the actual invoice) by state (draft, awaiting_approval, awaiting_payment, paid, void), client, matter, issue period, or overdue only. |
| clio_bill_getB | Returns the bill detail and its line items (date, description, quantity, price, total, link to the time entry). Optionally also the pre-rendered HTML of the bill. |
| clio_bill_updateA | Updates the bill header (subject, memo, issue date, due date, state – e.g. draft → awaiting_approval, void). Write operation – preview first, then confirm with the token from the preview. The connector does not send bills to clients. |
| clio_line_item_updateA | Updates a bill line item (description, quantity, price, date, note); with update_original_record=true the change is also written back to the original time entry. Write operation – preview first, then confirm with the token from the preview. |
| clio_outstanding_balancesC | Lists clients with outstanding bills: total amount owed, last payment, newest due date, list of outstanding bills. |
| clio_matter_searchA | Searches matters by text (number, description), client, status (open/pending/closed), responsible attorney or practice area. Returns basic details including the matter id needed by the other tools. |
| clio_matter_getB | Returns matter detail including client, custom fields, account balances, statute of limitations, relationships and related contacts. Optionally also a summary of unbilled time. |
| clio_matter_createB | Creates a new matter: client (client_id), description, status, billing method, responsible attorney (defaults to the signed-in user), practice area, custom fields. Write operation – preview first, then confirm with the token from the preview. |
| clio_matter_updateB | Updates a matter: description, status (open/pending/closed), responsible attorney, practice area, custom fields, close date etc. Write operation – preview first, then confirm with the token from the preview. |
| clio_practice_areas_listA | Lists practice areas and matter stages (for creating/updating matters). |
| clio_custom_fields_listA | Lists custom fields for matters or contacts (id, name, type, picklist options) – required to fill in custom_field_values. |
| clio_contact_searchC | Searches people and companies by name, e-mail or phone (query); optionally only clients or only type Person/Company. |
| clio_contact_getB | Returns contact detail including all e-mail addresses, phone numbers, addresses and custom fields; optionally also the list of the contact's matters. |
| clio_contact_createA | Creates a person (first_name + last_name) or a company (name) with e-mail addresses, phone numbers, address, tax/VAT number (sales_tax_number) and a link to a company. Write operation – preview first, then confirm with the token from the preview. |
| clio_contact_updateA | Updates a contact's basic details; adds an e-mail address/phone number/address (existing ones are kept). Write operation – preview first, then confirm with the token from the preview. |
| clio_task_listA | Lists tasks by matter, assignee, status, due date (from–to) or text. Default: the signed-in user's incomplete tasks sorted by due date. |
| clio_task_createB | Creates a task for a matter (or a general one) with a due date, priority and assignee (defaults to the signed-in user). Write operation – preview first, then confirm with the token from the preview. |
| clio_task_updateA | Updates a task (name, description, due date, priority, assignee) or changes its status – status=complete marks the task as done. Write operation – preview first, then confirm with the token from the preview. |
| clio_calendar_entries_listB | Lists calendar entries in a period (from–to), optionally only for a matter or from a specific calendar. Default: the signed-in user's calendars. |
| clio_calendars_listA | Lists the calendars available to the signed-in user (ids for creating calendar entries) and the calendar entry event types. |
| clio_calendar_entry_createB | Creates a calendar entry (hearing, deadline, meeting) in the user's calendar (defaults to the default calendar), optionally linked to a matter, with attendees and an event type. Write operation – preview first, then confirm with the token from the preview. |
| clio_calendar_entry_updateB | Updates the title, time, location, description or matter of a calendar entry. Write operation – preview first, then confirm with the token from the preview. |
| clio_notes_listC | Lists the notes of a matter or a contact, newest first. |
| clio_note_createA | Adds a note to a matter or a contact (subject + text). Write operation – preview first, then confirm with the token from the preview. |
| clio_communications_listC | Lists logged communications (EmailCommunication, PhoneCommunication) of a matter or a contact, newest first; optionally filtered by text or period. |
| clio_communication_logB | Logs a record of a phone call or an e-mail to a matter (subject, body, date, sender/receiver = user or contact). Write operation – preview first, then confirm with the token from the preview. |
| clio_users_listA | Lists Clio users (id, name, e-mail, roles, rate) – for assigning tasks and matters and for recording time on behalf of another user. |
| clio_text_snippets_listC | Lists your firm's text snippets (shortcuts) from Clio – reusable phrases for documents and notes. |
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 55 tools
Most tools target distinct resources and actions, with clear separation between matter, contact, document, billing, time, task, and calendar operations. A few areas overlap (document creation/upload/write variants, time entry vs. timer vs. activity update), but descriptions provide enough detail to choose correctly.
The dominant pattern is clio_<resource>_<action> in snake_case (e.g., clio_matter_get, clio_task_create), applied consistently across most domains. Minor deviations exist, such as clio_activity_update for time entries, clio_who_am_i, clio_describe_api, and clio_outstanding_balances.
55 tools is heavy and well above the ideal 3–15 range, risking agent overload and selection difficulty. The breadth of Clio Manage justifies many tools, but the set could likely be consolidated (especially document and lookup tools).
Core create/read/update coverage is strong across matters, contacts, documents, time, tasks, calendars, notes, and billing. However, delete/removal operations are absent for nearly every resource and DELETE is explicitly disallowed, leaving lifecycle gaps that agents cannot work around.