@urbankitstudio/atlas 0.6.10 → 0.6.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -18,9 +18,9 @@ var data_default = {
18
18
  lastUpdated: "2026-10-03",
19
19
  totals: {
20
20
  states: 51,
21
- counties: 239,
22
- endpoints: 251,
23
- countiesWithEndpoint: 233,
21
+ counties: 241,
22
+ endpoints: 253,
23
+ countiesWithEndpoint: 235,
24
24
  countiesUnprobeable: 1
25
25
  },
26
26
  states: [
@@ -212,8 +212,8 @@ var data_default = {
212
212
  slug: "minnesota",
213
213
  name: "Minnesota",
214
214
  abbrev: "MN",
215
- countyCount: 2,
216
- endpointCount: 2,
215
+ countyCount: 3,
216
+ endpointCount: 3,
217
217
  populated: true
218
218
  },
219
219
  {
@@ -228,8 +228,8 @@ var data_default = {
228
228
  slug: "missouri",
229
229
  name: "Missouri",
230
230
  abbrev: "MO",
231
- countyCount: 2,
232
- endpointCount: 2,
231
+ countyCount: 3,
232
+ endpointCount: 3,
233
233
  populated: true
234
234
  },
235
235
  {
@@ -754,24 +754,29 @@ var arizona_default = {
754
754
  supportsQuery: true,
755
755
  corsEnabled: null,
756
756
  searchFields: [
757
- { name: "PARCELID", label: "Parcel ID (APN)", searchable: true },
758
- { name: "LOWPARCELID", label: "Lower Parcel ID", searchable: true },
759
- { name: "OWNERNME1", label: "Owner Name (Primary)", searchable: true },
760
- { name: "OWNERNME2", label: "Owner Name (Secondary)", searchable: true },
761
- { name: "SITEADDRESS", label: "Site Address", searchable: true },
762
- { name: "CVTTXCD", label: "Converted Tax Code", searchable: false },
763
- { name: "CVTTXDSCRP", label: "Tax Code Description", searchable: false },
764
- { name: "USECD", label: "Use Code", searchable: false },
765
- { name: "USEDSCRP", label: "Use Description", searchable: false },
766
- { name: "CLASSCD", label: "Class Code", searchable: false },
767
- { name: "CLASSDSCRP", label: "Class Description", searchable: false },
768
- { name: "PRPRTYDSCRP", label: "Property Description", searchable: false }
757
+ { name: "Parcel_Identification_Number", label: "Parcel ID (APN)", searchable: true },
758
+ { name: "Lowest_Parcel_Identification_Number", label: "Lower Parcel ID", searchable: true },
759
+ { name: "First_Owner_Name", label: "Owner Name (Primary)", searchable: true },
760
+ { name: "Second_Owner_Name", label: "Owner Name (Secondary)", searchable: true },
761
+ { name: "Site_Address", label: "Site Address", searchable: true },
762
+ { name: "Postal_Address", label: "Owner Mailing Address", searchable: true },
763
+ { name: "Postal_City", label: "Owner Mailing City", searchable: true },
764
+ { name: "Postal_State", label: "Owner Mailing State", searchable: false },
765
+ { name: "Postal_Zip_Code_5", label: "Owner Mailing ZIP", searchable: false },
766
+ { name: "Postal_Zip_Code_4", label: "Owner Mailing ZIP+4", searchable: false },
767
+ { name: "Tax_District_Code", label: "Converted Tax Code", searchable: false },
768
+ { name: "Tax_District_Description", label: "Tax Code Description", searchable: false },
769
+ { name: "Assessing_Use_Code", label: "Use Code", searchable: false },
770
+ { name: "Assessing_Use_Description", label: "Use Description", searchable: false },
771
+ { name: "Property_Class_Code", label: "Class Code", searchable: false },
772
+ { name: "Property_Class", label: "Class Description", searchable: false },
773
+ { name: "Property_Description", label: "Property Description", searchable: false }
769
774
  ],
770
- sampleQuery: "https://rogue.casagrandeaz.gov/arcgis/rest/services/Pinal_County/Pinal_County_Parcels/MapServer/0/query?where=PARCELID+LIKE+'%25302%25'&outFields=PARCELID,SITEADDRESS,OWNERNME1,CLASSCD,CLASSDSCRP&returnGeometry=false&f=json&resultRecordCount=10",
775
+ sampleQuery: "https://rogue.casagrandeaz.gov/arcgis/rest/services/Pinal_County/Pinal_County_Parcels/MapServer/0/query?where=Parcel_Identification_Number+LIKE+'%25302%25'&outFields=Parcel_Identification_Number,Site_Address,First_Owner_Name,Property_Class_Code,Property_Class&returnGeometry=false&f=json&resultRecordCount=10",
771
776
  license: "public",
772
777
  licenseUrl: "https://www.pinal.gov/630/GIS",
773
778
  status: "live",
774
- lastVerified: "2026-05-15",
779
+ lastVerified: "2026-10-03",
775
780
  verifiedBy: "manual"
776
781
  }
777
782
  ],
@@ -780,7 +785,7 @@ var arizona_default = {
780
785
  url: "https://www.pinal.gov/630/GIS",
781
786
  email: null
782
787
  },
783
- notes: "74 fields confirmed including OBJECTID, LOWPARCELID, PARCELID, BUILDING, UNIT, LGLSTARTDT, CVTTXCD, CVTTXDSCRP, SCHLTXCD, SCHLDSCRP, USECD, USEDSCRP, NGHBRHDCD, CLASSCD, CLASSDSCRP, SITEADDRESS, PRPRTYDSCRP, CNVYNAME, OWNERNME1, OWNERNME2. Owner name confirmed live: PARCELID LIKE '%302%' returns OWNERNME1='FELDMEIER BRIAN' in Arizona City AZ 85123. PARCELID format is typically 9-digit numeric string. Hosted on the City of Casa Grande ArcGIS server (rogue.casagrandeaz.gov) which serves Pinal County parcel data for the Phoenix metro south area (Chandler/Gilbert/Queen Creek/Maricopa City/Casa Grande). Capabilities: Query, Map, Data. maxRecordCount=1000. Note: the gismaps.pinalcountyaz.gov server is currently not externally accessible (HTTP 000); the Casa Grande mirror is the reliable public endpoint."
788
+ notes: "74 fields confirmed including OBJECTID, Lowest_Parcel_Identification_Number, Parcel_Identification_Number, Building_Number, Unit_Number, Legal_Start_Date, Tax_District_Code, Tax_District_Description, School_District_Code, School_District_Description, Assessing_Use_Code, Assessing_Use_Description, Assessing_Neighborhood_Code, Property_Class_Code, Property_Class, Site_Address, Property_Description, Sub_or_Condo_Name, First_Owner_Name, Second_Owner_Name, Postal_Address, Postal_City, Postal_State, Postal_Zip_Code_5, Postal_Zip_Code_4. In September 2026 the county renamed every field to these long-form names (field count, ids and values unchanged; e.g. PARCELID became Parcel_Identification_Number, OWNERNME1 became First_Owner_Name, SITEADDRESS became Site_Address, CLASSCD became Property_Class_Code), which broke every declared field and the old sampleQuery; the record was re-mapped on 2026-10-03. The rename also exposed owner mailing address for the first time (Postal_Address, Postal_City, Postal_State, Postal_Zip_Code_5, Postal_Zip_Code_4). Site_Address now carries city, state and ZIP in one string (e.g. 9865 W BATTAGLIA DR ARIZONA CITY, AZ 85123). Owner name confirmed live: Parcel_Identification_Number LIKE '%302%' returns First_Owner_Name='FELDMEIER BRIAN' in Arizona City AZ 85123. Parcel_Identification_Number is typically a 9-digit numeric string; a where=1=1 probe returns a placeholder row with Parcel_Identification_Number 'NAP', which is still a valid features array. Named outFields work on this server. Hosted on the City of Casa Grande ArcGIS server (rogue.casagrandeaz.gov) which serves Pinal County parcel data for the Phoenix metro south area (Chandler/Gilbert/Queen Creek/Maricopa City/Casa Grande). Capabilities: Query, Map, Data. maxRecordCount=2000 (was 1000 before the September 2026 republish). Note: the gismaps.pinalcountyaz.gov server is currently not externally accessible (HTTP 000; last checked before 2026-10-03, not re-tested then); the Casa Grande mirror is the reliable public endpoint."
784
789
  }
785
790
  ]
786
791
  };
