Skip to main content
Glama

Permits at an address

permits_at_address
Read-onlyIdempotent

Use this tool when someone asks which building, remodeling or demolition permits exist at an address, whether a house had permitted work, or what is permitted next door. It returns every building permit on record at that street address in a supported city or county (Los Angeles, New York City, Chicago, San Francisco, Seattle, Austin, Cincinnati, Mesa, New Orleans, Fort Worth, Columbus, San Diego, Detroit, Nashville, Raleigh, Phoenix, San Antonio, Minneapolis, Montgomery County, Boston, Pittsburgh, Washington, Denver, Los Angeles County, Wake County, Miami, Miami-Dade County, Hillsborough County, Cape Coral, Port St. Lucie, Alachua County, Kansas City, Baltimore, Sacramento County, Memphis, Las Vegas, Tacoma, Boulder, Cambridge, Somerville, Marin County, Pierce County, Cary, Cleveland, Arlington, Naperville, Tempe, Anaheim, Riverside): type of work, description, date, status and reported cost, from city and county open data checked around the clock. The address can be typed loosely (a missing N or S, "Drive" for "Dr", a trailing city, state or ZIP, a unit): it is matched to the spelling the city files. When more than one address matches (N and S Holly Dr), the answer lists them in did_you_mean; ask which one is meant and call again with it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityYesCity slug, e.g. los-angeles, new-york, chicago
addressYesStreet address with house number, e.g. '867 N Iliff St'. New York: include the borough, e.g. '180 West Street, Brooklyn'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, so the bar is low, and the description clears it comfortably: it enumerates the returned fields (type of work, description, date, status, reported cost), discloses the geographic coverage limit, explains the fuzzy address-matching behaviour, and documents the did_you_mean ambiguity path. That is real behavioural context not present in the annotations or schema.

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

Conciseness3/5

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

Front-loaded with the use case and return behaviour, which is good, but roughly half the text is a 50-entry wall of city names that bloats the definition and duplicates what the sibling list_cities presumably provides. The matching/disambiguation sentences earn their place; the coverage enumeration is disproportionate.

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?

There is no output schema, so the description must carry the return contract, and it does — listing the fields returned plus the did_you_mean ambiguity structure. Coverage limits and input flexibility are also covered, leaving only minor gaps around result volume or paging.

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 baseline is 3, but the description adds genuine meaning: the address may be typed loosely (missing N/S, 'Drive' for 'Dr', trailing city/state/ZIP, unit) and is normalized to the city's filing spelling, and it clarifies what a supported city means for the city parameter. This goes beyond the schema's terse examples.

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?

States a specific verb and resource — returns every building permit on record at a given street address — and the address-based scope implicitly separates it from the time-based sibling recent_permits and the proximity-based permits_near. An agent can tell what it retrieves and by what key 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.

Usage Guidelines4/5

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

Opens with concrete trigger questions (which permits exist at an address, whether a house had permitted work) and gives an explicit follow-up protocol when multiple addresses match — ask which one, then re-call with the disambiguated address. It never names the sibling tools or states when a different tool (permits_near) is the better choice, so it stops short of full routing guidance.

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