Skip to main content
Glama

Cook County / Chicago Property Data (free tier, no wallet needed)

Server Details

Cook County / Chicago property by address or PIN: sales, permits, assessments, comps. 100 free/day.

Ownership verified
Status
Healthy
Uptime
100.0% over 75 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct task: address-to-PIN resolution, parcel lookup, full dossier, comparable sales/AVM, and a static sample. The descriptions explicitly clarify overlaps, such as using the parcel lookup for cheap basics versus the dossier for sales, permits, and assessments. No two tools appear to do the same thing.

Naming Consistency5/5

All tool names use lowercase snake_case and follow a verb_noun structure (find_..., get_..., search_...). The verbs vary appropriately by action, matching the example convention of list/create/delete. The names are predictable and readable.

Tool Count5/5

Five tools is well within the ideal 3–15 range for a focused property-data server. Each tool has a clear, non-redundant role: address resolution, parcel basics, full due-diligence dossier, comps/AVM, and a free sample. No tool feels like padding.

Completeness4/5

The surface covers the core read-only workflows: address search, parcel lookup, full dossier (sales, permits, assessments, context), and comparable sales. Minor gaps exist, such as no owner-name search or detailed building characteristics (beds/baths/sqft), which agents would have to work around when adjusting comps. These gaps are noticeable but not fatal for most due-diligence queries.

Available Tools

5 tools
find_chicago_comparable_salesChicago comparable sales / AVM (100 free a day)A
Read-onlyIdempotent
Inspect

FREE for your first 100 calls each day — no wallet, no signup, just call it ($0.10 per call via x402/USDC only after that daily allowance, which resets at 00:00 UTC). Recent arm's-length comparable sales (comps) in the same Cook County assessor neighborhood and property class as the given PIN, each with its distance in metres from the subject, plus an implied low/median/high price range — a derived, lightweight automated valuation (AVM) you won't get from a raw open-data query. Thin markets widen automatically and the response reports which matching rung was used. Comps are NOT normalized for building size or age.

NameRequiredDescriptionDefault
pinYes10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 09-25-306-051-0000). If you only have a street address, call search_chicago_property_by_address first.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/non-destructive/openWorld, and the description still adds substantial behavioral detail: the rate-limit/pricing model and reset window, that thin markets widen the match automatically, that the response reports which matching rung was used, and the important caveat that comps are NOT normalized for building size or age.

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 free-allowance hook, then moves to what the tool returns and its limits. Every sentence carries content, though the pricing clause is somewhat long for a description whose primary job is tool selection.

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?

No output schema exists, and the description compensates by explaining the return shape (comps with distance in metres, implied low/median/high range, which matching rung was used) together with the key statistical caveat. An agent has everything needed to call and interpret it.

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% and there is only one parameter whose schema description already explains the PIN format and the address routing. The description adds no further parameter-level meaning, so the 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?

States a specific verb+resource+scope: arm's-length comparable sales in the same Cook County assessor neighborhood and property class as the given PIN, plus an implied low/median/high AVM range. It explicitly differentiates itself from siblings by noting this is a derived valuation 'you won't get from a raw open-data query' (e.g., get_cook_county_parcel).

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?

Gives clear operational context — first 100 calls/day free with no signup, $0.10/call via x402/USDC after, resetting 00:00 UTC. It does not, however, explicitly say when to prefer this over get_cook_county_property_dossier or the other siblings; the schema (not the description) carries the address-vs-PIN routing hint.

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

get_cook_county_parcelCook County parcel record (100 free a day)A
Read-onlyIdempotent
Inspect

FREE for your first 100 calls each day — no wallet, no signup, just call it ($0.01 per call via x402/USDC only after that daily allowance, which resets at 00:00 UTC). Cook County, IL parcel record for a 10- or 14-digit PIN. Returns: pin, prop_address, prop_city, prop_zip, class, township_name, nbhd_code, municipality, ward, police_district, census_tract_geoid, school_elementary_district, school_secondary_district, walk_score_cmap, airport_noise_dnl, lat, lon, tax_year. The cheap single-property lookup — use get_cook_county_property_dossier for sales, permits and assessments.

NameRequiredDescriptionDefault
pinYes10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 09-25-306-051-0000). If you only have a street address, call search_chicago_property_by_address first.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotency, open-world and non-destructive semantics, so the description is not obligated to restate safety. It adds genuinely new behavioral context not present in structured fields: the free-100-calls-per-day allowance, $0.01 x402/USDC pricing after that, and the UTC reset window. It stops short of describing failure behavior for malformed PINs or unknown parcels, keeping it below a 5.

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 pricing/commercial constraint, then the resource definition, then the return fields, then the sibling routing — a sensible ordering. The enumerated return-field list is long but earns its place because there is no output schema; only minor trimming is possible.

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 no output schema, the description compensates by enumerating the returned fields (pin, prop_address, class, lat/lon, tax_year, etc.), and it covers geographic scope, PIN format via the schema, pricing, and alternatives. It is close to complete for a simple single-parameter lookup; the only gap is error/empty-result 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?

Schema description coverage is 100% and the single pin parameter already carries a regex pattern, an accepted format example, and the address-lookup fallback, so the schema does the heavy lifting and the baseline is 3. The description only restates '10- or 14-digit PIN' and does not add format or validation detail beyond the schema.

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+resource+scope: 'Cook County, IL parcel record for a 10- or 14-digit PIN.' It explicitly differentiates itself from the sibling get_cook_county_property_dossier (sales/permits/assessments) and from search_chicago_property_by_address (address-only entry path), so an agent can route without opening any schema.

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?

Explicitly positions itself as 'the cheap single-property lookup' and names the alternative plus the condition that selects it: get_cook_county_property_dossier 'for sales, permits and assessments.' It also states the free-tier boundary and when paid billing kicks in (after 100 calls/day, reset 00:00 UTC), which is decision-relevant.

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

get_cook_county_property_dossierCook County property dossier (100 free a day)A
Read-onlyIdempotent
Inspect

FREE for your first 100 calls each day — no wallet, no signup, just call it ($0.03 per call via x402/USDC only after that daily allowance, which resets at 00:00 UTC). Full Cook County / Chicago property dossier for a PIN: parcel basics, recorded sales & deed history, building permits, property-tax assessment history, and neighborhood / ward / school / walkability context — the one-call due-diligence record. Permits are LINKED to the PIN here (the raw permit open-data has no PIN; links are derived by address + geo match), so this is a finished record you cannot reproduce with raw open-data queries. Note assessment values are ASSESSED values (~10% of market for most residential classes), not market prices — see assessment_note in the response.

NameRequiredDescriptionDefault
pinYes10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 09-25-306-051-0000). If you only have a street address, call search_chicago_property_by_address first.

TDQS

A3.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered; the description then adds substantial non-annotation context: a 100-call/day free allowance with $0.03 x402/USDC pricing and a 00:00 UTC reset, the fact that permits are geo/address-derived links rather than raw open-data PIN joins, and the critical caveat that assessment values are ~10% of market. These are exactly the behavioral traits an agent cannot infer from structured fields.

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?

Content is mostly substantive, but the opening two sentences lead with billing tiers before the tool's purpose appears, inverting the ideal front-loading. Emphatic capitalization ("LINKED", "ASSESSED") and restated value claims ("you cannot reproduce with raw open-data queries") add rhetorical weight without new operational information.

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 no output schema, the description carries return-value burden, and it handles that well by enumerating dossier sections and flagging the assessment_note divergence. Rich annotations cover the safety profile. Remaining gaps are minor: no error behavior for malformed or unmatched PINs and no statement about response size or latency.

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?

There is a single parameter with 100% schema description coverage — the schema already documents the 10- or 14-digit PIN format, dash allowance, and the address-fallback route. The description adds nothing about the pin argument, so the baseline 3 applies.

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 names a specific verb+resource ("Full Cook County / Chicago property dossier for a PIN") and enumerates the exact contents: parcel basics, recorded sales & deed history, permits, tax assessment history, and neighborhood context. It frames itself as a composite "one-call due-diligence record," which implicitly separates it from the narrower get_cook_county_parcel, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

The only routing guidance ("If you only have a street address, call search_chicago_property_by_address first") lives in the input schema, not the description. The description instead spends its guidance budget on cost tiers, which is purchase context rather than when-to-use-this-vs-alternatives. Usage is therefore only implied.

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

