Skip to main content
Glama

Search parcels

parcel_search
Read-onlyIdempotent

Find parcels matching criteria within one or more covered states: county, acreage, owner name, land use, total or land value, sale price or date, year built, ZIP, city, a bbox or GeoJSON polygon, or generic column filters. All criteria are ANDed; state (or bbox/polygon) is required. Sibling tools: parcel_enrich returns the full record for one parcel (pass its parcel_id) with optional point fields; start_run (kind=search) walks many pages asynchronously; parcel_coverage lists states and which columns each publishes. Output: results, one per parcel with parcel_id and its columns (detail=summary: key columns; detail=full: every published column plus shape metrics), has_more and next_cursor for the next page. Owner and mailing-address criteria are refused where a state withholds those fields, and parcels with a withheld owner are left out of owner-matched results. Cost: 25 lookups per page that returns parcels, whatever its size (up to 100); an empty page is free. Behavior: read-only (no side effects); needs an API key or OAuth; each call counts toward the per-minute request limit (Free 10, Starter 60, Pro 300). Searches run 1 at a time per key on Free, 2 on paid plans; waiting over 20 s for a slot gives busy (503) and running over 40 s gives upstream_timeout (504), both retryable and free. The page cost must be available upfront. Errors: state_required, owner_search_unavailable and mailing_search_unavailable (fields withheld in that state), invalid_request for malformed filters. Plan limits return rate_limited (with retry_after_s), daily_cap_reached or quota_exhausted.

Input Schema

NameRequiredDescriptionDefault
zipNoSitus ZIP code, 5 digits.
bboxNoBounding box [min_lng, min_lat, max_lng, max_lat] in WGS84.
cityNoSitus city name, case-insensitive.
limitNoParcels per page, 1 to 100 (default 25). A page costs the same at any size.
ownerNoOwner name to match, case-insensitive (e.g. 'SMITH JOHN' or 'ACME LLC'), matched per owner_match.
stateNoTwo-letter state code or a list (e.g. 'TX' or ['TX', 'OK']). Required unless bbox or polygon is given.
countyNoCounty 5- or 3-digit FIPS or name, or a list; one state only.
cursorNonext_cursor from the previous page, with the same criteria, for the next page.
detailNosummary (default): key columns. full: every published column plus shape metrics. Same cost.summary
filtersNoUp to 20 generic column filters, ANDed with the other criteria. Columns are listed by parcel_coverage.
polygonNoGeoJSON Polygon or MultiPolygon; parcels whose interior point falls inside match.
usecodeNoPublisher land-use code or list of codes, exact (codes differ by state).
land_useNoWords in the land-use description, or a code (e.g. 'agricultural', 'vacant').
acres_maxNoMaximum parcel area in acres (inclusive).
acres_minNoMinimum parcel area in acres (inclusive).
value_maxNoMaximum total value in USD.
value_minNoMinimum total value in USD as published (assessed or market; see parvaltype in full records).
owner_matchNoprefix (default, fast): owner name starts with owner. contains: owner appears anywhere in the name (slower).prefix
sale_date_maxNoLatest last-sale date, YYYY-MM-DD (inclusive).
sale_date_minNoEarliest last-sale date, YYYY-MM-DD (inclusive).
land_value_maxNoMaximum land value in USD.
land_value_minNoMinimum land value in USD.
sale_price_maxNoMaximum last sale price in USD.
sale_price_minNoMinimum last sale price in USD.
year_built_maxNoLatest year built.
year_built_minNoEarliest year built (e.g. 1990).
include_geometryNotrue adds each parcel's GeoJSON boundary (large). Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior, but the description adds substantial operational context beyond them: cost of 25 lookups per non-empty page, free empty pages, API-key/OAuth requirement, per-plan request limits, concurrency limits, retryable busy/upstream_timeout errors, and withheld-owner filtering behavior. There is no contradiction with the annotations.

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 long and dense, but the tool has 27 parameters and many operational constraints, so most of the content earns its place. It is front-loaded with purpose and required geography, though the single-paragraph structure with heavy semicolon use could be easier to scan.

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?

With no output schema, the description still explains the return shape: results with parcel_id and columns, detail=summary versus full, has_more, and next_cursor. It also covers cost, plan limits, concurrency, timeouts, and error cases, leaving little an agent needs to infer before calling it correctly.

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 detailed per-parameter descriptions for ZIP, bbox, county, filters, detail, owner_match, and every range parameter. The description adds the useful AND semantics and required geography rule, but it does not add much per-parameter meaning beyond what the schema already provides, so the high-coverage baseline of 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 opens with a specific verb and resource: 'Find parcels matching criteria within one or more covered states.' It lists the searchable criteria and explicitly names sibling tools, so an agent can distinguish parcel_search from parcel_enrich, start_run, and parcel_coverage without opening other schemas.

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 states the core requirement that state, bbox, or polygon is required, and it explicitly routes to alternatives: parcel_enrich for a full single-parcel record, start_run for asynchronous multi-page walks, and parcel_coverage for available states and columns. It also notes when owner or mailing-address criteria are unavailable.

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