Skip to main content
Glama

Relate two sets of locations (free)

relate_locations
Read-onlyIdempotent

Free. How one set of places relates to another, by straight-line distance. The base set is the usual dataset / datasets / category plus filters; relate.anchor is the other set, given the same way. Modes: nearest (each base row's k<=3 nearest anchors with miles), count_within (rank base rows by how many anchors are within radius_miles), within_any (base rows with at least one anchor within radius_miles), none_within (base rows with no anchor within radius_miles). Mode next_best (no anchor, needs the base set's state) ranks the candidate NEW sites in that state by how well they match what the base list's own locations typically have nearby, blended with an estimated market capture; every candidate names its matched factors. Mode typically_near answers "who is X typically located near?" — the PROFILE: the kinds of place and brands the base list's locations have nearby far more often than a typical spot (share of locations, lift, average miles), with an answer sentence and a link to the ranked sites; state optional (without one it is computed in the list's top state and the answer says which); a thin sample is said, never sold. Every set (base, anchor) also takes metro (a CBSA code or name) or areas_in (county / ZIP / metro / state ids), like count_locations. Mode near / not_near matches by distance only (near_m metres, default 30) and is how a LIVE public register is compared: give a set as opendata {source, state} instead of a dataset — search_datasets with kind "register" finds the source key. A register is read at the moment you ask, never sold; the answer names its publisher, licence and read time. Returns counts for both sets (rows without coordinates are left out and counted), summary stats, up to 3 preview rows, the price of the full answer (base rows plus the anchor rows named, each at its dataset's per-row rate, one card fee) and how to buy it with query_locations or create_query_checkout using the same arguments. Example: {"dataset": "", "state": "VA", "relate": {"mode": "nearest", "k": 1, "anchor": {"dataset": "", "metro": "Richmond"}}}. Profile: {"dataset": "", "relate": {"mode": "typically_near"}}. Live register: {"dataset": "ymca", "state": "NY", "relate": {"mode": "near", "near_m": 30, "anchor": {"opendata": {"source": "data.ny.gov/cb42-qumz", "state": "NY"}}}}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipNo
cityNo
nearNoDistance search on lists with coordinates: ONE of place, zip, lat+lng or points, with radius_miles or drive_minutes (not both).
metroNoOnly rows in one metro area (CBSA): its 5-digit code ("37980") or its name ("Philadelphia", "Philadelphia, PA"). The same as areas_in {"by": "metro", "ids": [code]}.
stateNo
totalNoBase rows wanted, first in answer order
whereNo
countyNo
relateYesRelate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. same_place / not_same_place: base rows that are (or are not) the same physical place as a row of each set — same address, or within 60 m sharing a name word — with every region of the overlap counted; N-way with anchors, also and not_also. near / not_near: the same N-way shape matched by DISTANCE ONLY, within near_m metres (default 30) — the rule for a live open-data register given as a set's opendata. next_best: no anchor; needs the base set's state — the candidate sites in that state ranked by how well they match what the base list's own locations typically have nearby, blended with an estimated market capture. typically_near: the PROFILE of the same analysis, no anchor, state optional — what the base list's locations typically have nearby (the signature: each kind of place or brand near at least 15% of them and at least 1.5x as often as near a typical commercial spot), with a link to the ranked sites; without a state it is computed in the list's top state and the answer says which. Under 10 locations the pattern is shown with a thin-sample note and nothing is sold. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows. overlap: a TERRITORY question, not a row count — buffer every base row and every anchor row by radius_miles (straight-line, default 3, 1-25), union each into one shape, and answer what share of the base's shape the anchor's shape covers, plus each base row's own share (lowest first finds the whitespace rows with no nearby anchor territory). Free: the shares, the two territories in square miles and the headline percentage. Paid: the base rows with their own share, at that list's per-row rate.
datasetNo
excludeNoDataset slugs left out wherever the set expands: a category minus one of its members (a list's competitors are its own category with itself excluded).
areas_inNoOnly rows in these areas, e.g. {"by": "county", "ids": ["51760"]} for Richmond city, VA — the ids count_by_area returns, placed the same way (/find: areas_in=county:51760).
categoryNo
datasetsNo
opendataNoINSTEAD of dataset / datasets / category: a public register read LIVE from the body that publishes it, at the moment of the question — e.g. a state's licensed child-care programs. Matched by distance only (relate.mode near / not_near, near_m metres, default 30), because the publisher's own coordinates are the evidence. It is not a list we sell: the answer gives counts and a preview, names the publisher, the licence and when it was read, and prices only the rows of OUR lists. E.g. {"dataset": "ymca", "state": "NY", "relate": {"mode": "near", "near_m": 30, "anchor": {"opendata": {"source": "data.ny.gov/cb42-qumz", "state": "NY"}}}}.
area_whereNoOnly rows whose county/zip/state/metro meets a Census condition, each as "<kind>:<attribute><op><value>" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. "county:population>1000000". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services; by detailed NAICS industry (1999 codes, 2 to 6 digits, the Census's titles), naics_<code>_establishments (county/metro/state/zip), naics_<code>_employees and naics_<code>_payroll (county/metro/state), e.g. naics_4471_establishments (gasoline stations naics 4471 establishments), naics_8111_establishments (automotive repair and maintenance establishments), naics_238990_establishments (all other specialty trade contractors naics 238990 establishments), naics_561621_establishments (security systems services except locksmiths establishments); 262 nclimdiv fields (NOAA nClimDiv county climate normals, 1991–2020, and 2025 actuals (release 2026-09-04)): january_high (January high), february_high (February high), march_high (March high), april_high (April high), may_high (May high), june_high (June high), …; 190 storms fields (NOAA Storm Events Database, 2016–2025, events a year by county): astronomical_low_tide_events (astronomical low tide events a year), avalanche_events (avalanche events a year), blizzard_events (blizzard events a year), coastal_flood_events (coastal flood events a year), cold_or_wind_chill_events (cold or wind chill events a year), debris_flow_events (debris flow events a year), …; 127 normals-annual fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): annual_cooling_degree_days_base_40 (annual cooling degree days base 40), annual_cooling_degree_days_base_45 (annual cooling degree days base 45), annual_cooling_degree_days_base_50 (annual cooling degree days base 50), annual_cooling_degree_days_base_55 (annual cooling degree days base 55), annual_cooling_degree_days_base_57 (annual cooling degree days base 57), annual_cooling_degree_days_base_60 (annual cooling degree days base 60), …; 67 normals-winter fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): winter_cooling_degree_days_base_40 (winter cooling degree days base 40), winter_cooling_degree_days_base_45 (winter cooling degree days base 45), winter_cooling_degree_days_base_50 (winter cooling degree days base 50), winter_cooling_degree_days_base_55 (winter cooling degree days base 55), winter_cooling_degree_days_base_57 (winter cooling degree days base 57), winter_cooling_degree_days_base_60 (winter cooling degree days base 60), …; 67 normals-spring fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): spring_cooling_degree_days_base_40 (spring cooling degree days base 40), spring_cooling_degree_days_base_45 (spring cooling degree days base 45), spring_cooling_degree_days_base_50 (spring cooling degree days base 50), spring_cooling_degree_days_base_55 (spring cooling degree days base 55), spring_cooling_degree_days_base_57 (spring cooling degree days base 57), spring_cooling_degree_days_base_60 (spring cooling degree days base 60), …; 67 normals-summer fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): summer_cooling_degree_days_base_40 (summer cooling degree days base 40), summer_cooling_degree_days_base_45 (summer cooling degree days base 45), summer_cooling_degree_days_base_50 (summer cooling degree days base 50), summer_cooling_degree_days_base_55 (summer cooling degree days base 55), summer_cooling_degree_days_base_57 (summer cooling degree days base 57), summer_cooling_degree_days_base_60 (summer cooling degree days base 60), …; 67 normals-fall fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): fall_cooling_degree_days_base_40 (fall cooling degree days base 40), fall_cooling_degree_days_base_45 (fall cooling degree days base 45), fall_cooling_degree_days_base_50 (fall cooling degree days base 50), fall_cooling_degree_days_base_55 (fall cooling degree days base 55), fall_cooling_degree_days_base_57 (fall cooling degree days base 57), fall_cooling_degree_days_base_60 (fall cooling degree days base 60), …; 15 hourly fields (NOAA U.S. Climate Normals 1991–2020, hourly station normals summarised over the year, by county): hourly_temperature (round the clock temperature), dew_point (dew point), sea_level_pressure (sea level pressure), cooling_degree_hours (cooling degree hours), heating_degree_hours (heating degree hours), clear_sky_share (share of clear hours), …; 51 b01001 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_under_18 (share of residents aged 0 to 17), pct_5_to_14 (share of residents aged 5 to 14), b01001_001 (sex by age total), b01001_002 (sex by age male), b01001_003 (sex by age male 0 to 4 years), b01001_004 (sex by age male 5 to 9 years), …; 20 b11005 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_households_with_people_under_18 (share of households with people aged 0 to 17), b11005_001 (households by presence of people 0 to 17 years by household type total), b11005_002 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years), b11005_003 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households), b11005_004 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households married-couple family), b11005_005 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households other family), …; 3 b25003 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b25003_001 (tenure total), b25003_002 (tenure owner occupied), b25003_003 (tenure renter occupied); 13 b08303 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b08303_001 (travel time to work total), b08303_002 (travel time to work 0 to 4 minutes), b08303_003 (travel time to work 5 to 9 minutes), b08303_004 (travel time to work 10 to 14 minutes), b08303_005 (travel time to work 15 to 19 minutes), b08303_006 (travel time to work 20 to 24 minutes), …; 7 b23025 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b23025_001 (employment status for the population 16 years or older total), b23025_002 (employment status for the population 16 years or older in labor force), b23025_003 (employment status for the population 16 years or older in labor force civilian labor force), b23025_004 (employment status for the population 16 years or older in labor force civilian labor force employed), b23025_005 (employment status for the population 16 years or older in labor force civilian labor force unemployed), b23025_006 (employment status for the population 16 years or older in labor force armed forces), …; 30 buildings fields (Overture Maps buildings, release 2026-08-19.0, summed per area): buildings (buildings), multi_story_buildings (multi-story buildings), mid_rise_buildings (mid-rise buildings), high_rise_buildings (high-rise buildings), buildings_2_floors_plus (buildings with 2 published floors and up), buildings_4_floors_plus (buildings with 4 published floors and up), …; 13 building-types fields (Overture Maps buildings, release 2026-08-19.0, summed per area): residential_buildings (residential buildings), outbuilding_buildings (outbuilding buildings), commercial_buildings (commercial buildings), industrial_buildings (industrial buildings), education_buildings (education buildings), agricultural_buildings (agricultural buildings), …; 43 building-classes fields (Overture Maps buildings, release 2026-08-19.0, summed per area): house_class_buildings (house class buildings), detached_class_buildings (detached class buildings), residential_class_buildings (residential class buildings), garage_class_buildings (garage class buildings), apartments_class_buildings (apartments class buildings), shed_class_buildings (shed class buildings), …; 42 building-classes-2 fields (Overture Maps buildings, release 2026-08-19.0, summed per area): religious_class_buildings (religious class buildings), civic_class_buildings (civic class buildings), fire_station_class_buildings (fire station class buildings), bungalow_class_buildings (bungalow class buildings), pavilion_class_buildings (pavilion class buildings), hut_class_buildings (hut class buildings), …; 27 building-roofs fields (Overture Maps buildings, release 2026-08-19.0, summed per area): gabled_roof_buildings (buildings with a gabled roof), flat_roof_buildings (buildings with a flat roof), hipped_roof_buildings (buildings with a hipped roof), mansard_roof_buildings (buildings with a mansard roof), round_roof_buildings (buildings with a round roof), pyramidal_roof_buildings (buildings with a pyramidal roof), …; 11 building-facades fields (Overture Maps buildings, release 2026-08-19.0, summed per area): brick_facade_buildings (buildings with a brick facade), wood_facade_buildings (buildings with a wood facade), metal_facade_buildings (buildings with a metal facade), concrete_facade_buildings (buildings with a concrete facade), plaster_facade_buildings (buildings with a plaster facade), plastic_facade_buildings (buildings with a plastic facade), ….
area_columnsNoCensus and NOAA facts added to EVERY ROW as columns named <kind>_<attribute>, each as "<kind>:<attribute>,<attribute>", e.g. "county:population,median_household_income" — the county / ZIP / metro / state figures beside each location, in the preview and in the file you buy. Free. The same attribute words area_where takes (listed there).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • addedInput schema / properties / areas_in
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Only rows in these areas, e.g. {\"by\": \"county\", \"ids\": [\"51760\"]} for Richmond city, VA — the ids count_by_area returns, placed the same way (/find: areas_in=county:51760).",
      +  "properties": {
      +    "by": {
      +      "enum": [
      +        "county",
      +        "zip",
      +        "state",
      +        "metro"
      +      ],
      +      "type": "string"
      +    },
      +    "ids": {
      +      "description": "County FIPS, 5-digit ZIP, CBSA code or state code — the `id` of a count_by_area row",
      +      "items": {
      +        "type": "string"
      +      },
      +      "maxItems": 200,
      +      "minItems": 1,
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "by",
      +    "ids"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / metro
      Added value: +{
      +  "description": "Only rows in one metro area (CBSA): its 5-digit code (\"37980\") or its name (\"Philadelphia\", \"Philadelphia, PA\"). The same as areas_in {\"by\": \"metro\", \"ids\": [code]}.",
      +  "type": "string"
      +}
    • changedInput schema / properties / near / properties / drive_minutes / description
      Previous value: -"Instead of radius_miles: only rows a car can reach from the point (or from any of the points) in this many minutes, typical road speeds, no live traffic. On this server: 5-60 minutes; the routing provider draws no longer band, so a 2- or 4-hour reach is not available here — use the largest band, 60 minutes, or radius_miles. One routing call per point per request; on /find it needs an issued key (radius is free)."New value: +"Instead of radius_miles: only rows a car can reach from the point (or from any of the points) in this many minutes, typical road speeds, no live traffic. On this server: 5-60 minutes; the routing provider draws no longer band, so a 2- or 4-hour reach is not available here — use the largest band, 60 minutes, or radius_miles. One routing call per point per request; on /find it needs an issued key (radius is free). Drive time depends on an outside routing service: when an answer says drive-time search is unavailable or not switched on, ask the same question again with radius_miles (straight-line miles, always available, free)."
    • addedInput schema / properties / opendata
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "INSTEAD of dataset / datasets / category: a public register read LIVE from the body that publishes it, at the moment of the question — e.g. a state's licensed child-care programs. Matched by distance only (relate.mode near / not_near, near_m metres, default 30), because the publisher's own coordinates are the evidence. It is not a list we sell: the answer gives counts and a preview, names the publisher, the licence and when it was read, and prices only the rows of OUR lists. E.g. {\"dataset\": \"ymca\", \"state\": \"NY\", \"relate\": {\"mode\": \"near\", \"near_m\": 30, \"anchor\": {\"opendata\": {\"source\": \"data.ny.gov/cb42-qumz\", \"state\": \"NY\"}}}}.",
      +  "properties": {
      +    "source": {
      +      "description": "The register's key, \"<domain>/<id>\" — search_datasets with kind \"register\" finds it, e.g. \"data.ny.gov/cb42-qumz\" (New York's licensed child-care programs)",
      +      "type": "string"
      +    },
      +    "state": {
      +      "description": "Cut the register to one state, e.g. \"NY\" (/find: opendata_state=NY)",
      +      "type": "string"
      +    },
      +    "where": {
      +      "description": "Conditions on the register's own columns, each \"column:op:value\" with op eq | starts_with | contains | not_blank, e.g. [\"license_status:starts_with:Active\"] (/find: opendata_where=)",
      +      "items": {
      +        "type": "string"
      +      },
      +      "maxItems": 12,
      +      "type": "array"
      +    },
      +    "zips": {
      +      "description": "Or cut it to 5-digit ZIP codes, e.g. [\"78114\", \"78154\"] (/find: opendata_zips=78114,78154)",
      +      "items": {
      +        "type": "string"
      +      },
      +      "minItems": 1,
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "source"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / relate / description
      Previous value: -"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. same_place / not_same_place: base rows that are (or are not) the same physical place as a row of each set — same address, or within 60 m sharing a name word — with every region of the overlap counted; N-way with anchors, also and not_also. next_best: no anchor; needs the base set's state — the candidate sites in that state ranked by how well they match what the base list's own locations typically have nearby, blended with an estimated market capture. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows. overlap: a TERRITORY question, not a row count — buffer every base row and every anchor row by radius_miles (straight-line, default 3, 1-25), union each into one shape, and answer what share of the base's shape the anchor's shape covers, plus each base row's own share (lowest first finds the whitespace rows with no nearby anchor territory). Free: the shares, the two territories in square miles and the headline percentage. Paid: the base rows with their own share, at that list's per-row rate."New value: +"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. same_place / not_same_place: base rows that are (or are not) the same physical place as a row of each set — same address, or within 60 m sharing a name word — with every region of the overlap counted; N-way with anchors, also and not_also. near / not_near: the same N-way shape matched by DISTANCE ONLY, within near_m metres (default 30) — the rule for a live open-data register given as a set's opendata. next_best: no anchor; needs the base set's state — the candidate sites in that state ranked by how well they match what the base list's own locations typically have nearby, blended with an estimated market capture. typically_near: the PROFILE of the same analysis, no anchor, state optional — what the base list's locations typically have nearby (the signature: each kind of place or brand near at least 15% of them and at least 1.5x as often as near a typical commercial spot), with a link to the ranked sites; without a state it is computed in the list's top state and the answer says which. Under 10 locations the pattern is shown with a thin-sample note and nothing is sold. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows. overlap: a TERRITORY question, not a row count — buffer every base row and every anchor row by radius_miles (straight-line, default 3, 1-25), union each into one shape, and answer what share of the base's shape the anchor's shape covers, plus each base row's own share (lowest first finds the whitespace rows with no nearby anchor territory). Free: the shares, the two territories in square miles and the headline percentage. Paid: the base rows with their own share, at that list's per-row rate."
    • changedInput schema / properties / relate / properties / also / description
      Previous value: -"same_place only: the sets a base row must be the same place as some row of, by label (\"b\", \"c\"); default every set"New value: +"same_place / near only: the sets a base row must be the same place as (near: within near_m of) some row of, by label (\"b\", \"c\"); default every set"
    • changedInput schema / properties / relate / properties / anchor / description
      Previous value: -"The other set: dataset, datasets or category, plus filters. Every mode but next_best needs it"New value: +"The other set: dataset, datasets or category, plus filters. Every mode but next_best and typically_near needs it"
    • addedInput schema / properties / relate / properties / anchor / properties / areas_in
      Added value: +{
      +  "$ref": "#/properties/areas_in"
      +}
    • addedInput schema / properties / relate / properties / anchor / properties / metro
      Added value: +{
      +  "$ref": "#/properties/metro"
      +}
    • addedInput schema / properties / relate / properties / anchor / properties / opendata
      Added value: +{
      +  "$ref": "#/properties/opendata",
      +  "description": "INSTEAD of dataset / datasets / category: a public register read LIVE from the body that publishes it, at the moment of the question — e.g. a state's licensed child-care programs. Matched by distance only (relate.mode near / not_near, near_m metres, default 30), because the publisher's own coordinates are the evidence. It is not a list we sell: the answer gives counts and a preview, names the publisher, the licence and when it was read, and prices only the rows of OUR lists. E.g. {\"dataset\": \"ymca\", \"state\": \"NY\", \"relate\": {\"mode\": \"near\", \"near_m\": 30, \"anchor\": {\"opendata\": {\"source\": \"data.ny.gov/cb42-qumz\", \"state\": \"NY\"}}}}."
      +}
    • changedInput schema / properties / relate / properties / anchors / description
      Previous value: -"same_place only: further sets (c, d) after anchor (b), each given the same way"New value: +"same_place (and near) only: further sets (c, d) after anchor (b), each given the same way"
    • addedInput schema / properties / relate / properties / anchors / items / properties / areas_in
      Added value: +{
      +  "$ref": "#/properties/areas_in"
      +}
    • addedInput schema / properties / relate / properties / anchors / items / properties / metro
      Added value: +{
      +  "$ref": "#/properties/metro"
      +}
    • addedInput schema / properties / relate / properties / anchors / items / properties / opendata
      Added value: +{
      +  "$ref": "#/properties/opendata",
      +  "description": "INSTEAD of dataset / datasets / category: a public register read LIVE from the body that publishes it, at the moment of the question — e.g. a state's licensed child-care programs. Matched by distance only (relate.mode near / not_near, near_m metres, default 30), because the publisher's own coordinates are the evidence. It is not a list we sell: the answer gives counts and a preview, names the publisher, the licence and when it was read, and prices only the rows of OUR lists. E.g. {\"dataset\": \"ymca\", \"state\": \"NY\", \"relate\": {\"mode\": \"near\", \"near_m\": 30, \"anchor\": {\"opendata\": {\"source\": \"data.ny.gov/cb42-qumz\", \"state\": \"NY\"}}}}."
      +}
    • changedInput schema / properties / relate / properties / k / description
      Previous value: -"nearest: how many anchors per base row. next_best: H3 rings counted as nearby, 1-3 (default 2, about a mile)"New value: +"nearest: how many anchors per base row. next_best / typically_near: H3 rings counted as nearby, 1-3 (default 2, about a mile)"
    • changedInput schema / properties / relate / properties / mode / description
      Previous value: -"nearest | count_within | within_any | none_within | same_place | not_same_place | next_best | overlap"New value: +"nearest | count_within | within_any | none_within | same_place | not_same_place | near | not_near | next_best | typically_near | overlap"
    • changedInput schema / properties / relate / properties / mode / enum
      Previous value: -[
      -  "nearest",
      -  "count_within",
      -  "within_any",
      -  "none_within",
      -  "same_place",
      -  "not_same_place",
      -  "next_best",
      -  "overlap"
      -]New value: +[
      +  "nearest",
      +  "count_within",
      +  "within_any",
      +  "none_within",
      +  "same_place",
      +  "not_same_place",
      +  "near",
      +  "not_near",
      +  "next_best",
      +  "typically_near",
      +  "overlap"
      +]
    • addedInput schema / properties / relate / properties / near_m
      Added value: +{
      +  "description": "near / not_near only: how close, in metres, a place of the other set must be (default 30, 10-200). Distance only — no name or address is compared. /find: near_m=30.",
      +  "maximum": 200,
      +  "minimum": 10,
      +  "type": "integer"
      +}
    • changedInput schema / properties / relate / properties / not_also / description
      Previous value: -"same_place only: the sets a base row must NOT be the same place as any row of; not_same_place with one set is [\"b\"]"New value: +"same_place / near only: the sets a base row must NOT match any row of; not_same_place (not_near) with one set is [\"b\"]"
    • changedInput schema / properties / relate / properties / within_drive_minutes / description
      Previous value: -"Drive time instead of radius_miles (5-60 minutes). count_within / within_any / none_within only; at most 60 base rows."New value: +"Drive time instead of radius_miles (5-60 minutes). count_within / within_any / none_within only; at most 60 base rows. Drive time depends on an outside routing service: when an answer says drive-time search is unavailable or not switched on, ask the same question again with radius_miles (straight-line miles, always available, free)."
  2. Changed1 schema field changed
    • changedInput schema / properties / area_where / description
      Previous value: -"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services; by detailed NAICS industry (1999 codes, 2 to 6 digits, the Census's titles), naics_<code>_establishments (county/metro/state/zip), naics_<code>_employees and naics_<code>_payroll (county/metro/state), e.g. naics_4471_establishments (gasoline stations naics 4471 establishments), naics_8111_establishments (automotive repair and maintenance establishments), naics_238990_establishments (all other specialty trade contractors naics 238990 establishments), naics_561621_establishments (security systems services except locksmiths establishments); 262 nclimdiv fields (NOAA nClimDiv county climate normals, 1991–2020, and 2025 actuals (release 2026-09-04)): january_high (January high), february_high (February high), march_high (March high), april_high (April high), may_high (May high), june_high (June high), …; 190 storms fields (NOAA Storm Events Database, 2016–2025, events a year by county): astronomical_low_tide_events (astronomical low tide events a year), avalanche_events (avalanche events a year), blizzard_events (blizzard events a year), coastal_flood_events (coastal flood events a year), cold_or_wind_chill_events (cold or wind chill events a year), debris_flow_events (debris flow events a year), …; 127 normals-annual fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): annual_cooling_degree_days_base_40 (annual cooling degree days base 40), annual_cooling_degree_days_base_45 (annual cooling degree days base 45), annual_cooling_degree_days_base_50 (annual cooling degree days base 50), annual_cooling_degree_days_base_55 (annual cooling degree days base 55), annual_cooling_degree_days_base_57 (annual cooling degree days base 57), annual_cooling_degree_days_base_60 (annual cooling degree days base 60), …; 67 normals-winter fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): winter_cooling_degree_days_base_40 (winter cooling degree days base 40), winter_cooling_degree_days_base_45 (winter cooling degree days base 45), winter_cooling_degree_days_base_50 (winter cooling degree days base 50), winter_cooling_degree_days_base_55 (winter cooling degree days base 55), winter_cooling_degree_days_base_57 (winter cooling degree days base 57), winter_cooling_degree_days_base_60 (winter cooling degree days base 60), …; 67 normals-spring fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): spring_cooling_degree_days_base_40 (spring cooling degree days base 40), spring_cooling_degree_days_base_45 (spring cooling degree days base 45), spring_cooling_degree_days_base_50 (spring cooling degree days base 50), spring_cooling_degree_days_base_55 (spring cooling degree days base 55), spring_cooling_degree_days_base_57 (spring cooling degree days base 57), spring_cooling_degree_days_base_60 (spring cooling degree days base 60), …; 67 normals-summer fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): summer_cooling_degree_days_base_40 (summer cooling degree days base 40), summer_cooling_degree_days_base_45 (summer cooling degree days base 45), summer_cooling_degree_days_base_50 (summer cooling degree days base 50), summer_cooling_degree_days_base_55 (summer cooling degree days base 55), summer_cooling_degree_days_base_57 (summer cooling degree days base 57), summer_cooling_degree_days_base_60 (summer cooling degree days base 60), …; 67 normals-fall fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): fall_cooling_degree_days_base_40 (fall cooling degree days base 40), fall_cooling_degree_days_base_45 (fall cooling degree days base 45), fall_cooling_degree_days_base_50 (fall cooling degree days base 50), fall_cooling_degree_days_base_55 (fall cooling degree days base 55), fall_cooling_degree_days_base_57 (fall cooling degree days base 57), fall_cooling_degree_days_base_60 (fall cooling degree days base 60), …; 15 hourly fields (NOAA U.S. Climate Normals 1991–2020, hourly station normals summarised over the year, by county): hourly_temperature (round the clock temperature), dew_point (dew point), sea_level_pressure (sea level pressure), cooling_degree_hours (cooling degree hours), heating_degree_hours (heating degree hours), clear_sky_share (share of clear hours), …; 51 b01001 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_under_18 (share of residents aged 0 to 17), pct_5_to_14 (share of residents aged 5 to 14), b01001_001 (sex by age total), b01001_002 (sex by age male), b01001_003 (sex by age male 0 to 4 years), b01001_004 (sex by age male 5 to 9 years), …; 20 b11005 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_households_with_people_under_18 (share of households with people aged 0 to 17), b11005_001 (households by presence of people 0 to 17 years by household type total), b11005_002 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years), b11005_003 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households), b11005_004 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households married-couple family), b11005_005 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households other family), …; 3 b25003 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b25003_001 (tenure total), b25003_002 (tenure owner occupied), b25003_003 (tenure renter occupied); 13 b08303 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b08303_001 (travel time to work total), b08303_002 (travel time to work 0 to 4 minutes), b08303_003 (travel time to work 5 to 9 minutes), b08303_004 (travel time to work 10 to 14 minutes), b08303_005 (travel time to work 15 to 19 minutes), b08303_006 (travel time to work 20 to 24 minutes), …; 7 b23025 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b23025_001 (employment status for the population 16 years or older total), b23025_002 (employment status for the population 16 years or older in labor force), b23025_003 (employment status for the population 16 years or older in labor force civilian labor force), b23025_004 (employment status for the population 16 years or older in labor force civilian labor force employed), b23025_005 (employment status for the population 16 years or older in labor force civilian labor force unemployed), b23025_006 (employment status for the population 16 years or older in labor force armed forces), …."New value: +"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services; by detailed NAICS industry (1999 codes, 2 to 6 digits, the Census's titles), naics_<code>_establishments (county/metro/state/zip), naics_<code>_employees and naics_<code>_payroll (county/metro/state), e.g. naics_4471_establishments (gasoline stations naics 4471 establishments), naics_8111_establishments (automotive repair and maintenance establishments), naics_238990_establishments (all other specialty trade contractors naics 238990 establishments), naics_561621_establishments (security systems services except locksmiths establishments); 262 nclimdiv fields (NOAA nClimDiv county climate normals, 1991–2020, and 2025 actuals (release 2026-09-04)): january_high (January high), february_high (February high), march_high (March high), april_high (April high), may_high (May high), june_high (June high), …; 190 storms fields (NOAA Storm Events Database, 2016–2025, events a year by county): astronomical_low_tide_events (astronomical low tide events a year), avalanche_events (avalanche events a year), blizzard_events (blizzard events a year), coastal_flood_events (coastal flood events a year), cold_or_wind_chill_events (cold or wind chill events a year), debris_flow_events (debris flow events a year), …; 127 normals-annual fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): annual_cooling_degree_days_base_40 (annual cooling degree days base 40), annual_cooling_degree_days_base_45 (annual cooling degree days base 45), annual_cooling_degree_days_base_50 (annual cooling degree days base 50), annual_cooling_degree_days_base_55 (annual cooling degree days base 55), annual_cooling_degree_days_base_57 (annual cooling degree days base 57), annual_cooling_degree_days_base_60 (annual cooling degree days base 60), …; 67 normals-winter fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): winter_cooling_degree_days_base_40 (winter cooling degree days base 40), winter_cooling_degree_days_base_45 (winter cooling degree days base 45), winter_cooling_degree_days_base_50 (winter cooling degree days base 50), winter_cooling_degree_days_base_55 (winter cooling degree days base 55), winter_cooling_degree_days_base_57 (winter cooling degree days base 57), winter_cooling_degree_days_base_60 (winter cooling degree days base 60), …; 67 normals-spring fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): spring_cooling_degree_days_base_40 (spring cooling degree days base 40), spring_cooling_degree_days_base_45 (spring cooling degree days base 45), spring_cooling_degree_days_base_50 (spring cooling degree days base 50), spring_cooling_degree_days_base_55 (spring cooling degree days base 55), spring_cooling_degree_days_base_57 (spring cooling degree days base 57), spring_cooling_degree_days_base_60 (spring cooling degree days base 60), …; 67 normals-summer fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): summer_cooling_degree_days_base_40 (summer cooling degree days base 40), summer_cooling_degree_days_base_45 (summer cooling degree days base 45), summer_cooling_degree_days_base_50 (summer cooling degree days base 50), summer_cooling_degree_days_base_55 (summer cooling degree days base 55), summer_cooling_degree_days_base_57 (summer cooling degree days base 57), summer_cooling_degree_days_base_60 (summer cooling degree days base 60), …; 67 normals-fall fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): fall_cooling_degree_days_base_40 (fall cooling degree days base 40), fall_cooling_degree_days_base_45 (fall cooling degree days base 45), fall_cooling_degree_days_base_50 (fall cooling degree days base 50), fall_cooling_degree_days_base_55 (fall cooling degree days base 55), fall_cooling_degree_days_base_57 (fall cooling degree days base 57), fall_cooling_degree_days_base_60 (fall cooling degree days base 60), …; 15 hourly fields (NOAA U.S. Climate Normals 1991–2020, hourly station normals summarised over the year, by county): hourly_temperature (round the clock temperature), dew_point (dew point), sea_level_pressure (sea level pressure), cooling_degree_hours (cooling degree hours), heating_degree_hours (heating degree hours), clear_sky_share (share of clear hours), …; 51 b01001 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_under_18 (share of residents aged 0 to 17), pct_5_to_14 (share of residents aged 5 to 14), b01001_001 (sex by age total), b01001_002 (sex by age male), b01001_003 (sex by age male 0 to 4 years), b01001_004 (sex by age male 5 to 9 years), …; 20 b11005 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_households_with_people_under_18 (share of households with people aged 0 to 17), b11005_001 (households by presence of people 0 to 17 years by household type total), b11005_002 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years), b11005_003 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households), b11005_004 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households married-couple family), b11005_005 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households other family), …; 3 b25003 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b25003_001 (tenure total), b25003_002 (tenure owner occupied), b25003_003 (tenure renter occupied); 13 b08303 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b08303_001 (travel time to work total), b08303_002 (travel time to work 0 to 4 minutes), b08303_003 (travel time to work 5 to 9 minutes), b08303_004 (travel time to work 10 to 14 minutes), b08303_005 (travel time to work 15 to 19 minutes), b08303_006 (travel time to work 20 to 24 minutes), …; 7 b23025 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b23025_001 (employment status for the population 16 years or older total), b23025_002 (employment status for the population 16 years or older in labor force), b23025_003 (employment status for the population 16 years or older in labor force civilian labor force), b23025_004 (employment status for the population 16 years or older in labor force civilian labor force employed), b23025_005 (employment status for the population 16 years or older in labor force civilian labor force unemployed), b23025_006 (employment status for the population 16 years or older in labor force armed forces), …; 30 buildings fields (Overture Maps buildings, release 2026-08-19.0, summed per area): buildings (buildings), multi_story_buildings (multi-story buildings), mid_rise_buildings (mid-rise buildings), high_rise_buildings (high-rise buildings), buildings_2_floors_plus (buildings with 2 published floors and up), buildings_4_floors_plus (buildings with 4 published floors and up), …; 13 building-types fields (Overture Maps buildings, release 2026-08-19.0, summed per area): residential_buildings (residential buildings), outbuilding_buildings (outbuilding buildings), commercial_buildings (commercial buildings), industrial_buildings (industrial buildings), education_buildings (education buildings), agricultural_buildings (agricultural buildings), …; 43 building-classes fields (Overture Maps buildings, release 2026-08-19.0, summed per area): house_class_buildings (house class buildings), detached_class_buildings (detached class buildings), residential_class_buildings (residential class buildings), garage_class_buildings (garage class buildings), apartments_class_buildings (apartments class buildings), shed_class_buildings (shed class buildings), …; 42 building-classes-2 fields (Overture Maps buildings, release 2026-08-19.0, summed per area): religious_class_buildings (religious class buildings), civic_class_buildings (civic class buildings), fire_station_class_buildings (fire station class buildings), bungalow_class_buildings (bungalow class buildings), pavilion_class_buildings (pavilion class buildings), hut_class_buildings (hut class buildings), …; 27 building-roofs fields (Overture Maps buildings, release 2026-08-19.0, summed per area): gabled_roof_buildings (buildings with a gabled roof), flat_roof_buildings (buildings with a flat roof), hipped_roof_buildings (buildings with a hipped roof), mansard_roof_buildings (buildings with a mansard roof), round_roof_buildings (buildings with a round roof), pyramidal_roof_buildings (buildings with a pyramidal roof), …; 11 building-facades fields (Overture Maps buildings, release 2026-08-19.0, summed per area): brick_facade_buildings (buildings with a brick facade), wood_facade_buildings (buildings with a wood facade), metal_facade_buildings (buildings with a metal facade), concrete_facade_buildings (buildings with a concrete facade), plaster_facade_buildings (buildings with a plaster facade), plastic_facade_buildings (buildings with a plastic facade), …."
  3. Changed1 schema field changed
    • changedInput schema / properties / area_where / description
      Previous value: -"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services; 262 nclimdiv fields (NOAA nClimDiv county climate normals, 1991–2020, and 2025 actuals (release 2026-09-04)): january_high (January high), february_high (February high), march_high (March high), april_high (April high), may_high (May high), june_high (June high), …; 190 storms fields (NOAA Storm Events Database, 2016–2025, events a year by county): astronomical_low_tide_events (astronomical low tide events a year), avalanche_events (avalanche events a year), blizzard_events (blizzard events a year), coastal_flood_events (coastal flood events a year), cold_or_wind_chill_events (cold or wind chill events a year), debris_flow_events (debris flow events a year), …; 127 normals-annual fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): annual_cooling_degree_days_base_40 (annual cooling degree days base 40), annual_cooling_degree_days_base_45 (annual cooling degree days base 45), annual_cooling_degree_days_base_50 (annual cooling degree days base 50), annual_cooling_degree_days_base_55 (annual cooling degree days base 55), annual_cooling_degree_days_base_57 (annual cooling degree days base 57), annual_cooling_degree_days_base_60 (annual cooling degree days base 60), …; 67 normals-winter fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): winter_cooling_degree_days_base_40 (winter cooling degree days base 40), winter_cooling_degree_days_base_45 (winter cooling degree days base 45), winter_cooling_degree_days_base_50 (winter cooling degree days base 50), winter_cooling_degree_days_base_55 (winter cooling degree days base 55), winter_cooling_degree_days_base_57 (winter cooling degree days base 57), winter_cooling_degree_days_base_60 (winter cooling degree days base 60), …; 67 normals-spring fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): spring_cooling_degree_days_base_40 (spring cooling degree days base 40), spring_cooling_degree_days_base_45 (spring cooling degree days base 45), spring_cooling_degree_days_base_50 (spring cooling degree days base 50), spring_cooling_degree_days_base_55 (spring cooling degree days base 55), spring_cooling_degree_days_base_57 (spring cooling degree days base 57), spring_cooling_degree_days_base_60 (spring cooling degree days base 60), …; 67 normals-summer fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): summer_cooling_degree_days_base_40 (summer cooling degree days base 40), summer_cooling_degree_days_base_45 (summer cooling degree days base 45), summer_cooling_degree_days_base_50 (summer cooling degree days base 50), summer_cooling_degree_days_base_55 (summer cooling degree days base 55), summer_cooling_degree_days_base_57 (summer cooling degree days base 57), summer_cooling_degree_days_base_60 (summer cooling degree days base 60), …; 67 normals-fall fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): fall_cooling_degree_days_base_40 (fall cooling degree days base 40), fall_cooling_degree_days_base_45 (fall cooling degree days base 45), fall_cooling_degree_days_base_50 (fall cooling degree days base 50), fall_cooling_degree_days_base_55 (fall cooling degree days base 55), fall_cooling_degree_days_base_57 (fall cooling degree days base 57), fall_cooling_degree_days_base_60 (fall cooling degree days base 60), …; 15 hourly fields (NOAA U.S. Climate Normals 1991–2020, hourly station normals summarised over the year, by county): hourly_temperature (round the clock temperature), dew_point (dew point), sea_level_pressure (sea level pressure), cooling_degree_hours (cooling degree hours), heating_degree_hours (heating degree hours), clear_sky_share (share of clear hours), …."New value: +"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services; by detailed NAICS industry (1999 codes, 2 to 6 digits, the Census's titles), naics_<code>_establishments (county/metro/state/zip), naics_<code>_employees and naics_<code>_payroll (county/metro/state), e.g. naics_4471_establishments (gasoline stations naics 4471 establishments), naics_8111_establishments (automotive repair and maintenance establishments), naics_238990_establishments (all other specialty trade contractors naics 238990 establishments), naics_561621_establishments (security systems services except locksmiths establishments); 262 nclimdiv fields (NOAA nClimDiv county climate normals, 1991–2020, and 2025 actuals (release 2026-09-04)): january_high (January high), february_high (February high), march_high (March high), april_high (April high), may_high (May high), june_high (June high), …; 190 storms fields (NOAA Storm Events Database, 2016–2025, events a year by county): astronomical_low_tide_events (astronomical low tide events a year), avalanche_events (avalanche events a year), blizzard_events (blizzard events a year), coastal_flood_events (coastal flood events a year), cold_or_wind_chill_events (cold or wind chill events a year), debris_flow_events (debris flow events a year), …; 127 normals-annual fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): annual_cooling_degree_days_base_40 (annual cooling degree days base 40), annual_cooling_degree_days_base_45 (annual cooling degree days base 45), annual_cooling_degree_days_base_50 (annual cooling degree days base 50), annual_cooling_degree_days_base_55 (annual cooling degree days base 55), annual_cooling_degree_days_base_57 (annual cooling degree days base 57), annual_cooling_degree_days_base_60 (annual cooling degree days base 60), …; 67 normals-winter fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): winter_cooling_degree_days_base_40 (winter cooling degree days base 40), winter_cooling_degree_days_base_45 (winter cooling degree days base 45), winter_cooling_degree_days_base_50 (winter cooling degree days base 50), winter_cooling_degree_days_base_55 (winter cooling degree days base 55), winter_cooling_degree_days_base_57 (winter cooling degree days base 57), winter_cooling_degree_days_base_60 (winter cooling degree days base 60), …; 67 normals-spring fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): spring_cooling_degree_days_base_40 (spring cooling degree days base 40), spring_cooling_degree_days_base_45 (spring cooling degree days base 45), spring_cooling_degree_days_base_50 (spring cooling degree days base 50), spring_cooling_degree_days_base_55 (spring cooling degree days base 55), spring_cooling_degree_days_base_57 (spring cooling degree days base 57), spring_cooling_degree_days_base_60 (spring cooling degree days base 60), …; 67 normals-summer fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): summer_cooling_degree_days_base_40 (summer cooling degree days base 40), summer_cooling_degree_days_base_45 (summer cooling degree days base 45), summer_cooling_degree_days_base_50 (summer cooling degree days base 50), summer_cooling_degree_days_base_55 (summer cooling degree days base 55), summer_cooling_degree_days_base_57 (summer cooling degree days base 57), summer_cooling_degree_days_base_60 (summer cooling degree days base 60), …; 67 normals-fall fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): fall_cooling_degree_days_base_40 (fall cooling degree days base 40), fall_cooling_degree_days_base_45 (fall cooling degree days base 45), fall_cooling_degree_days_base_50 (fall cooling degree days base 50), fall_cooling_degree_days_base_55 (fall cooling degree days base 55), fall_cooling_degree_days_base_57 (fall cooling degree days base 57), fall_cooling_degree_days_base_60 (fall cooling degree days base 60), …; 15 hourly fields (NOAA U.S. Climate Normals 1991–2020, hourly station normals summarised over the year, by county): hourly_temperature (round the clock temperature), dew_point (dew point), sea_level_pressure (sea level pressure), cooling_degree_hours (cooling degree hours), heating_degree_hours (heating degree hours), clear_sky_share (share of clear hours), …; 51 b01001 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_under_18 (share of residents aged 0 to 17), pct_5_to_14 (share of residents aged 5 to 14), b01001_001 (sex by age total), b01001_002 (sex by age male), b01001_003 (sex by age male 0 to 4 years), b01001_004 (sex by age male 5 to 9 years), …; 20 b11005 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): pct_households_with_people_under_18 (share of households with people aged 0 to 17), b11005_001 (households by presence of people 0 to 17 years by household type total), b11005_002 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years), b11005_003 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households), b11005_004 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households married-couple family), b11005_005 (households by presence of people 0 to 17 years by household type households with people 0 to 17 years family households other family), …; 3 b25003 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b25003_001 (tenure total), b25003_002 (tenure owner occupied), b25003_003 (tenure renter occupied); 13 b08303 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b08303_001 (travel time to work total), b08303_002 (travel time to work 0 to 4 minutes), b08303_003 (travel time to work 5 to 9 minutes), b08303_004 (travel time to work 10 to 14 minutes), b08303_005 (travel time to work 15 to 19 minutes), b08303_006 (travel time to work 20 to 24 minutes), …; 7 b23025 fields (U.S. Census Bureau, ACS 2020–2024 5-year estimates): b23025_001 (employment status for the population 16 years or older total), b23025_002 (employment status for the population 16 years or older in labor force), b23025_003 (employment status for the population 16 years or older in labor force civilian labor force), b23025_004 (employment status for the population 16 years or older in labor force civilian labor force employed), b23025_005 (employment status for the population 16 years or older in labor force civilian labor force unemployed), b23025_006 (employment status for the population 16 years or older in labor force armed forces), …."
  4. Changed3 schema fields changed
    • changedInput schema / properties / area_columns / description
      Previous value: -"Census facts added to every row as columns named <kind>_<attribute>, each as \"<kind>:<attribute>,<attribute>\", e.g. \"county:population,median_household_income\". Free."New value: +"Census and NOAA facts added to EVERY ROW as columns named <kind>_<attribute>, each as \"<kind>:<attribute>,<attribute>\", e.g. \"county:population,median_household_income\" — the county / ZIP / metro / state figures beside each location, in the preview and in the file you buy. Free. The same attribute words area_where takes (listed there)."
    • addedInput schema / properties / where / items / properties / any_of
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "field": {
      +        "type": "string"
      +      },
      +      "op": {
      +        "enum": [
      +          "eq",
      +          "ne",
      +          "gt",
      +          "gte",
      +          "lt",
      +          "lte",
      +          "in",
      +          "contains",
      +          "starts_with",
      +          "is_blank",
      +          "not_blank",
      +          "not_contains",
      +          "not_in",
      +          "any_of"
      +        ],
      +        "type": "string"
      +      },
      +      "value": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "items": {
      +              "type": [
      +                "string",
      +                "number"
      +              ]
      +            },
      +            "type": "array"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "field",
      +      "op"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 12,
      +  "type": "array"
      +}
    • changedInput schema / properties / where / items / properties / op / enum
      Previous value: -[
      -  "eq",
      -  "ne",
      -  "gt",
      -  "gte",
      -  "lt",
      -  "lte",
      -  "in",
      -  "contains",
      -  "starts_with",
      -  "is_blank",
      -  "not_blank"
      -]New value: +[
      +  "eq",
      +  "ne",
      +  "gt",
      +  "gte",
      +  "lt",
      +  "lte",
      +  "in",
      +  "contains",
      +  "starts_with",
      +  "is_blank",
      +  "not_blank",
      +  "not_contains",
      +  "not_in",
      +  "any_of"
      +]
  5. Changed6 schema fields changed
    • addedInput schema / properties / near / description
      Added value: +"Distance search on lists with coordinates: ONE of place, zip, lat+lng or points, with radius_miles or drive_minutes (not both)."
    • addedInput schema / properties / near / properties / drive_minutes
      Added value: +{
      +  "description": "Instead of radius_miles: only rows a car can reach from the point (or from any of the points) in this many minutes, typical road speeds, no live traffic. On this server: 5-60 minutes; the routing provider draws no longer band, so a 2- or 4-hour reach is not available here — use the largest band, 60 minutes, or radius_miles. One routing call per point per request; on /find it needs an issued key (radius is free).",
      +  "maximum": 240,
      +  "minimum": 5,
      +  "type": "integer"
      +}
    • addedInput schema / properties / near / properties / place / description
      Added value: +"City or town with state, e.g. \"Topeka, KS\""
    • addedInput schema / properties / near / properties / points
      Added value: +{
      +  "description": "Several points instead of one place/zip/lat+lng (at most 10): a row counts when it is within the radius or drive-time band of ANY of them, e.g. an operator's offices.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "lat": {
      +        "$ref": "#/properties/near/properties/lat"
      +      },
      +      "lng": {
      +        "$ref": "#/properties/near/properties/lng"
      +      },
      +      "place": {
      +        "$ref": "#/properties/near/properties/place"
      +      },
      +      "zip": {
      +        "$ref": "#/properties/near/properties/zip"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "maxItems": 10,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / near / properties / radius_miles / description
      Added value: +"Only rows within this straight-line distance of the point (or of any of the points). Free."
    • addedInput schema / properties / near / properties / zip / description
      Added value: +"5-digit zip"
  6. Changed3 schema fields changed
    • changedInput schema / properties / relate / description
      Previous value: -"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. same_place / not_same_place: base rows that are (or are not) the same physical place as a row of each set — same address, or within 60 m sharing a name word — with every region of the overlap counted; N-way with anchors, also and not_also. next_best: no anchor; needs the base set's state — the candidate sites in that state ranked by how well they match what the base list's own locations typically have nearby, blended with an estimated market capture. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows."New value: +"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. same_place / not_same_place: base rows that are (or are not) the same physical place as a row of each set — same address, or within 60 m sharing a name word — with every region of the overlap counted; N-way with anchors, also and not_also. next_best: no anchor; needs the base set's state — the candidate sites in that state ranked by how well they match what the base list's own locations typically have nearby, blended with an estimated market capture. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows. overlap: a TERRITORY question, not a row count — buffer every base row and every anchor row by radius_miles (straight-line, default 3, 1-25), union each into one shape, and answer what share of the base's shape the anchor's shape covers, plus each base row's own share (lowest first finds the whitespace rows with no nearby anchor territory). Free: the shares, the two territories in square miles and the headline percentage. Paid: the base rows with their own share, at that list's per-row rate."
    • changedInput schema / properties / relate / properties / mode / description
      Previous value: -"nearest | count_within | within_any | none_within | same_place | not_same_place | next_best"New value: +"nearest | count_within | within_any | none_within | same_place | not_same_place | next_best | overlap"
    • changedInput schema / properties / relate / properties / mode / enum
      Previous value: -[
      -  "nearest",
      -  "count_within",
      -  "within_any",
      -  "none_within",
      -  "same_place",
      -  "not_same_place",
      -  "next_best"
      -]New value: +[
      +  "nearest",
      +  "count_within",
      +  "within_any",
      +  "none_within",
      +  "same_place",
      +  "not_same_place",
      +  "next_best",
      +  "overlap"
      +]
  7. Changed1 schema field changed
    • addedInput schema / properties / relate / properties / anchor_all
      Added value: +{
      +  "description": "count_within / within_any: ONE OF EACH instead of one of any. The anchor set's dataset slugs grouped as the question named them — [[\"a\"],[\"b\"]] keeps only base rows with a row of BOTH within the distance. Omit for the ordinary any-of reading.",
      +  "items": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "maxItems": 3,
      +  "minItems": 2,
      +  "type": "array"
      +}
  8. Changed11 schema fields changed
    • changedInput schema / properties / relate / description
      Previous value: -"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows."New value: +"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. same_place / not_same_place: base rows that are (or are not) the same physical place as a row of each set — same address, or within 60 m sharing a name word — with every region of the overlap counted; N-way with anchors, also and not_also. next_best: no anchor; needs the base set's state — the candidate sites in that state ranked by how well they match what the base list's own locations typically have nearby, blended with an estimated market capture. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows."
    • addedInput schema / properties / relate / properties / also
      Added value: +{
      +  "description": "same_place only: the sets a base row must be the same place as some row of, by label (\"b\", \"c\"); default every set",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / relate / properties / anchor / description
      Previous value: -"The other set: dataset, datasets or category, plus filters"New value: +"The other set: dataset, datasets or category, plus filters. Every mode but next_best needs it"
    • addedInput schema / properties / relate / properties / anchors
      Added value: +{
      +  "description": "same_place only: further sets (c, d) after anchor (b), each given the same way",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "area_columns": {
      +        "$ref": "#/properties/area_columns"
      +      },
      +      "area_where": {
      +        "$ref": "#/properties/area_where"
      +      },
      +      "category": {
      +        "$ref": "#/properties/category"
      +      },
      +      "city": {
      +        "$ref": "#/properties/city"
      +      },
      +      "county": {
      +        "$ref": "#/properties/county"
      +      },
      +      "dataset": {
      +        "$ref": "#/properties/dataset"
      +      },
      +      "datasets": {
      +        "$ref": "#/properties/datasets"
      +      },
      +      "exclude": {
      +        "$ref": "#/properties/exclude"
      +      },
      +      "near": {
      +        "$ref": "#/properties/near"
      +      },
      +      "state": {
      +        "$ref": "#/properties/state"
      +      },
      +      "where": {
      +        "$ref": "#/properties/where"
      +      },
      +      "zip": {
      +        "$ref": "#/properties/zip"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "maxItems": 2,
      +  "type": "array"
      +}
    • addedInput schema / properties / relate / properties / k / description
      Added value: +"nearest: how many anchors per base row. next_best: H3 rings counted as nearby, 1-3 (default 2, about a mile)"
    • addedInput schema / properties / relate / properties / lambda
      Added value: +{
      +  "description": "next_best only: the Huff distance-decay exponent (default 2, the traditional value)",
      +  "exclusiveMinimum": 0,
      +  "maximum": 10,
      +  "type": "number"
      +}
    • addedInput schema / properties / relate / properties / limit
      Added value: +{
      +  "description": "next_best only: candidates ranked (default 50)",
      +  "maximum": 50,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / relate / properties / mode / description
      Previous value: -"nearest | count_within | within_any | none_within"New value: +"nearest | count_within | within_any | none_within | same_place | not_same_place | next_best"
    • changedInput schema / properties / relate / properties / mode / enum
      Previous value: -[
      -  "nearest",
      -  "count_within",
      -  "within_any",
      -  "none_within"
      -]New value: +[
      +  "nearest",
      +  "count_within",
      +  "within_any",
      +  "none_within",
      +  "same_place",
      +  "not_same_place",
      +  "next_best"
      +]
    • addedInput schema / properties / relate / properties / not_also
      Added value: +{
      +  "description": "same_place only: the sets a base row must NOT be the same place as any row of; not_same_place with one set is [\"b\"]",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / relate / required
      Previous value: -[
      -  "mode",
      -  "anchor"
      -]New value: +[
      +  "mode"
      +]
  9. Changed1 schema field changed
    • changedInput schema / properties / area_where / description
      Previous value: -"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services."New value: +"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services; 262 nclimdiv fields (NOAA nClimDiv county climate normals, 1991–2020, and 2025 actuals (release 2026-09-04)): january_high (January high), february_high (February high), march_high (March high), april_high (April high), may_high (May high), june_high (June high), …; 190 storms fields (NOAA Storm Events Database, 2016–2025, events a year by county): astronomical_low_tide_events (astronomical low tide events a year), avalanche_events (avalanche events a year), blizzard_events (blizzard events a year), coastal_flood_events (coastal flood events a year), cold_or_wind_chill_events (cold or wind chill events a year), debris_flow_events (debris flow events a year), …; 127 normals-annual fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): annual_cooling_degree_days_base_40 (annual cooling degree days base 40), annual_cooling_degree_days_base_45 (annual cooling degree days base 45), annual_cooling_degree_days_base_50 (annual cooling degree days base 50), annual_cooling_degree_days_base_55 (annual cooling degree days base 55), annual_cooling_degree_days_base_57 (annual cooling degree days base 57), annual_cooling_degree_days_base_60 (annual cooling degree days base 60), …; 67 normals-winter fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): winter_cooling_degree_days_base_40 (winter cooling degree days base 40), winter_cooling_degree_days_base_45 (winter cooling degree days base 45), winter_cooling_degree_days_base_50 (winter cooling degree days base 50), winter_cooling_degree_days_base_55 (winter cooling degree days base 55), winter_cooling_degree_days_base_57 (winter cooling degree days base 57), winter_cooling_degree_days_base_60 (winter cooling degree days base 60), …; 67 normals-spring fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): spring_cooling_degree_days_base_40 (spring cooling degree days base 40), spring_cooling_degree_days_base_45 (spring cooling degree days base 45), spring_cooling_degree_days_base_50 (spring cooling degree days base 50), spring_cooling_degree_days_base_55 (spring cooling degree days base 55), spring_cooling_degree_days_base_57 (spring cooling degree days base 57), spring_cooling_degree_days_base_60 (spring cooling degree days base 60), …; 67 normals-summer fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): summer_cooling_degree_days_base_40 (summer cooling degree days base 40), summer_cooling_degree_days_base_45 (summer cooling degree days base 45), summer_cooling_degree_days_base_50 (summer cooling degree days base 50), summer_cooling_degree_days_base_55 (summer cooling degree days base 55), summer_cooling_degree_days_base_57 (summer cooling degree days base 57), summer_cooling_degree_days_base_60 (summer cooling degree days base 60), …; 67 normals-fall fields (NOAA U.S. Climate Normals 1991–2020, annual and seasonal station normals, by county): fall_cooling_degree_days_base_40 (fall cooling degree days base 40), fall_cooling_degree_days_base_45 (fall cooling degree days base 45), fall_cooling_degree_days_base_50 (fall cooling degree days base 50), fall_cooling_degree_days_base_55 (fall cooling degree days base 55), fall_cooling_degree_days_base_57 (fall cooling degree days base 57), fall_cooling_degree_days_base_60 (fall cooling degree days base 60), …; 15 hourly fields (NOAA U.S. Climate Normals 1991–2020, hourly station normals summarised over the year, by county): hourly_temperature (round the clock temperature), dew_point (dew point), sea_level_pressure (sea level pressure), cooling_degree_hours (cooling degree hours), heating_degree_hours (heating degree hours), clear_sky_share (share of clear hours), …."
  10. Changed3 schema fields changed
    • changedInput schema / properties / area_where / description
      Previous value: -"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only), establishments (business establishments; county/metro/state only), employees (employees; county/metro/state only)."New value: +"Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), establishments (business establishments), employees (employees), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only); by NAICS sector, <sector>_establishments and <sector>_employees (employees: county/metro/state only) for agriculture, mining, utilities, construction, manufacturing, wholesale_trade, retail_trade, transportation, information, finance, real_estate, professional, management, administrative, educational_services, health_care, arts, accommodation, other_services."
    • addedInput schema / properties / exclude
      Added value: +{
      +  "description": "Dataset slugs left out wherever the set expands: a category minus one of its members (a list's competitors are its own category with itself excluded).",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / relate / properties / anchor / properties / exclude
      Added value: +{
      +  "$ref": "#/properties/exclude"
      +}
  11. Changed4 schema fields changed
    • addedInput schema / properties / area_columns
      Added value: +{
      +  "description": "Census facts added to every row as columns named <kind>_<attribute>, each as \"<kind>:<attribute>,<attribute>\", e.g. \"county:population,median_household_income\". Free.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 6,
      +  "type": "array"
      +}
    • addedInput schema / properties / area_where
      Added value: +{
      +  "description": "Only rows whose county/zip/state/metro meets a Census condition, each as \"<kind>:<attribute><op><value>\" (ops > >= < <= =; values accept 1M, 250k, $50,000, 10%), e.g. \"county:population>1000000\". Every clause must hold; the fact is the area's, not the row's, and it adds nothing to the price. Attributes: population (population), households (households), median_household_income (median household income), median_age (median age), pct_65_plus (share of residents aged 65 or older), pct_bachelors_plus (share with a bachelor's degree or higher), housing_units (housing units), owner_occupied_share (owner-occupied share), median_home_value (median home value), population_estimate (population estimate; county/metro/state only), population_growth_since_2020 (population growth since 2020; county/metro/state only), establishments (business establishments; county/metro/state only), employees (employees; county/metro/state only).",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 6,
      +  "type": "array"
      +}
    • addedInput schema / properties / relate / properties / anchor / properties / area_columns
      Added value: +{
      +  "$ref": "#/properties/area_columns"
      +}
    • addedInput schema / properties / relate / properties / anchor / properties / area_where
      Added value: +{
      +  "$ref": "#/properties/area_where"
      +}
  12. Changed2 schema fields changed
    • changedInput schema / properties / relate / description
      Previous value: -"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. Straight-line miles."New value: +"Relate each base row to an anchor set. nearest: the k nearest anchors with miles. count_within: rank by anchors within radius_miles. within_any: rows with an anchor within radius_miles. none_within: rows with none. Straight-line miles, or real drive time with within_drive_minutes (5-60) on count_within / within_any / none_within, capped at 60 base rows."
    • addedInput schema / properties / relate / properties / within_drive_minutes
      Added value: +{
      +  "description": "Drive time instead of radius_miles (5-60 minutes). count_within / within_any / none_within only; at most 60 base rows.",
      +  "maximum": 60,
      +  "minimum": 5,
      +  "type": "integer"
      +}
  13. Added

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations it discloses the commercial model (free counts, per-row paid pricing, one card fee), that a live register is read at query time and names its publisher/licence/read time, that drive-time depends on an external routing service with a radius_miles fallback, and that thin samples are shown but never sold. One tension: annotations declare openWorldHint=false while the tool reads live external registers, though the source set is a bounded catalogue.

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

Conciseness2/5

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

The description is extremely long and heavily repeats the relate.mode explanation already present in the schema's own description string verbatim-ish, plus duplicating the opendata paragraph. It is front-loaded and structured, but the sheer redundancy and run-on density violate conciseness.

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 complex no-output-schema tool, it is remarkably complete: it describes return content (counts for both sets, summary stats, up to 3 preview rows), the pricing breakdown, the purchase path, and per-mode behavioral caveats. An agent has everything needed to call it correctly.

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?

With 53% schema coverage and 17 parameters, the description compensates well: it explains relate.mode semantics, k limits, anchor/anchors/also/not_also N-way structure, near_m vs radius_miles vs within_drive_minutes, and the area_where/area_columns fact system. Some top-level parameters (zip, city, state, dataset) are left bare, but they are shared conventions with count_locations.

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 opening line names a specific verb+resource and scope: 'How one set of places relates to another, by straight-line distance', and it grounds the base vs anchor set distinction immediately. It is clearly distinguishable from siblings like count_locations and query_locations, which it explicitly routes to for filtering and purchasing.

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 enumerates every mode (nearest, count_within, within_any, none_within, next_best, typically_near, near/not_near, overlap, same_place) and states the conditions and requirements for each, e.g. next_best 'needs the base set's state' and near/not_near is 'how a LIVE public register is compared'. It also names the counterparts: search_datasets for register keys and query_locations/create_query_checkout for buying.

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.