Lawcus MCP by usefulapi
io.usefulapi/lawcususefulapi.iostreamable-httpv1.0.0Scanned
Read Lawcus contacts, matters, leads, time and billing reports; create contacts and tasks.
27 tools: 1 do something that can't be undone, 8 change things and 18 only read.
- Reads private data · 5
- Reads text others write · 27
- Can send data out · 1
- 1 finding
Anlyon alternative
9 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.
27 tools
Can't be undone 1Claude Code: ask
lawcus_report_payments_collectedLawcus report (needs the Admin role): payments the firm collected in a period.Reads text others write1 finding
Why it is in this group
- The name "lawcus_report_payments_collected" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "lawcus_report_payments_collected" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "lawcus_report_payments_collected" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Lawcus report (needs the Admin role): payments the firm collected in a period.
Annotations the server declares
- title: Payments collected report
- readOnlyHint: true
- openWorldHint: true
Changes things 8Claude Code: ask
lawcus_create_contactWRITE: create a new contact in Lawcus (a person or a company).Reads text others writeCan send data outNo findings
Why it is in this group
- The name "lawcus_create_contact" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a destination (input.phone): what the tool writes goes there.
Description, as the server wrote it WRITE: create a new contact in Lawcus (a person or a company). It does not send anything to the contact. Person needs first_name and last_name; Company needs name. Check lawcus_list_contacts first to avoid duplicates.
Annotations the server declares
- title: Create a contact
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
lawcus_create_taskWRITE: create a task in Lawcus, optionally on a matter and assigned to team members.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_create_task" says "create": a word for a change.
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 in Lawcus, optionally on a matter and assigned to team members. Lawcus may email or SMS the assignees if reminders are set; no reminders are set by this tool.
Annotations the server declares
- title: Create a task
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
lawcus_report_accounts_receivableLawcus report (needs the Admin role): unpaid invoices by age (who owes the firm what).Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
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 Lawcus report (needs the Admin role): unpaid invoices by age (who owes the firm what).
Annotations the server declares
- title: Accounts receivable report
- readOnlyHint: true
- openWorldHint: true
lawcus_report_client_trustLawcus report (needs the Admin role): client trust (IOLTA) balances; zero balances hidden unless display_zero is true.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
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 Lawcus report (needs the Admin role): client trust (IOLTA) balances; zero balances hidden unless display_zero is true.
Annotations the server declares
- title: Client trust balance report
- readOnlyHint: true
- openWorldHint: true
lawcus_report_invoice_historyLawcus report (needs the Admin role): summary of issued invoices for a period.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
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 Lawcus report (needs the Admin role): summary of issued invoices for a period.
Annotations the server declares
- title: Invoice history report
- readOnlyHint: true
- openWorldHint: true
lawcus_report_matter_balanceLawcus report (needs the Admin role): balance summary of all matters, optionally trust balances only.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
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 Lawcus report (needs the Admin role): balance summary of all matters, optionally trust balances only.
Annotations the server declares
- title: Matter balance report
- readOnlyHint: true
- openWorldHint: true
lawcus_report_revenueLawcus report (needs the Admin role): revenue by attorney for a period.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
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 Lawcus report (needs the Admin role): revenue by attorney for a period.
Annotations the server declares
- title: Attorney revenue report
- readOnlyHint: true
- openWorldHint: true
lawcus_report_time_entriesLawcus report (needs the Admin role): time entries summarized per user for a period.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
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 Lawcus report (needs the Admin role): time entries summarized per user for a period.
Annotations the server declares
- title: Time entries summary report
- readOnlyHint: true
- openWorldHint: true
Only reads 18Show 18 read-only tools
lawcus_get_contactLawcus: one contact by UUID, with addresses, phones, emails and custom fields.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "lawcus_get_contact" says "get": a word for reading.
What it can reach
- private-dataThe name "lawcus_get_contact" says "get" and "contact": it reads contacts.
- private-dataThe description's first sentence says "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 "email": it reads inbound email, which other people can write.
Description, as the server wrote it Lawcus: one contact by UUID, with addresses, phones, emails and custom fields.
Annotations the server declares
- title: Get a contact
- readOnlyHint: true
- openWorldHint: true
lawcus_get_firmLawcus: the firm (team) details: name, address, currency, locale and phone numbers.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_get_firm" 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 Lawcus: the firm (team) details: name, address, currency, locale and phone numbers.
Annotations the server declares
- title: Get firm details
- readOnlyHint: true
- openWorldHint: true
lawcus_get_leadLawcus: one lead by UUID.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_get_lead" 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 Lawcus: one lead by UUID.
Annotations the server declares
- title: Get a lead
- readOnlyHint: true
- openWorldHint: true
lawcus_get_matterLawcus: one matter by UUID with its client, workflow stage, billing settings, balances and custom fields.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_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 Lawcus: one matter by UUID with its client, workflow stage, billing settings, balances and custom fields.
Annotations the server declares
- title: Get a matter
- readOnlyHint: true
- openWorldHint: true
lawcus_get_meLawcus: the user the API token belongs to (id, uuid, name, timezone, role such as OWNER/ADMIN/MEMBER).Reads text others writeNo findings
Why it is in this group
- The name "lawcus_get_me" 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 Lawcus: the user the API token belongs to (id, uuid, name, timezone, role such as OWNER/ADMIN/MEMBER).
Annotations the server declares
- title: Get my Lawcus user
- readOnlyHint: true
- openWorldHint: true
lawcus_list_billing_itemsLawcus: billable activity (time entries, expenses and flat fees) with payment details, filterable by date range, user, practice area, matter, client and invoiced state.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_list_billing_items" 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 Lawcus: billable activity (time entries, expenses and flat fees) with payment details, filterable by date range, user, practice area, matter, client and invoiced state. Also returns time totals for today/week/month/year.
Annotations the server declares
- title: List billing items
- readOnlyHint: true
- openWorldHint: true
lawcus_list_contactsLawcus: list contacts (people and companies; clients are contacts), filterable by name, email, type or update date.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "lawcus_list_contacts" says "list": a word for reading.
What it can reach
- private-dataThe name "lawcus_list_contacts" says "list" and "contact": it reads contacts.
- private-dataThe description's first sentence says "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 "email": it reads inbound email, which other people can write.
Description, as the server wrote it Lawcus: list contacts (people and companies; clients are contacts), filterable by name, email, type or update date. Paged with skip/take.
Annotations the server declares
- title: List contacts
- readOnlyHint: true
- openWorldHint: true
lawcus_list_expensesLawcus: expenses logged against matters.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_list_expenses" 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 Lawcus: expenses logged against matters. The API returns all expenses; filter here by matter and date range, reply cut to `limit`.
Annotations the server declares
- title: List expenses
- readOnlyHint: true
- openWorldHint: true
lawcus_list_interactionsLawcus: logged client interactions (emails, calls, secure messages) with subject, matter and contact.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "lawcus_list_interactions" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "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 "email": it reads inbound email, which other people can write.
Description, as the server wrote it Lawcus: logged client interactions (emails, calls, secure messages) with subject, matter and contact. Paged with skip/paginate.
Annotations the server declares
- title: List interactions
- readOnlyHint: true
- openWorldHint: true
lawcus_list_lead_sourcesLawcus: the firm's lead sources (Website, Referral, Google, ...).Reads text others writeNo findings
Why it is in this group
- The name "lawcus_list_lead_sources" 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.
- untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.
Description, as the server wrote it Lawcus: the firm's lead sources (Website, Referral, Google, ...). Ids go into lead and contact filters.
Annotations the server declares
- title: List lead sources
- readOnlyHint: true
- openWorldHint: true
lawcus_list_leadsLawcus: list leads (prospective matters) with client contact details and pipeline stage.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "lawcus_list_leads" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "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 Lawcus: list leads (prospective matters) with client contact details and pipeline stage. Paged with skip/take.
Annotations the server declares
- title: List leads
- readOnlyHint: true
- openWorldHint: true
lawcus_list_mattersLawcus: list matters (cases) with status, client, billing type, trust and retainer balances.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_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 Lawcus: list matters (cases) with status, client, billing type, trust and retainer balances. Filter by status, name, number, client or dates. Paged with skip/take; the reply also carries opened/closed counts.
Annotations the server declares
- title: List matters
- readOnlyHint: true
- openWorldHint: true
lawcus_list_tasksLawcus: list tasks, optionally by completion, assignee, matter or tag.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_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 Lawcus: list tasks, optionally by completion, assignee, matter or tag. The API returns the whole list; the reply is cut to `limit`.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
- openWorldHint: true
lawcus_list_team_membersLawcus: the people on the firm's team with id, uuid, name, role and hourly rate.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_list_team_members" 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 Lawcus: the people on the firm's team with id, uuid, name, role and hourly rate. Ids are used in matter, task and report filters.
Annotations the server declares
- title: List team members
- readOnlyHint: true
- openWorldHint: true
lawcus_list_time_entriesLawcus: time entries (hours worked, rate, total, matter, invoiced or not).Reads text others writeNo findings
Why it is in this group
- The name "lawcus_list_time_entries" 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 Lawcus: time entries (hours worked, rate, total, matter, invoiced or not). The API returns all entries; filter here by matter and date range, reply cut to `limit`.
Annotations the server declares
- title: List time entries
- readOnlyHint: true
- openWorldHint: true
lawcus_list_workflow_stagesLawcus: the stages of one workflow (pipeline).Reads text others writeNo findings
Why it is in this group
- The name "lawcus_list_workflow_stages" 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 Lawcus: the stages of one workflow (pipeline).
Annotations the server declares
- title: List workflow stages
- readOnlyHint: true
- openWorldHint: true
lawcus_list_workflowsLawcus: the workflows (matter and lead pipelines) with their ids.Reads text others writeNo findings
Why it is in this group
- The name "lawcus_list_workflows" 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 Lawcus: the workflows (matter and lead pipelines) with their ids.
Annotations the server declares
- title: List workflows
- readOnlyHint: true
- openWorldHint: true
lawcus_searchLawcus: global search across contacts, matters and leads for a keyword.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "lawcus_search" says "search": a word for reading.
What it can reach
- private-dataThe description's first sentence says "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 Lawcus: global search across contacts, matters and leads for a keyword.
Annotations the server declares
- title: Search Lawcus
- readOnlyHint: 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.
135 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.
- Reads private data5
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write27
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__lawcus__lawcus_create_contact"
]
}
}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.
The server marks "lawcus_report_payments_collected" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "lawcus_report_payments_collected" says "payment": a word that usually means money moves, which cannot be taken back.
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 lawcus https://lawcus.usefulapi.io/mcpclaude mcp add --transport http lawcus https://lawcus.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__lawcus__lawcus_get_me",
"mcp__lawcus__lawcus_get_firm",
"mcp__lawcus__lawcus_list_team_members",
"mcp__lawcus__lawcus_search",
"mcp__lawcus__lawcus_list_contacts",
"mcp__lawcus__lawcus_get_contact",
"mcp__lawcus__lawcus_list_matters",
"mcp__lawcus__lawcus_get_matter",
"mcp__lawcus__lawcus_list_leads",
"mcp__lawcus__lawcus_get_lead",
"mcp__lawcus__lawcus_list_lead_sources",
"mcp__lawcus__lawcus_list_workflows",
"mcp__lawcus__lawcus_list_workflow_stages",
"mcp__lawcus__lawcus_list_tasks",
"mcp__lawcus__lawcus_list_time_entries",
"mcp__lawcus__lawcus_list_expenses",
"mcp__lawcus__lawcus_list_billing_items",
"mcp__lawcus__lawcus_list_interactions"
],
"ask": [
"mcp__lawcus__lawcus_create_contact",
"mcp__lawcus__lawcus_create_task",
"mcp__lawcus__lawcus_report_accounts_receivable",
"mcp__lawcus__lawcus_report_matter_balance",
"mcp__lawcus__lawcus_report_revenue",
"mcp__lawcus__lawcus_report_time_entries",
"mcp__lawcus__lawcus_report_payments_collected",
"mcp__lawcus__lawcus_report_invoice_history",
"mcp__lawcus__lawcus_report_client_trust"
],
"deny": []
}
}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 lawcus. Review it before you use it.
Capability tags behind 27 rules
- mcp__lawcus__lawcus_get_me untrusted-input
- mcp__lawcus__lawcus_get_firm untrusted-input
- mcp__lawcus__lawcus_list_team_members untrusted-input
- mcp__lawcus__lawcus_search private-data, untrusted-input
- mcp__lawcus__lawcus_list_contacts private-data, untrusted-input
- mcp__lawcus__lawcus_get_contact private-data, untrusted-input
- mcp__lawcus__lawcus_create_contact untrusted-input, outbound
- mcp__lawcus__lawcus_list_matters untrusted-input
- mcp__lawcus__lawcus_get_matter untrusted-input
- mcp__lawcus__lawcus_list_leads private-data, untrusted-input
- mcp__lawcus__lawcus_get_lead untrusted-input
- mcp__lawcus__lawcus_list_lead_sources untrusted-input
- mcp__lawcus__lawcus_list_workflows untrusted-input
- mcp__lawcus__lawcus_list_workflow_stages untrusted-input
- mcp__lawcus__lawcus_list_tasks untrusted-input
- mcp__lawcus__lawcus_create_task untrusted-input
- mcp__lawcus__lawcus_list_time_entries untrusted-input
- mcp__lawcus__lawcus_list_expenses untrusted-input
- mcp__lawcus__lawcus_list_billing_items untrusted-input
- mcp__lawcus__lawcus_list_interactions private-data, untrusted-input
- mcp__lawcus__lawcus_report_accounts_receivable untrusted-input
- mcp__lawcus__lawcus_report_matter_balance untrusted-input
- mcp__lawcus__lawcus_report_revenue untrusted-input
- mcp__lawcus__lawcus_report_time_entries untrusted-input
- mcp__lawcus__lawcus_report_payments_collected untrusted-input
- mcp__lawcus__lawcus_report_invoice_history untrusted-input
- mcp__lawcus__lawcus_report_client_trust 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/lawcus/verify?hash=d69668ae3f7caff2c3f226f8b690d2430cbafa2a1219ae7f9cca313c11ed2299" | jq -e '.changed == false'Pinned hash d69668ae3f7c, from Oct 24, 2026, 13:20 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.usefulapi/lawcus/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.usefulapi/lawcus)Source: MCP Registry · repository. Synced Oct 24, 2026, 13:18 UTC.