@@ -847,7 +852,7 @@ var arkansas_default = {
847
852
  },
848
853
  {
849
854
  name: "countyfips",
850
- label: "County FIPS (05119 = Pulaski)",
855
+ label: "County FIPS (119 = Pulaski)",
851
856
  searchable: false
852
857
  },
853
858
  {
@@ -866,13 +871,13 @@ var arkansas_default = {
866
871
  searchable: false
867
872
  }
868
873
  ],
869
- sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'05119'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
874
+ sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'119'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
870
875
  license: "public",
871
876
  licenseUrl: "https://gis.arkansas.gov/",
872
877
  status: "live",
873
- lastVerified: "2026-06-20",
874
- verifiedBy: "automated",
875
- scopeWhere: "countyfips = '05119'"
878
+ lastVerified: "2026-10-03",
879
+ verifiedBy: "manual",
880
+ scopeWhere: "countyfips = '119'"
876
881
  }
877
882
  ],
878
883
  contact: {
@@ -880,7 +885,7 @@ var arkansas_default = {
880
885
  url: "https://gis.arkansas.gov/",
881
886
  email: null
882
887
  },
883
- notes: "Pulaski County AR (Little Rock, pop. 400,000; state capital; county seat Little Rock; FIPS 05119) is served by the Arkansas statewide parcel layer hosted by the Arkansas GIS Office (AGISO). The Planning_Cadastre/FeatureServer/6 layer aggregates parcels from all 75 AR counties, filter by countyfips='05119' to query Pulaski County specifically. Key fields: parcelid (parcel identifier), ownername (owner name), adrnum+pstrnam+adrcity+adrzip5 (address components), adrlabel (full address string), countyfips (5-digit FIPS, '05119' for Pulaski), countyid, county (county name text), parceltype, assessvalue, impvalue, landvalue, totalvalue, subdivision, section/township/range, camakey, dataprov, pubdate. Owner-name search via UPPER(ownername) LIKE works across all AR counties. Verified 2026-06-20: countyfips='05119' AND SMITH returns Little Rock addresses. The statewide layer is compiled from county assessor data and may lag 6\u201312 months from deed recording."
888
+ notes: "Pulaski County AR (Little Rock, pop. 400,000; state capital; county seat Little Rock; FIPS 05119) is served by the Arkansas statewide parcel layer hosted by the Arkansas GIS Office (AGISO). The Planning_Cadastre/FeatureServer/6 layer aggregates parcels from all 75 AR counties, filter by countyfips='119' to query Pulaski County specifically. Key fields: parcelid (parcel identifier), ownername (owner name), adrnum+pstrnam+adrcity+adrzip5 (address components), adrlabel (full address string), countyfips (3-digit county code, '119' for Pulaski), countyid, county (county name text), parceltype, assessvalue, impvalue, landvalue, totalvalue, subdivision, section/township/range, camakey, dataprov, pubdate. Owner-name search via UPPER(ownername) LIKE works across all AR counties. Verified 2026-06-20: countyfips='05119' AND SMITH returns Little Rock addresses. 2026-10-03: the state changed countyfips from the 5-digit state+county FIPS to the 3-digit county code, so the old scope countyfips='05119' matched 0 rows and every attribute search here returned nothing without an error; countyfips='119' counts 180,229 rows, and the scope and sampleQuery now use it (SMITH returns SMITH HALLIE M, 4 OAKRIDGE DR). The statewide layer is compiled from county assessor data and may lag 6\u201312 months from deed recording."
884
889
  },
885
890
  {
886
891
  id: "ar-benton",
@@ -937,7 +942,7 @@ var arkansas_default = {
937
942
  },
938
943
  {
939
944
  name: "countyfips",
940
- label: "County FIPS (05007 = Benton)",
945
+ label: "County FIPS (007 = Benton)",
941
946
  searchable: false
942
947
  },
943
948
  {
@@ -956,13 +961,13 @@ var arkansas_default = {
956
961
  searchable: false
957
962
  }
958
963
  ],
959
- sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'05007'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
964
+ sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'007'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
960
965
  license: "public",
961
966
  licenseUrl: "https://gis.arkansas.gov/",
962
967
  status: "live",
963
- lastVerified: "2026-06-20",
964
- verifiedBy: "automated",
965
- scopeWhere: "countyfips = '05007'"
968
+ lastVerified: "2026-10-03",
969
+ verifiedBy: "manual",
970
+ scopeWhere: "countyfips = '007'"
966
971
  }
967
972
  ],
968
973
  contact: {
@@ -970,7 +975,7 @@ var arkansas_default = {
970
975
  url: "https://gis.arkansas.gov/",
971
976
  email: null
972
977
  },
973
- notes: "Benton County AR (Bentonville/Rogers/Fayetteville metro north; county seat Bentonville; FIPS 05007; home to Walmart HQ) is served by the Arkansas statewide parcel layer. Filter countyfips='05007' to scope to Benton County. Same schema and endpoint as Pulaski County (AR statewide FeatureServer/6). Benton County is the fastest-growing county in Arkansas. Verified 2026-06-20: SMITH query returns Bentonville-area addresses."
978
+ notes: "Benton County AR (Bentonville/Rogers/Fayetteville metro north; county seat Bentonville; FIPS 05007; home to Walmart HQ) is served by the Arkansas statewide parcel layer. Filter countyfips='007' to scope to Benton County. Same schema and endpoint as Pulaski County (AR statewide FeatureServer/6). Benton County is the fastest-growing county in Arkansas. Verified 2026-06-20: SMITH query returns Bentonville-area addresses. 2026-10-03: the state changed countyfips from the 5-digit state+county FIPS to the 3-digit county code, so the old scope countyfips='05007' matched 0 rows and every attribute search here returned nothing without an error; countyfips='007' counts 175,795 rows, and the scope and sampleQuery now use it (SMITH returns SMITH REVOCABLE TRUST, CRAIG MARTIN)."
974
979
  },
