{"tools":[{"name":"dataset_info","title":"Dataset overview","description":"Start here. Describes what data exists: totals, every loaded county with parcel and ownership-record counts, how much ownership history each county has, which fields each county populates, data sources, bulk download files, query tips and usage terms.","input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"endpoint":"/api/v1/dataset_info"},{"name":"search_properties","title":"Search properties","description":"Find parcels by address words, current owner name, or location (near a point or inside a small box), optionally limited to a county, city or ZIP. Returns pin, address, owner, county, location and a link to the parcel in the map app. Paginate with next_cursor.","input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Free text matched against the address, or the current owner name."},"address":{"type":"string","description":"Property address words, any order, e.g. '1313 gallatin'."},"owner":{"type":"string","description":"Current owner name words, e.g. 'bailey trust'. For former owners use search_owners."},"county":{"type":"string","description":"County name, or several comma-separated, e.g. 'Davidson,Williamson'."},"city":{"type":"string","description":"City name (populated mainly in Davidson)."},"zip":{"type":"string","description":"ZIP code(s), comma-separated."},"near":{"type":"string","description":"Center point 'lat,lon', e.g. '36.1627,-86.7816'."},"radius_m":{"type":"number","description":"Radius in meters around `near` (default 500, max 2000)."},"bbox":{"type":"string","description":"Bounding box 'west,south,east,north' in degrees (under about 5 km across)."},"limit":{"type":"integer","description":"Results per page, 1–200 (default varies by tool)."},"cursor":{"type":"string","description":"next_cursor from the previous page, to fetch the next page."},"sort":{"type":"string","description":"relevance (default with text), distance (default with near), address.","enum":["relevance","address","distance"]}},"required":[],"additionalProperties":false},"endpoint":"/api/v1/search_properties"},{"name":"get_property","title":"Property details and owner history","description":"Everything known about one parcel: full parcel record, every ownership record (current and former, with acquisition dates, prices and deed references/links where the county provides them), sale history for Hamilton, and the county Register of Deeds website. Look up by pin, or by apn plus county.","input_schema":{"type":"object","properties":{"pin":{"type":"string","description":"Parcel id as returned by other tools."},"apn":{"type":"string","description":"Assessor parcel number."},"county":{"type":"string","description":"County, to disambiguate apn."},"include_geometry":{"type":"boolean","description":"Include the boundary rings ([lon,lat] pairs)."}},"required":[],"additionalProperties":false},"endpoint":"/api/v1/get_property"},{"name":"property_at","title":"Property at a point","description":"Which parcel contains a latitude/longitude. Uses the actual parcel boundary, not the nearest centroid.","input_schema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude."},"lon":{"type":"number","description":"Longitude."}},"required":["lat","lon"],"additionalProperties":false},"endpoint":"/api/v1/property_at"},{"name":"search_owners","title":"Find owners by name","description":"Find people and companies by name across current AND former ownership records. Each result has an owner_key, how many properties they have ever owned and own now, their counties and first/last acquisition dates. Pass an owner_key to owner_portfolio for the full list.","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Name words in any order, e.g. 'john smith' or 'ryman hospitality'."},"county":{"type":"string","description":"Limit to county(ies)."},"current_only":{"type":"boolean","description":"Only owners who currently hold property."},"limit":{"type":"integer","description":"Owners to return, 1–100 (default 20)."}},"required":["name"],"additionalProperties":false},"endpoint":"/api/v1/search_owners"},{"name":"owner_portfolio","title":"All properties for an owner","description":"Every property an owner (by owner_key) or a mailing address has ever been recorded on, newest first, with whether they still own it, when they acquired it and the recorded price. Includes summary counts. Searching by mailing address groups LLCs and trusts that share a mailbox.","input_schema":{"type":"object","properties":{"owner_key":{"type":"string","description":"owner_key from search_owners (an exact name also works; it is normalized)."},"mailing":{"type":"string","description":"Exact mailing address as stored (from a property or owner record)."},"county":{"type":"string","description":"Limit to county(ies)."},"current_only":{"type":"boolean","description":"Only properties still owned."},"limit":{"type":"integer","description":"Records per page, 1–1000 (default 200)."},"cursor":{"type":"string","description":"next_cursor from the previous page, to fetch the next page."}},"required":[],"additionalProperties":false},"endpoint":"/api/v1/owner_portfolio"},{"name":"search_ownership_records","title":"Search ownership records / transfers","description":"Ownership records (one row per owner per parcel) for an owner, owner_key, mailing address or pin, or every transfer recorded in one county over up to 3 calendar months. Filter by price, current vs former, and address; sort by date or price. Use it for questions like 'who bought in Davidson in March 2024 over $1M'.","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"Owner name words."},"owner_key":{"type":"string","description":"Exact owner_key."},"mailing":{"type":"string","description":"Exact mailing address."},"address":{"type":"string","description":"Property address words (filters the other results)."},"county":{"type":"string","description":"County (one, for date searches)."},"pin":{"type":"string","description":"Parcel pin(s), comma-separated."},"date_from":{"type":"string","description":"Acquired on or after, YYYY-MM-DD."},"date_to":{"type":"string","description":"Acquired on or before, YYYY-MM-DD."},"min_price":{"type":"number","description":"Minimum recorded price."},"max_price":{"type":"number","description":"Maximum recorded price."},"current":{"type":"boolean","description":"true = current owners only, false = former owners only."},"limit":{"type":"integer","description":"Results per page, 1–200 (default varies by tool)."},"cursor":{"type":"string","description":"next_cursor from the previous page, to fetch the next page."},"sort":{"type":"string","description":"date_desc (default), date_asc, price_desc.","enum":["date_desc","date_asc","price_desc"]}},"required":[],"additionalProperties":false},"endpoint":"/api/v1/search_ownership_records"},{"name":"property_stats","title":"Aggregate statistics","description":"Parcel counts, total/average/median appraised value and total acres grouped by county, city, zip, land_use, zoning, owner, mailing or subdivision, statewide or for one county. Use it for 'largest owners in Davidson' or 'value by land use'.","input_schema":{"type":"object","properties":{"group_by":{"type":"string","description":"Field to group on.","enum":["county","city","zip","land_use","zoning","owner","mailing","subdivision"]},"county":{"type":"string","description":"One county (default: statewide)."},"limit":{"type":"integer","description":"Groups to return, 1–500 (default 25)."}},"required":[],"additionalProperties":false},"endpoint":"/api/v1/property_stats"},{"name":"refresh_property","title":"Refresh properties from the source","description":"Re-read up to 5 parcels from their official county/state source right now (and, for Davidson, the full owner history), then return what changed. Use when last_checked is too old for the question, or the user says a record is out of date.","input_schema":{"type":"object","properties":{"pins":{"type":"string","description":"Parcel pin(s), comma-separated (max 5)."}},"required":["pins"],"additionalProperties":false},"endpoint":"/api/v1/refresh_property"},{"name":"recent_changes","title":"Recently detected changes","description":"Changes the update jobs detected, newest first: owner_change (with old and new owners), new_parcel, and retired (parcel no longer listed by the county). Filter by county, kind, owner name, date or area.","input_schema":{"type":"object","properties":{"county":{"type":"string","description":"County(ies)."},"kind":{"type":"string","description":"Kind(s), comma-separated: owner_change, new_parcel, retired."},"owner":{"type":"string","description":"Old or new owner name words."},"since":{"type":"string","description":"Detected on or after (YYYY-MM-DD)."},"until":{"type":"string","description":"Detected on or before (YYYY-MM-DD)."},"near":{"type":"string","description":"Center point 'lat,lon', e.g. '36.1627,-86.7816'."},"radius_m":{"type":"number","description":"Radius in meters around `near` (default 500)."},"bbox":{"type":"string","description":"Bounding box 'west,south,east,north'."},"limit":{"type":"integer","description":"Results per page, 1–200 (default varies by tool)."},"cursor":{"type":"string","description":"next_cursor from the previous page, to fetch the next page."}},"required":[],"additionalProperties":false},"endpoint":"/api/v1/recent_changes"},{"name":"update_status","title":"Data freshness and update jobs","description":"How fresh the data is: when each county was last checked, the most recent update runs with their status and counts, what is in progress, and the schedule.","input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"endpoint":"/api/v1/update_status"}]}