get_free_sampleFree sample of the Chicago / Cook County property data ($0)A
Read-onlyIdempotent
Inspect

FREE ($0, unlimited, no payment, no wallet): a fixed, representative example of every response shape this server returns for Cook County / Chicago property data — address search, parcel, dossier (recorded sales, building permits, assessment history) and comparable sales. Call this FIRST to validate the data structure before anything else. For REAL verified data at $0, call get_cook_county_property_dossier with one of the always-free example PINs 09253060510000, 09253140190000, 09253050270000.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, openWorld, idempotent, non-destructive). The description adds valuable behavioral context beyond annotations: it's 'FREE ($0, unlimited, no payment, no wallet)' and returns representative examples of every response shape. This is more than the annotations provide, though it doesn't detail response structure or size limits, which is acceptable given the sample nature.

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 a single dense paragraph that front-loads the free aspect and the purpose, then gives usage instruction and alternative. Every sentence carries information, though it could be slightly tightened. The structure is logical and not overly verbose for the information conveyed.

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 has no parameters and no output schema, the description compensates fully by explaining exactly what is returned (the list of response shapes), the use case (validation), and the alternative for real data. Nothing an agent needs to call it correctly is missing.

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?

There are zero parameters, so the schema fully covers them (100%). Baseline for zero params is 4. The description doesn't need to add parameter semantics, and it doesn't attempt to. The lack of params is itself a clear signal.

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 returns 'a fixed, representative example of every response shape this server returns for Cook County / Chicago property data' and enumerates the data types (address search, parcel, dossier, comparable sales). It distinguishes itself from siblings by explicitly noting it's a sample for validation, not real data.

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?

Explicitly instructs to 'Call this FIRST to validate the data structure before anything else.' It also provides an alternative for real data: 'For REAL verified data at $0, call get_cook_county_property_dossier with one of the always-free example PINs...' This gives both when-to-use and when-not-to-use guidance.

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

search_chicago_property_by_addressChicago / Cook County address to parcel PIN (always free)A
Read-onlyIdempotent
Inspect

ALWAYS FREE, unlimited, no wallet and no signup. Resolve a Cook County / Chicago street address (full or partial) to its parcel PIN(s) — ranked candidates with address, city, ZIP, a match score and a match_quality flag. A trailing city/state/ZIP is fine ('1 E 113th St, Chicago, IL 60628'). CHECK match_quality: 'exact' is certain, 'likely' shares the house number, and 'weak' means NO candidate matched the house number — do not rely on a weak hit. Call this FIRST when you have an address but not a PIN, then pass a returned pin to get_cook_county_parcel / get_cook_county_property_dossier / find_chicago_comparable_sales. Coverage: Cook County, Illinois — Chicago plus 100+ suburbs including Evanston, Oak Park, Cicero and Skokie.