975
980
  {
976
981
  id: "ar-washington",
@@ -1027,7 +1032,7 @@ var arkansas_default = {
1027
1032
  },
1028
1033
  {
1029
1034
  name: "countyfips",
1030
- label: "County FIPS (05143 = Washington)",
1035
+ label: "County FIPS (143 = Washington)",
1031
1036
  searchable: false
1032
1037
  },
1033
1038
  {
@@ -1046,13 +1051,13 @@ var arkansas_default = {
1046
1051
  searchable: false
1047
1052
  }
1048
1053
  ],
1049
- sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'05143'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
1054
+ sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'143'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
1050
1055
  license: "public",
1051
1056
  licenseUrl: "https://gis.arkansas.gov/",
1052
1057
  status: "live",
1053
- lastVerified: "2026-06-20",
1054
- verifiedBy: "automated",
1055
- scopeWhere: "countyfips = '05143'"
1058
+ lastVerified: "2026-10-03",
1059
+ verifiedBy: "manual",
1060
+ scopeWhere: "countyfips = '143'"
1056
1061
  }
1057
1062
  ],
1058
1063
  contact: {
@@ -1060,7 +1065,7 @@ var arkansas_default = {
1060
1065
  url: "https://gis.arkansas.gov/",
1061
1066
  email: null
1062
1067
  },
1063
- notes: "Washington County AR (Fayetteville metro; county seat Fayetteville; FIPS 05143; home to University of Arkansas) is served by the Arkansas statewide parcel layer. Filter countyfips='05143' to scope to Washington County. Same schema and endpoint as Pulaski and Benton counties (AR statewide FeatureServer/6). Washington County AR must not be confused with Washington County in other states. Verified 2026-06-20: SMITH query returns Fayetteville-area addresses."
1068
+ notes: "Washington County AR (Fayetteville metro; county seat Fayetteville; FIPS 05143; home to University of Arkansas) is served by the Arkansas statewide parcel layer. Filter countyfips='143' to scope to Washington County. Same schema and endpoint as Pulaski and Benton counties (AR statewide FeatureServer/6). Washington County AR must not be confused with Washington County in other states. Verified 2026-06-20: SMITH query returns Fayetteville-area addresses. 2026-10-03: the state changed countyfips from the 5-digit state+county FIPS to the 3-digit county code, so the old scope countyfips='05143' matched 0 rows and every attribute search here returned nothing without an error; countyfips='143' counts 114,791 rows, and the scope and sampleQuery now use it (SMITH returns SMITH, ANNE B, 601 N HIGHLAND AVE)."
1064
1069
  }
1065
1070
  ]
1066
1071
  };
@@ -14682,12 +14687,12 @@ var maryland_default = {
14682
14687
  hasPublicRest: true,
14683
14688
  endpoints: [
14684
14689
  {
14685
- url: "https://gis.princegeorgescountymd.gov/arcgis/rest/services/Property/Property_Flattened/MapServer/0",
14686
- serviceType: "MapServer",
14690
+ url: "https://services1.arcgis.com/qS7AYixGtf3sv8B6/arcgis/rest/services/Property_Flattened_Py/FeatureServer/0",
14691
+ serviceType: "FeatureServer",
14687
14692
  layerIndex: 0,
14688
- layerName: "Property Flattened",
14693
+ layerName: "Property_Flattened_Py",
14689
14694
  supportsQuery: true,
14690
- corsEnabled: null,
14695
+ corsEnabled: true,
14691
14696
  searchFields: [
14692
14697
  {
14693
14698
  name: "ACCOUNT",
@@ -14750,12 +14755,12 @@ var maryland_default = {
14750
14755
  searchable: false
14751
14756
  }
14752
14757
  ],
14753
- sampleQuery: "https://gis.princegeorgescountymd.gov/arcgis/rest/services/Property/Property_Flattened/MapServer/0/query?where=UPPER(OWNER_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=ACCOUNT,PROPERTY_ID,OWNER_NAME,HOUSE_NUMBER,STREET_NAME,STREET_TYPE,MAIL_STREET,MAIL_CITY,MAIL_ZIP5&returnGeometry=false&f=json&resultRecordCount=10",
14758
+ sampleQuery: "https://services1.arcgis.com/qS7AYixGtf3sv8B6/arcgis/rest/services/Property_Flattened_Py/FeatureServer/0/query?where=UPPER(OWNER_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=ACCOUNT,PROPERTY_ID,OWNER_NAME,HOUSE_NUMBER,STREET_NAME,STREET_TYPE,MAIL_STREET,MAIL_CITY,MAIL_ZIP5&returnGeometry=false&f=json&resultRecordCount=10",
14754
14759
  license: "public",
14755
14760
  licenseUrl: "https://www.princegeorgescountymd.gov/665/Geographic-Information-Systems-GIS",
14756
14761
  status: "live",
14757
- lastVerified: "2026-06-05",
14758
- verifiedBy: "automated"
14762
+ lastVerified: "2026-10-03",
14763
+ verifiedBy: "manual"
14759
14764
  }
14760
14765
  ],
14761
14766
  contact: {
@@ -14763,7 +14768,7 @@ var maryland_default = {
14763
14768
  url: "https://www.princegeorgescountymd.gov/665/Geographic-Information-Systems-GIS",
14764
14769
  email: null
14765
14770
  },
14766
- notes: "Prince George's County is Maryland's second-most populous county (pop. 910,000; county seat Upper Marlboro). The Property_Flattened MapServer on gis.princegeorgescountymd.gov (ArcGIS Server 11.5) is the county's canonical public property layer with 112 fields and 352,791 parcels. Live query confirmed OWNER_NAME exposure. Key fields: ACCOUNT (county account number, 7 digits), PROPERTY_ID (prefixed as '12' + ACCOUNT for the full 9-digit SDAT account number), OWNER_NAME, ICO_NAME (in-care-of), HOUSE_NUMBER (zero-padded 6-digit, e.g. '002909'), STREET_NAME, STREET_TYPE, STREET_DIRECTION, MAIL_STREET/CITY/STATE/ZIP5 (owner mailing address), ASSESS_DIST (assessment district), LAND_AREA_ACRE, LAND_AREA_SQFT, LIBER, FOLIO, SUB_NAME, CONDO_UNIT_NUMBER, TAXMAPGRID. The situs address is split across HOUSE_NUMBER + STREET_NAME + STREET_TYPE. There is no single combined site address field on this layer. The county belongs to the M-NCPPC (Maryland-National Capital Park and Planning Commission) planning region and uses Maryland SDAT for the authoritative ownership record. Prince George's County borders DC and contains the University of Maryland (College Park) and Joint Base Andrews."
14771
+ notes: "Prince George's County is Maryland's second-most populous county (pop. 910,000; county seat Upper Marlboro). The Property_Flattened MapServer on gis.princegeorgescountymd.gov (ArcGIS Server 11.5) is the county's canonical public property layer with 112 fields and 352,791 parcels. Live query confirmed OWNER_NAME exposure. Key fields: ACCOUNT (county account number, 7 digits), PROPERTY_ID (prefixed as '12' + ACCOUNT for the full 9-digit SDAT account number), OWNER_NAME, ICO_NAME (in-care-of), HOUSE_NUMBER (zero-padded 6-digit, e.g. '002909'), STREET_NAME, STREET_TYPE, STREET_DIRECTION, MAIL_STREET/CITY/STATE/ZIP5 (owner mailing address), ASSESS_DIST (assessment district), LAND_AREA_ACRE, LAND_AREA_SQFT, LIBER, FOLIO, SUB_NAME, CONDO_UNIT_NUMBER, TAXMAPGRID. The situs address is split across HOUSE_NUMBER + STREET_NAME + STREET_TYPE. There is no single combined site address field on this layer. The county belongs to the M-NCPPC (Maryland-National Capital Park and Planning Commission) planning region and uses Maryland SDAT for the authoritative ownership record. Prince George's County borders DC and contains the University of Maryland (College Park) and Joint Base Andrews. 2026-10-03: the registered endpoint moved from the county MapServer to the Planning Department's hosted ArcGIS Online copy of the same layer (Property_Flattened_Py FeatureServer on services1.arcgis.com, owner Planning_PGCO_MD, CORS open, maxRecordCount 2000, 353,381 parcels). The reason is a county-side defect, not a schema change: gis.princegeorgescountymd.gov is load-balanced and one backend node lacks the layers, so about every second request to any service on the host (Property_Flattened, Property_Centroids, Property, AddressPoints) answers HTTP 200 with a Layer not found error body, metadata and queries alike, whatever the where clause. The liveness cron does not retry an HTTP 200 error body, so the county flapped between live and degraded. The hosted copy has the same field names (every declared searchField present, plus MAIL_STATE) and returned the same first row as the county host on its good turns, with 18 of 18 probes answering. The old host is deliberately not kept as a second endpoint, because the cron grades a county by its worst endpoint. Caveat: the hosted copy is a periodic refresh by the Planning Department (stamped Updated 20260923), so its freshness is days, not minutes; switch back once the county host answers consistently."
14767
14772
  },
14768
14773
  {
14769
14774
  id: "md-baltimore",
@@ -15444,7 +15449,7 @@ var minnesota_default = {
15444
15449
  stateSlug: "minnesota",
15445
15450
  stateName: "Minnesota",
15446
15451
  stateAbbrev: "MN",
15447
- lastUpdated: "2026-06-06",
15452
+ lastUpdated: "2026-10-03",
15448
15453
  counties: [
15449
15454
  {
15450
15455
  id: "mn-ramsey",
@@ -15608,6 +15613,50 @@ var minnesota_default = {
15608
15613
  email: null
15609
15614
  },
15610
15615
  notes: "448,036 polygon parcels covering Minneapolis and the rest of Hennepin County. Verified 2026-05-11: UPPER(OWNER_NM) LIKE '%SMITH%' returns real owners (e.g., 'ALEX D SMITH', 'PAUL LOUIS SMITH'). Owner names are space-padded fixed-width, wrap searches in UPPER() and trim whitespace client-side. Full residential address columns present (HOUSE_NO, FRAC_HOUSE_NO, STREET_NM, MAILING_MUNIC_NM, ZIP_CD). PID is 13-digit composite (parcel-fragment-municipality-section). TORRENS_TYP flag distinguishes Torrens vs. Abstract land per Minnesota's dual-title system. OUTAGE RESOLVED 2026-06-06: the 2026-05 county-side outage cleared -- service re-verified live (448,083 parcels; OWNER_NM queries return real owners)."
15616
+ },
15617
+ {
15618
+ id: "mn-mille-lacs",
15619
+ state: "MN",
15620
+ stateName: "Minnesota",
15621
+ stateSlug: "minnesota",
15622
+ county: "Mille Lacs",
15623
+ countySlug: "mille-lacs-county",
15624
+ countyFips: "27095",
15625
+ hasPublicRest: true,
15626
+ endpoints: [
15627
+ {
15628
+ url: "https://gis.co.mille-lacs.mn.us/arcgis/rest/services/MilleLacs_Public_101/MapServer/35",
15629
+ serviceType: "MapServer",
15630
+ layerIndex: 35,
15631
+ layerName: "Parcels",
15632
+ supportsQuery: true,
15633
+ corsEnabled: true,
15634
+ searchFields: [
15635
+ { name: "TAXPAYER_NAME", label: "Taxpayer Name", searchable: true },
15636
+ { name: "PARCELID", label: "Parcel Number", searchable: true },
15637
+ { name: "PROPERTY_ADDRESS", label: "Property Address", searchable: true },
15638
+ { name: "PROPERTY_ZIP", label: "Property ZIP", searchable: false },
15639
+ { name: "CITY_TWP_NAME", label: "City/Township Name", searchable: true },
15640
+ { name: "TAXPAYER_ADDRESS_1", label: "Taxpayer Mailing Address 1", searchable: true },
15641
+ { name: "TAXPAYER_ADDRESS_2", label: "Taxpayer Mailing Address 2", searchable: false },
15642
+ { name: "TAXPAYER_ADDRESS_3", label: "Taxpayer Mailing Address 3", searchable: false },
15643
+ { name: "TAXPAYER_ADDRESS_4", label: "Taxpayer Mailing Address 4", searchable: false },
15644
+ { name: "DEEDED_ACRES", label: "Deeded Acres", searchable: false }
15645
+ ],
15646
+ sampleQuery: "https://gis.co.mille-lacs.mn.us/arcgis/rest/services/MilleLacs_Public_101/MapServer/35/query?where=UPPER(TAXPAYER_NAME)%20LIKE%20%27%25SMITH%25%27&outFields=PARCELID,TAXPAYER_NAME,PROPERTY_ADDRESS,TAXPAYER_ADDRESS_1,CITY_TWP_NAME&returnGeometry=false&resultRecordCount=10&f=json",
15647
+ license: "unknown",
15648
+ licenseUrl: "https://www.millelacs.mn.gov/",
15649
+ status: "live",
15650
+ lastVerified: "2026-10-03",
15651
+ verifiedBy: "manual"
15652
+ }
15653
+ ],
15654
+ contact: {
15655
+ department: "Mille Lacs County GIS / Assessor's Office",
15656
+ url: "https://www.millelacs.mn.gov/1185/Assessors-Office",
15657
+ email: null
15658
+ },
15659
+ notes: "Mille Lacs County, Minnesota (county seat Milaca) publishes its parcels on its own ArcGIS Server 11.3 as MilleLacs_Public_101/MapServer layer 35 (Parcels), 20,083 rows with a taxpayer name on 2026-10-03. THE OWNER IS IN TAXPAYER_NAME, stored LAST/FIRST with a slash (SMITH/BRIAN & ASHLEY). A column called OWNER_NAME exists but is an empty string on about 97 percent of rows (544 of 20,083 populated on 2026-10-03; not NULL, so IS NOT NULL passes while the value is blank), and where it is populated it names a different party from TAXPAYER_NAME (a contract-for-deed holder or an LLC, for example), so the taxpayer is not always the owner of record. UPPER(OWNER_NAME) LIKE 'SMITH%' returns 0 features. OWNER_NAME is deliberately NOT listed as a search field here: the enrichment classifier takes the first owner-looking field, so listing it would route owner lookups to a mostly blank column. The mailing address is TAXPAYER_ADDRESS_1 to _4 (use _1 for the street); the matching OWNER_ADDRESS_1 to _4 columns were not checked. The site address is PROPERTY_ADDRESS with PROPERTY_ZIP and CITY_TWP_NAME. Search with UPPER(TAXPAYER_NAME) LIKE '%SMITH%'. maxRecordCount is 2000. CORS reflects the request Origin (Access-Control-Allow-Origin echoed back, credentials true), and named outFields work. No license text was found. Do not use the statewide Minnesota parcel layers for owner search: the DNR plan_parcels_minnesota layer has owner_name but no county, parcel id or address field, so a query bleeds into neighbouring counties, and the MnGeo plan_parcels_open layer filters by co_code 27095 (20,928 rows) but its owner_name is blank for all but 550 rows (control: Itasca 27061, 0 populated). The same county server also lists Assessors/TaxParcels/MapServer/0, which has only a parcel name and geometry. Verified live 2026-10-03: taxpayer SMITH returned rows (first SMITH/BRIAN & ASHLEY, parcel 11-010-0100, 17903 130TH AVE, Milaca Township)."
15611
15660
  }
15612
15661
  ]
15613
15662
  };
@@ -15713,7 +15762,7 @@ var missouri_default = {
15713
15762
  stateSlug: "missouri",
15714
15763
  stateName: "Missouri",
15715
15764
  stateAbbrev: "MO",
15716
- lastUpdated: "2026-06-20",
15765
+ lastUpdated: "2026-10-03",
15717
15766
  counties: [
15718
15767
  {
15719
15768
  id: "mo-jackson",
@@ -15805,6 +15854,49 @@ var missouri_default = {
15805
15854
  email: null
15806
15855
  },
15807
15856
  notes: "St. Louis County MO (St. Louis metro west/south, county seat Clayton, NOT the independent City of St. Louis) provides AGS_Parcels/MapServer/0 with 30+ fields: LOCATOR (parcel ID), PARENT_LOC, TAXYR, OWNER_NAME, PROP_ADRNUM, PROP_ADD, PROP_ZIP, OWN_ADD, OWN_CITY, OWN_STATE, OWN_ZIP, SCHSUB (school subdivision), MUNYCODE (municipality code), TAXCODE, ASSTIMPVAL, TOTASSMT, APPLANDVAL, APPIMPVAL, TOTAPVAL, PROPCLASS, LUC, LANDUSE2, LUCODE, TENURE, BLDGNAME, TWPNAME. Query confirmed live: UPPER(OWNER_NAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH KIMBERLY & ANTHONY T/E' at '11041 LILAC AVE'). St. Louis County MO (FIPS 29189) is a separate entity from the City of St. Louis (FIPS 29510, an independent city not part of any county). The GeoData portal at data-stlcogis.opendata.arcgis.com provides open data downloads and GeoServices API links. The maps.stlouisco.com server is the live REST host."
15857
+ },
15858
+ {
15859
+ id: "mo-st-louis-city",
15860
+ state: "MO",
15861
+ stateName: "Missouri",
15862
+ stateSlug: "missouri",
15863
+ county: "St. Louis city",
15864
+ countySlug: "st-louis-city",
15865
+ countyFips: "29510",
15866
+ hasPublicRest: true,
15867
+ endpoints: [
15868
+ {
15869
+ url: "https://maps8.stlouis-mo.gov/arcgis/rest/services/ASSESSOR/Assessor_Public_Parcels/MapServer/11",
15870
+ serviceType: "MapServer",
15871
+ layerIndex: 11,
15872
+ layerName: "Parcels",
15873
+ supportsQuery: true,
15874
+ corsEnabled: false,
15875
+ searchFields: [
15876
+ { name: "OwnerName", label: "Owner Name", searchable: true },
15877
+ { name: "OwnerName2", label: "Owner Name 2", searchable: false },
15878
+ { name: "ParcelId", label: "Parcel ID", searchable: true },
15879
+ { name: "SITEADDR", label: "Site Address", searchable: true },
15880
+ { name: "OwnerAddr", label: "Owner Mailing Address", searchable: true },
15881
+ { name: "OwnerCity", label: "Owner Mailing City", searchable: false },
15882
+ { name: "OwnerState", label: "Owner Mailing State", searchable: false },
15883
+ { name: "OwnerZIP", label: "Owner Mailing ZIP", searchable: false },
15884
+ { name: "ZIP", label: "Site ZIP", searchable: false }
15885
+ ],
15886
+ sampleQuery: "https://maps8.stlouis-mo.gov/arcgis/rest/services/ASSESSOR/Assessor_Public_Parcels/MapServer/11/query?where=UPPER(OwnerName)%20LIKE%20%27SMITH%25%27&outFields=ParcelId,OwnerName,OwnerAddr,OwnerCity,SITEADDR&returnGeometry=false&resultRecordCount=10&f=json",
15887
+ license: "unknown",
15888
+ licenseUrl: "https://www.stlouis-mo.gov/data/parcels.cfm",
15889
+ status: "live",
15890
+ lastVerified: "2026-10-03",
15891
+ verifiedBy: "manual"
15892
+ }
15893
+ ],
15894
+ contact: {
15895
+ department: "City of St. Louis Assessor's Office",
15896
+ url: "https://www.stlouis-mo.gov/data/parcels.cfm",
15897
+ email: null
15898
+ },
15899
+ notes: "City of St. Louis, Missouri (FIPS 29510) is an independent city that belongs to no county, and it is NOT St. Louis County (29189, a separate record in this file on a different server). The Assessor's public parcels layer is ASSESSOR/Assessor_Public_Parcels/MapServer layer 11 (Parcels) on ArcGIS Server 11.2, listed on the city's data page. SERVER-SIDE ONLY: the server sends Access-Control-Allow-Origin only to its own origin (www.stlouis-mo.gov); for any other Origin a GET and its preflight return only Vary: Origin and Access-Control-Allow-Private-Network: true, so a browser on another site cannot read it and corsEnabled is false. Query it from a server, the metered API or the MCP, not from page script. The owner is OwnerName (max 40 characters, so long names are truncated at the source) with OwnerName2; the mailing address is OwnerAddr plus OwnerCity (max 13 characters, can read ST LOUIS MO) with OwnerState, OwnerZIP and OwnerCountry; the parcel id is ParcelId (11 digits, LowerParcelId also exists). SITEADDR carries runs of internal spaces (2233 PARK AV) and trailing padding, so a LIKE on a full street string misses; search on the house number plus a street word, or collapse whitespace on the client. Search with UPPER(OwnerName) LIKE 'SMITH%'; broad searches return exceededTransferLimit true at the 2000-row page. The layer has 194 fields and this record lists a subset. Layer 11 includes condominium master parcels, and the sub-accounts are layer 10 (not examined). No license or terms text is published on the data page. Verified live 2026-10-03: owner SMITH returned rows (first SMITH, DAVID E & SANDRA L TRS, parcel 22669130000, 2233 PARK AVE)."
15808
15900
  }
15809
15901
  ]
15810
15902
  };
@@ -16423,8 +16515,8 @@ var nevada_default = {
16423
16515
  corsEnabled: null,
16424
16516
  searchFields: [
16425
16517
  { name: "APN", label: "Assessor Parcel Number", searchable: true },
16426
- { name: "FIRSTNAME", label: "Owner First Name", searchable: true },
16427
16518
  { name: "LASTNAME", label: "Owner Last Name", searchable: true },
16519
+ { name: "FIRSTNAME", label: "Owner First Name", searchable: true },
16428
16520
  { name: "STREET", label: "Situs Street Name", searchable: true },
16429
16521
  { name: "STREETNUM", label: "Situs Street Number", searchable: false },
16430
16522
  { name: "CITY", label: "Situs City", searchable: true },
@@ -16453,7 +16545,7 @@ var nevada_default = {
16453
16545
  url: "https://explore-washoe.opendata.arcgis.com/",
16454
16546
  email: null
16455
16547
  },
16456
- notes: "71 fields confirmed including OBJECTID, APN, REGION, PIN, RECMAP, BOOK, PAGE, BLOCK, PARCEL, SUBNAME, TOWNSHIP, RANGE, SECTION_, FLOOR, MAPLINK, FLR, Shape, Shape.STArea(), STREETNUM, STREETDIR, STREET, CITY, SITUSZIP, FIRSTNAME, LASTNAME, MAILING1, MAILING2, MAILCITY, MAILSTATE, MAILZIP, LAND_USE, Zoning, WATER, SEWER, ACREAGE, TAXDIST, BEDROOMS, BATHS, YEARBLT, LANDASS, BUILDASS, TOTALASS, LANDAPR, BUILDAPR, TOTALAPR, DEPRECIATION, SALEDATE, SALEPRICE, OCCUPANCY, PROPCODE, TAXYEAR, STORIES, TOWNHOUSE, SQFEET, UNITS, AVCONSYEAR, BUILDINGTYPE, NBHD, SPECPROPCODE, QC, LAND_BASE, NBC, Fireplaces, HeatType, SecHeatType, Agency, AG_ABBR, FullAddress, ZoningWithDetail, Zoning_GIS, STRAP. Owner name available as FIRSTNAME + LASTNAME (split fields). Live query confirmed: APN 134087 returns 'MIEKO E SPAHR' in RENO 89503. maxRecordCount=1000. Covers Reno, Sparks, and unincorporated Washoe County (pop. 480,000). Note: owner name is public per Nevada law (unlike Clark County which also has a public layer but no owner). Current version 11.4."
16548
+ notes: "71 fields confirmed including OBJECTID, APN, REGION, PIN, RECMAP, BOOK, PAGE, BLOCK, PARCEL, SUBNAME, TOWNSHIP, RANGE, SECTION_, FLOOR, MAPLINK, FLR, Shape, Shape.STArea(), STREETNUM, STREETDIR, STREET, CITY, SITUSZIP, FIRSTNAME, LASTNAME, MAILING1, MAILING2, MAILCITY, MAILSTATE, MAILZIP, LAND_USE, Zoning, WATER, SEWER, ACREAGE, TAXDIST, BEDROOMS, BATHS, YEARBLT, LANDASS, BUILDASS, TOTALASS, LANDAPR, BUILDAPR, TOTALAPR, DEPRECIATION, SALEDATE, SALEPRICE, OCCUPANCY, PROPCODE, TAXYEAR, STORIES, TOWNHOUSE, SQFEET, UNITS, AVCONSYEAR, BUILDINGTYPE, NBHD, SPECPROPCODE, QC, LAND_BASE, NBC, Fireplaces, HeatType, SecHeatType, Agency, AG_ABBR, FullAddress, ZoningWithDetail, Zoning_GIS, STRAP. Owner name available as FIRSTNAME + LASTNAME (split fields). 2026-10-03: LASTNAME is now declared before FIRSTNAME, because the site's owner-field classifier and the stdio MCP server both search the FIRST owner-matching field, so a surname search was running against first names (FIRSTNAME holds values like EDWARD M III; LASTNAME holds SMITH). The sampleQuery already searched LASTNAME and still returns rows. Live query confirmed: APN 134087 returns 'MIEKO E SPAHR' in RENO 89503. maxRecordCount=1000. Covers Reno, Sparks, and unincorporated Washoe County (pop. 480,000). Note: owner name is public per Nevada law (unlike Clark County which also has a public layer but no owner). Current version 11.4."
16457
16549
  }
16458
16550
  ]
16459
16551
  };
@@ -16643,25 +16735,25 @@ var new_jersey_default = {
16643
16735
  hasPublicRest: true,
16644
16736
  endpoints: [
16645
16737
  {
16646
- url: "https://services9.arcgis.com/GCI7uwdn5grdMNX1/arcgis/rest/services/GEO_MC_Parcels/FeatureServer/9",
16738
+ url: "https://services1.arcgis.com/PsDtSYIjNsyfjwcX/arcgis/rest/services/Monmouth_County_Parcels/FeatureServer/0",
16647
16739
  serviceType: "FeatureServer",
16648
- layerIndex: 9,
16649
- layerName: "GEO.MC.Parcels",
16740
+ layerIndex: 0,
16741
+ layerName: "Parcels",
16650
16742
  supportsQuery: true,
16651
- corsEnabled: null,
16743
+ corsEnabled: true,
16652
16744
  searchFields: [
16653
16745
  {
16654
- name: "PAMS_PIN",
16746
+ name: "PAMSPIN",
16655
16747
  label: "Property Account Management System PIN",
16656
16748
  searchable: true
16657
16749
  },
16658
16750
  {
16659
- name: "OwnersName",
16751
+ name: "Owner_Name",
16660
16752
  label: "Owner Name",
16661
16753
  searchable: true
16662
16754
  },
16663
16755
  {
16664
- name: "PropertyLocation",
16756
+ name: "Location",
16665
16757
  label: "Property Location / Address",
16666
16758
  searchable: true
16667
16759
  },
@@ -16691,61 +16783,61 @@ var new_jersey_default = {
16691
16783
  searchable: true
16692
16784
  },
16693
16785
  {
16694
- name: "PropertyClass",
16786
+ name: "Class",
16695
16787
  label: "Property Class Code",
16696
16788
  searchable: false
16697
16789
  },
16698
16790
  {
16699
- name: "Acreage",
16700
- label: "Acreage",
16791
+ name: "Net_Value",
16792
+ label: "Net Taxable Value",
16701
16793
  searchable: false
16702
16794
  },
16703
16795
  {
16704
- name: "TotalAssmnt",
16705
- label: "Total Assessment",
16706
- searchable: false
16707
- },
16708
- {
16709
- name: "LandAssmnt",
16796
+ name: "Land_Value",
16710
16797
  label: "Land Assessment",
16711
16798
  searchable: false
16712
16799
  },
16713
16800
  {
16714
- name: "BuildingAssmnt",
16715
- label: "Building Assessment",
16801
+ name: "Impr_Value",
16802
+ label: "Improvement Assessment",
16716
16803
  searchable: false
16717
16804
  },
16718
16805
  {
16719
- name: "SaleDate",
16806
+ name: "Sale_Date",
16720
16807
  label: "Last Sale Date",
16721
16808
  searchable: false
16722
16809
  },
16723
16810
  {
16724
- name: "SalePrice",
16811
+ name: "Sale_Price",
16725
16812
  label: "Last Sale Price",
16726
16813
  searchable: false
16727
16814
  },
16728
16815
  {
16729
- name: "YrBuilt",
16816
+ name: "Year_Built",
16730
16817
  label: "Year Built",
16731
16818
  searchable: false
16732
16819
  },
16733
16820
  {
16734
- name: "Zone_",
16821
+ name: "Zone",
16735
16822
  label: "Zoning Code",
16736
16823
  searchable: false
16737
16824
  },
16738
16825
  {
16739
- name: "CityStateZip",
16826
+ name: "Owner_Street",
16827
+ label: "Owner Mailing Street",
16828
+ searchable: true
16829
+ },
16830
+ {
16831
+ name: "Owner_Csz",
16740
16832
  label: "Owner Mailing City/State/ZIP",
16741
16833
  searchable: false
16742
16834
  }
16743
16835
  ],
16744
- sampleQuery: "https://services9.arcgis.com/GCI7uwdn5grdMNX1/arcgis/rest/services/GEO_MC_Parcels/FeatureServer/9/query?where=UPPER(OwnersName)+LIKE+UPPER('%25SMITH%25')&outFields=PAMS_PIN,OwnersName,PropertyLocation,MUN_NAME,TotalAssmnt,SalePrice&returnGeometry=false&f=json&resultRecordCount=10",
16836
+ sampleQuery: "https://services1.arcgis.com/PsDtSYIjNsyfjwcX/arcgis/rest/services/Monmouth_County_Parcels/FeatureServer/0/query?where=UPPER(Owner_Name)+LIKE+UPPER('%25SMITH%25')&outFields=PAMSPIN,Owner_Name,Location,MUN_NAME,Net_Value,Sale_Price&returnGeometry=false&f=json&resultRecordCount=10",
16745
16837
  license: "public",
16746
16838
  licenseUrl: "https://gis-monmouthnj.opendata.arcgis.com/",
16747
16839
  status: "live",
16748
- lastVerified: "2026-05-15",
16840
+ lastVerified: "2026-10-03",
16749
16841
  verifiedBy: "manual"
16750
16842
  }
16751
16843
  ],
@@ -16754,7 +16846,7 @@ var new_jersey_default = {
16754
16846
  url: "https://gis-monmouthnj.opendata.arcgis.com/",
16755
16847
  email: null
16756
16848
  },
16757
- notes: "Monmouth County (pop. 643,000; Jersey Shore and inland suburbs) uses a county-direct FeatureServer separate from the NJOGIS statewide layer. The service at services9.arcgis.com (GEO_MC_Parcels, layer 9) reflects Monmouth County GIS's own MOD-IV data pull. PAMS_PIN is the statewide identifier, structured as county code + municipality code + block + lot + qualifier code (QCODE). OwnersName is public and queryable. Assessment fields include TotalAssmnt, LandAssmnt, BuildingAssmnt, SaleDate, SalePrice, and YrBuilt. CityStateZip is a single concatenated field for owner mailing address. The MUN and MUN_NAME fields identify the 53-municipality breakdown within the county (e.g., Freehold Borough, Long Branch, Red Bank, Asbury Park). Note: NJ Daniel's Law (P.L. 2021, c.371) allows protected individuals -- judges, law enforcement, domestic-violence victims -- to suppress their address from public records; the county layer may return null or redacted values for mailing addresses on affected parcels. For unredacted deed and transfer records, the Monmouth County Clerk's office portal at mcgifts.co.monmouth.nj.us is the authoritative source."
16849
+ notes: "Monmouth County (pop. 643,000; Jersey Shore and inland suburbs) uses a county-direct FeatureServer separate from the NJOGIS statewide layer, whose OWNER_NAME is blank for every Monmouth row. As of 2026-10-03 the county publishes from a new ArcGIS Online org (MonmouthNJGIS): Monmouth_County_Parcels, layer 0 (Parcels) at services1.arcgis.com, item modified 2026-09-25, CORS open, about 265,000 rows. The older services9.arcgis.com GEO_MC_Parcels service now answers Invalid URL and is gone from that org's service list, and the services6.arcgis.com monmouth_county_nj_parcels copy the item search still lists is unshared (Token Required); neither should be re-registered. The layer is Monmouth County GIS's own MOD-IV data pull. PAMSPIN is the statewide identifier, structured as county code + municipality code + block + lot + qualifier code (QCODE). Owner_Name is public and queryable. Assessment fields include Net_Value, Land_Value, Impr_Value, Sale_Date, Sale_Price, and Year_Built; every one of them is a STRING on this layer (Sale_Date reads like 12/09/99), so numeric compares and sorts will not behave. Owner mailing address is split into Owner_Street and Owner_Csz, a single padded city/state/ZIP string; the separate City/State/Zip columns appear to hold a situs postal city and are not declared as mailing fields. The old Acreage field has no reliable twin (Lot_Size read 0.0000 on a sampled row) and was dropped. The layer carries Duplicate and Error flag columns and has more rows than the state composite (265,259 vs 249,796), so duplicate parcels exist and pickers should expect tied rows. The MUN and MUN_NAME fields identify the 53-municipality breakdown within the county (e.g., Freehold Borough, Long Branch, Red Bank, Asbury Park). Note: NJ Daniel's Law (P.L. 2021, c.371) allows protected individuals -- judges, law enforcement, domestic-violence victims -- to suppress their address from public records; the county layer may return null or redacted values for mailing addresses on affected parcels. For unredacted deed and transfer records, the Monmouth County Clerk's office portal at mcgifts.co.monmouth.nj.us is the authoritative source."
16758
16850
  },
16759
16851
  {
16760
16852
  id: "nj-ocean",
@@ -20099,7 +20191,7 @@ var south_carolina_default = {
20099
20191
  url: "https://www.gcgis.org/",
20100
20192
  email: "gis@greenvillecounty.org"
20101
20193
  },
20102
- notes: `MARKED UNREACHABLE 2026-08-29 after 25 days down (297 consecutive liveness failures since 2026-08-04). The registered service answers verbatim "Service GreenvilleJS/Map_Layers_JS/MapServer not started"; the county's own iMAP service (imap/iMAP/MapServer) is also not started; the GreenvilleJS and imap folders list no services; the one visible service (GCGIA/Greenville_Base, 61 layers) has no parcel layer; ArcGIS Hub lists no county-owned parcel feature service. The county has taken its map services down and nothing replaces them yet. Liveness keeps probing; flip back to live when it recovers. Owner search remains available at the county's non-GIS Real Property Search. Prior notes: Greenville County (pop. 530,000; seat: Greenville) Tax Parcel layer is within the Map_Layers_JS composite MapServer at layer index 52. 20 fields confirmed: PIN, OWNAM1/2, STREET, CITY, STATE, ZIP5, NAMECO, POWNNM, DEEDDATE, CUBOOK, CUPAGE, PLTBK1, PPAGE1, DIST, MKTAREA, JURIS, LANDUSE, DESCR, SUBDIV. Verified 2026-05-15: SMITH returns Greenville SC addresses (e.g., '124 MCDANIEL GREENE', '218 BUTLER AVE'). The same MapServer contains 95+ other layers (zoning, census, drainage, etc.). Layer 52 is specifically Tax Parcel. The GCGIS GreenvilleJS MapServer is the public-facing viewer service.`
20194
+ notes: `RECHECKED 2026-10-03, STILL UNREACHABLE, now for a structural reason. The GreenvilleJS folder has been deleted, not just stopped: the registered layer now answers Service GreenvilleJS/Map_Layers_JS/MapServer not found (it said not started on 08-29) and the folder itself returns Folder not found. The services root (www.gcgis.org/arcgis/rest/services) lists only a GVL_COMPOSITE_LOC geocoder and a Utilities folder of geoprocessing, geometry and print tools; GCGIA/Greenville_Base is gone too. The county rebuilt its viewer (www.gcgis.org/apps/greenvillenj/) on a private, undocumented ASP.NET web API (apps/GreenvilleNJ_webapi/asp/webAPI) that accepts POST only and is not an ArcGIS REST service the atlas can register. Candidates checked and rejected: the Greenville-Pickens transportation study's TaxParcel02172021_gdb FeatureServer (countywide with the county schema and owner search, but a February 2021 snapshot, too stale for mailed notices); the GreenvilleCountyBaseData FeatureServer by mwassonfigis (current schema but only about 33,000 of about 228,000 parcels, a partial extract); the City of Greenville Parcels with Ownership layer on citygis.greenvillesc.gov (city jurisdiction only); and a utility.arcgis.com proxy of the county's GCGIA feature service (Item does not exist or is inaccessible). No South Carolina statewide owner-bearing parcel layer was found. Status stays unreachable; recheck the services root periodically for a new parcel service and re-register from it. Earlier history: MARKED UNREACHABLE 2026-08-29 after 25 days down (297 consecutive liveness failures since 2026-08-04). The registered service answers verbatim "Service GreenvilleJS/Map_Layers_JS/MapServer not started"; the county's own iMAP service (imap/iMAP/MapServer) is also not started; the GreenvilleJS and imap folders list no services; the one visible service (GCGIA/Greenville_Base, 61 layers) has no parcel layer; ArcGIS Hub lists no county-owned parcel feature service. The county has taken its map services down and nothing replaces them yet. Liveness keeps probing; flip back to live when it recovers. Owner search remains available at the county's non-GIS Real Property Search. Prior notes: Greenville County (pop. 530,000; seat: Greenville) Tax Parcel layer is within the Map_Layers_JS composite MapServer at layer index 52. 20 fields confirmed: PIN, OWNAM1/2, STREET, CITY, STATE, ZIP5, NAMECO, POWNNM, DEEDDATE, CUBOOK, CUPAGE, PLTBK1, PPAGE1, DIST, MKTAREA, JURIS, LANDUSE, DESCR, SUBDIV. Verified 2026-05-15: SMITH returns Greenville SC addresses (e.g., '124 MCDANIEL GREENE', '218 BUTLER AVE'). The same MapServer contains 95+ other layers (zoning, census, drainage, etc.). Layer 52 is specifically Tax Parcel. The GCGIS GreenvilleJS MapServer is the public-facing viewer service.`
20103
20195
  },
20104
20196
  {
20105
20197
  id: "sc-charleston",
package/dist/index.d.cts CHANGED
@@ -37,6 +37,54 @@ interface EndpointRecord {
37
37
  supportsQuery: boolean;
38
38
  corsEnabled: boolean | null;
39
39
  searchFields: SearchField[];
40
+ /** ANDed into every ATTRIBUTE search against this endpoint. Only needed when
41
+ * one endpoint serves several counties - NYC's MAPPLUTO layer carries all
42
+ * five boroughs, so without this a Brooklyn owner search returns Queens
43
+ * parcels. Spatial lookups do not need it: the buffer already sits on the
44
+ * address, which is why the paid enrichment path is unaffected. */
45
+ scopeWhere?: string;
46
+ /**
47
+ * Declares that this layer CANNOT serve an ATTRIBUTE search - a `where`-clause
48
+ * query on a column, which is what "search by owner name / APN / address text"
49
+ * means everywhere on the site. Absent (the default, and true of every
50
+ * registration except the 67 Florida counties on the shared FDOR layer, one
51
+ * layer and one live case, see below) means an attribute search IS offered.
52
+ *
53
+ * THIS IS THE ONE FLAG. Do not add a second field, and do not express this
54
+ * with `searchable: false` on every column: `searchable` is a FIELD-level
55
+ * record of whether a `where` clause may name that column (the generator sets
56
+ * it from the column's type), it is set inconsistently by hand, and six
57
+ * different owner-capability rules already read it. This says something
58
+ * different and says it once, at the level where it is true - the endpoint.
59
+ *
60
+ * Honoured by `offersAttributeSearch` / `countyOffersAttributeSearch` in
61
+ * capability-core.ts, which every surface that DESCRIBES a search must go
62
+ * through. Field-availability functions deliberately do NOT read it: a layer
63
+ * flagged here still answers owner and address fields SPATIALLY, which is
64
+ * what the billed lookup, bulk enrichment and radius paths use, so flipping
65
+ * owner_name to not_published would be a false claim about data we do serve
66
+ * and do bill for. Search and availability are different questions.
67
+ *
68
+ * THE ONE LIVE CASE, and what would retire it. Florida's FDOR statewide
69
+ * cadastral layer carries all 67 counties and 10.8M parcels, and CO_NO - the
70
+ * county code, the only column identifying a county, and therefore every
71
+ * Florida registration's scopeWhere - is NOT INDEXED. Its declared indexes
72
+ * are OBJECTID, Shape, Shape__Area, Shape__Length and PARCEL_ID. A
73
+ * county-scoped attribute search therefore scans the roll from the top:
74
+ * measured across all 67 counties on 2026-09-20, only 4 answered inside 12s
75
+ * and the rest hit the service's ~55s ceiling. The conjunct poisons an
76
+ * indexed predicate too - PARCEL_ID LIKE '00%' alone answers in 0.9s, and
77
+ * `CO_NO=77 AND PARCEL_ID LIKE '00%'` times out - so there is no cheaper
78
+ * column to scope on. Dropping the scope is not an option either: an unscoped
79
+ * attribute search on a shared layer answers with every other county's
80
+ * parcels, which is exactly what shared-endpoint-scope.test.ts forbids.
81
+ * Scoped is unaffordable and unscoped is wrong, so attribute search is not
82
+ * offered at all.
83
+ *
84
+ * IF FDOR EVER INDEXES CO_NO, delete the flag from those 67 endpoint records
85
+ * and every surface re-offers the search on its own. Nothing else changes.
86
+ */
87
+ attributeSearch?: "unsupported";
40
88
  sampleQuery: string | null;
41
89
  license: LicenseType;
42
90
  licenseUrl: string | null;