Skip to main content
Glama

Send my message to the lawyer I picked (needs my yes) (older name)

request_attorney_introduction
DestructiveIdempotent

Older name of send_client_message, kept until 2026-12-15; use send_client_message. Use only when the person asked to contact ONE specific lawyer they picked, has seen the lawyer's name, the exact message and details to be shared and the consent text, and said yes. Never call it on your own initiative or for several lawyers at once. Call preview_client_message first and pass its approval_code: if the recipient or the text changed since the person's yes, it is refused. Stores only the approved fields; retries with the same idempotency_key do not duplicate, and reusing a key for different details is refused. The same rule applies to every listed lawyer. Returns a contact_request_id, its lifecycle_state and a private status token. This is a listing service, not a lawyer referral service. No lawyer pays for placement or ranking of any kind.

Input Schema

NameRequiredDescriptionDefault
stateYesUS state, two-letter code or name, e.g. CA or California
consentYes
contactYes
entry_idNoThe entry_id from start_from_directory_profile, if the user started from a directory listing. Counts the listing visit; carries no personal data.
match_idNo
pending_okNoDeprecated since 2026-11-04 and ignored. Messages no longer wait for anything a lawyer buys.
attorney_idYes
approval_codeNoThe approval_code from preview_client_message for the exact version the user said yes to. If anything changed since, the request is refused and nothing is stored.
practice_areaNo
matter_summaryYesSummary the USER read and approved for sharing with this lawyer
idempotency_keyNoSame key on retries prevents a duplicate message
attribution_tokenNoSigned campaign/partner token issued by ESQ Matching Engine, if the user arrived through a partner link
opposing_party_nameNoName of the other side, if any, so the firm can check conflicts. Not shared beyond the firm.
preferred_timeframeNo
preferred_contact_methodYes
intake_notice_acknowledgedNoTrue only after the user read: no attorney-client relationship exists yet and the lawyer may decline

Output Schema

NameRequiredDescriptionDefault
noticeYes
statusYes
consentYes
attorneyYes
match_idYes
duplicateYes
next_stepYes
created_atYes
submissionYes
api_versionYes
destinationYes
referral_idYes
consultationYes
last_updatedYes
status_checkNo
status_tokenYes
qualificationYes
delivery_noticeNo
lifecycle_stateYes
attorney_responseYes
consent_text_shownYes
delivered_to_lawyerYes
personal_details_deletedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / approval_code / pattern
      Previous value: -"^apr_[a-f0-9]{32}$"New value: +"^(apr_[a-f0-9]{32}|apr2_[0-9a-z]{6,12}_[a-f0-9]{32})$"
  2. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "api_version",
      -  "referral_id",
      -  "status",
      -  "lifecycle_state",
      -  "delivered_to_lawyer",
      -  "delivery_notice",
      -  "match_id",
      -  "created_at",
      -  "last_updated",
      -  "attorney",
      -  "destination",
      -  "submission",
      -  "attorney_response",
      -  "consultation",
      -  "qualification",
      -  "consent",
      -  "personal_details_deleted",
      -  "next_step",
      -  "notice",
      -  "duplicate",
      -  "status_token",
      -  "consent_text_shown"
      -]New value: +[
      +  "api_version",
      +  "referral_id",
      +  "status",
      +  "lifecycle_state",
      +  "delivered_to_lawyer",
      +  "match_id",
      +  "created_at",
      +  "last_updated",
      +  "attorney",
      +  "destination",
      +  "submission",
      +  "attorney_response",
      +  "consultation",
      +  "qualification",
      +  "consent",
      +  "personal_details_deleted",
      +  "next_step",
      +  "notice",
      +  "duplicate",
      +  "status_token",
      +  "consent_text_shown"
      +]
  3. Changed3 schema fields changed
    • changedInput schema / properties / approval_code / description
      Previous value: -"The approval_code from prepare_introduction for the exact version the user said yes to. If anything changed since, the request is refused and nothing is stored."New value: +"The approval_code from preview_client_message for the exact version the user said yes to. If anything changed since, the request is refused and nothing is stored."
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Same key on retries prevents a duplicate introduction"New value: +"Same key on retries prevents a duplicate message"
    • changedInput schema / properties / pending_ok / description
      Previous value: -"True only after the user read pending_consent_text and chose to let the request wait for this lawyer to activate the free EsqHarness"New value: +"Deprecated since 2026-11-04 and ignored. Messages no longer wait for anything a lawyer buys."
  4. Changed3 schema fields changed
    • addedInput schema / properties / approval_code
      Added value: +{
      +  "description": "The approval_code from prepare_introduction for the exact version the user said yes to. If anything changed since, the request is refused and nothing is stored.",
      +  "pattern": "^apr_[a-f0-9]{32}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / entry_id
      Added value: +{
      +  "description": "The entry_id from start_from_directory_profile, if the user started from a directory listing. Counts the listing visit; carries no personal data.",
      +  "pattern": "^ent_[A-Za-z0-9_-]{8,40}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / pending_ok
      Added value: +{
      +  "description": "True only after the user read pending_consent_text and chose to let the request wait for this lawyer to activate the free EsqHarness",
      +  "type": "boolean"
      +}
  5. Changed2 schema fields changed
    • addedInput schema / properties / intake_notice_acknowledged
      Added value: +{
      +  "description": "True only after the user read: no attorney-client relationship exists yet and the lawyer may decline",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / opposing_party_name
      Added value: +{
      +  "description": "Name of the other side, if any, so the firm can check conflicts. Not shared beyond the firm.",
      +  "maxLength": 160,
      +  "type": "string"
      +}
  6. Changed40 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"
      +]
    • changedOutput schema / properties / attorney / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "attorney_id": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "firm": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "name": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "profile_url": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "attorney_id": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "firm": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "profile_url": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / attorney_response / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "decision": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "decline_reason": {
      -        "type": "null"
      -      },
      -      "first_substantive_response_at": {
      -        "type": "null"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "decision": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "decline_reason": {
      +        "x-observed-types": "null"
      +      },
      +      "first_substantive_response_at": {
      +        "x-observed-types": "null"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / consent / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "consented_at": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "fields_authorized": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "recipient_attorney_id": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "consented_at": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "fields_authorized": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "x-observed-types": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "recipient_attorney_id": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / consent_text_shown / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / consent_text_shown / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / consultation / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "confirmed_by": {
      -        "type": "null"
      -      },
      -      "reschedules": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "scheduled_for": {
      -        "type": "null"
      -      },
      -      "state": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "confirmed_by": {
      +        "x-observed-types": "null"
      +      },
      +      "reschedules": {
      +        "x-observed-types": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "scheduled_for": {
      +        "x-observed-types": "null"
      +      },
      +      "state": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / created_at / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / created_at / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / delivered_to_lawyer / type
      Removed value: -[
      -  "boolean",
      -  "null"
      -]
    • addedOutput schema / properties / delivered_to_lawyer / x-observed-types
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / delivery_notice / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / delivery_notice / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / destination / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / destination / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / duplicate / type
      Removed value: -[
      -  "boolean",
      -  "null"
      -]
    • addedOutput schema / properties / duplicate / x-observed-types
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / last_updated / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / last_updated / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / lifecycle_state / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / lifecycle_state / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / match_id / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / match_id / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / next_step / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / next_step / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / notice / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / notice / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / personal_details_deleted / type
      Removed value: -[
      -  "boolean",
      -  "null"
      -]
    • addedOutput schema / properties / personal_details_deleted / x-observed-types
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • changedOutput schema / properties / qualification / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "status": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "version": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "status": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "version": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / referral_id / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / referral_id / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / status / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / status / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / status_check / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / status_check / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / status_token / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / status_token / x-observed-types
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / submission / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "note": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "note": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "x-observed-types": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  7. 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"
      +      ]
      +    },
      +    "attorney": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "attorney_id": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "firm": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "name": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "profile_url": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "attorney_response": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "decision": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "decline_reason": {
      +              "type": "null"
      +            },
      +            "first_substantive_response_at": {
      +              "type": "null"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "consent": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "consented_at": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "fields_authorized": {
      +              "anyOf": [
      +                {
      +                  "items": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "recipient_attorney_id": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "consent_text_shown": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "consultation": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "confirmed_by": {
      +              "type": "null"
      +            },
      +            "reschedules": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "scheduled_for": {
      +              "type": "null"
      +            },
      +            "state": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "created_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "delivered_to_lawyer": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "delivery_notice": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "destination": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "duplicate": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "last_updated": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "lifecycle_state": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "match_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "next_step": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "notice": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "personal_details_deleted": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "qualification": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "status": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "version": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "referral_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status_check": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status_token": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "submission": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "note": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "status": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "api_version",
      +    "referral_id",
      +    "status",
      +    "lifecycle_state",
      +    "delivered_to_lawyer",
      +    "delivery_notice",
      +    "match_id",
      +    "created_at",
      +    "last_updated",
      +    "attorney",
      +    "destination",
      +    "submission",
      +    "attorney_response",
      +    "consultation",
      +    "qualification",
      +    "consent",
      +    "personal_details_deleted",
      +    "next_step",
      +    "notice",
      +    "duplicate",
      +    "status_token",
      +    "consent_text_shown"
      +  ],
      +  "type": "object"
      +}
  8. Changed1 schema field changed
    • changedInput schema / properties / attribution_token / description
      Previous value: -"Signed campaign/partner token issued by ESQ CoPilot, if the user arrived through a partner link"New value: +"Signed campaign/partner token issued by ESQ Matching Engine, if the user arrived through a partner link"
  9. Changed1 schema field changed
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Same key on retries prevents a duplicate referral"New value: +"Same key on retries prevents a duplicate introduction"
  10. Changed1 schema field changed
    • changedInput schema / properties / attribution_token / description
      Previous value: -"Signed campaign/partner token issued by ALCBar, if the user arrived through a partner link"New value: +"Signed campaign/partner token issued by ESQ CoPilot, if the user arrived through a partner link"
  11. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that only approved fields are stored, that a stale approval_code causes refusal with nothing stored, that idempotency_key reuse with different details is refused while identical retries do not duplicate, and that the tool returns a contact_request_id, lifecycle_state and private status token. It also adds conflict-relevant context (listing service, no paid placement) that an agent cannot infer from destructiveHint/openWorldHint.

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

Conciseness4/5

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

Front-loads the deprecation redirect first, then the consent gate, then the mechanical constraints, which is the right order for an agent. Some sentences, particularly the listing-service and no-paid-placement disclaimer, are tangential to calling the tool, but the bulk of the text earns its place.

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

Completeness4/5

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

For a 16-parameter mutation with a nested consent object and an output schema present, the description covers the decisive risks: consent authority, approval-code staleness, idempotency, and refusal outcomes. Return values are briefly noted even though an output schema exists, and remaining gaps are minor schema-documented fields.

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

Parameters3/5

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

Schema coverage is 56%, and the description adds meaning for only a few parameters: approval_code provenance, idempotency_key retry semantics, and consent gating in general terms. Many parameters (match_id, practice_area, preferred_timeframe, opposing_party_name, attribution_token, entry_id, intake_notice_acknowledged, pending_ok) are not addressed, though these are largely self-documented in the schema.

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 leads with 'Older name of send_client_message, kept until 2026-12-15' and names the replacement, so an agent immediately understands this is a deprecated alias for sending a client message to one chosen lawyer. It never states the action in its own words and relies on the alias mapping, which is slightly indirect but unambiguous given the sibling list.

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

Usage Guidelines5/5

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

Explicit exclusions ('Never call it on your own initiative or for several lawyers at once'), a concrete precondition set (user picked one lawyer, saw the name, exact message, details, consent text, and said yes), and a mandatory prerequisite step (call preview_client_message first and pass its approval_code). The alternative is named directly, so routing is unambiguous.

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