Skip to main content
Glama

Check Service Area

check_service_area
Read-onlyIdempotent

Check a service ZIP, or a Massachusetts town, city or neighborhood name on its own, against the coverage database for Norfolk, Suffolk and Plymouth counties. Answer "do you serve ?" directly with town (no ZIP needed): covered = yes; partially_covered = yes for the listed covered_zips, confirm the customer's ZIP only then; outside_service_area = not in the automatic-booking area (offer request_out_of_area_callback and the office number); unknown_town = ask for the ZIP. During new-customer intake run this check silently; never announce that you are checking the service area. Unavailable coverage is unknown, not outside-area. This never proves that a particular appointment is available.

Input Schema

NameRequiredDescriptionDefault
zipNoFive-digit service ZIP (ZIP+4 accepted). Town name alone is enough; pass a ZIP only when the town result is partially_covered or unknown_town, or when the customer already gave the full address. Send zip or town; an empty call returns LOCATION_REQUIRED.
townNoMassachusetts town, city or neighborhood name on its own, e.g. "Quincy" or "Dorchester". Answers "do you serve <town>?" directly; do not demand a ZIP first.
stateNoTwo-letter state code; defaults to MA. Any state other than MA is outside the service area.

Output Schema

NameRequiredDescriptionDefault
zipNo
townNo
errorNo
statusNo
messageNo
successYes
countiesNo
next_stepNo
error_codeNo
matched_byNo
covered_zipsNoTown lookups only: the town ZIPs inside the automatic-booking area.
outside_zipsNoTown lookups only: the town ZIPs outside the automatic-booking area.
resolved_townNoTown lookups only: the Massachusetts place the name was matched to.
missing_fieldsNo
review_sandboxNo
in_service_areaNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / state / description
      Added value: +"Two-letter state code; defaults to MA. Any state other than MA is outside the service area."
    • addedInput schema / properties / town / description
      Added value: +"Massachusetts town, city or neighborhood name on its own, e.g. \"Quincy\" or \"Dorchester\". Answers \"do you serve <town>?\" directly; do not demand a ZIP first."
    • addedInput schema / properties / zip / description
      Added value: +"Five-digit service ZIP (ZIP+4 accepted). Town name alone is enough; pass a ZIP only when the town result is partially_covered or unknown_town, or when the customer already gave the full address. Send zip or town; an empty call returns LOCATION_REQUIRED."
  2. Changed4 schema fields changed
    • addedOutput schema / properties / covered_zips
      Added value: +{
      +  "description": "Town lookups only: the town ZIPs inside the automatic-booking area.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / outside_zips
      Added value: +{
      +  "description": "Town lookups only: the town ZIPs outside the automatic-booking area.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / resolved_town
      Added value: +{
      +  "description": "Town lookups only: the Massachusetts place the name was matched to.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "covered",
      -  "outside_service_area",
      -  "needs_more_information",
      -  "unavailable"
      -]New value: +[
      +  "covered",
      +  "partially_covered",
      +  "outside_service_area",
      +  "unknown_town",
      +  "needs_more_information",
      +  "unavailable"
      +]
  3. Changed3 schema fields changed
    • addedOutput schema / properties / missing_fields
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / next_step
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "enum": [
      +    "covered",
      +    "outside_service_area",
      +    "needs_more_information",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / state
      Added value: +{
      +  "maxLength": 2,
      +  "minLength": 2,
      +  "type": "string"
      +}
  5. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive lookup, and the description adds important behavioral context beyond that: unknown coverage is not outside-area, the result never proves appointment availability, and intake checks should be silent. These are meaningful constraints an agent would not infer from the annotations alone.

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?

The description is front-loaded and every clause carries operational meaning, but it is dense and packs multiple decision rules into long sentences. It is appropriately sized for the complexity, though slightly tighter structure would improve readability.

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

Completeness5/5

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

The tool has an output schema, complete parameter descriptions, and clear annotations, so the description need not explain return values. It completes the contextual picture by defining outcome handling, silent intake behavior, and the relationship to out-of-area callback flow.

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

Parameters4/5

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

Schema description coverage is 100%, so the parameter-level baseline is 3. The description adds useful semantic guidance by emphasizing that a town name alone is sufficient and that a ZIP should only be used when the town result is partially_covered or unknown_town, or when the customer already provided a full address.

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

Purpose5/5

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

The description states a specific verb and resource: checking a service ZIP or Massachusetts town/city/neighborhood against a defined coverage database for Norfolk, Suffolk and Plymouth counties. It also distinguishes the tool from the callback sibling by naming request_out_of_area_callback for outside-service-area cases.

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?

It gives explicit operational rules for each outcome: covered means yes, partially_covered means yes for listed ZIPs then confirm ZIP, outside_service_area means offer request_out_of_area_callback and the office number, and unknown_town means ask for ZIP. It also states when to run it silently during new-customer intake and when not to treat unknown coverage as outside-area.

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