NameRequiredDescriptionDefault
addressYesFull or partial Cook County / Chicago street address, e.g. '1 E 113th St'. Minimum 4 characters.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover readOnly and idempotent, but the description adds important behavioral details: it ranks candidates, provides a match score and match_quality flag with specific meanings ('exact' certain, 'likely' shares house number, 'weak' no house number match). It also discloses that the service is free and unlimited, which is not in annotations. This gives agents a complete picture of what to expect.

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 front-loaded with the key selling point (free, no signup) and then methodically explains the input, output, and usage. Every sentence carries useful information—coverage, match quality, and the follow-up tools. It is a bit long but not redundant.

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 single-parameter search tool with no output schema, the description is remarkably complete. It explains the output fields (address, city, ZIP, match score, match_quality), the semantics of match_quality, and the expected follow-up actions. An agent would know exactly how to call it and interpret the results.

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 schema already fully describes the 'address' parameter with a min length and example. The description adds a concrete example with trailing city/state/ZIP and clarifies that full or partial addresses are acceptable. While this is helpful, it's a minor addition given the schema already covers the meaning.

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 'Resolve' and the resource 'Cook County / Chicago street address to its parcel PIN(s)'. It also distinguishes this from siblings by explicitly saying to call it FIRST when you have an address but not a PIN, and then pass the pin to sibling tools like get_cook_county_parcel. This leaves no ambiguity about the tool's role.

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 states when to use this tool: 'Call this FIRST when you have an address but not a PIN'. It also explains the match_quality flag and warns not to rely on weak hits, providing clear usage boundaries. It doesn't state when not to use it, but the positive guidance is strong enough.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedfind_chicago_comparable_sales1 field changed
      • changedInput schema / properties / pin / description
        Previous value: -"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 14-08-120-017-0000). If you only have a street address, call search_chicago_property_by_address first."New value: +"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 09-25-306-051-0000). If you only have a street address, call search_chicago_property_by_address first."
    • Changedget_cook_county_parcel1 field changed
      • changedInput schema / properties / pin / description
        Previous value: -"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 14-08-120-017-0000). If you only have a street address, call search_chicago_property_by_address first."New value: +"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 09-25-306-051-0000). If you only have a street address, call search_chicago_property_by_address first."
    • Changedget_cook_county_property_dossier1 field changed
      • changedInput schema / properties / pin / description
        Previous value: -"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 14-08-120-017-0000). If you only have a street address, call search_chicago_property_by_address first."New value: +"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 09-25-306-051-0000). If you only have a street address, call search_chicago_property_by_address first."
  2. 3 tool updates
    • Changedfind_chicago_comparable_sales1 field changed
      • changedInput schema / properties / pin / pattern
        Previous value: -"^[0-9][0-9\\-]{8,17}$"New value: +"^[0-9][0-9\\-]{8,19}$"
    • Changedget_cook_county_parcel1 field changed
      • changedInput schema / properties / pin / pattern
        Previous value: -"^[0-9][0-9\\-]{8,17}$"New value: +"^[0-9][0-9\\-]{8,19}$"
    • Changedget_cook_county_property_dossier1 field changed
      • changedInput schema / properties / pin / pattern
        Previous value: -"^[0-9][0-9\\-]{8,17}$"New value: +"^[0-9][0-9\\-]{8,19}$"
  3. 5 tool updates
    • Changedfind_chicago_comparable_sales2 fields changed
      • addedInput schema / properties / pin / description
        Added value: +"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 14-08-120-017-0000). If you only have a street address, call search_chicago_property_by_address first."
      • addedInput schema / properties / pin / pattern
        Added value: +"^[0-9][0-9\\-]{8,17}$"
    • Changedget_cook_county_parcel2 fields changed
      • addedInput schema / properties / pin / description
        Added value: +"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 14-08-120-017-0000). If you only have a street address, call search_chicago_property_by_address first."
      • addedInput schema / properties / pin / pattern
        Added value: +"^[0-9][0-9\\-]{8,17}$"
    • Changedget_cook_county_property_dossier2 fields changed
      • addedInput schema / properties / pin / description
        Added value: +"10- or 14-digit Cook County PIN (digits; dashes allowed, e.g. 14-08-120-017-0000). If you only have a street address, call search_chicago_property_by_address first."
      • addedInput schema / properties / pin / pattern
        Added value: +"^[0-9][0-9\\-]{8,17}$"
    • Addedget_free_sample
    • Changedsearch_chicago_property_by_address2 fields changed
      • addedInput schema / properties / address / description
        Added value: +"Full or partial Cook County / Chicago street address, e.g. '1 E 113th St'. Minimum 4 characters."
      • addedInput schema / properties / address / minLength
        Added value: +4
  4. 4 tool updates
    • First observedfind_chicago_comparable_sales
    • First observedget_cook_county_parcel
    • First observedget_cook_county_property_dossier
    • First observedsearch_chicago_property_by_address

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    F
    maintenance
    Hosted, pay-per-call MCP server for Cook County / Chicago property records — parcels, recorded sales & deeds, building permits, tax assessments, and comparable sales — by street address or 14-digit PIN. Pay per call via x402 (USDC on Base/Solana); no signup or API key.
    4
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides free property and parcel intelligence using official US government data APIs, county assessor records, and live listings, with tools for hazard risk checks, affordability calculations, and parcel ranking.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides access to comprehensive US property data, including automated valuations, tax history, comparable sales, and ownership details, enabling real estate analysis and market insights.
    418 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources