Connect Clio Manage to Claude: Sync Legal Docs, Tasks, and Schedules
Learn how to build a secure MCP server to connect Claude to Clio Manage. Automate legal documentation, billable time entries, and calendar scheduling via API.
If you need to connect Clio Manage to Claude to automate case documentation, log billable time, schedule court dates, or oversee client communications, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's function calling capabilities and Clio's REST API. You can either build, host, and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL.
If your team uses ChatGPT, check out our guide on /connect-clio-manage-to-chatgpt-manage-matters-billing-and-time/ or explore our broader architectural overview on /connect-clio-manage-to-ai-agents-automate-case-ops-and-trust-funds/.
Giving a Large Language Model (LLM) read and write access to a specialized legal practice management system like Clio Manage is an engineering challenge. You have to handle OAuth 2.0 token lifecycles, map massive nested JSON schemas to MCP tool definitions, and deal with Clio's strict domain-specific data constraints. Every time Clio updates an endpoint or changes a field requirement, you have to update your server code, redeploy, and test the integration.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Clio Manage, connect it natively to Claude, and execute complex legal management workflows using natural language.
The Engineering Reality of the Clio Manage API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools over JSON-RPC, the reality of implementing it against specialized B2B APIs is painful. Clio Manage is built to handle strict legal compliance, complex trust accounting, and deeply nested case relationships. Its API reflects that complexity.
If you decide to build a custom Clio Manage MCP server, here are the specific integration challenges you will face:
UTBMS Codes and Billing Compliance Validation
Clio enforces strict domain logic around legal billing. For example, creating a billable time entry on a matter is not just a standard CRUD operation. If the matter is configured to require UTBMS (Uniform Task-Based Management System) codes for electronic billing compliance, any time or expense entry lacking the correct utbms_activity_id or utbms_task_id will immediately return a 422 Unprocessable Entity. An LLM cannot simply guess this payload structure. A managed MCP server exposes tools like create_a_clio_manage_activity with strictly defined JSON schemas that explicitly guide the LLM to provide the correct compliance codes when required.
Matter Redaction and Permission Scoping
Clio Manage relies heavily on granular permission scopes. When querying lists of matters or related entities, the API often returns a redacted flag (e.g., "redacted": true) on nested objects if the calling user or OAuth token lacks full access to that specific matter. This means your MCP tools must be resilient to partial payloads. If you hand-roll your tools, you must write custom logic to instruct Claude on how to handle missing data fields without hallucinating the missing context.
Optimistic Concurrency Control via ETags
Clio uses ETags and the If-Match header to prevent race conditions on heavily updated resources like Calendars, Task Templates, and Court Rules. When updating a calendar event, you cannot simply send a PATCH request with the new time. You must first fetch the resource, extract the etag, and pass it back in your update request. If another user modified the event in the meantime, you receive a 412 Precondition Failed. Your MCP server must abstract this ETag validation loop, or you risk the LLM constantly failing on write operations.
How to Generate a Clio Manage MCP Server with Truto
Truto eliminates the need to build and host custom integration infrastructure. By connecting a Clio Manage account to Truto, you can dynamically generate a secure MCP server URL. Truto derives the tool definitions directly from the integration's documentation and resource schemas, ensuring Claude always has an accurate, AI-ready map of the API.
You can create this MCP server in two ways: via the Truto UI for rapid prototyping, or programmatically via the Truto API for production workflows.
Method 1: Via the Truto UI
This is the fastest way to get Claude connected to Clio Manage.
- Log in to your Truto dashboard and navigate to the Integrated Accounts page.
- Select your connected Clio Manage account.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration. You can optionally filter tools by method (e.g.,
read,write) or tags (e.g.,billing,documents). - Click Generate and copy the resulting MCP server URL (e.g.,
https://api.truto.one/mcp/a1b2c3d4...).
Method 2: Via the Truto API
For teams building multi-tenant AI products, you can generate MCP servers programmatically. This allows your application to provision secure, short-lived MCP servers on behalf of your users.
Make a POST request to /integrated-account/:id/mcp with your desired configuration:
curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Clio Manage Billing MCP",
"config": {
"methods": ["read", "write"],
"tags": ["billing", "matters"]
},
"expires_at": "2026-12-31T23:59:59Z"
}'The response contains the secure URL you will provide to Claude:
{
"id": "abc-123",
"name": "Clio Manage Billing MCP",
"config": {
"methods": ["read", "write"],
"tags": ["billing", "matters"]
},
"expires_at": "2026-12-31T23:59:59Z",
"url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}Connecting the Clio Manage MCP Server to Claude
Once you have the URL, connecting it to Claude is a straightforward process. The MCP URL contains a cryptographic token that handles authentication and routing.
Method A: Via the Claude Desktop UI
If you are using Claude Desktop (or ChatGPT's custom connectors interface), you can add the server directly through the settings menu.
- Open Claude Desktop.
- Navigate to Settings -> Integrations -> Add MCP Server.
- Give the connection a descriptive name (e.g., "Clio Manage - Firm Account").
- Paste the Truto MCP URL into the Server URL field.
- Click Add.
Claude will perform a handshake with the server, discover the available tools, and make them immediately accessible in your chat interface.
Method B: Via Manual Config File (claude_desktop_config.json)
For advanced users or headless deployments, you can configure Claude Desktop manually using the configuration JSON file. This method utilizes the Server-Sent Events (SSE) transport adapter.
Open your claude_desktop_config.json file (typically located in ~/Library/Application Support/Claude/ on macOS or %APPDATA%\Claude\ on Windows) and add the following configuration:
{
"mcpServers": {
"clio_manage": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/a1b2c3d4e5f6..."
]
}
}
}Restart Claude Desktop. The client will parse the configuration, pull down the SSE package, and establish a persistent connection to your Clio Manage integration.
Clio Manage Hero Tools for Claude
Truto automatically generates comprehensive tools based on Clio's API endpoints. Here are the most powerful tools your AI agents can leverage, complete with contextual usage notes and example prompts.
1. List All Matters
Tool: list_all_clio_manage_matters
This tool retrieves the firm's cases (Matters). It supports filtering by client, status (open, closed, pending), and custom field values. Because legal firms often have thousands of matters, this tool automatically handles pagination via cursors.
Contextual Note: When fetching matters, Claude receives critical reference data including the id and display_number. These IDs are mandatory prerequisites for nearly all other operations (billing, tasks, document uploads).
"Find all open matters for the client 'Acme Corp'. Return a summary table with the matter display number, description, and open date."
2. Create an Activity (Time Entry / Expense)
Tool: create_a_clio_manage_activity
This tool logs billable time, flat fees, or expenses against a specific matter. It requires the matter ID and accepts fields for quantity (hours), rate, date, and internal notes.
Contextual Note: If the matter requires UTBMS codes, Claude must be instructed to look up the correct codes first using list_all_clio_manage_utbms_codes before calling this tool, otherwise the API will reject the payload.
"Log 2.5 hours of billable time for today on matter #12345. Use the note 'Drafted and reviewed the initial motion for summary judgment.' Apply my standard hourly rate."
3. Log a Communication
Tool: create_a_clio_manage_communication
This tool records phone calls, emails, or secure messages. It links the correspondence directly to a matter and contact, creating an immutable audit trail of client interactions.
Contextual Note: This is incredibly useful for turning unstructured meeting transcripts or rough notes into formal, logged communications in the CRM without manual data entry.
"Take the rough notes from my call with John Smith this morning and format them into a professional summary. Then, log it as a phone communication on matter #98765."
4. Create a Calendar Entry
Tool: create_a_clio_manage_calendar_entry
This tool creates appointments, court dates, and deadlines. It associates the event with specific firm calendars, attendees, and related matters.
Contextual Note: Clio's calendar API is strict about date formatting. Dates before January 1, 1900 UTC are automatically pulled forward. Claude will format the start and end times in ISO 8601 to ensure compliance.
"Schedule a 90-minute deposition prep meeting with Sarah Jenkins for next Thursday at 2:00 PM EST. Attach this event to the 'Smith vs. State' matter and add it to my primary calendar."
5. Create a Document
Tool: create_a_clio_manage_document
This tool handles document creation and versioning. It can upload new files directly to a matter's folder hierarchy or add a new version to an existing document.
Contextual Note: For binary file uploads, Claude typically prepares the metadata and JSON payload, while the actual file transfer mechanisms are handled by the proxy execution layer. This is vital for managing contracts, briefs, and discovery files.
"Upload this summarized deposition transcript as a new document to the 'Discovery' folder under matter #55432. Set the document category to 'Transcripts'."
6. Create a Task
Tool: create_a_clio_manage_task
This tool assigns actionable work items to firm users. It supports deadlines, priority levels, task types, and matter associations.
Contextual Note: When assigning tasks, you must provide either a single assignee or an array of assignees, but never both. Sending an empty assignee list will result in a validation error.
"Create a high-priority task for the paralegal team to 'Compile exhibits for the upcoming mediation.' Set the due date for this Friday and link it to matter #11223."
Workflows in Action
Individual tools are useful, but the real power of MCP is chaining them together to execute multi-step workflows. Here is how Claude orchestrates complex legal operations using the Clio Manage server.
Workflow 1: Post-Consultation Automation
Attorneys lose hours every week manually logging notes and billing time after client calls. Claude can automate the entire post-call sequence.
"I just got off a 45-minute call with the CEO of Globex regarding their ongoing IP litigation. We discussed the settlement offer and decided to counter. Please log this call, create a task for the paralegal to draft the counter-offer due tomorrow, and bill my time for 0.75 hours."
Execution Steps:
list_all_clio_manage_matters: Claude searches for open matters related to the client "Globex" to retrieve the correct matter ID.create_a_clio_manage_communication: Claude logs a structured summary of the settlement discussion as a phone communication on the retrieved matter.create_a_clio_manage_task: Claude creates a high-priority task assigned to the paralegal group, titled "Draft counter-offer", sets the deadline for tomorrow, and links it to the matter.create_a_clio_manage_activity: Claude creates a time entry for 0.75 hours on the matter, applying the firm's default hourly rate and noting the settlement discussion.
Result: The attorney's CRM is updated, the team is assigned their next steps, and revenue is captured - all from a single natural language prompt.
Workflow 2: Automated Court Deadline Preparation
Managing court dockets requires tracking deadlines and ensuring documents are prepared on time.
"We have a hearing next month for the 'Davis Estate' case. Check our calendar for the exact date, then assign a task to me to finalize the briefing documents one week prior. Also, pull a list of all documents currently in the 'Pleadings' folder for that matter so I know what we have."
Execution Steps:
list_all_clio_manage_matters: Claude looks up the "Davis Estate" case to get the matter ID.list_all_clio_manage_calendar_entries: Claude queries the calendar, filtering by the specific matter ID and event type "Hearing", to find the exact date next month.create_a_clio_manage_task: Claude calculates the date one week prior to the hearing, creates a task assigned to the user to "Finalize briefing documents", and sets the calculated due date.list_all_clio_manage_folders_lists: Claude queries the document folder structure for the matter, locates the "Pleadings" folder, and returns a manifest of the current documents inside it.
Result: The attorney receives a clear summary of the upcoming court date, a scheduled reminder task, and a verified list of existing case files.
sequenceDiagram
participant ClaudeDesktop as Claude Desktop
participant TrutoMCP as Truto MCP Server
participant ClioAPI as Clio Manage API
ClaudeDesktop->>TrutoMCP: Call `list_all_clio_manage_matters`<br>with query 'Davis Estate'
TrutoMCP->>ClioAPI: GET /api/v4/matters?query=Davis%20Estate
ClioAPI-->>TrutoMCP: 200 OK (Matter ID: 8871)
TrutoMCP-->>ClaudeDesktop: Return normalized matter data
ClaudeDesktop->>TrutoMCP: Call `list_all_clio_manage_calendar_entries`<br>with matter_id 8871
TrutoMCP->>ClioAPI: GET /api/v4/calendar_entries?matter_id=8871
ClioAPI-->>TrutoMCP: 200 OK (Hearing Date)
TrutoMCP-->>ClaudeDesktop: Return calendar data
ClaudeDesktop->>TrutoMCP: Call `create_a_clio_manage_task`<br>with calculated due date
TrutoMCP->>ClioAPI: POST /api/v4/tasks
ClioAPI-->>TrutoMCP: 200 OK (Task Created)
TrutoMCP-->>ClaudeDesktop: Return success confirmationSecurity and Access Control
Giving AI agents direct access to sensitive legal data requires rigid boundaries. Truto provides several mechanisms to lock down your Clio Manage MCP server:
- Method Filtering (
config.methods): Restrict an MCP server to read-only operations by passing["read"]during creation. This allows Claude to query matters and calendars without the risk of accidentally altering financial data or deleting tasks. - Tag Filtering (
config.tags): Scope tools by domain. You can create an MCP server that only has access to tools tagged withbillingordocuments, explicitly keeping the agent away from administrative or HR settings. - Time-to-Live (
expires_at): Generate ephemeral MCP servers for temporary workflows. By setting an ISO datetime forexpires_at, Truto will automatically destroy the server and invalidate the token when the time is up. - Secondary Authentication (
require_api_token_auth): For shared environments, you can require the caller to pass a valid Truto API token in addition to possessing the MCP server URL. This ensures only authorized users within your organization can execute tools.
Rate Limits and Error Handling
Clio enforces API rate limits to protect system stability. When building agentic workflows, it is crucial to understand how these limits are handled.
Truto operates as a transparent proxy. Truto does not retry, throttle, or apply backoff on rate limit errors. If your AI agent executes a loop of tool calls that exceeds Clio's limits, the upstream API will return an HTTP 429 error, which Truto passes directly back to the caller.
However, Truto normalizes the upstream rate limit information into standardized HTTP headers per the IETF specification:
ratelimit-limit: The total number of requests allowed in the current window.ratelimit-remaining: The number of requests remaining.ratelimit-reset: The time at which the limit window resets.
The caller (the agent framework or the client application) is fully responsible for monitoring these headers and implementing its own retry or backoff logic. Do not build workflows assuming the infrastructure will absorb 429s for you.
Ship AI Features Faster with Managed MCP
Connecting Claude to Clio Manage unlocks massive productivity gains for legal teams, but building and maintaining the integration plumbing is a drain on engineering resources. From handling UTBMS compliance schemas to managing OAuth token lifecycles, a custom MCP server is a hidden infrastructure burden.
By leveraging Truto, you can instantly generate secure, curated MCP servers directly from API documentation. You get zero-maintenance API connectivity, allowing your team to focus on building agentic workflows instead of parsing JSON-RPC logs.
FAQ
- Can I restrict Claude to read-only access for Clio Manage?
- Yes. When creating the MCP server via Truto, you can configure method filters (e.g., config: { methods: ["read"] }). This ensures Claude can only access GET and LIST operations, preventing any accidental data modification.
- How does Truto handle Clio Manage rate limits?
- Truto does not automatically retry or apply backoff. When Clio returns a 429 error, Truto passes it to the caller along with normalized IETF rate limit headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your application or agent framework must handle the retry logic.
- Does this support UTBMS billing codes for legal compliance?
- Yes. Truto exposes the full Clio Manage schema to Claude, including required fields for UTBMS codes. If a matter requires these codes, Claude can query the available codes and include them in the time entry payload to avoid 422 errors.
- How do I revoke an MCP server's access?
- You can delete the MCP server via the Truto UI or send a DELETE request to the Truto API. Additionally, you can set an automatic expiration time (expires_at) when generating the server.