Skip to main content
Glama

Server Details

Human-reviewed zoning answers with ordinance citations for covered US municipalities.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 7 of 7 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: coverage preflight, listing municipalities/districts, resolving an address to a district, fetching district rules, looking up Q&A, and creating a watch. Overlapping cases are explicitly disambiguated (e.g., check_coverage notes it does not identify a parcel's district).

Naming Consistency5/5

All seven tools follow a consistent verb_noun snake_case pattern (ask, check, create, get, list, list, resolve). No mixed conventions or stylistic deviations.

Tool Count5/5

Seven tools is well within the ideal 3-15 range for a focused domain. Each tool earns its place, covering distinct operations without redundancy.

Completeness5/5

The set covers the core workflows: coverage check, municipality/district discovery, parcel resolution, district rules retrieval, Q&A lookup, and subscription creation. Tools reference each other (e.g., resolve_parcel_district feeds get_district_rules), leaving no obvious dead ends or missing operations.

Available Tools

7 tools
ask_zoning_questionAInspect

Look up a published question-and-answer for a municipality and topic. Returns the matching reviewed answer with its citations, or reports honestly that no published answer exists and lists the topics that do have reviewed answers. Never generates new answers; confirm with the municipality before acting.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoThe question in plain words, used to find the best match.
topicNoOptional filter, one of: permitted_uses, special_land_uses, setbacks, height, lot_coverage, lot_size, parking, adu, accessory_structures, fences, signs, home_occupation, variance_process.
municipalityYesMunicipality slug from list_municipalities.
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses key behaviors: returns reviewed answer with citations, honestly reports absence and lists available topics, and never generates new answers. This adds non-obvious context beyond what the schema provides.

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

Conciseness5/5

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

The description is three concise sentences, front-loaded with the primary purpose. Every sentence earns its place: purpose, return behavior, and a critical limitation/instruction. No fluff or repetition.

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?

For a lookup tool with no output schema and no annotations, the description fully covers what an agent needs: what it does, what it returns, how it handles missing answers, and a caution to confirm with the municipality. It is complete for its scope.

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 description coverage is 100% for all three parameters, so the schema already explains municipality, query, and topic. The description mentions 'municipality and topic' but does not add syntax or format details beyond the schema, so baseline 3 is appropriate.

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 clearly states the verb 'look up' and the resource 'published question-and-answer', with scope limited to a municipality and topic. It explicitly distinguishes itself from siblings by focusing on Q&A lookup rather than coverage checks or district rules.

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

Usage Guidelines4/5

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

The description provides clear context that this tool only retrieves published answers and never generates new ones, which guides when to use it. It does not explicitly name alternative tools or state when not to use it, but the 'confirm with the municipality before acting' caveat adds practical guidance.

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

check_coverageAInspect

Free coverage preflight for an address or municipality string. Returns whether ZoningVerdict covers it, available topics, pack version, and last-reviewed date. It does not identify a parcel's zoning district; use resolve_parcel_district only when the district determination is needed. Results are for information purposes only.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoAddress or municipality string.
addressNoStreet address text; city and state improve matching.
municipalityNoMunicipality slug or name.
Behavior5/5

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

With no annotations provided, the description carries the full transparency burden and does so admirably. It explicitly states the tool does NOT identify a parcel's zoning district, that results are informational only, and discloses key output components (coverage, topics, version, date). No contradictions or hidden behaviors.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: defining the tool, listing outputs, and setting expectations with an explicit alternative. It is front-loaded with the core function and contains no fluff or redundant information.

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?

Given the tool's relative simplicity, the description is highly complete. It covers what the tool does, what it returns, what it doesn't do, and its informational nature. Since there is no output schema, the description compensates by enumerating the returned fields, making the tool's behavior fully comprehensible.

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 100%, so the baseline is 3. The description mentions 'address or municipality string' but does not add clarity on how to choose between the three parameters (q, address, municipality) or their relative benefits. It offers no additional semantic value beyond the schema's existing descriptions.

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 clearly states the tool checks coverage for an address or municipality string and returns specific details (coverage, topics, pack version, last-reviewed date). It also explicitly distinguishes itself from resolve_parcel_district, which is a sibling tool focused on district determination, making the tool's purpose unambiguous.

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?

The description provides explicit guidance on when to use this tool versus the sibling resolve_parcel_district: 'use resolve_parcel_district only when the district determination is needed.' This clearly implies this tool is for coverage checks, not district resolution, offering practical decision-making support.

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

create_watchAInspect

Start a $49/month watch on a covered municipality (optionally one topic): an email whenever a human-reviewed rule change is published, with the citation and the updated page. Returns a Stripe checkout URL; the subscription activates only after checkout completes, and every email carries unsubscribe and billing links. Alerts are reviewed summaries for information purposes. Use list_municipalities for coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional: watch one topic only, one of: permitted_uses, special_land_uses, setbacks, height, lot_coverage, lot_size, parking, adu, accessory_structures, fences, signs, home_occupation, variance_process.
municipalityYesMunicipality slug from list_municipalities.
Behavior5/5

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

With no annotations, the description carries full responsibility and excels: it discloses the monthly cost, Stripe checkout flow, activation only after checkout, unsubscribe/billing links in emails, and that alerts are informational summaries. This is far more transparent than typical tool descriptions.

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 three sentences, front-loaded with the core action, then covering payment flow and usage hint. It is concise but slightly dense; all sentences earn their place without redundancy.

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?

Given there is no output schema, the description explains the main return (Stripe checkout URL) and the lifecycle (activation, emails). It covers the key aspects well, though it does not specify error handling or the exact structure of the checkout URL, which would be extra polish.

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?

The schema already provides full coverage of both parameters, including descriptions and enum values for topic. The description adds no new parameter-level detail beyond referencing list_municipalities for municipality, which is more about usage guidance.

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 clearly states the tool creates a subscription watch on a municipality with an optional topic, and describes the email notification feature. This distinguishes it from sibling tools that query or list data.

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

Usage Guidelines4/5

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

The description gives clear context: use this to start a paid watch, and explicitly points to list_municipalities for coverage. It does not explicitly mention when not to use it or name alternative monitoring tools, but the guidance is sufficient.

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

get_district_rulesAInspect

Get the published rules for one zoning district by topic (setbacks, fences, accessory structures, and so on). District codes come from list_districts or resolve_parcel_district — do not guess them. Every rule carries its ordinance citation and source link plus the pack's last-reviewed date. Summaries for information, not legal advice; confirm with the municipality before acting.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOne of: permitted_uses, special_land_uses, setbacks, height, lot_coverage, lot_size, parking, adu, accessory_structures, fences, signs, home_occupation, variance_process.
districtNoDistrict code, e.g. R-2. Get valid codes from list_districts or resolve_parcel_district; do not guess.
municipalityYesMunicipality slug from list_municipalities.
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses the output contents (ordinance citation, source link, last-reviewed date) and adds a disclaimer that summaries are not legal advice. It also implies a read-only operation by using 'Get'. It does not mention error cases or rate limits, but the extra details about citations and legal status are valuable beyond the surface.

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

Conciseness5/5

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

The description is four sentences, front-loaded with the primary purpose, and every sentence contributes unique information: purpose, district code guidance, output contents, and legal disclaimer. No redundancy or filler.

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?

With three parameters, no annotations, and no output schema, the description provides sufficient context for an agent to use the tool correctly. It explains what the returned data includes and warns about legal limitations. It does not detail error behavior or pagination, but such details are likely unnecessary for this simple retrieval tool.

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 description coverage is 100%, with each parameter already described. The description adds example topics and reiterates the district code prerequisite, which reinforces but does not extend the schema. It adds minimal new semantic value beyond what the input schema already provides.

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 clearly states a specific action ('Get the published rules') on a specific resource ('one zoning district by topic'), and lists example topics. It distinguishes itself from siblings by focusing on retrieving rules for a given district, whereas list_districts and resolve_parcel_district are prerequisite tools for obtaining district codes.

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

Usage Guidelines4/5

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

The description instructs users to obtain district codes from list_districts or resolve_parcel_district and explicitly warns not to guess them. It implies this tool is for retrieving published rules by topic, but does not explicitly contrast it with ask_zoning_question for general questions. Overall, it provides clear context and a prerequisite workflow.

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

list_districtsAInspect

List the zoning district codes for one municipality, with each district's name, category, and summary. Use these codes with get_district_rules; do not guess codes. If you have a street address, resolve_parcel_district identifies the district for you. Free, like list_municipalities. Reviewed summaries for information purposes only.

ParametersJSON Schema
NameRequiredDescriptionDefault
municipalityYesMunicipality slug from list_municipalities.
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool is free, that summaries are 'reviewed summaries for information purposes only,' and that it operates per municipality. It does not mention output pagination or formatting details, but for a simple listing tool, these additions are strong. A small gap remains in not stating whether authentication is needed or if data is authoritative, hence a 4.

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

Conciseness5/5

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

The description is four sentences, each earning its place: it states the action, the output, the sibling tool usage, and a caveat. It is front-loaded with the primary purpose and contains no filler or repetition.

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?

Given one parameter, no output schema, and no annotations, the description covers the essential context: what it returns, how to use the results, alternative tools for different inputs, and the information quality. It sufficiently prepares an agent to invoke this tool correctly without additional external knowledge.

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 100%: the only parameter 'municipality' is described as 'Municipality slug from list_municipalities.' The description adds a bit of context by saying 'one municipality' and reiterates the need to use codes from it, but does not fundamentally extend the schema's meaning. Baseline 3 applies.

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 opens with a specific verb and resource: 'List the zoning district codes for one municipality,' and details the return content (district's name, category, summary). It clearly distinguishes from siblings like get_district_rules and resolve_parcel_district by focusing on the listing action and one municipality.

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 guidance is given: 'Use these codes with get_district_rules; do not guess codes' and 'If you have a street address, resolve_parcel_district identifies the district for you.' This directs the agent to the correct tool based on the available input, fully addressing when to use this tool versus alternatives.

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

list_municipalitiesAInspect

List the municipalities ZoningVerdict covers, with each pack's version and last-reviewed date. Coverage is reviewed summaries of public zoning ordinances, for information purposes only. Start here when you do not have a street address; with an address, start with resolve_parcel_district.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Despite having no annotations, the description transparently notes that the coverage is 'reviewed summaries of public zoning ordinances' and is 'for information purposes only,' setting expectations about data nature and authority. It also mentions the included fields (version and last-reviewed date), adding useful behavioral context.

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

Conciseness5/5

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

The description is just two sentences, front-loaded with the primary purpose, followed by contextual caveat and usage guidance. Every sentence earns its place with no redundancy or filler.

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?

For a simple, parameterless list tool with no output schema, the description covers the return content (municipalities with version and last-reviewed date), the nature of the data (reviewed summaries), and usage context. It is complete and self-contained for the tool's simplicity.

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?

The tool has zero parameters, so the description correctly does not need to elaborate on parameter semantics. The baseline of 4 applies, and the description adds value by clarifying the output scope even without parameters.

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 clearly states the tool lists municipalities with each pack's version and last-reviewed date, using a specific verb and resource. It distinguishes itself from sibling tools like list_districts and check_coverage by focusing on municipality coverage rather than rules or availability.

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?

The description explicitly tells when to use this tool ('Start here when you do not have a street address') and when to use an alternative ('with an address, start with resolve_parcel_district'). This provides actionable guidance and prevents misuse.

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

resolve_parcel_districtAInspect

Resolve a street address to its municipality and, where a GIS path exists, its zoning district. Start here when you have an address, then pass the returned district code to get_district_rules. The response discloses how the district was identified. Parcel boundaries and zoning lines can disagree near edges; confirm with the municipality before acting.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesStreet address, city, MI.
Behavior4/5

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

With no annotations, the description carries the full transparency burden. It discloses that the response explains how the district was identified and warns that parcel boundaries and zoning lines can disagree near edges, advising confirmation with the municipality. This is useful behavioral context, though it omits details like error handling or explicit read-only status.

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

Conciseness5/5

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

Three sentences deliver high value: the first states purpose and workflow, the second clarifies output behavior, and the third provides a practical caveat. There is no redundancy, filler, or off-topic content.

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 simple one-parameter tool with no annotations or output schema, the description covers the core behavior, the self-explanatory output, and a real-world limitation. It also gives a clear next step. It does not explicitly state what happens when no GIS path exists, but the conditional 'where a GIS path exists' sufficiently implies the behavior.

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?

The input schema already fully describes the only parameter with 'Street address, city, MI.' at 100% coverage. The description reiterates the address as the input but adds no new parameter-level detail beyond its role in the resolution process. Baseline 3 is appropriate because the schema does the heavy lifting.

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 clearly states the tool resolves a street address to a municipality and zoning district when a GIS path exists. It distinguishes itself from siblings by positioning as the entry point for address-based lookups and explicitly directs the user to get_district_rules as the next step.

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

Usage Guidelines4/5

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

The description gives an explicit workflow hint: 'Start here when you have an address, then pass the returned district code to get_district_rules.' This tells the user when to use this tool versus the rules tool. However, it does not explicitly compare against other siblings like check_coverage or ask_zoning_question, leaving some alternative-selection guidance implicit.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    AI-powered property intelligence for instant zoning analysis, buildability assessments, ADU eligibility, flood risk, and development feasibility reports for any US address.
    5
    1
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    Professional building code compliance assistant that interfaces with municipal building codes, helping contractors and builders navigate complex regulatory requirements with precision.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Open-source MCP server providing real estate regulatory intelligence (zoning, permits, entitlements, deal scoring) for US properties, enabling AI agents to access 10 callable tools.
    12
    11
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources