Clio MCP by usefulapi
io.usefulapi/cliousefulapi.iostreamable-httpv1.0.0Scanned
Read Clio matters, contacts, time, tasks, calendar and bills; add matters, time entries, notes.
20 tools: 7 can delete or cancel things and 13 only read.
- Reads private data · 6
- Reads text others write · 20
- Can send data out · 0
- No findings
Anlyon alternative
7 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
20 tools
Deletes or cancels 7Claude Code: deny
clio_create_calendar_entryWRITE: Put an event on a Clio calendar — a hearing, meeting or deadline — optionally linked to a matter.Reads text others writeNo findings
Why it is in this group
- The name "clio_create_calendar_entry" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a calendar entry
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
clio_create_contactWRITE: 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.Reads text others writeNo findings
Why it is in this group
- The name "clio_create_contact" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
clio_create_matterWRITE: Open a new matter for an existing client contact.Reads text others writeNo findings
Why it is in this group
- The name "clio_create_matter" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: Open a new matter for an existing client contact. Requires the client's contact id and a description. Clio: POST /matters.json.
Annotations the server declares
- title: Create a matter
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
clio_create_noteWRITE: Add a note to a matter (type Matter + matter_id) or to a contact (type Contact + contact_id).Reads text others writeNo findings
Why it is in this group
- The name "clio_create_note" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: Add a note to a matter (type Matter + matter_id) or to a contact (type Contact + contact_id). Clio: POST /notes.json.
Annotations the server declares
- title: Create a note
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
clio_create_taskWRITE: Create a task and assign it to a firm user or a contact, optionally on a matter with a due date and priority.Reads text others writeNo findings
Why it is in this group
- The name "clio_create_task" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a task
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
clio_create_time_entryWRITE: Record billable (or non-billable) time on a matter.Reads text others writeNo findings
Why it is in this group
- The name "clio_create_time_entry" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Record a time entry
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
clio_update_taskWRITE: Update a task — mark it complete, change its status, due date, priority, name or description, or reassign it.Reads text others writeNo findings
Why it is in this group
- The name "clio_update_task" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Update a task
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Only reads 13Show 13 read-only tools
clio_get_billFetch a single bill by id with its state, totals, balance, client and matters.Reads text others writeNo findings
Why it is in this group
- The name "clio_get_bill" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Fetch a single bill by id with its state, totals, balance, client and matters. Clio: GET /bills/{id}.json.
Annotations the server declares
- title: Get one bill
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_get_contactFetch a single contact by id with all email addresses, phone numbers, postal addresses and web sites.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "clio_get_contact" says "get": a word for reading.
What it can reach
- private-dataThe name "clio_get_contact" says "get" and "contact": it reads contacts.
- private-dataThe description's first sentence says "fetch" and "contact": it reads contacts.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "fetch" and "email": it reads inbound email, which other people can write.
Description, as the server wrote it Fetch a single contact by id with all email addresses, phone numbers, postal addresses and web sites. Clio: GET /contacts/{id}.json.
Annotations the server declares
- title: Get one contact
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_get_matterFetch a single matter by id, with its client, practice area, stage and attorneys.Reads text others writeNo findings
Why it is in this group
- The name "clio_get_matter" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Fetch a single matter by id, with its client, practice area, stage and attorneys. Clio: GET /matters/{id}.json.
Annotations the server declares
- title: Get one matter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_activitiesList activities — time entries, expense entries and fixed fees — with hours, rate, total and billing status.Reads text others writeNo findings
Why it is in this group
- The name "clio_list_activities" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: List activities (time and expenses)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_billsList bills (invoices) with state, totals, amount due and dates.Reads text others writeNo findings
Why it is in this group
- The name "clio_list_bills" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List bills (invoices) with state, totals, amount due and dates. Filter by client, matter, state, overdue, or issue/due date. Clio: GET /bills.json.
Annotations the server declares
- title: List bills
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_calendar_entriesList calendar entries (hearings, meetings, deadlines) in a time window, optionally for one matter or calendar.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "clio_list_calendar_entries" says "list": a word for reading.
What it can reach
- private-dataThe name "clio_list_calendar_entries" says "list" and "calendar": it reads calendars.
- private-dataThe description's first sentence says "list" and "calendar": it reads calendars.
- private-dataThe input names a calendar (input.calendar_id), and the tool reads: it reads calendars.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: List calendar entries
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_contactsSearch and list contacts — clients, prospective clients, companies, opposing parties and co-counsel.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "clio_list_contacts" says "list": a word for reading.
What it can reach
- private-dataThe name "clio_list_contacts" says "list" and "contact": it reads contacts.
- private-dataThe description's first sentence says "search" and "contact": it reads contacts.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Search and list contacts — clients, prospective clients, companies, opposing parties and co-counsel. `query` wildcard-matches name, email, phone, address and more. Clio: GET /contacts.json.
Annotations the server declares
- title: List contacts
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_documentsList documents (metadata only: name, file name, type, size, category, dates) for a matter, a contact or a folder, or search them by name.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "clio_list_documents" says "list": a word for reading.
What it can reach
- private-dataThe name "clio_list_documents" says "list" and "document": it reads documents.
- private-dataThe description's first sentence says "list" and "document": it reads documents.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: List documents
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_mattersSearch and list matters (the firm's cases) with their client, practice area, responsible attorney and status.Reads text others writeNo findings
Why it is in this group
- The name "clio_list_matters" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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. Clio: GET /matters.json.
Annotations the server declares
- title: List matters
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_notesList notes on a matter or a contact, with subject, body, date and author.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "clio_list_notes" says "list": a word for reading.
What it can reach
- private-dataThe name "clio_list_notes" says "list" and "note": it reads notes.
- private-dataThe description's first sentence says "list" and "note": it reads notes.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: List notes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_tasksList tasks with status, priority, due date, matter and assignee.Reads text others writeNo findings
Why it is in this group
- The name "clio_list_tasks" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_list_usersList the firm's Clio users (attorneys and staff) — use their ids for responsible attorneys, time entries and task assignees.Reads text others writeNo findings
Why it is in this group
- The name "clio_list_users" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List the firm's Clio users (attorneys and staff) — use their ids for responsible attorneys, time entries and task assignees. Clio: GET /users.json.
Annotations the server declares
- title: List users
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
clio_who_am_iFetch the Clio user this access token belongs to — name, email, subscription type, time zone and default_calendar_id (needed to create calendar entries).Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
What it can reach
- private-dataThe description's first sentence says "fetch" and "email": it reads mail.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "fetch" and "email": it reads inbound email, which other people can write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Who am I
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.
- Reads private data6
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write20
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http clio https://clio.usefulapi.io/mcpclaude mcp add --transport http clio https://clio.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__clio__clio_who_am_i",
"mcp__clio__clio_list_users",
"mcp__clio__clio_list_matters",
"mcp__clio__clio_get_matter",
"mcp__clio__clio_list_contacts",
"mcp__clio__clio_get_contact",
"mcp__clio__clio_list_activities",
"mcp__clio__clio_list_tasks",
"mcp__clio__clio_list_calendar_entries",
"mcp__clio__clio_list_bills",
"mcp__clio__clio_get_bill",
"mcp__clio__clio_list_documents",
"mcp__clio__clio_list_notes"
],
"ask": [],
"deny": [
"mcp__clio__clio_create_contact",
"mcp__clio__clio_create_matter",
"mcp__clio__clio_create_time_entry",
"mcp__clio__clio_create_task",
"mcp__clio__clio_update_task",
"mcp__clio__clio_create_note",
"mcp__clio__clio_create_calendar_entry"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as clio. Review it before you use it.
Capability tags behind 20 rules
- mcp__clio__clio_who_am_i private-data, untrusted-input
- mcp__clio__clio_list_users untrusted-input
- mcp__clio__clio_list_matters untrusted-input
- mcp__clio__clio_get_matter untrusted-input
- mcp__clio__clio_list_contacts private-data, untrusted-input
- mcp__clio__clio_get_contact private-data, untrusted-input
- mcp__clio__clio_list_activities untrusted-input
- mcp__clio__clio_list_tasks untrusted-input
- mcp__clio__clio_list_calendar_entries private-data, untrusted-input
- mcp__clio__clio_list_bills untrusted-input
- mcp__clio__clio_get_bill untrusted-input
- mcp__clio__clio_list_documents private-data, untrusted-input
- mcp__clio__clio_list_notes private-data, untrusted-input
- mcp__clio__clio_create_contact untrusted-input
- mcp__clio__clio_create_matter untrusted-input
- mcp__clio__clio_create_time_entry untrusted-input
- mcp__clio__clio_create_task untrusted-input
- mcp__clio__clio_update_task untrusted-input
- mcp__clio__clio_create_note untrusted-input
- mcp__clio__clio_create_calendar_entry untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/clio/verify?hash=ec90420cfadc345a3ba8c68768f9fd4f3cbb369f040d22dcbd0c8581ceb1af0a" | jq -e '.changed == false'Pinned hash ec90420cfadc, from Oct 23, 2026, 16:25 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.usefulapi/clio/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.usefulapi/clio)Source: MCP Registry · repository. Synced Oct 23, 2026, 16:25 UTC.