North End Law
Server Details
Data processing agreement, $350 flat fee, reviewed and released by a lawyer.
- Status
- Healthy
- Uptime
- 100.0% over 26 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 11 tools
Most tools target distinct steps of the intake lifecycle, but two pairs overlap heavily: get_requirements('dpa') and get_dpa_requirements are functionally identical, as are submit_facts and submit_dpa_facts. The descriptions do hint at the generic-versus-specialized split, so an agent can recover, but the boundaries are not crisp and 4 of 11 tools sit in redundant pairs.
Every tool follows a clean snake_case verb_noun pattern (get_*, submit_*, list_services, open_matter, request_consultation). No camelCase mixing or vague unqualified verbs; the action is always the first token.
Eleven tools is a sensible scope for a fixed-scope legal intake flow covering listing, opening, requirements, submission, status, payment, terms and delivery. The only slight excess is the duplicated DPA-specific variants, which means two tools do not fully earn their place.
The lifecycle is largely covered end to end: discovery, matter creation, requirements, fact submission, status, terms, payment link, consultation fallback and deliverable retrieval. Minor gaps remain — no way to cancel or withdraw a matter, no separate signature/acceptance step, and the final executed PDF/Word is only reachable off-server.
Available Tools
11 toolsget_deliverableFetch the agreementARead-onlyInspect
Once a lawyer has released it: the agreement in Markdown with placeholders ([Client], [Customer] or [Vendor], and blank addresses and signatures), so you can explain it to the user. The final agreement with the parties' details, in PDF and Word, is only on the private page and in the e-mail to the person who signs.
| Name | Required | Description | Default |
|---|---|---|---|
| matterId | Yes | The matter id returned by open_matter. | |
| matterToken | Yes | The matter token returned once by open_matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, and the description adds genuinely new behavioral context: the result is only meaningful after a lawyer releases it, it contains placeholders rather than real party data, and the finished PDF/Word document is available only on the private page and signing e-mail. That tells the agent what it cannot retrieve here, which is valuable. It stops short of 5 because it doesn't say what happens if the agreement isn't yet released.
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, with the availability precondition front-loaded before the content description and the PDF/Word contrast. Slightly unusual colon construction in the first sentence, but no wasted text.
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?
There is no output schema, and the description compensates by characterizing the returned format (Markdown, placeholder tokens, blank addresses/signatures). Combined with readOnlyHint, an agent knows enough to call it and interpret the result; only the not-yet-released failure behavior is unaddressed.
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 100%, and both matterId and matterToken are documented as coming from open_matter, so the schema carries the weight. The description adds no meaning about parameters beyond that, making the baseline 3 appropriate.
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 concretely states what comes back: the agreement in Markdown with placeholders and blank signatures, and contrasts it with the final PDF/Word version that lives elsewhere. The verb is only implicit (the title supplies 'Fetch'), and it does not explicitly distinguish itself from siblings like get_engagement_terms or get_requirements, so it falls short of 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?
It gives one real precondition — 'Once a lawyer has released it' — and a purpose ('so you can explain it to the user'), which implies when to call it. However, it never names an alternative or an exclusion against the other get_* tools, leaving routing largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dpa_requirementsFacts needed for a DPAARead-onlyInspect
The facts the data processing agreement needs, as a JSON Schema. Optionally narrowed to one governing law and the client's role. Do not send the facts until the engagement has begun.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | The client's role. | |
| governingLaw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description adds a real workflow precondition about not submitting facts before the engagement begins, which is context the annotation cannot carry. It doesn't describe what the returned schema looks like or whether narrowing alters its shape, so it is useful but not complete.
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?
Three short sentences: identity of the resource first, optional narrowing second, the precondition last. No filler and nothing buried.
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?
For a two-optional-enum read tool with no output schema, the description covers purpose, narrowing behavior, and a key precondition, and it names the output format as a JSON Schema. Only the default (un-narrowed) result and the schema's shape remain unstated.
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 50% schema coverage, the description compensates by explaining the effect of both parameters – that governing law and role optionally narrow the result set – which the schema's enum lists alone do not convey. It still doesn't clarify the default behavior when both are omitted.
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?
States a specific verb+resource ('the facts the data processing agreement needs') and the return type ('as a JSON Schema'), which distinguishes it from the submit_* siblings that instead send those facts. An agent can tell it apart from get_requirements and submit_dpa_facts without opening a schema.
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?
Explains the optional narrowing by governing law and role, and adds an ordering constraint ('Do not send the facts until the engagement has begun') that implies a separate submission step. It stops short of naming submit_dpa_facts as the alternative, so the sibling routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_engagement_termsEngagement termsARead-onlyInspect
The full limited-scope engagement text for a service, with its version and SHA-256 hash, and whether it is open for acceptance.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | The service: "dpa" (data processing agreement) or "baa" (business associate agreement). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description earns credit by disclosing what the payload contains (version, SHA-256 hash, acceptance flag). It stops short of covering failure modes, e.g. what happens when the terms are not open for acceptance or unavailable.
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?
A single sentence, front-loaded with the resource, enumerating the return contents without filler. Nothing can be trimmed without losing 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?
With no output schema, the description is the only source of return info and it does describe the payload components adequately for a read-only getter. It is short of fully complete in omitting behavior when the document is missing or not yet available for acceptance.
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 100% and the single 'tool' parameter is enum-documented as dpa/baa in the schema itself. The description's phrase 'for a service' loosely frames the parameter but adds no new semantics beyond the schema, so the baseline 3 applies.
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 names the resource precisely (the full limited-scope engagement text for a service) and lists the exact payload components: version, SHA-256 hash, and acceptance status. However, it uses 'engagement terms' and 'service' while the parameter enum is dpa/baa and the sibling get_dpa_requirements covers adjacent ground, so the agent gets clear purpose but not a clean separation 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?
There is no when-to-use guidance at all, and no explicit mention of the closely related sibling get_dpa_requirements, which an agent could easily confuse with this tool. The only usage signal is implied by the getter framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_matter_statusMatter statusCRead-onlyInspect
Where the matter stands, the next human step, the target in business hours, and any question from the lawyer.
| Name | Required | Description | Default |
|---|---|---|---|
| matterId | Yes | The matter id returned by open_matter. | |
| matterToken | Yes | The matter token returned once by open_matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description isn't carrying the safety burden. What it does add is the shape of the response — status narrative, next human step, business-hour target, lawyer question — which has value because no output schema exists, but it says nothing about freshness, polling behavior, or what happens with an invalid/expired token.
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?
A single compact sentence-fragment with no filler, front-loading the most important element (where the matter stands). It is tight, though its telegraphic phrasing ("the target in business hours") costs clarity rather than words.
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 no output schema, the description is the only source of return-value information, and it nominally covers the four things returned. But it is too terse to fully serve that role: "the target in business hours" is ambiguous (target date? SLA?), and nothing is said about error handling or whether the status changes over time.
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 100% and both parameters are documented as coming from open_matter, so the schema does the work. The description adds no information about matterId or matterToken (e.g., token being single-use), so baseline 3 applies.
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 name and title say "matter status," but the description itself never states a verb or that it retrieves anything — it reads as a bare list of returned fields ("Where the matter stands, the next human step, the target..."). An agent can infer it reads a matter's status, but the purpose is only implied and no sibling is distinguished.
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?
There is no indication of when to call this versus alternatives such as get_deliverable or get_requirements, nor any prerequisite (e.g., that a matter must first be opened). The mention of the lawyer's question hints at a polling/check-in use case but never states it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_linkPayment linkCInspect
The firm's own card payment page for $350, available once the named person has accepted the engagement. The fee is charged in full at checkout and refunded in full if the firm declines the matter or does not deliver. The link is also e-mailed to the named person.
| Name | Required | Description | Default |
|---|---|---|---|
| matterId | Yes | The matter id returned by open_matter. | |
| matterToken | Yes | The matter token returned once by open_matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful traits: the $350 full charge at checkout, the full-refund conditions, the acceptance precondition, and that the link is e-mailed to the named person. It omits the most decision-critical behavior for an unannotated tool — whether invoking it is a read-only retrieval or itself triggers a charge, and whether the link expires or is reusable.
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?
Three sentences with no gross padding, but the opening leads with product and pricing context instead of the tool's action, and the final sentence about e-mail delivery is secondary information placed where the return value should be. The structure is serviceable but not front-loaded on what the agent must decide.
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?
For a two-parameter, fully documented, unannotated tool, the description should settle the read-vs-charge question and indicate the return value (a URL). Neither is addressed, leaving the agent unable to predict the effect of calling or what it receives, which is the main gap this description needed to close.
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 100%, so both matterId and matterToken are already documented as coming from open_matter. The description adds no parameter-level meaning and its reference to 'the named person' does not map to either parameter, so the schema baseline of 3 applies.
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 identifies the resource (the firm's card payment page for $350) and its preconditions, but never states the action the tool performs — nothing says it returns or generates a link URL. The 'get_' name and the described resource make the intent inferable, but the purpose is left implicit rather than stated as a verb+resource.
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?
It gives a real precondition — usable only once the named person has accepted the engagement — which narrows when to call it. However, it names no alternatives and no exclusions, so the agent gets implied rather than explicit guidance on when this beats talking to the user directly or checking get_matter_status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_requirementsFacts needed for a serviceARead-onlyInspect
The facts a service needs, as a JSON Schema: service "dpa" (data processing agreement) or "baa" (business associate agreement). For a DPA, optionally narrowed to one governing law and the client's role. Do not send the facts until the engagement has begun.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | The client's role. | |
| service | Yes | The service: "dpa" (data processing agreement) or "baa" (business associate agreement). | |
| governingLaw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with a read/fetch operation, so the safety profile is already covered by annotations. The description adds real value by disclosing the response shape (a JSON Schema) and a pre-condition tied to engagement start, but says nothing about whether the schema varies by governing law or how large/complex the output is.
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?
Three short sentences with the resource and return format front-loaded, followed by the narrowing behavior and the prerequisite. Slightly awkward opening clause but no filler.
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 only one required parameter, no nested objects, and no output schema, the description covers what an agent needs: what comes back (JSON Schema), the two service variants, optional narrowing, and the precondition on submitting. The main gap is the unaddressed relationship to get_dpa_requirements.
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 67% and the description compensates by explaining conditional applicability: role and governingLaw only matter for a DPA and "narrow" the result. That conditional scoping is not expressed in the schema, which just lists them as flat optional properties. It does not list the governingLaw enum values (CALIFORNIA/SPAIN), but the schema does.
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 names the resource precisely (the facts a service needs) and states the return format is a JSON Schema, plus enumerates the two service variants. It does not, however, differentiate itself from the very similar sibling get_dpa_requirements, leaving ambiguity about which to call.
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?
It gives one useful workflow constraint ("Do not send the facts until the engagement has begun"), which implicitly points at submit_dpa_facts/submit_facts. But it never says when to use this general tool versus the DPA-specific sibling, and the sequencing rule is about a different tool rather than about selecting this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesList the firm's services for agentsBRead-onlyInspect
What North End Law offers through this server, at what fixed price, under which laws, and who is responsible. Responsible lawyer: Sergio Maldonado Elvira, Founder & Principal Attorney, North End Law Corporation, 447 Sutter St. Suite 506 - 1349, San Francisco, California 94108, United States.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered by structured data. The description adds no behavioral context beyond that — no auth requirements, pagination, or freshness guarantees. The second sentence is contact metadata about the responsible lawyer, not behavior of the tool, so it does not raise this score.
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 first sentence is well front-loaded and compact. The second sentence is a full postal address for the responsible attorney, which is unlikely to help an agent select or invoke this tool and dilutes the description's signal.
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?
For a zero-parameter, read-only catalog tool with no output schema, the description should at least characterize the return shape (a list of services with price and jurisdiction fields). It gestures at this via 'at what fixed price, under which laws,' but never states the structure of the response, leaving a modest gap.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description's 'at what fixed price, under which laws' hints at what the returned entries contain, which is a modest bonus but not parameter 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?
The description states the resource clearly — the firm's service catalog with fixed prices and governing laws — and the title supplies the 'list' verb. It is distinguishable from sibling tools like get_engagement_terms or get_payment_link, which retrieve a single item rather than the whole offering. It lacks a crisp first-person verb (e.g., 'Lists all services...'), which keeps it out of 5 territory.
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?
There is no statement of when to call this versus the sibling getters, nor any prerequisite or exclusion. An agent must infer that this is a first-stop catalog lookup. No guidance is provided about whether it should precede open_matter or request_consultation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_matterOpen a matterAInspect
Starts a request for a data processing agreement ($350) or, with tool "baa", a business associate agreement ($350). Send only the service, the governing law (CALIFORNIA by default, or SPAIN; CALIFORNIA only for a BAA), the client's role (PROCESSOR by default, or CONTROLLER; BUSINESS_ASSOCIATE for a BAA, with receivesPhi false) and, if useful, a short label that names no one. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. Returns a matter id, a matter token (shown once: keep it) and a private link. Give the private link to the user and ask them to open it in their browser within 24 hours. There the user enters their company's details, their own and the other party's, and the firm runs its conflicts check. You never see those details. The firm accepts the engagement when its automatic conflicts check is clear and payment is received (for a subscriber, when the engagement is accepted and the check is clear). If a possible conflict is found, nothing is charged, or the payment is refunded in full. A vendor whose services handle protected health information should use request_consultation.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | The client's role under the agreement: PROCESSOR by default, or CONTROLLER. For a BAA: BUSINESS_ASSOCIATE (the default and the only role offered). | |
| tool | Yes | The service: "dpa" (data processing agreement) or "baa" (business associate agreement). | |
| label | No | Optional. A short label for the user to recognize the request, for example "customer DPA, October". It must name no one. | |
| receivesPhi | No | BAA only, and required for it: whether the client's services are designed to create, receive, maintain or transmit protected health information. Only false is accepted; for services that handle it, use request_consultation. | |
| governingLaw | No | The law of the DPA: CALIFORNIA by default, or SPAIN. The law of the BAA: CALIFORNIA only. | CALIFORNIA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: pricing, what happens after the call (user opens a private link within 24 hours), what the agent never sees, conflicts-check outcomes, and refund behavior. The one-time nature of the matter token is an important operational warning that the schema does not convey.
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?
Front-loaded with the action and price, then requirements, then return/flow. Every sentence carries information, but the long parenthetical-heavy middle sentence and the engagement/refund explanation make it denser than necessary for a five-field tool.
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?
No output schema exists, yet the description names the return values (matter id, one-time token, private link) and explains the downstream human workflow that determines whether the engagement is accepted. Nothing an agent needs to call this correctly or set user expectations is missing.
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 100%, so the baseline is 3, but the description adds cross-parameter meaning: the BAA forces CALIFORNIA-only law and BUSINESS_ASSOCIATE with receivesPhi false, and it restates the defaults in prose. Much of this duplicates the schema text, which keeps it from a 5.
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?
Opens with a specific verb and resource ("Starts a request for a data processing agreement") and immediately names the variant switch (tool "baa") plus the price. It also distinguishes itself from the sibling request_consultation at the end, so an agent can route without opening the schema.
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?
Spells out exactly which fields to send, explicit prohibitions ("Do not ask the user for, and do not send, any name, e-mail address or postal address"), naming conventions, and a clear alternative ("A vendor whose services handle protected health information should use request_consultation"). Both the when and the when-not are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_consultationAsk for a consultationAInspect
For anything outside the listed services: gives the booking link and lets the firm know a person would like to talk. Send a one-line topic only, no confidential facts.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| Yes | |||
| topic | Yes | One line, no confidential facts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the key behavioral fact that submitting triggers a notification to the firm and yields a booking link, plus a confidentiality caution, but says nothing about follow-up timing, whether a record is persisted, or what happens on invalid input.
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 short sentences, zero waste, with the scope condition front-loaded before the behavioral outcome and the input caution. Nothing could be removed without losing 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?
For a 3-required-parameter write-side tool with no annotations and no output schema, the description covers the trigger condition, the outcome, and the confidentiality constraint. It leaves gaps around what the caller receives back and what the firm does with the request, which matters because no structured field supplies that 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 only 33% (only 'topic' is described), so some compensation is required. The description reinforces 'topic' as a one-line, non-confidential input and adds a meaningful constraint, but adds nothing about 'name' or 'email' beyond what their field names and formats imply.
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 states a concrete action chain: it returns a booking link and notifies the firm that a person wants to talk. The scope clause 'for anything outside the listed services' implicitly separates it from list_services and the submit_*/open_matter siblings, though no sibling is named explicitly.
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?
'For anything outside the listed services' gives a clear triggering condition, and 'Send a one-line topic only, no confidential facts' sets a usage constraint on the input. It stops short of naming which sibling to use instead when the request falls inside the listed services.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_dpa_factsSend the DPA factsAInspect
The fact package for the agreement, in the "dealroom.solo-intake/1" shape described by get_dpa_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. Leave out counterpartyLegalName: the firm adds the other party from the private page. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. A fact package that contains a name, an e-mail address or a postal address the firm holds for the matter is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| facts | Yes | The fact package; see get_dpa_requirements. | |
| matterId | Yes | The matter id returned by open_matter. | |
| matterToken | Yes | The matter token returned once by open_matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the precondition (engagement must have begun), the repeats-on-change pattern, and a hard rejection rule ('a fact package that contains a name, an e-mail address or a postal address ... is refused'). It stops short of describing what a successful submission returns or whether resubmission overwrites prior facts.
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?
Front-loaded with the payload shape and timing, then the exclusions, which is the right order. The final sentence restates the refusal condition already implied by 'do not send ... any name, e-mail address or postal address', costing some 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?
For a three-parameter mutation with a free-form nested object, no annotations, and no output schema, the description covers shape source, preconditions, forbidden content, and the expected failure mode. Only the success response and idempotency behavior remain unspecified, which is a minor gap.
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 100% for matterId/matterToken, but the facts object is untyped (additionalProperties: {}), so the schema cannot document it. The description compensates with real field-level rules: omit counterpartyLegalName, never send names/e-mails/postal addresses, and use "the Client"/"the Customer"/"the Vendor" conventions — meaning an agent could not derive from structured fields alone.
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 identifies the resource precisely (the fact package for the DPA/agreement) and ties its shape to the "dealroom.solo-intake/1" schema from get_dpa_requirements, which separates it from the sibling get_dpa_requirements and from the generic submit_facts. However, the opening sentence describes the payload rather than stating the action, so the verb (submit/send) is only implied by the tool name and title.
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?
It states exactly when the call is accepted — only after the engagement has begun, and again on lawyer request for changes — and routes the agent to get_dpa_requirements first to learn the payload shape. Both the timing condition and the prerequisite lookup are explicit, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_factsSend the factsAInspect
The fact package for the matter's service, in the "dealroom.solo-intake/1" shape described by get_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. Leave out counterpartyLegalName: the firm adds the other party from the private page. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. A fact package that contains a name, an e-mail address or a postal address the firm holds for the matter is refused. For a business associate agreement, the facts must not contain protected health information: they describe the services, not any individual.
| Name | Required | Description | Default |
|---|---|---|---|
| facts | Yes | The fact package; see get_requirements. | |
| service | Yes | The service: "dpa" (data processing agreement) or "baa" (business associate agreement). | |
| matterId | Yes | The matter id returned by open_matter. | |
| matterToken | Yes | The matter token returned once by open_matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses acceptance preconditions, that a package containing a name/e-mail/postal address held for the matter is refused, that counterpartyLegalName must be omitted because the firm supplies it, and an extra BAA/PHI restriction. It stops short of describing what a successful submission returns or how refusals are surfaced, which matters since there is no output schema.
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?
Content is front-loaded as a single dense paragraph: identity and shape first, then acceptance rules, then content restrictions. The prohibition on names/e-mails/addresses is restated for both "do not send" and "will be refused," which is mild redundancy but each clause adds a distinct nuance (interaction vs. validation).
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?
For a 4-required-parameter mutation with a nested open-ended object, no annotations and no output schema, the description covers preconditions, content rules, exclusions and refusal behavior. The remaining gap is the response/error contract, which nothing else in the structured data supplies.
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 100%, so the enum and id/token parameters are already documented; the description's added value is on the free-form nested `facts` object, where it prescribes substitute wording ("the Client", "the Customer"/"the Vendor") and exclusions. That meaningfully constrains the one parameter the schema leaves as additionalProperties, exceeding the baseline 3.
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 identifies the resource ("the fact package for the matter's service") and its schema id, but never states a verb — the action is only carried by the name and title. It also does not distinguish itself from the sibling submit_dpa_facts, leaving the agent to infer which submission tool applies to a given service.
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?
Timing/preconditions are explicit: "Accepted only once the engagement has begun, and again when the lawyer asks for changes," and it points to get_requirements for the shape. It gives clear when-to-call context, but names no alternative when this tool is not the right one (e.g. submit_dpa_facts or open_matter ordering).
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.
10 tool updates
- Changed
get_deliverable1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_dpa_requirements1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_engagement_terms1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_matter_status1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_payment_link1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_requirements1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
open_matter1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
request_consultation2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / email / patternAdded value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
submit_dpa_facts2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / facts / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
submit_facts2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / facts / propertyNamesAdded value: +{ + "type": "string" +}
1 tool update
- Changed
open_matter6 fields changed- removed
Input schema / properties / adversePartiesRemoved value: -{ - "anyOf": [ - { - "const": "none", - "type": "string" - }, - { - "items": { - "$ref": "#/properties/namedPerson/properties/name" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - ], - "description": "Anyone whose interests are adverse to the client in this matter, or \"none\"." -} - removed
Input schema / properties / clientRemoved value: -{ - "additionalProperties": false, - "properties": { - "entityType": { - "description": "For example \"Delaware corporation\" or \"sociedad limitada\".", - "maxLength": 100, - "minLength": 2, - "type": "string" - }, - "legalName": { - "description": "The client's full legal name, as registered.", - "maxLength": 200, - "minLength": 2, - "type": "string" - }, - "placeOfIncorporation": { - "additionalProperties": false, - "properties": { - "country": { - "description": "ISO 3166-1 alpha-2 code, for example US, ES, GB.", - "maxLength": 2, - "minLength": 2, - "type": "string" - }, - "region": { - "description": "State or region, for example Delaware.", - "maxLength": 100, - "type": "string" - } - }, - "required": [ - "country" - ], - "type": "object" - }, - "registeredAddress": { - "maxLength": 400, - "minLength": 10, - "type": "string" - } - }, - "required": [ - "legalName", - "entityType", - "placeOfIncorporation", - "registeredAddress" - ], - "type": "object" -} - removed
Input schema / properties / counterpartiesRemoved value: -{ - "description": "The legal name of every counterparty to the agreement.", - "items": { - "$ref": "#/properties/namedPerson/properties/name" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" -} - added
Input schema / properties / labelAdded value: +{ + "description": "Optional. A short label for the user to recognize the request, for example \"customer DPA, October\". It must name no one.", + "maxLength": 60, + "type": "string" +} - removed
Input schema / properties / namedPersonRemoved value: -{ - "additionalProperties": false, - "description": "The person who can bind the client. The engagement goes to this address.", - "properties": { - "name": { - "maxLength": 200, - "minLength": 2, - "type": "string" - }, - "title": { - "maxLength": 120, - "minLength": 2, - "type": "string" - }, - "workEmail": { - "format": "email", - "maxLength": 254, - "type": "string" - } - }, - "required": [ - "name", - "title", - "workEmail" - ], - "type": "object" -} - changed
Input schema / requiredPrevious value: -[ - "tool", - "client", - "namedPerson", - "counterparties", - "adverseParties" -]New value: +[ + "tool" +]
4 tool updates
- Changed
get_engagement_terms3 fields changed- removed
Input schema / properties / tool / constRemoved value: -"dpa" - added
Input schema / properties / tool / descriptionAdded value: +"The service: \"dpa\" (data processing agreement) or \"baa\" (business associate agreement)." - added
Input schema / properties / tool / enumAdded value: +[ + "dpa", + "baa" +]
- Added
get_requirements - Changed
open_matter8 fields changed- changed
Input schema / properties / governingLaw / descriptionPrevious value: -"The law of the DPA: CALIFORNIA by default, or SPAIN."New value: +"The law of the DPA: CALIFORNIA by default, or SPAIN. The law of the BAA: CALIFORNIA only." - added
Input schema / properties / receivesPhiAdded value: +{ + "description": "BAA only, and required for it: whether the client's services are designed to create, receive, maintain or transmit protected health information. Only false is accepted; for services that handle it, use request_consultation.", + "type": "boolean" +} - removed
Input schema / properties / role / defaultRemoved value: -"PROCESSOR" - changed
Input schema / properties / role / descriptionPrevious value: -"The client's role under the agreement: PROCESSOR by default, or CONTROLLER."New value: +"The client's role under the agreement: PROCESSOR by default, or CONTROLLER. For a BAA: BUSINESS_ASSOCIATE (the default and the only role offered)." - changed
Input schema / properties / role / enumPrevious value: -[ - "PROCESSOR", - "CONTROLLER" -]New value: +[ + "PROCESSOR", + "CONTROLLER", + "BUSINESS_ASSOCIATE" +] - removed
Input schema / properties / tool / constRemoved value: -"dpa" - changed
Input schema / properties / tool / descriptionPrevious value: -"The service. Only \"dpa\" (data processing agreement) in this version."New value: +"The service: \"dpa\" (data processing agreement) or \"baa\" (business associate agreement)." - added
Input schema / properties / tool / enumAdded value: +[ + "dpa", + "baa" +]
- Added
submit_facts
9 tool updates
- First observed
get_deliverable - First observed
get_dpa_requirements - First observed
get_engagement_terms - First observed
get_matter_status - First observed
get_payment_link - First observed
list_services - First observed
open_matter - First observed
request_consultation - First observed
submit_dpa_facts
Related MCP Connectors
Run deterministic SaaS contract redlining, GDPR Art. 28 DPA & EU AI Act compliance audits.
Run deterministic SaaS contract redlining, GDPR Art. 28 DPA & EU AI Act compliance audits.
Compliant legal documents from your AI assistant: 1,100+ templates, 15 countries, free preview.
- ClmentOAuthcom.clment
Contract review that keeps your contracts: cited answers, Word redlines, key-date alerts.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAnswer a few questions. Get clean, jurisdiction-aware privacy policies and terms of service.MIT
- AlicenseAqualityDmaintenanceGenerates professional compliance documents like privacy policies and terms of service directly from AI tools. Supports multiple document types and export formats with API integration.34 npmMIT
- AlicenseAqualityBmaintenanceOne-step legal compliance for vibe-coded apps: scans project, generates privacy policies/TOS, installs cookie consent banner, and checks EU AI Act risk.10127 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables generating startup legal documents such as NDAs, MSAs, DPAs, privacy policies, and offer letters from attorney-drafted templates, with downloads in PDF, ODT, or Markdown through MCP and no account required.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.