lawruler-mcp
This server provides 15 tools to create, retrieve, and manage leads/intakes in the LawRuler Legal CRM.
Create Leads
create_lead— Create a lead with core fields (name, phone, email, case type, status, tags)create_lead_full— Create a lead with a full field set including address, DOB, contact preferences, business info, and campaign detailscreate_lead_obo— Create a lead with duplicate checking disabled (for on-behalf-of cases)
Retrieve Leads
get_lead— Retrieve a lead by LeadID, returning contact info, status, case type, and all stored fields
Update Status & Assignment
update_lead_status— Update the status (e.g., New Lead, Converted to Case, Signed Retainer Contract)update_lead_assignee— Assign a lead to a staff memberupdate_lead_owner— Set the lead owner (attorney or partner responsible)update_lead_case_type— Change the case type (e.g., Auto Accident, Divorce, Workers Compensation)
Update Content
update_lead_summary— Update the case description/summaryadd_conversation_note— Add a conversation note or chat transcriptadd_tags_to_lead— Add one or more comma-separated tagsupdate_lead_language— Set the preferred language (e.g., Spanish, French)
Update Contact Information
update_lead_contact_info— Update phone numbers, email, and address fields
Custom Fields
set_custom_field— Set a single custom field by its API parameter nameupdate_lead_fields— Bulk update multiple standard and custom fields at once via JSON
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lawruler-mcpcreate a new lead for a personal injury case"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
lawruler-mcp
MCP server for LawRuler Legal CRM. Provides 15 tools for lead/intake creation, retrieval, and management.
Setup
pip install lawruler-mcp
lawruler-mcp-setup # prompts for portal URL + API key
lawruler-mcp-verify # test connectionRelated MCP server: LACRM MCP Server
Claude Desktop Config
{
"mcpServers": {
"lawruler": {
"command": "lawruler-mcp"
}
}
}Credentials
The setup wizard prompts for your portal URL (LAWRULER_BASE_URL) and API key
(LAWRULER_API_KEY). Find your API key in LawRuler:
Setup → 3rd Party Integrations.
By default both values are stored in your operating system's native secret store
via the cross-platform keyring library:
OS | Backend |
macOS | Keychain |
Windows | Credential Manager |
Linux | Secret Service (GNOME Keyring / KWallet) |
Secrets are saved under the service name lawruler-mcp. Nothing is written to
disk in clear text.
File fallback. On a host with no keyring backend (e.g. a headless Linux box
without Secret Service), or if you set LAWRULER_MCP_USE_KEYRING=0, the values
fall back to a ~/.lawruler-mcp/.env file with 0600 permissions:
LAWRULER_BASE_URL=https://yourfirm.lawruler.com
LAWRULER_API_KEY=your_api_keyRead order. Values resolve in the order OS keyring → process environment →
.env file. So a rotated key in the keyring always wins, and a value exported in
your shell overrides the file fallback without touching the keyring.
Pluggable backend. keyring lets you point at any secret store. For example,
install keyrings.cryptfile for
an encrypted file backend, or a cloud backend, then select it with the standard
PYTHON_KEYRING_BACKEND environment variable or a keyringrc.cfg. See the
keyring configuration docs.
Tools (15)
Create Leads
create_lead— core fields (name, phone, email, case type)create_lead_full— all fields including address, DOB, contact preferencescreate_lead_obo— on-behalf-of (skips duplicate check)
Retrieve
get_lead— retrieve lead by LeadID
Update Status & Assignment
update_lead_status,update_lead_assignee,update_lead_owner,update_lead_case_type
Update Content
update_lead_summary,add_conversation_note,add_tags_to_lead,update_lead_language
Update Contact Info
update_lead_contact_info— phone, email, address
Custom Fields
set_custom_field— single custom field by API nameupdate_lead_fields— bulk update multiple fields + custom fields via JSON
Available Tools
15 toolsadd_conversation_noteB
Add a conversation note or chat transcript to a lead.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| conversation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action without disclosing behavioral traits like whether the note is appended or overwrites, error handling when lead_id is invalid, or any limits on conversation content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded with action. However, it could be more structured by adding a brief note on parameter expectations or behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with 2 required parameters and a clear output schema, so basic purpose is covered. But missing context about idempotency, effect on existing notes, or whether it creates a new note or updates existing one leaves gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so description should compensate for parameter meaning. It does not describe 'lead_id' or 'conversation' beyond their names, missing an opportunity to clarify expected format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (Add), resource (conversation note or chat transcript), and target (lead). Distinguishes from sibling tools like add_tags_to_lead or create_lead because it specifically adds a note/transcript.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., update_lead_summary or other lead update tools). Does not specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tags_to_leadA
Add tags to a lead. For multiple tags, separate with commas: 'New, Level 1, High Value'.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| tags | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It fails to disclose critical behavior like whether tags append or overwrite, or any authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences, action first, includes an example. No wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool, but lacks behavioral context. Output schema exists, so return values are covered. Gaps in transparency prevent a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds value by explaining the comma-separated format for 'tags', but does not clarify 'lead_id' or other semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states action ('Add tags to a lead') and resource, with a concrete example of tag format. Distinguishes from siblings as no other tool targets tag addition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for adding tags and provides format guidance, but does not specify when to use vs alternatives or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_leadB
Create a new lead/intake. FirstName+LastName or FullName required. CellPhone and Email strongly recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | No | ||
| last_name | No | ||
| full_name | No | ||
| cell_phone | No | ||
| No | |||
| case_type | No | ||
| lead_provider | No | ||
| status | No | ||
| summary | No | ||
| lead_assignee | No | ||
| lead_owner | No | ||
| hear | No | ||
| tags | No | ||
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool creates a lead, which is a clear behavioral indication. However, it does not disclose potential side effects, idempotency, or error scenarios. It is minimally adequate but not rich in detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with the primary purpose stated first. Every sentence adds value without redundancy. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters, zero schema descriptions, and no annotations, the description leaves many aspects uncovered. An output schema exists, so return values are not required, but the description fails to guide on tool selection or explain most parameters. The tool is missing essential context for a full understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 14 parameters with zero description coverage (0%). The description only adds meaning for name fields and contact fields, covering only about 14% of parameters. Other fields like case_type, lead_provider, status, etc. are left unexplained. The description does not compensate nearly enough for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a new lead/intake.' This is a specific verb-resource pair. However, it does not distinguish between sibling tools like create_lead_full and create_lead_obo, so it scores a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some parameter guidelines ('FirstName+LastName or FullName required', 'CellPhone and Email strongly recommended') but gives no indication of when to use this tool versus alternatives or when not to use it. No explicit usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lead_fullC
Create a new lead/intake with full field set including address, DOB, and contact preferences.
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | No | ||
| last_name | No | ||
| full_name | No | ||
| cell_phone | No | ||
| No | |||
| email2 | No | ||
| case_type | No | ||
| lead_provider | No | ||
| status | No | ||
| summary | No | ||
| address1 | No | ||
| address2 | No | ||
| city | No | ||
| state | No | ||
| zip_code | No | ||
| county | No | ||
| home_phone | No | ||
| business_phone | No | ||
| business_name | No | ||
| dob | No | ||
| lead_assignee | No | ||
| lead_owner | No | ||
| hear | No | ||
| tags | No | ||
| contact_preference | No | ||
| when_to_contact | No | ||
| case_role | No | ||
| contact_type | No | ||
| campaign_name | No | ||
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It mentions creation but omits behavioral details like side effects, authentication requirements, idempotency, or return value. Minimal information beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, but too short relative to tool complexity. Could be structured to provide more value without adding fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (unknown details), the description is insufficient for a tool with 30 parameters and no annotations. It does not cover parameter constraints, defaults, or relation to sibling tools. Completeness is poor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It only lists categories (address, DOB, contact preferences) without explaining individual parameter meaning, format, or constraints. For 30 parameters, this is severely lacking.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'lead/intake' with specific fields (address, DOB, contact preferences), distinguishing it from simpler siblings like 'create_lead' and 'create_lead_obo'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., when to use create_lead_full instead of create_lead or update_lead_fields). No exclusion criteria or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lead_oboA
Create a lead with duplicate checking disabled (for On-Behalf-Of cases where the same contact has multiple matters).
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | No | ||
| last_name | No | ||
| full_name | No | ||
| cell_phone | No | ||
| No | |||
| case_type | No | ||
| lead_provider | No | ||
| summary | No | ||
| lead_assignee | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key behavioral trait of disabling duplicate checking, which is critical. However, it does not mention other potential behaviors (e.g., creation always succeeds, possible errors, or what happens with existing duplicates).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 16 words that front-loads the key differentiator 'duplicate checking disabled' and the use case. Every word is necessary and contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters with no descriptions and no usage guidance beyond the purpose, the description is incomplete for an agent to correctly invoke the tool. The output schema exists but does not mitigate the lack of parameter semantics. The description does not explain how to fill parameters or what to expect after creation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description provides no additional meaning for any of the 9 parameters. The parameter names are somewhat self-explanatory, but terms like 'lead_provider', 'summary', and 'case_type' could benefit from clarification. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'lead', and explicitly differentiates this tool by specifying 'duplicate checking disabled' and the use case 'On-Behalf-Of cases'. This distinguishes it from sibling tools like 'create_lead' and 'create_lead_full'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use this tool: 'for On-Behalf-Of cases where the same contact has multiple matters'. It implies that duplicate checking is a distinguishing factor, but does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leadA
Retrieve a lead/intake by LeadID. Returns contact info, status, case type, and all stored fields.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses what data is returned (contact info, status, case type, all stored fields). It does not mention side effects, but being a read operation, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single ID parameter) and the existence of an output schema, the description adequately covers the input and high-level output. It mentions all key return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (lead_id) with no description. The description clarifies that it retrieves by LeadID and explains what is returned, adding meaning beyond the schema. Coverage is 0%, so description compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieve' and the resource 'lead/intake' by LeadID, and mentions what is returned. It distinguishes from sibling tools that are all creation/update operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a LeadID and need lead details, but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusions or context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_custom_fieldA
Set a custom field on a lead. field_name is the API parameter name (e.g., custom2413). Custom field names are found in the LawRuler Intake Form Builder.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| field_name | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action (set) without mentioning whether values are overwritten, required permissions, side effects, or response details. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, succinct and front-loaded. Every sentence provides necessary information without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and one parameter but omits details on lead_id and value. It does not reference sibling tools or explain the output, leaving gaps for an agent to fully understand usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should add meaning. It explains field_name (API parameter name and where to find it) but does not describe lead_id or value. This partially compensates but leaves two parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set a custom field on a lead' which specifies the verb and resource. It distinguishes from sibling tools like 'update_lead_fields' by focusing on custom fields, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that field_name is the API parameter name (e.g., custom2413) and directs users to the LawRuler Intake Form Builder for finding custom field names. It does not explicitly state when to use this tool versus alternatives, but the context implies it is for custom fields only, which is adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_assigneeC
Assign a lead/intake to a staff member (LeadAssignee — the user managing the lead).
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| assignee | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states the action (assign) without disclosing any behavioral traits such as required permissions, side effects, idempotency, or error handling. This is insufficient for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded and contains no fluff. However, it may be too brief given the lack of other documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too minimal to be complete. Given the presence of 14 sibling tools and the need to understand when to use this specific assignee update, the description fails to provide sufficient context about the output, behavior, or integration with other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should explain the meaning and format of the two parameters. It only hints that 'assignee' is a staff member, but provides no details on what lead_id refers to or the expected format of assignee (e.g., email, username). This adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (assign) and the resource (lead/intake), with a parenthetical clarifying that the assignee is the user managing the lead. This distinguishes it from other update tools like update_lead_owner, but does not explicitly differentiate from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like update_lead_owner or other assignee-related tools. The description does not mention context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_case_typeB
Update the case type of a lead/intake (e.g., Auto Accident, Workers Compensation, Divorce).
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| case_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully cover behavioral traits. It only states 'update' implying mutation, but does not disclose if the update is idempotent, validates the case type, or affects other fields. No mention of permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is clear and efficient. Front-loads the action and resource. Could benefit from a brief usage note, but no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two simple parameters and an output schema, the description covers the core purpose. However, it lacks sufficient detail for an agent to determine when to invoke this tool over siblings, and it omits any operational constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. The description adds meaning by explaining that 'case_type' refers to a legal case type with examples. However, it doesn't specify allowed values or format for the string, leaving ambiguity. Provides partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (update) and resource (case type of a lead/intake). Provides concrete examples like 'Auto Accident, Workers Compensation, Divorce', which disambiguates the purpose from sibling tools such as update_lead_status or update_lead_fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like update_lead_fields or create_lead. Lacks context about prerequisites, such as whether a lead must exist or if case type is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_contact_infoB
Update contact information fields on a lead (phone, email, address).
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| cell_phone | No | ||
| home_phone | No | ||
| No | |||
| address1 | No | ||
| city | No | ||
| state | No | ||
| zip_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits, but it only states the update action without mentioning permissions, side effects, or whether partial updates are supported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words, but could be slightly expanded to include critical usage details without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and a missing output schema (though context says it exists), the description lacks sufficient detail about behavior, validation, and potential errors, making it incomplete for complex usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 0% and there are 8 parameters, the description adds some meaning by grouping fields (phone, email, address), but does not detail individual parameters or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (update), resource (lead), and specific fields (phone, email, address), clearly distinguishing it from sibling tools that update other aspects of a lead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for updating contact info, but provides no explicit guidance on when to use it over alternatives like update_lead_fields or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_fieldsC
Update multiple fields on an existing lead at once. custom_fields_json accepts a JSON object of field_name:value pairs for custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| status | No | ||
| case_type | No | ||
| lead_provider | No | ||
| hear | No | ||
| tags | No | ||
| summary | No | ||
| lead_assignee | No | ||
| lead_owner | No | ||
| contact_preference | No | ||
| when_to_contact | No | ||
| campaign_name | No | ||
| language | No | ||
| custom_fields_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only implies mutation via 'update'. It fails to disclose idempotency, permission requirements, or what happens if some fields fail. The description should provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, front-loading the core action. However, it lacks structured details like parameter grouping or format specifications, which would improve usability without much length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters and no schema descriptions, the description is insufficient for correct tool use. It does not explain standard fields or provide examples for custom_fields_json, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains custom_fields_json as 'a JSON object of field_name:value pairs', but leaves 13 other parameters (e.g., status, case_type) unexplained, offering minimal added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update multiple fields on an existing lead at once', specifying the action and resource. However, it does not explicitly differentiate from sibling tools that update single fields, relying on the implicit 'at once' to suggest batching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus single-field update siblings like update_lead_status or update_lead_owner. The description does not indicate preferred scenarios or criteria for batching updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_languageB
Update the preferred language for a lead (e.g., Spanish, French, Mandarin).
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| language | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose behavioral traits such as whether the update is idempotent, requires permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, efficient sentence that conveys the core function without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists but not described. For a simple update tool, this is acceptable but could mention return type or confirmation. No error handling notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but the description adds meaning by stating 'preferred language' and providing examples. However, lead_id is not elaborated, and language format is unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and the resource 'preferred language for a lead', with examples. It distinguishes itself from sibling tools like update_lead_status or update_lead_owner.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like set_custom_field or update_lead_fields. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_ownerB
Set the owner of a lead/intake (LeadOwner — the attorney or partner who owns the matter).
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It only states 'Set the owner' without mentioning if it overwrites, requires permissions, triggers notifications, or any side effects. Insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no unnecessary words. Efficient but could benefit from slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 2 parameters, no enums, and no annotations, the description is adequate for basic understanding but lacks depth. Output schema exists but is not referenced. Missing behavioral and parameter details reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only clarifies that owner is a person. It does not explain lead_id or provide constraints/formats for either parameter. The description minimally compensates for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the owner of a lead/intake and defines owner as the attorney/partner. Verb and resource are specific, and it distinguishes from siblings like update_lead_assignee by specifying owner field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as update_lead_assignee. No context on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_statusC
Update the status of a lead/intake. Common values: New Lead, Emailed Intake Questionnaire, Sent Retainer Contract, Signed Retainer Contract, Converted to Case, Approved.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states a write operation without mentioning side effects, auth requirements, or error conditions. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Purpose and common values are presented efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values not needed. Missing explanation of lead_id parameter. Two params, both required, but description only covers status values. Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0% (no description of parameters in schema). Description does not explain 'lead_id' beyond the tool's purpose; only 'status' gets common values. Insufficient added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Update the status of a lead/intake.' Lists common values, which helps. However, does not distinguish from sibling tools like update_lead_fields or update_lead_case_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. No when-not-to-use instructions. The common values list implies typical usage but lacks context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lead_summaryC
Update the case description/summary for a lead.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | ||
| summary | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description should disclose behavioral traits such as side effects, permission needs, or idempotency. It only states the action without elaboration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a single sentence to convey the purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not provide enough context about the tool's behavior, such as response format or prerequisites, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add meaningful information about the parameters beyond what the schema provides. It mentions 'description/summary' but does not clarify lead_id or provide format constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Update) and the resource (case description/summary for a lead), differentiating it from sibling tools like update_lead_assignee or update_lead_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any usage guidelines or context about when to use this tool versus its siblings, such as update_lead_fields or update_lead_case_type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v0.1.1- First observed
add_conversation_note - First observed
add_tags_to_lead - First observed
create_lead - First observed
create_lead_full - First observed
create_lead_obo - First observed
get_lead - First observed
set_custom_field - First observed
update_lead_assignee - First observed
update_lead_case_type - First observed
update_lead_contact_info - First observed
update_lead_fields - First observed
update_lead_language - First observed
update_lead_owner - First observed
update_lead_status - First observed
update_lead_summary
TDQS
Scored across 15 tools
Each tool targets a distinct aspect of leads (creation, retrieval, field updates, tags, notes). The multiple update tools are all specific to different fields, preventing any ambiguity.
All tools follow a consistent verb_noun pattern (create_lead*, get_lead, set_custom_field, update_lead_*, add_*), making them predictable and easy to navigate.
With 15 tools covering creation, retrieval, and fine-grained updates, the count is well-suited to the domain of legal lead management without being excessive.
The set covers all major CRUD operations except delete, which is often omitted in practice. Adding a search/list tool would enhance completeness, but the current surface is robust.
Maintenance
Related MCP Connectors
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA deterministic MCP server for legal intake triage that provides practice-area lookup, conflict screening, matter validation, follow-up drafting, and triage logging with a hard conflicts gate.Apache 2.0
- AlicenseAqualityBmaintenanceA comprehensive MCP server for Less Annoying CRM providing 87 tools for contacts, pipelines, tasks, events, notes, emails, files, and more.88231MIT
- AlicenseBqualityBmaintenanceMCP server for PracticePanther legal practice management software. Enables reading and creating matters, contacts, time entries, invoices, and more via natural language.26MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes Filevine matter management and Lead Docket intake APIs as natural-language-callable tools, enabling legal teams to query, update, and create projects and leads directly from Claude.Apache 2.0