New York Tax Parcel Search by County and Address
nyitsgis/parcel-search
Searches New York State tax parcels by county and part of the parcel address, from the NYS ITS Geospatial Services parcel layer. Returns up to 100 parcels per page with municipality, address, print key, SBL, property class, assessed and full market values, year built, acres, living area, bedrooms, baths, roll year, school district and primary owner from the assessment roll. Only counties that gave permission to share parcel data are covered, so a county with no coverage returns no rows. Says when more rows remain. NYS ITS Geospatial Services data, passed through unmodified and served by Omnial; not an official New York State product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.
Data source
New York State ITS Geospatial Services
Data from the New York State Office of Information Technology Services (ITS) Geospatial Services; parcel assessment data from the NYS Department of Taxation and Finance and contributing counties, school data from the NYS Education Department. Passed through unmodified and served by Omnial; not an official New York State product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "nyitsgis/parcel-search" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "nyitsgis/parcel-search" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "nyitsgis/parcel-search", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "nyitsgis/parcel-search", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 21, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"county_name",
"address"
],
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Most rows to return in one call, 1 to 100. Defaults to 25."
},
"offset": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Number of matching rows to skip, for the next page. Leave out for the first page."
},
"address": {
"type": "string",
"pattern": "^[A-Za-z0-9 .,-]{2,60}$",
"description": "Part of the parcel address to match, for example State St or 719 State. Letters, digits, spaces, periods, commas and hyphens only; case does not matter."
},
"county_name": {
"type": "string",
"pattern": "^[A-Za-z0-9 .,-]{3,30}$",
"description": "New York county name as the roll writes it, for example Albany or Erie; two-word names have no space (NewYork, StLawrence). Letters only; case does not matter."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"features"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Field definitions (name, type, alias) for the attributes below."
},
"features": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributes": {
"type": "object",
"properties": {
"SBL": {
"type": [
"string",
"null"
],
"description": "Section-block-lot number."
},
"ACRES": {
"type": [
"number",
"null"
],
"description": "Acres from the assessment roll."
},
"YR_BLT": {
"type": [
"integer",
"null"
],
"description": "Year built."
},
"LAND_AV": {
"type": [
"number",
"null"
],
"description": "Land assessed value, dollars."
},
"ROLL_YR": {
"type": [
"integer",
"null"
],
"description": "Assessment roll year."
},
"TOTAL_AV": {
"type": [
"number",
"null"
],
"description": "Total assessed value, dollars."
},
"MUNI_NAME": {
"type": [
"string",
"null"
],
"description": "Municipality name."
},
"PRINT_KEY": {
"type": [
"string",
"null"
],
"description": "Print key, the parcel identifier within a municipality."
},
"PROP_CLASS": {
"type": [
"string",
"null"
],
"description": "Property class code."
},
"COUNTY_NAME": {
"type": [
"string",
"null"
],
"description": "County name."
},
"PARCEL_ADDR": {
"type": [
"string",
"null"
],
"description": "Parcel (site) address."
},
"SCHOOL_NAME": {
"type": [
"string",
"null"
],
"description": "School district name."
},
"SQFT_LIVING": {
"type": [
"number",
"null"
],
"description": "Living area, square feet."
},
"NBR_BEDROOMS": {
"type": [
"integer",
"null"
],
"description": "Number of bedrooms."
},
"USED_AS_DESC": {
"type": [
"string",
"null"
],
"description": "Description of how the parcel is used."
},
"PRIMARY_OWNER": {
"type": [
"string",
"null"
],
"description": "Primary owner name from the roll."
},
"NBR_FULL_BATHS": {
"type": [
"integer",
"null"
],
"description": "Number of full bathrooms."
},
"FULL_MARKET_VAL": {
"type": [
"number",
"null"
],
"description": "Full market value, dollars."
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"description": "Matching parcels. Empty when nothing matches or the county is not covered."
},
"fieldAliases": {
"type": "object",
"additionalProperties": true
},
"displayFieldName": {
"type": "string"
},
"exceededTransferLimit": {
"type": "boolean",
"description": "True when more rows matched than were returned; fetch the next page with offset."
}
},
"description": "The ArcGIS query response: `features` holds one record per match under `attributes`; `exceededTransferLimit` is true when more rows matched than were returned.",
"additionalProperties": true
}