Skip to main content
Glama

What to ask before searching for a lawyer (older name)

get_matching_requirements
Read-onlyIdempotent

Older name of get_search_filters, kept until 2026-12-15; use get_search_filters. Use first when someone wants a lawyer but the state or type of legal issue is unclear ("I need a lawyer", "help me with my landlord"). Returns the few filters still needed (state, type of issue, location, timing, budget) and what was understood, for the person to confirm. Does not answer the legal question and stores nothing. This is a listing service, not a lawyer referral service. No lawyer pays for placement or ranking of any kind.

Input Schema

NameRequiredDescriptionDefault
zipNo5-digit ZIP code, only if the user agreed to share it
cityNo
courtNo
stateNoUS state, two-letter code or name, e.g. CA or California
countyNo
urgencyNo
categoryNo
languagesNo
remote_okNoUser is willing to work with a lawyer remotely (phone or video) anywhere in the state
budget_maxNoTotal budget the user mentioned, in US dollars
budget_minNo
prioritiesNoOlder way to pick an order; used only when sort is not given (price: published_fees_first, speed: availability_reported_first, experience: years_licensed, proximity: nearest_office).
client_sideNoWhich side the user is on. ESQ Matching Engine has no record of which side lawyers usually represent, so results carry a warning to ask.
descriptionNoShort description of the legal need in the user's words. Used only to pick a practice area and to notice a cost concern (then free and low-cost options are shown); not stored.
matter_typeNo
communicationNo
deadline_dateNoA deadline the USER reported (hearing, filing, response). ESQ Matching Engine does not verify or calculate deadlines.
deadline_typeNo
practice_areaNoPractice area, e.g. 'Landlord-Tenant Law', 'Family Law', 'Criminal Law'
service_neededNo
consultation_byNoLatest date the user wants a first consultation
procedural_stageNo
subpractice_areaNo
language_requiredNoTrue if the language is essential, not just preferred
billing_preferenceNo
min_years_licensedNo
accessibility_needsNo
payment_plan_neededNo
exclude_attorney_idsNo
max_consultation_feeNo0 means the user wants a free first consultation
reduced_fee_eligibleNoUser may qualify for pro bono, legal aid or reduced fees
representation_start_byNoDate as YYYY-MM-DD
include_unconfirmed_practice_areaNoAlso include licensed lawyers whose practice areas are not on record (labeled clearly)

Output Schema

NameRequiredDescriptionDefault
noticeYes
missingYes
guidanceYes
can_searchYes
understoodYes
api_versionYes
urgency_noticeYes
preliminary_search_possibleYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / description / description
      Previous value: -"Short description of the legal need in the user's words. Used only to pick a practice area; not stored."New value: +"Short description of the legal need in the user's words. Used only to pick a practice area and to notice a cost concern (then free and low-cost options are shown); not stored."
  2. Changed1 schema field changed
    • changedInput schema / properties / priorities / description
      Previous value: -"What matters most, in order. Shifts ranking weights."New value: +"Older way to pick an order; used only when sort is not given (price: published_fees_first, speed: availability_reported_first, experience: years_licensed, proximity: nearest_office)."
  3. Changed14 schema fields changed
    • removedOutput schema / properties / api_version / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / api_version / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / can_search / type
      Removed value: -[
      -  "boolean",
      -  "null"
      -]
    • addedOutput schema / properties / can_search / x-observed-types
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / guidance / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / guidance / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / missing / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "anyOf": [
      -        {
      -          "additionalProperties": {},
      -          "properties": {
      -            "field": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "importance": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "question": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "why": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            }
      -          },
      -          "type": "object"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "field": {
      +              "x-observed-types": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "importance": {
      +              "x-observed-types": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "question": {
      +              "x-observed-types": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "why": {
      +              "x-observed-types": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / notice / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / notice / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / preliminary_search_possible / type
      Removed value: -[
      -  "boolean",
      -  "null"
      -]
    • addedOutput schema / properties / preliminary_search_possible / x-observed-types
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • changedOutput schema / properties / understood / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "location": {
      -        "type": "null"
      -      },
      -      "other_possible_areas": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "practice_area": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "practice_area_source": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "state": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "urgency": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "user_reported_deadline": {
      -        "type": "null"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "location": {
      +        "x-observed-types": "null"
      +      },
      +      "other_possible_areas": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "x-observed-types": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "practice_area": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "practice_area_source": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "state": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "urgency": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "user_reported_deadline": {
      +        "x-observed-types": "null"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / urgency_notice / type
      Removed value: -"null"
    • addedOutput schema / properties / urgency_notice / x-observed-types
      Added value: +"null"
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "api_version": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "can_search": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "guidance": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "missing": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "anyOf": [
      +              {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "field": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "importance": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "question": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "why": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "notice": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "preliminary_search_possible": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "understood": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "location": {
      +              "type": "null"
      +            },
      +            "other_possible_areas": {
      +              "anyOf": [
      +                {
      +                  "items": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "practice_area": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "practice_area_source": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "state": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "urgency": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "user_reported_deadline": {
      +              "type": "null"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "urgency_notice": {
      +      "type": "null"
      +    }
      +  },
      +  "required": [
      +    "api_version",
      +    "can_search",
      +    "preliminary_search_possible",
      +    "missing",
      +    "understood",
      +    "urgency_notice",
      +    "guidance",
      +    "notice"
      +  ],
      +  "type": "object"
      +}
  5. Changed2 schema fields changed
    • changedInput schema / properties / client_side / description
      Previous value: -"Which side the user is on. ESQ CoPilot has no record of which side lawyers usually represent, so results carry a warning to ask."New value: +"Which side the user is on. ESQ Matching Engine has no record of which side lawyers usually represent, so results carry a warning to ask."
    • changedInput schema / properties / deadline_date / description
      Previous value: -"A deadline the USER reported (hearing, filing, response). ESQ CoPilot does not verify or calculate deadlines."New value: +"A deadline the USER reported (hearing, filing, response). ESQ Matching Engine does not verify or calculate deadlines."
  6. Changed2 schema fields changed
    • changedInput schema / properties / client_side / description
      Previous value: -"Which side the user is on. ALCBar has no record of which side lawyers usually represent, so results carry a warning to ask."New value: +"Which side the user is on. ESQ CoPilot has no record of which side lawyers usually represent, so results carry a warning to ask."
    • changedInput schema / properties / deadline_date / description
      Previous value: -"A deadline the USER reported (hearing, filing, response). ALCBar does not verify or calculate deadlines."New value: +"A deadline the USER reported (hearing, filing, response). ESQ CoPilot does not verify or calculate deadlines."
  7. First observed

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower, and the description still adds meaningful context beyond them: it stores nothing, does not answer the legal question, and is a listing service rather than a referral service with no paid placement. That last point is unusual, non-obvious behavioral context an agent could not infer from any structured field. It stops short of saying how the 'few filters still needed' output should be surfaced to the user, but the output schema likely covers the shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is appropriately short and front-loads the deprecation notice and its sunset date, which is the most important fact. But the second sentence imports 'use first' guidance that contradicts the first sentence, and the trust boilerplate about paid placement, while useful, sits at the end where it dilutes the routing message.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A deprecation alias with an output schema needs, above all, an unambiguous 'do not call, call X instead' plus the removal date, and the definition provides the date but muddies the instruction. For a 33-parameter tool the description does almost nothing to make the inputs tractable, though since this is only a redirect stub that may be acceptable if the agent is meant to route away immediately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 33 parameters and only 45% schema description coverage, the description carries a heavy burden and meets very little of it. It mentions only that state, type of issue, location, timing and budget may be returned as missing, which touches a handful of the many inputs (state, category/practice_area, zip/city, urgency/deadline, budget) and says nothing about the large set of enums, tricky fields like priorities, client_side, or exclude_attorney_ids. The schema does not document the remaining half, so the gap is real rather than merely redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states specifically that this is the older name of get_search_filters and that it returns the few filters still needed for the person to confirm, which is a concrete verb and resource. However, it immediately follows the deprecation notice with 'Use first when someone wants a lawyer...', so an agent reading it cannot tell whether the tool is a deprecated alias to avoid or a preferred entry point, which obscures the purpose even as the identity is made explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the replacement (get_search_filters) and gives a concrete trigger condition with example utterances ('I need a lawyer', 'help me with my landlord'). But those two routing signals conflict: one says use get_search_filters, the other says use this tool first, and no rule reconciles them or tells the agent what happens after the sunset date of 2026-12-15 for calls already in flight.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources