Clio MCP by usefulapi
Read Clio matters, contacts, time, tasks, calendar and bills; add matters, time entries, notes.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"clio": {
"url": "https://clio.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://clio.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(23)
🟢clio_who_am_i(fields)
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.
入力スキーマ
{
"type": "object",
"properties": {
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_users(name, enabled, subscription_type, role, fields, ...)
List the firm's Clio users (attorneys and staff) — use their ids for responsible attorneys, time entries and task assignees. Clio: GET /users.json.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"description": "Only users with this name.",
"type": "string"
},
"enabled": {
"description": "Only enabled (true) or disabled (false) users.",
"type": "boolean"
},
"subscription_type": {
"description": "Only attorneys or non-attorneys.",
"type": "string",
"enum": [
"attorney",
"nonattorney"
]
},
"role": {
"description": "Only users with this role.",
"type": "string",
"enum": [
"admin",
"accounts",
"billing",
"reports"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_matters(query, status, client_id, responsible_attorney_id, originating_attorney_id, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"description": "Wildcard search on display number, number, description, or the client's name.",
"type": "string"
},
"status": {
"description": "open, closed or pending — or several comma-separated, e.g. open,pending.",
"type": "string"
},
"client_id": {
"description": "Only this client's (contact id) matters.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"responsible_attorney_id": {
"description": "Only matters with this responsible attorney (user id).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"originating_attorney_id": {
"description": "Only matters with this originating attorney (user id).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"practice_area_id": {
"description": "Only matters in this practice area.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"billable": {
"description": "Only billable (true) or non-billable (false) matters.",
"type": "boolean"
},
"custom_field_id": {
"description": "Only records whose custom field with this id (from clio_list_custom_fields) matches custom_field_value.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"custom_field_value": {
"description": "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 exactly.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"custom_field_operator": {
"description": "Required for currency, date, time and numeric fields (= for an exact match); leave it out for every other field type.",
"type": "string",
"enum": [
"=",
"<",
">",
"<=",
">="
]
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc), the only order that allows unlimited cursor paging.",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"display_number(asc)",
"display_number(desc)",
"open_date(asc)",
"open_date(desc)",
"close_date(asc)",
"close_date(desc)",
"updated_at(asc)",
"updated_at(desc)",
"created_at(asc)",
"created_at(desc)",
"client.name(asc)",
"client.name(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_get_matter(matter_id, fields)
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.
入力スキーマ
{
"type": "object",
"properties": {
"matter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The matter's numeric Clio id."
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"matter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_contacts(query, type, client_only, email_only, initial, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"description": "Wildcard search across name, title, email, phone, address, web site and custom fields.",
"type": "string"
},
"type": {
"description": "Only people or only companies.",
"type": "string",
"enum": [
"Person",
"Company"
]
},
"client_only": {
"description": "Only contacts who are clients.",
"type": "boolean"
},
"email_only": {
"description": "Only contacts that have an email address.",
"type": "boolean"
},
"initial": {
"description": "Only contacts whose last name or company name starts with this letter (A-Z).",
"type": "string",
"minLength": 1,
"maxLength": 1
},
"custom_field_id": {
"description": "Only records whose custom field with this id (from clio_list_custom_fields) matches custom_field_value.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"custom_field_value": {
"description": "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 exactly.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"custom_field_operator": {
"description": "Required for currency, date, time and numeric fields (= for an exact match); leave it out for every other field type.",
"type": "string",
"enum": [
"=",
"<",
">",
"<=",
">="
]
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"name(asc)",
"name(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_get_contact(contact_id, fields)
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.
入力スキーマ
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The contact's numeric Clio id."
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_activities(matter_id, user_id, type, status, start_date, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"matter_id": {
"description": "Only this matter's activities.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"user_id": {
"description": "Only this user's activities.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"type": {
"description": "Only this kind of activity.",
"type": "string",
"enum": [
"TimeEntry",
"ExpenseEntry",
"HardCostEntry",
"SoftCostEntry",
"FixedFee"
]
},
"status": {
"description": "Only activities in this billing status.",
"type": "string",
"enum": [
"billed",
"draft",
"unbilled",
"non_billable",
"billable",
"written_off"
]
},
"start_date": {
"description": "Only activities dated on or after this day (ISO-8601 date or timestamp).",
"type": "string"
},
"end_date": {
"description": "Only activities dated on or before this day (ISO-8601 date or timestamp).",
"type": "string"
},
"query": {
"description": "Wildcard search on the activity's note.",
"type": "string"
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"date(asc)",
"date(desc)",
"total(asc)",
"total(desc)",
"updated_at(asc)",
"updated_at(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_tasks(matter_id, assignee_id, assignee_type, status, complete, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"matter_id": {
"description": "Only this matter's tasks.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"assignee_id": {
"description": "Only tasks assigned to this user or contact id. Requires assignee_type.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"assignee_type": {
"description": "Whether assignee_id is a user or a contact.",
"type": "string",
"enum": [
"user",
"contact"
]
},
"status": {
"description": "Only tasks in this status (without advanced tasks, only pending or complete).",
"type": "string",
"enum": [
"pending",
"in_progress",
"in_review",
"complete",
"draft"
]
},
"complete": {
"description": "Only complete (true) or incomplete (false) tasks.",
"type": "boolean"
},
"priority": {
"description": "Only tasks with this priority.",
"type": "string",
"enum": [
"high",
"normal",
"low"
]
},
"due_at_from": {
"description": "Start of a due-date range (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"due_at_to": {
"description": "End of a due-date range (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"statute_of_limitations": {
"description": "Only statute-of-limitations tasks (true) or others (false).",
"type": "boolean"
},
"query": {
"description": "Wildcard search on the task's name or description.",
"type": "string"
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"due_at(asc)",
"due_at(desc)",
"priority(asc)",
"priority(desc)",
"name(asc)",
"name(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_calendar_entries(from, to, matter_id, calendar_id, expanded, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"from": {
"description": "Only entries ending on or after this ISO-8601 timestamp.",
"type": "string"
},
"to": {
"description": "Only entries starting on or before this ISO-8601 timestamp.",
"type": "string"
},
"matter_id": {
"description": "Only this matter's entries.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"calendar_id": {
"description": "Only entries on this calendar.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"expanded": {
"description": "Return one record per occurrence of recurring events.",
"type": "boolean"
},
"is_all_day": {
"description": "Only all-day (true) or timed (false) entries.",
"type": "boolean"
},
"query": {
"description": "Search text.",
"type": "string"
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_bills(client_id, matter_id, state, overdue_only, issued_after, ...)
List bills (invoices) with state, totals, amount due and dates. Filter by client, matter, state, overdue, or issue/due date. Clio: GET /bills.json.
入力スキーマ
{
"type": "object",
"properties": {
"client_id": {
"description": "Only this client's bills.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"matter_id": {
"description": "Only this matter's bills.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"state": {
"description": "Only bills in this state.",
"type": "string",
"enum": [
"draft",
"awaiting_approval",
"awaiting_payment",
"paid",
"void",
"deleted"
]
},
"overdue_only": {
"description": "Only overdue bills.",
"type": "boolean"
},
"issued_after": {
"description": "Only bills issued after this day (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"issued_before": {
"description": "Only bills issued before this day (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"due_after": {
"description": "Only bills due after this day (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"due_before": {
"description": "Only bills due before this day (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"type": {
"description": "Only revenue or trust bills.",
"type": "string",
"enum": [
"revenue",
"trust"
]
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"issued_at(asc)",
"issued_at(desc)",
"due_at(asc)",
"due_at(desc)",
"balance(asc)",
"balance(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_get_bill(bill_id, fields)
Fetch a single bill by id with its state, totals, balance, client and matters. Clio: GET /bills/{id}.json.
入力スキーマ
{
"type": "object",
"properties": {
"bill_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The bill's numeric Clio id."
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"bill_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_documents(matter_id, contact_id, parent_id, scope, document_category_id, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"matter_id": {
"description": "Only this matter's documents.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"contact_id": {
"description": "Only this contact's documents.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"parent_id": {
"description": "Only documents in this folder.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"scope": {
"description": "With parent_id: direct children only (default) or everything beneath the folder.",
"type": "string",
"enum": [
"children",
"descendants"
]
},
"document_category_id": {
"description": "Only documents in this category.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"query": {
"description": "Wildcard search on the document name.",
"type": "string"
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"name(asc)",
"name(desc)",
"updated_at(asc)",
"updated_at(desc)",
"created_at(asc)",
"created_at(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_notes(type, matter_id, contact_id, query, updated_since, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"Matter",
"Contact"
],
"description": "Matter notes or contact notes."
},
"matter_id": {
"description": "For type Matter: the matter's id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"contact_id": {
"description": "For type Contact: the contact's id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"query": {
"description": "Wildcard search across subject and detail.",
"type": "string"
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"date(asc)",
"date(desc)",
"updated_at(asc)",
"updated_at(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_custom_fields(parent_type, field_type, query, deleted, visible_and_required, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"parent_type": {
"description": "Only matter fields or only contact fields.",
"type": "string",
"enum": [
"matter",
"contact"
]
},
"field_type": {
"description": "Only fields of this type.",
"type": "string",
"enum": [
"checkbox",
"contact",
"currency",
"date",
"time",
"email",
"matter",
"numeric",
"picklist",
"text_area",
"text_line",
"url"
]
},
"query": {
"description": "Wildcard search on the field name.",
"type": "string"
},
"deleted": {
"description": "Only fields deleted for future use (true) or active ones (false).",
"type": "boolean"
},
"visible_and_required": {
"description": "Only fields that are visible and required.",
"type": "boolean"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"name(asc)",
"name(desc)",
"display_order(asc)",
"display_order(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢clio_list_communications(matter_id, contact_id, user_id, type, received_since, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"matter_id": {
"description": "Only this matter's communications.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"contact_id": {
"description": "Only communications with this contact.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"user_id": {
"description": "Only communications of this user.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"type": {
"description": "Only phone calls or only emails.",
"type": "string",
"enum": [
"PhoneCommunication",
"EmailCommunication"
]
},
"received_since": {
"description": "Only communications on or after this day (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"received_before": {
"description": "Only communications on or before this day (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"query": {
"description": "Wildcard search on subject and body.",
"type": "string"
},
"having_time_entries": {
"description": "Only communications with (true) or without (false) time entries.",
"type": "boolean"
},
"updated_since": {
"description": "Only records updated after this ISO-8601 timestamp, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"order": {
"description": "Sort order. Default id(asc).",
"type": "string",
"enum": [
"id(asc)",
"id(desc)",
"date(asc)",
"date(desc)",
"received_at(asc)",
"received_at(desc)"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
},
"limit": {
"description": "Records per page, 1-200 (default 20: email bodies can be long).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"page_token": {
"description": "next_page.page_token from the previous page. Omit for the first page.",
"type": "string"
},
"offset": {
"description": "next_page.offset from the previous page (used when a custom order is set; capped at 10,000 records).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_create_contact(type, first_name, last_name, middle_name, name, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"Person",
"Company"
],
"description": "Person or Company."
},
"first_name": {
"description": "Person: first name.",
"type": "string"
},
"last_name": {
"description": "Person: last name.",
"type": "string"
},
"middle_name": {
"description": "Person: middle name.",
"type": "string"
},
"name": {
"description": "Company: the company name. (For a person, prefer first_name/last_name.)",
"type": "string"
},
"title": {
"description": "Professional title, e.g. General Counsel.",
"type": "string"
},
"prefix": {
"description": "Personal title, e.g. Dr.",
"type": "string"
},
"email": {
"description": "An email address to add.",
"type": "string"
},
"email_type": {
"description": "Label for the email address (default Work).",
"type": "string",
"enum": [
"Work",
"Home",
"Other"
]
},
"phone": {
"description": "A phone number to add.",
"type": "string"
},
"phone_type": {
"description": "Label for the phone number (default Work).",
"type": "string",
"enum": [
"Work",
"Home",
"Mobile",
"Fax",
"Pager",
"Skype",
"Other"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_create_matter(client_id, description, status, open_date, practice_area_id, ...)
WRITE: Open a new matter for an existing client contact. Requires the client's contact id and a description. Clio: POST /matters.json.
入力スキーマ
{
"type": "object",
"properties": {
"client_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The client contact's numeric Clio id."
},
"description": {
"type": "string",
"description": "What the matter is, e.g. 'Smith v. Jones — lease dispute'."
},
"status": {
"description": "Initial status (Clio defaults to open).",
"type": "string",
"enum": [
"open",
"pending",
"closed"
]
},
"open_date": {
"description": "Open date (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"practice_area_id": {
"description": "Practice area id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"responsible_attorney_id": {
"description": "Responsible attorney (user id).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"originating_attorney_id": {
"description": "Originating attorney (user id).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"billable": {
"description": "Whether the matter is billable.",
"type": "boolean"
},
"location": {
"description": "Location of the matter.",
"type": "string"
},
"client_reference": {
"description": "The client's own reference for this matter.",
"type": "string"
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"client_id",
"description"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_create_time_entry(matter_id, date, hours, note, price, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"matter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The matter's numeric Clio id."
},
"date": {
"type": "string",
"description": "The day the work was done (ISO-8601 date, YYYY-MM-DD)."
},
"hours": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 24,
"description": "Time spent, in hours (decimal)."
},
"note": {
"description": "What the time was for — this appears on the bill.",
"type": "string"
},
"price": {
"description": "Hourly rate override. Omit to use Clio's rate hierarchy.",
"type": "number",
"minimum": 0
},
"user_id": {
"description": "The user who did the work (default: the token's user).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"activity_description_id": {
"description": "An activity description (billing code) id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"non_billable": {
"description": "Keep this entry off the bill.",
"type": "boolean"
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"matter_id",
"date",
"hours"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_create_task(name, description, assignee_id, assignee_type, matter_id, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Short name of the task."
},
"description": {
"type": "string",
"description": "Longer description of the task."
},
"assignee_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The user or contact to assign the task to."
},
"assignee_type": {
"type": "string",
"enum": [
"User",
"Contact"
],
"description": "Whether assignee_id is a User or a Contact."
},
"matter_id": {
"description": "The matter the task belongs to.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"due_at": {
"description": "Due date (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"priority": {
"description": "Priority.",
"type": "string",
"enum": [
"High",
"Normal",
"Low"
]
},
"status": {
"description": "Initial status (without advanced tasks, only pending or complete).",
"type": "string",
"enum": [
"pending",
"in_progress",
"in_review",
"complete",
"draft"
]
},
"permission": {
"description": "Visibility (Clio default public).",
"type": "string",
"enum": [
"public",
"private"
]
},
"notify_assignee": {
"description": "Notify the assignee on creation.",
"type": "boolean"
},
"statute_of_limitations": {
"description": "Mark as a statute-of-limitations task.",
"type": "boolean"
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"name",
"description",
"assignee_id",
"assignee_type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_update_task(task_id, status, due_at, priority, name, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The task's numeric Clio id."
},
"status": {
"description": "New status, e.g. complete.",
"type": "string",
"enum": [
"pending",
"in_progress",
"in_review",
"complete",
"draft"
]
},
"due_at": {
"description": "New due date (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"priority": {
"description": "New priority.",
"type": "string",
"enum": [
"High",
"Normal",
"Low"
]
},
"name": {
"description": "New name.",
"type": "string"
},
"description": {
"description": "New description.",
"type": "string"
},
"assignee_id": {
"description": "Reassign to this user or contact. Requires assignee_type.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"assignee_type": {
"description": "Whether assignee_id is a User or a Contact.",
"type": "string",
"enum": [
"User",
"Contact"
]
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_create_note(type, matter_id, contact_id, subject, detail, ...)
WRITE: Add a note to a matter (type Matter + matter_id) or to a contact (type Contact + contact_id). Clio: POST /notes.json.
入力スキーマ
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"Matter",
"Contact"
],
"description": "Attach to a matter or a contact."
},
"matter_id": {
"description": "For type Matter: the matter's id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"contact_id": {
"description": "For type Contact: the contact's id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"subject": {
"description": "Note subject.",
"type": "string"
},
"detail": {
"type": "string",
"description": "Note body (plain text)."
},
"date": {
"description": "Date of the note (ISO-8601 date, YYYY-MM-DD).",
"type": "string"
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"type",
"detail"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_log_communication(type, subject, body, received_at, matter_id, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"PhoneCommunication",
"EmailCommunication"
],
"description": "A phone call or an email."
},
"subject": {
"type": "string",
"minLength": 1,
"description": "Subject line, e.g. 'Call with client about settlement'."
},
"body": {
"type": "string",
"minLength": 1,
"description": "What was said or written (plain text)."
},
"received_at": {
"type": "string",
"description": "When it took place (ISO-8601 timestamp, e.g. 2026-10-02T09:30:00-07:00)."
},
"matter_id": {
"description": "The matter it belongs to.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"senders": {
"description": "Who it came from: firm users and/or contacts.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "User or contact id."
},
"type": {
"type": "string",
"enum": [
"User",
"Contact"
]
}
},
"required": [
"id",
"type"
]
}
},
"receivers": {
"description": "Who it went to: firm users and/or contacts.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "User or contact id."
},
"type": {
"type": "string",
"enum": [
"User",
"Contact"
]
}
},
"required": [
"id",
"type"
]
}
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"type",
"subject",
"body",
"received_at"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴clio_create_calendar_entry(calendar_id, summary, start_at, end_at, all_day, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"calendar_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The calendar's numeric Clio id."
},
"summary": {
"type": "string",
"description": "Short title of the event."
},
"start_at": {
"type": "string",
"description": "Start (ISO-8601 timestamp, e.g. 2026-10-02T09:30:00-07:00)."
},
"end_at": {
"type": "string",
"description": "End (ISO-8601 timestamp)."
},
"all_day": {
"description": "An all-day event.",
"type": "boolean"
},
"description": {
"description": "Longer description.",
"type": "string"
},
"location": {
"description": "Where it takes place.",
"type": "string"
},
"matter_id": {
"description": "The matter this event belongs to.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"send_email_notification": {
"description": "Email the attendees.",
"type": "boolean"
},
"fields": {
"description": "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.",
"type": "string",
"maxLength": 1000
}
},
"required": [
"calendar_id",
"summary",
"start_at",
"end_at"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス