lawmatics-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LAWMATICS_API_BASE | No | API base override (default https://api.lawmatics.com/v1). | |
| LAWMATICS_AUDIT_LOG | No | 0 = disable the local audit log. | |
| LAWMATICS_CLIENT_ID | No | Only for the one-time auth command. | |
| LAWMATICS_READ_ONLY | No | 1 = disable all write tools. | |
| LAWMATICS_ACCESS_TOKEN | Yes | Required. Your OAuth access token (never expires). | |
| LAWMATICS_CLIENT_SECRET | No | Only for the one-time auth command. | |
| LAWMATICS_REDIRECT_PORT | No | OAuth callback port (default 5678). | |
| LAWMATICS_AUDIT_LOG_PATH | No | Audit log location (default ~/.lawmatics-mcp/audit.log). | |
| LAWMATICS_EXPERIMENTAL_TOOLS | No | 1 = enable tools whose API shape Lawmatics hasn't fully documented. | |
| LAWMATICS_RATE_LIMIT_PER_MIN | No | Client-side throttle. Default 50. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list-mattersA | List matters (leads/prospects/clients) with optional filter, sort, and pagination. Matter status is 'pnc' (potential new client), 'hired', or 'lost'. Useful filters: status, practice_area_id, stage_id, source_id, sub_status_id, created_at, estimated_value_cents, actual_value_cents. For pipeline reporting, combine filter_by with fields and fetch_all, then aggregate the result. |
| get-matterA | Get full details for a single matter by ID, including custom fields and related records (contact, stage, practice area, tasks, notes, events, invoices as {id, type} references). |
| find-matterA | Find a single matter by exact email, phone, or name. Returns the best match or not_found. For fuzzy or multi-result searches use list-matters with filter_with: 'ilike' and % wildcards. |
| create-matterA | Create a new matter (lead). By default this also creates a contact from first/last name. Pass contact_id to attach an existing contact, or match_contact_by to reuse a contact matched on email/name/phone (falls back to creating one). Pass company_id or company_name for a company matter. Tags that don't exist yet are created automatically. |
| update-matterA | Update a matter. Only the provided fields change. Note: the public API has no documented way to move a matter between pipeline stages — sub_status_id is the closest control. |
| list-contactsA | List contacts (people) with optional filter, sort, and pagination. A contact is the person; the matter (prospect) is the case/lead attached to them. |
| get-contactA | Get full details for a single contact by ID, including custom fields. |
| find-contactA | Find a single contact by exact email, phone, or name. Returns the best match or not_found. For fuzzy searches use list-contacts with filter_with: 'ilike' and % wildcards. |
| create-contactA | Create a new contact (person) without a matter. To create a lead with a case, use create-matter. |
| update-contactC | Update a contact. Only the provided fields change. |
| list-companiesB | List companies with optional filter, sort, and pagination. |
| get-companyA | Get full details for a single company by ID. |
| find-companyA | Find a single company by exact email, phone, or name. Returns the best match or not_found. |
| list-pipelinesA | List the firm's pipelines with matter counts, estimated value, and stage references. Use with list-stages to build a full pipeline board view. |
| list-stagesA | List all pipeline stages. Each stage references its pipeline. To count matters per stage, use list-matters with filter_by: 'stage_id'. |
| list-practice-areasB | List the firm's practice areas (id, name, color). |
| list-sourcesA | List marketing sources (where leads come from: Google, referrals, etc.). For source ROI reporting, use list-matters with filter_by: 'source_id'. |
| list-sub-statusesA | List matter sub-statuses. Each belongs to a top-level status: pnc (potential new client), hired, or lost. Use the IDs with create-matter / update-matter. |
| list-usersA | List the firm's Lawmatics users (staff). Use the IDs for task/event assignment. |
| get-current-userA | Get the user the access token belongs to. Also the cheapest way to verify the connection works. |
| list-tasksA | List tasks with optional filter, sort, and pagination. Useful filters: done (true/false), due_date (with <, >= operators), priority, matter_id, contact_id. |
| create-taskA | Create a task, optionally attached to a matter/contact/company and assigned to users. |
| update-taskB | Update a task — e.g. mark it done, change the due date, or reassign it. |
| list-eventsA | List events (appointments) with optional filter, sort, and pagination. For a date range, filter_by: 'start_date' with filter_with: '>=' (one filter per request; sort by start_date and paginate for windows). |
| create-eventA | Create an event (appointment), optionally attached to a matter or contact and with user hosts. Set send_invites: false to avoid emailing attendees. |
| list-notesA | List notes with optional filter, sort, and pagination. To get one matter's notes, use filter_by: 'matter_id' with the matter ID as filter_on. |
| create-noteA | Create a note on a matter, contact, or company. |
| list-activitiesA | List timeline activities (audit trail of everything that happened: notes, emails, stage moves...). The Lawmatics API REQUIRES a filter here — pass filter_by ('matter_id' or 'contact_id') and filter_on. |
| list-tagsC | List the firm's tags. |
| attach-tagsA | Attach tags to a matter, contact, company, or task. Tags that don't exist yet are created. |
| detach-tagsB | Detach tags from a matter, contact, company, or task. |
| list-custom-fieldsA | List the firm's custom field definitions (id, name, field_type, owner type, list options). Read a record's custom field VALUES by adding 'custom_fields' to the fields parameter of get-matter / get-contact / list-matters. |
| list-formsA | List the firm's custom forms (intake forms). Form IDs are UUIDs. Use get-form to see a form's field structure. |
| get-formA | Get one custom form including its field layout (field IDs, labels, types, required flags). |
| get-form-entriesA | List submissions for a custom form, each with label/value pairs and the matter it created. |
| submit-formA | Submit an entry to a custom form — creates a matter/contact and fires the form's automations, exactly like a website submission. Standard keys: first_name, last_name, email, phone. Custom fields use the key form 'custom_field_' (IDs from get-form or list-custom-fields). utm_source/utm_campaign/utm_medium/utm_term are also accepted. |
| list-invoicesA | List invoices (read-only in the Lawmatics API). Amounts are integer cents. Useful filters: status, due_at, matter_id. Fields include amount_cents, amount_paid_cents, outstanding_amount_cents, due_at, pdf_url. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| auth-status |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oktopeak/lawmatics-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server