gov-data-mcp 1.0.0 → 1.0.1
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/LICENSE +21 -21
- package/package.json +1 -1
- package/src/catalog.json +529 -36
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Kyle Maloney (malonestar)
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kyle Maloney (malonestar)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gov-data-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"mcpName": "io.github.malonestar/gov-data-mcp",
|
|
5
5
|
"description": "MCP server exposing 95 US government open-data tools (EPA, FEMA, USGS, NOAA, FAA, USACE, FDIC, HUD, state licensing boards) as agent-callable tools, backed by published Apify Actors.",
|
|
6
6
|
"type": "module",
|
package/src/catalog.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-08-
|
|
2
|
+
"generatedAt": "2026-08-20T08:40:28.823Z",
|
|
3
3
|
"owner": "malonestar",
|
|
4
|
-
"count":
|
|
4
|
+
"count": 114,
|
|
5
5
|
"actors": [
|
|
6
6
|
{
|
|
7
7
|
"slug": "absentee-owner-lead-list-builder",
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
},
|
|
151
151
|
"sinceDate": {
|
|
152
152
|
"type": "string",
|
|
153
|
-
"description": "Only return notices published on or after this date (maps to the Federal Register publication_date filter). Use for recurring monitoring windows. Empty = no lower bound."
|
|
153
|
+
"description": "Only return notices published on or after this date (maps to the Federal Register publication_date filter). MUST be YYYY-MM-DD, e.g. 2025-01-15 (an unpadded 2026-1-15 is accepted and padded for you). Any other format is rejected and the run fails without billing, rather than being silently reinterpreted by the Federal Register's own server-side date parser. Slash forms are rejected on purpose: live-measured 2026-08-20, an ambiguous 05/06/2026 is silently read as May 6 (US order) and returns 448 documents where the June 5 (EU) reading returns 312 - a 136-document difference on an HTTP 200, with nothing in the response indicating a format was guessed. Jan 2026 is silently read as January 1. Use for recurring monitoring windows. Empty = no lower bound. Example: \"2026-01-01\"."
|
|
154
154
|
},
|
|
155
155
|
"caseNumber": {
|
|
156
156
|
"type": "string",
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
},
|
|
215
215
|
"sinceDate": {
|
|
216
216
|
"type": "string",
|
|
217
|
-
"description": "Only return enforcement actions dated on or after this day (matches the action's start/effective date).
|
|
217
|
+
"description": "Only return enforcement actions dated on or after this day (matches the action's start/effective date). MUST be YYYY-MM-DD (e.g. 2024-01-15); 2024-1-15 is accepted and zero-padded. ANY other format FAILS the run before anything is fetched or billed - it is never guessed at. The value is compared against ISO action dates, so an unrejected bad format is invisible: measured on this actor's own code, 01/15/2024 returned 12 of 12 test actions labelled as a filtered answer, Jan 2024 returned 0 of 12, and 2024/01/01 returned a plausible-looking 4 of 12, against a true 6. Slash forms are rejected on purpose - 05/06/2025 is ambiguous between US (May 6) and EU (June 5) order, so guessing would trade a loud error for a silent one-month window shift. Empty = no lower bound (the whole feed). Example: \"2024-01-01\"."
|
|
218
218
|
},
|
|
219
219
|
"actionTypes": {
|
|
220
220
|
"type": "array",
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
},
|
|
299
299
|
"sinceModified": {
|
|
300
300
|
"type": "string",
|
|
301
|
-
"description": "Return only claims created/updated on or after this date — use for new-claim monitoring."
|
|
301
|
+
"description": "Return only claims created/updated on or after this date — use for new-claim monitoring. MUST be YYYY-MM-DD (e.g. 2026-06-01) - any other format is rejected and the run fails without billing, rather than being silently reinterpreted by ArcGIS's own date parser. Slash forms are rejected on purpose: live-measured, an ambiguous 05/06/2025 is silently read as May 6 (US order) and differs from the June 5 (EU) reading by 6.0% of matching claims, with nothing in the response indicating a format was guessed. Empty = no lower bound. Example: \"2026-01-01\"."
|
|
302
302
|
},
|
|
303
303
|
"includeClosed": {
|
|
304
304
|
"type": "boolean",
|
|
@@ -746,7 +746,7 @@
|
|
|
746
746
|
},
|
|
747
747
|
"since": {
|
|
748
748
|
"type": "string",
|
|
749
|
-
"description": "Only return licenses issued/started after this date, per each city's issue-date column.
|
|
749
|
+
"description": "Only return licenses issued/started after this date, per each city's issue-date column. MUST be YYYY-MM-DD (e.g. 2025-01-15) - any other format is rejected and the run fails without billing, rather than silently returning every licence in the city as a new lead. Leave empty for the most recent records overall. Example: \"2025-01-01\"."
|
|
750
750
|
},
|
|
751
751
|
"name": {
|
|
752
752
|
"type": "string",
|
|
@@ -1230,7 +1230,7 @@
|
|
|
1230
1230
|
},
|
|
1231
1231
|
"sinceDate": {
|
|
1232
1232
|
"type": "string",
|
|
1233
|
-
"description": "Optional. Only include cases whose findings end date is after this date (e.g.
|
|
1233
|
+
"description": "Optional. Only include cases whose findings end date is after this date. MUST be YYYY-MM-DD (e.g. 2023-01-01) - any other format FAILS the run without billing, rather than being guessed at. The value is compared against DOL's own ISO date column and is also sent to DOL as a server-side 'gt' filter, so a bad format does not error upstream - it silently returns the WHOLE case set or NONE of it, and neither is visible in the output. Measured on this actor: 01/15/2023 returned 3 of 3 cases labelled as filtered; Jan 2023 returned 0 of 3, a confident 'no enforcement cases'. Slash forms are rejected on purpose: 05/06/2025 is ambiguous between US (May 6) and EU (June 5) order. 2023-1-1 is accepted and zero-padded. Leave blank for no date filter. Example: \"2023-01-01\"."
|
|
1234
1234
|
},
|
|
1235
1235
|
"repeatThreshold": {
|
|
1236
1236
|
"type": "integer",
|
|
@@ -1277,7 +1277,7 @@
|
|
|
1277
1277
|
},
|
|
1278
1278
|
"sinceDate": {
|
|
1279
1279
|
"type": "string",
|
|
1280
|
-
"description": "Only return shortages whose update date (or initial posting date when no update) is on or after this date.
|
|
1280
|
+
"description": "Only return shortages whose update date (or initial posting date when no update) is on or after this date. Accepted forms: 2025-01-15 (ISO, preferred), 2025-01, 2025, or 01/15/2025 (US month/day/year). Anything else FAILS the run rather than being guessed at — this value is compared against ISO dates, so an unusable format would silently return either the entire feed or nothing at all, with no error. Leave blank for no lower bound. Example: \"2025-01-15\"."
|
|
1281
1281
|
},
|
|
1282
1282
|
"maxResults": {
|
|
1283
1283
|
"type": "integer",
|
|
@@ -1432,8 +1432,8 @@
|
|
|
1432
1432
|
{
|
|
1433
1433
|
"slug": "epa-contaminated-site-screener",
|
|
1434
1434
|
"actorId": "malonestar/epa-contaminated-site-screener",
|
|
1435
|
-
"title": "Phase I ESA Environmental
|
|
1436
|
-
"description": "Environmental
|
|
1435
|
+
"title": "Phase I ESA & Environmental Due Diligence: EPA Database Search",
|
|
1436
|
+
"description": "Environmental due diligence by address: an environmental database report over EPA Superfund/NPL, RCRA CORRACTS/TSD/generators, TRI, UST, LUST, Brownfields, NPDES, AIR, TSCA and RMP, scored at ASTM E1527-21 search distances, plus on-site Superfund and AUL boundary checks. No API key.",
|
|
1437
1437
|
"categories": [
|
|
1438
1438
|
"AGENTS",
|
|
1439
1439
|
"DEVELOPER_TOOLS",
|
|
@@ -1517,7 +1517,7 @@
|
|
|
1517
1517
|
"slug": "epa-drinking-water-quality-screener",
|
|
1518
1518
|
"actorId": "malonestar/epa-drinking-water-quality-screener",
|
|
1519
1519
|
"title": "EPA Drinking Water Quality Screener - Violations, Lead & PFAS",
|
|
1520
|
-
"description": "Screen any US coordinate for the public water system serving it: SDWA health-based violations, Lead & Copper Rule 90th-percentile results and UCMR5 PFAS detections
|
|
1520
|
+
"description": "Screen any US coordinate for the public water system serving it: SDWA health-based violations, Lead & Copper Rule 90th-percentile results and UCMR5 PFAS detections - the evidence base behind the LCRI (Nov 1, 2027) and PFAS NPDWR (Apr 26, 2027) deadlines. Never clears a source that did not answer.",
|
|
1521
1521
|
"categories": [
|
|
1522
1522
|
"BUSINESS",
|
|
1523
1523
|
"DEVELOPER_TOOLS",
|
|
@@ -1767,6 +1767,95 @@
|
|
|
1767
1767
|
]
|
|
1768
1768
|
}
|
|
1769
1769
|
},
|
|
1770
|
+
{
|
|
1771
|
+
"slug": "epa-rcra-corrective-action-cleanup-monitor",
|
|
1772
|
+
"actorId": "malonestar/epa-rcra-corrective-action-cleanup-monitor",
|
|
1773
|
+
"title": "RCRA Corrective Action Cleanup Timeline & Overdue Milestones",
|
|
1774
|
+
"description": "Track RCRA corrective-action cleanups from EPA RCRAInfo: milestone dates, scheduled vs actual, schedule slip, overdue milestones, remedy status, engineering and institutional controls, and confirmed release media per facility.",
|
|
1775
|
+
"categories": [
|
|
1776
|
+
"REAL_ESTATE",
|
|
1777
|
+
"DEVELOPER_TOOLS",
|
|
1778
|
+
"AGENTS"
|
|
1779
|
+
],
|
|
1780
|
+
"storeUrl": "https://apify.com/malonestar/epa-rcra-corrective-action-cleanup-monitor",
|
|
1781
|
+
"inputSchema": {
|
|
1782
|
+
"type": "object",
|
|
1783
|
+
"properties": {
|
|
1784
|
+
"state": {
|
|
1785
|
+
"type": "string",
|
|
1786
|
+
"description": "Two-letter RCRAInfo activity location to screen, e.g. CO, TX, CA. RCRAInfo uses 59 location codes, which are the 50 states plus DC, AS, GU, PR, VI, NN (Navajo Nation), TT (Trust Territories) and the EPA administrative codes XH and XJ. Required, so an empty call can never start a national run. Pass the literal value ANY to look facilities up nationally - ANY is only accepted together with a non-empty Handler IDs list. Example: \"CO\"."
|
|
1787
|
+
},
|
|
1788
|
+
"handlerIds": {
|
|
1789
|
+
"type": "array",
|
|
1790
|
+
"description": "Specific 12-character RCRAInfo handler IDs, e.g. COD007079478. When supplied these are matched nationally and the activity location above is ignored, so this is the right input for looking up a named facility. Leave empty to screen the whole activity location. Example: [].",
|
|
1791
|
+
"items": {
|
|
1792
|
+
"type": "string"
|
|
1793
|
+
}
|
|
1794
|
+
},
|
|
1795
|
+
"outputMode": {
|
|
1796
|
+
"type": "string",
|
|
1797
|
+
"description": "facility = one rollup row per RCRA handler with the cleanup stage, every national milestone date and the past-due summary. event = one row per corrective-action event, the raw decoded timeline. both = facility rollups followed by the events of those same facilities, sharing one maximum-results budget: at most half of it (rounded up) goes to rollups and the rest to their events, and whichever side cannot fill its share hands the remainder to the other, so both always returns both kinds when both exist. Example: \"facility\".",
|
|
1798
|
+
"enum": [
|
|
1799
|
+
"facility",
|
|
1800
|
+
"event",
|
|
1801
|
+
"both"
|
|
1802
|
+
]
|
|
1803
|
+
},
|
|
1804
|
+
"onlyWithPastDueMilestones": {
|
|
1805
|
+
"type": "boolean",
|
|
1806
|
+
"description": "Keep only facilities where at least one corrective-action milestone has a scheduled date in the past and no completion date on file in RCRAInfo. Note the honest reading: that means EPA or the state records no completion, which can mean the milestone is genuinely outstanding OR that a completion was never entered. Example: true."
|
|
1807
|
+
},
|
|
1808
|
+
"onlyOpenCleanups": {
|
|
1809
|
+
"type": "boolean",
|
|
1810
|
+
"description": "Keep only facilities whose corrective action is still open - no CA900 performance-standards-attained event and no CA999 process-terminated event. Facilities whose events use only state-specific codes are excluded by this filter because their completion status is genuinely unknown rather than open. Example: false."
|
|
1811
|
+
},
|
|
1812
|
+
"includeFacilityDetails": {
|
|
1813
|
+
"type": "boolean",
|
|
1814
|
+
"description": "Resolve each emitted handler's facility name, street address, city, county and FRS registry ID from the EPA Facility Registry Service. One small request per facility. Turn off for a faster run; the facility_* fields then stay null with site_lookup_status set to not_requested rather than being guessed. Example: true."
|
|
1815
|
+
},
|
|
1816
|
+
"maxResults": {
|
|
1817
|
+
"type": "integer",
|
|
1818
|
+
"description": "Hard cap on emitted rows, which is also the hard cap on what this run can bill. It is enforced identically in every output mode, including both, by one function every emitted row passes through - a run that cannot bound its own bill fails instead of emitting. Rows are ordered worst-overdue first, so a capped run keeps the most consequential facilities. matched_facilities_total and results_truncated on every row report what the cap left behind. Example: 60. Applied by default if omitted: 500.",
|
|
1819
|
+
"minimum": 1,
|
|
1820
|
+
"maximum": 20000
|
|
1821
|
+
},
|
|
1822
|
+
"maxFacilityLookups": {
|
|
1823
|
+
"type": "integer",
|
|
1824
|
+
"description": "Cap on EPA Facility Registry Service lookups per run. Facilities beyond the cap are still emitted with their full cleanup timeline; their facility_* fields stay null and site_lookup_status reads skipped_lookup_cap. Applied by default if omitted: 150.",
|
|
1825
|
+
"minimum": 0,
|
|
1826
|
+
"maximum": 2000
|
|
1827
|
+
},
|
|
1828
|
+
"maxSnapshotAgeDays": {
|
|
1829
|
+
"type": "integer",
|
|
1830
|
+
"description": "The run fails if the newest RCRAInfo bulk export EPA publishes is older than this. RCRAInfo refreshes weekly, and a superseded export URL keeps answering HTTP 200 with the older snapshot instead of 404ing, so this freshness assertion is what stops stale cleanup milestones being sold as current. Applied by default if omitted: 21.",
|
|
1831
|
+
"minimum": 1,
|
|
1832
|
+
"maximum": 120
|
|
1833
|
+
},
|
|
1834
|
+
"pinRunId": {
|
|
1835
|
+
"type": "string",
|
|
1836
|
+
"description": "Reproduce an earlier answer by naming a RCRAInfo export run, e.g. CSV-2026-08-16T03-00-00-0400. If the pinned run is no longer the one EPA publishes, the run fails loudly rather than quietly serving a superseded snapshot. Leave blank for the current export."
|
|
1837
|
+
},
|
|
1838
|
+
"simulateOutage": {
|
|
1839
|
+
"type": "string",
|
|
1840
|
+
"description": "Diagnostic seam that forces one drift probe to be unable to complete, so the failure path can be re-proved on demand instead of only during a real outage. none runs normally. Example: \"none\".",
|
|
1841
|
+
"enum": [
|
|
1842
|
+
"none",
|
|
1843
|
+
"manifest_info",
|
|
1844
|
+
"manifest_modules",
|
|
1845
|
+
"module_download",
|
|
1846
|
+
"stale_snapshot",
|
|
1847
|
+
"dictionary",
|
|
1848
|
+
"positive_canary",
|
|
1849
|
+
"negative_control",
|
|
1850
|
+
"site_lookup"
|
|
1851
|
+
]
|
|
1852
|
+
}
|
|
1853
|
+
},
|
|
1854
|
+
"required": [
|
|
1855
|
+
"state"
|
|
1856
|
+
]
|
|
1857
|
+
}
|
|
1858
|
+
},
|
|
1770
1859
|
{
|
|
1771
1860
|
"slug": "epa-rcra-hazwaste-generator-rollup",
|
|
1772
1861
|
"actorId": "malonestar/epa-rcra-hazwaste-generator-rollup",
|
|
@@ -1819,6 +1908,134 @@
|
|
|
1819
1908
|
]
|
|
1820
1909
|
}
|
|
1821
1910
|
},
|
|
1911
|
+
{
|
|
1912
|
+
"slug": "epa-repowering-brownfield-to-solar-site-finder",
|
|
1913
|
+
"actorId": "malonestar/epa-repowering-brownfield-to-solar-site-finder",
|
|
1914
|
+
"title": "EPA Brownfield-to-Solar Site Finder - RE-Powering Mapper",
|
|
1915
|
+
"description": "Find EPA RE-Powering pre-screened contaminated land, landfills and abandoned mine sites with renewable-energy redevelopment potential. Filter 190,976 sites by state, technology, acreage, solar and wind resource and 2022 interconnection context, ranked as development candidates.",
|
|
1916
|
+
"categories": [
|
|
1917
|
+
"REAL_ESTATE",
|
|
1918
|
+
"DEVELOPER_TOOLS",
|
|
1919
|
+
"AGENTS"
|
|
1920
|
+
],
|
|
1921
|
+
"storeUrl": "https://apify.com/malonestar/epa-repowering-brownfield-to-solar-site-finder",
|
|
1922
|
+
"inputSchema": {
|
|
1923
|
+
"type": "object",
|
|
1924
|
+
"properties": {
|
|
1925
|
+
"states": {
|
|
1926
|
+
"type": "array",
|
|
1927
|
+
"description": "Two-letter US state or territory codes to screen, for example [\"CO\"] or [\"PA\",\"WV\"]. Required, and capped at 6 per run, so that a bare {} call can never run against all 190,976 national sites and bill for it. Example: [\"CO\"].",
|
|
1928
|
+
"items": {
|
|
1929
|
+
"type": "string"
|
|
1930
|
+
}
|
|
1931
|
+
},
|
|
1932
|
+
"counties": {
|
|
1933
|
+
"type": "array",
|
|
1934
|
+
"description": "Optional county names to narrow the search, matched exactly and case-insensitively against EPA's County column, for example [\"EL PASO\",\"DENVER\"]. Leave empty for all counties in the chosen states.",
|
|
1935
|
+
"items": {
|
|
1936
|
+
"type": "string"
|
|
1937
|
+
}
|
|
1938
|
+
},
|
|
1939
|
+
"cities": {
|
|
1940
|
+
"type": "array",
|
|
1941
|
+
"description": "Optional city names to narrow the search, matched exactly and case-insensitively against EPA's City column. Note that 19,675 sites carry no city, so a city filter will exclude them.",
|
|
1942
|
+
"items": {
|
|
1943
|
+
"type": "string"
|
|
1944
|
+
}
|
|
1945
|
+
},
|
|
1946
|
+
"technologies": {
|
|
1947
|
+
"type": "array",
|
|
1948
|
+
"description": "Keep only sites EPA flagged for at least one of these technologies. Valid values: utility_solar, distributed_solar, offgrid_solar, utility_wind, community_wind, facility_wind, biopower, biorefinery. Leave empty for every technology. Note that EPA's summary Solar column is 'Y' on all 190,976 sites and carries no information, so this actor filters on the scale-specific columns instead. Example: [\"utility_solar\"].",
|
|
1949
|
+
"items": {
|
|
1950
|
+
"type": "string"
|
|
1951
|
+
}
|
|
1952
|
+
},
|
|
1953
|
+
"programCategories": {
|
|
1954
|
+
"type": "array",
|
|
1955
|
+
"description": "Keep only sites whose EPA program falls in these categories. Valid values: abandoned_mine_land, brownfield, landfill, superfund, rcra_corrective_action, underground_storage_tank, institutional_control, state_cleanup_program. Applied in memory after the query, because the category is derived from EPA's 49 verbatim program names.",
|
|
1956
|
+
"items": {
|
|
1957
|
+
"type": "string"
|
|
1958
|
+
}
|
|
1959
|
+
},
|
|
1960
|
+
"landfillOnly": {
|
|
1961
|
+
"type": "boolean",
|
|
1962
|
+
"description": "Keep only the 18,298 sites EPA flags as a known landfill. Landfill-to-solar is the deepest-precedent redevelopment archetype."
|
|
1963
|
+
},
|
|
1964
|
+
"abandonedMineLandOnly": {
|
|
1965
|
+
"type": "boolean",
|
|
1966
|
+
"description": "Keep only the 17,756 sites EPA flags as known Abandoned Mine Land."
|
|
1967
|
+
},
|
|
1968
|
+
"minAcreage": {
|
|
1969
|
+
"type": "integer",
|
|
1970
|
+
"description": "Minimum site acreage. EPA writes acreage 0 as a null sentinel on 108,888 sites (it means 'acreage unknown', not 'zero acres'), so any minimum-acreage filter necessarily excludes every site with unknown acreage. Example: 20.",
|
|
1971
|
+
"minimum": 1
|
|
1972
|
+
},
|
|
1973
|
+
"minGhi": {
|
|
1974
|
+
"type": "integer",
|
|
1975
|
+
"description": "Minimum maximum-annual Global Horizontal Irradiance. Measured range across the layer is 2.0 to 6.9 kWh/m2/day.",
|
|
1976
|
+
"minimum": 0,
|
|
1977
|
+
"maximum": 10
|
|
1978
|
+
},
|
|
1979
|
+
"minWindSpeed100m": {
|
|
1980
|
+
"type": "integer",
|
|
1981
|
+
"description": "Minimum modelled wind speed at 100 m hub height. Roughly 6.5 m/s and above is where utility-scale wind becomes interesting.",
|
|
1982
|
+
"minimum": 0,
|
|
1983
|
+
"maximum": 20
|
|
1984
|
+
},
|
|
1985
|
+
"maxSubstationDistanceMiles": {
|
|
1986
|
+
"type": "integer",
|
|
1987
|
+
"description": "Maximum distance to the nearest substation. This is EPA's FROZEN 2022 precomputation, not a live measurement, and it must not be used to size an interconnection. Run hifld-grid-proximity-screener on the returned coordinates for the live figure.",
|
|
1988
|
+
"minimum": 0
|
|
1989
|
+
},
|
|
1990
|
+
"maxTransmissionDistanceMiles": {
|
|
1991
|
+
"type": "integer",
|
|
1992
|
+
"description": "Maximum distance to the nearest transmission line, again from EPA's frozen 2022 precomputation rather than a live measurement.",
|
|
1993
|
+
"minimum": 0
|
|
1994
|
+
},
|
|
1995
|
+
"minTransmissionKv": {
|
|
1996
|
+
"type": "integer",
|
|
1997
|
+
"description": "Minimum voltage of the nearest transmission line from EPA's 2022 precomputation. Note that 16,803 sites publish a voltage while reporting the line status as NOT AVAILABLE, which this actor flags on the row rather than silently resolving.",
|
|
1998
|
+
"minimum": 0
|
|
1999
|
+
},
|
|
2000
|
+
"sortBy": {
|
|
2001
|
+
"type": "string",
|
|
2002
|
+
"description": "How to order the returned sites. Valid values: score_desc (default), acreage_desc, ghi_desc, wind_speed_desc, interconnection_distance_asc, state_then_county. Sites with a missing value always sort last. Example: \"score_desc\".",
|
|
2003
|
+
"enum": [
|
|
2004
|
+
"score_desc",
|
|
2005
|
+
"acreage_desc",
|
|
2006
|
+
"ghi_desc",
|
|
2007
|
+
"wind_speed_desc",
|
|
2008
|
+
"interconnection_distance_asc",
|
|
2009
|
+
"state_then_county"
|
|
2010
|
+
]
|
|
2011
|
+
},
|
|
2012
|
+
"maxResults": {
|
|
2013
|
+
"type": "integer",
|
|
2014
|
+
"description": "Maximum number of sites to return and bill for. Every row also carries matched_sites_total and results_truncated, so a capped answer can never be mistaken for a complete one. Applied by default if omitted: 500.",
|
|
2015
|
+
"minimum": 1,
|
|
2016
|
+
"maximum": 5000
|
|
2017
|
+
},
|
|
2018
|
+
"simulateOutage": {
|
|
2019
|
+
"type": "string",
|
|
2020
|
+
"description": "Diagnostic seam that forces a specific drift probe or the paging step to fail, so the failure paths can be re-proved on demand rather than only during a real outage. Valid values: none (default), total_floor, positive_canary, sentinel_integrity, negative_control, filter_narrows, pv_plateau_integrity, all_probes, paging. Example: \"none\".",
|
|
2021
|
+
"enum": [
|
|
2022
|
+
"none",
|
|
2023
|
+
"total_floor",
|
|
2024
|
+
"positive_canary",
|
|
2025
|
+
"sentinel_integrity",
|
|
2026
|
+
"negative_control",
|
|
2027
|
+
"filter_narrows",
|
|
2028
|
+
"pv_plateau_integrity",
|
|
2029
|
+
"all_probes",
|
|
2030
|
+
"paging"
|
|
2031
|
+
]
|
|
2032
|
+
}
|
|
2033
|
+
},
|
|
2034
|
+
"required": [
|
|
2035
|
+
"states"
|
|
2036
|
+
]
|
|
2037
|
+
}
|
|
2038
|
+
},
|
|
1822
2039
|
{
|
|
1823
2040
|
"slug": "epa-sole-source-aquifer-screener",
|
|
1824
2041
|
"actorId": "malonestar/epa-sole-source-aquifer-screener",
|
|
@@ -1917,6 +2134,90 @@
|
|
|
1917
2134
|
]
|
|
1918
2135
|
}
|
|
1919
2136
|
},
|
|
2137
|
+
{
|
|
2138
|
+
"slug": "epa-tsca-cdr-chemical-site-screener",
|
|
2139
|
+
"actorId": "malonestar/epa-tsca-cdr-chemical-site-screener",
|
|
2140
|
+
"title": "EPA TSCA CDR Chemical Site Screener - Manufacture & Import",
|
|
2141
|
+
"description": "Which TSCA chemicals are manufactured or imported at a site, in what production volume, by whom, and with what worker-exposure context. Screens EPA's 2024 Chemical Data Reporting bulk file by radius, CASRN or state, and keeps a CBI-withheld volume distinct from a real zero.",
|
|
2142
|
+
"categories": [
|
|
2143
|
+
"REAL_ESTATE",
|
|
2144
|
+
"DEVELOPER_TOOLS",
|
|
2145
|
+
"AGENTS"
|
|
2146
|
+
],
|
|
2147
|
+
"storeUrl": "https://apify.com/malonestar/epa-tsca-cdr-chemical-site-screener",
|
|
2148
|
+
"inputSchema": {
|
|
2149
|
+
"type": "object",
|
|
2150
|
+
"properties": {
|
|
2151
|
+
"mode": {
|
|
2152
|
+
"type": "string",
|
|
2153
|
+
"description": "How to query the 2024 TSCA Chemical Data Reporting file. 'radius' screens coordinates and returns every CDR site within the radius; 'chemical' maps every US site that manufactures or imports a given CASRN; 'state' lists a state's CDR filers. Required, so a bare {} call is rejected before the run starts and nothing is billed. Example: \"radius\".",
|
|
2154
|
+
"enum": [
|
|
2155
|
+
"radius",
|
|
2156
|
+
"chemical",
|
|
2157
|
+
"state"
|
|
2158
|
+
]
|
|
2159
|
+
},
|
|
2160
|
+
"assets": {
|
|
2161
|
+
"type": "array",
|
|
2162
|
+
"description": "Coordinates to screen. Each entry: {\"lat\": number, \"lon\": number, \"radiusMiles\": number, \"label\": string}. radiusMiles defaults to 5 in code (never a schema default, which Apify injects server-side) and is capped at 100. Maximum 100 assets per run: each asset emits one query_summary row inside the maxResults budget, so maxResults must be at least the number of assets. Used only when mode = radius. Example: [{\"lat\":40.8249,\"lon\":-111.9238,\"radiusMiles\":3,\"label\":\"Salt Lake City refinery corridor\"},{\"lat\":29.99435,\"lon\":-90.40726,\"radiusMiles\":3,\"label\":\"Norco LA petrochemical corridor\"}].",
|
|
2163
|
+
"items": {
|
|
2164
|
+
"type": "string"
|
|
2165
|
+
}
|
|
2166
|
+
},
|
|
2167
|
+
"chemicalIds": {
|
|
2168
|
+
"type": "array",
|
|
2169
|
+
"description": "CASRNs to reverse-map, with or without dashes, e.g. [\"7704-34-9\"] for Sulfur. Every US site reporting manufacture or import of the substance is returned, including sites whose identity EPA withholds as CBI. Maximum 100 per run: each chemical emits one query_summary row inside the maxResults budget. Used only when mode = chemical.",
|
|
2170
|
+
"items": {
|
|
2171
|
+
"type": "string"
|
|
2172
|
+
}
|
|
2173
|
+
},
|
|
2174
|
+
"states": {
|
|
2175
|
+
"type": "array",
|
|
2176
|
+
"description": "Two-letter postal codes, e.g. [\"CO\"]. Rows whose site state is claimed confidential cannot be assigned to any state and are therefore absent from every state total. Maximum 60 per run: each state emits one query_summary row inside the maxResults budget. Used only when mode = state.",
|
|
2177
|
+
"items": {
|
|
2178
|
+
"type": "string"
|
|
2179
|
+
}
|
|
2180
|
+
},
|
|
2181
|
+
"chemicalFilter": {
|
|
2182
|
+
"type": "array",
|
|
2183
|
+
"description": "Optional CASRN list applied on top of any mode, so a radius or state query can be narrowed to specific substances. Leave empty to return every chemical reported at the matched sites.",
|
|
2184
|
+
"items": {
|
|
2185
|
+
"type": "string"
|
|
2186
|
+
}
|
|
2187
|
+
},
|
|
2188
|
+
"siteQuery": {
|
|
2189
|
+
"type": "string",
|
|
2190
|
+
"description": "Optional case-insensitive substring match on the published site name. Rows whose site name is claimed confidential can never match a name filter and are excluded when this is set."
|
|
2191
|
+
},
|
|
2192
|
+
"includeSitesWithoutCoordinates": {
|
|
2193
|
+
"type": "boolean",
|
|
2194
|
+
"description": "In radius mode, also emit records whose coordinates are blank or published as the 0/0 null-island sentinel, flagged with site_coordinate_status and a null distance. They cannot be confirmed to be inside the radius, so this is off unless requested."
|
|
2195
|
+
},
|
|
2196
|
+
"maxResults": {
|
|
2197
|
+
"type": "integer",
|
|
2198
|
+
"description": "The hard cap on total rows this run emits, which is also the hard cap on the bill. It counts EVERY emitted row, including the one query_summary row each asset, chemical or state produces: those are reserved off the top and the remainder is spent on site-chemical records. It is a whole-run cap, never per scope. Applied in code (200 when omitted) rather than as a schema default, so an API or MCP caller who omits it cannot be billed for a national dump. Must be at least the number of scopes in the request. Maximum 5000. Example: 150.",
|
|
2199
|
+
"minimum": 1,
|
|
2200
|
+
"maximum": 5000
|
|
2201
|
+
},
|
|
2202
|
+
"simulateOutage": {
|
|
2203
|
+
"type": "string",
|
|
2204
|
+
"description": "Diagnostic seam that forces one drift-gate failure path so the fail-closed behaviour can be re-proved on demand instead of only during a real outage. Leave as 'none' for normal use; any other value makes the run fail and bill nothing. Example: \"none\".",
|
|
2205
|
+
"enum": [
|
|
2206
|
+
"none",
|
|
2207
|
+
"primary",
|
|
2208
|
+
"corroborating",
|
|
2209
|
+
"header_contract",
|
|
2210
|
+
"cbi_sentinel",
|
|
2211
|
+
"row_floor",
|
|
2212
|
+
"zip_entries"
|
|
2213
|
+
]
|
|
2214
|
+
}
|
|
2215
|
+
},
|
|
2216
|
+
"required": [
|
|
2217
|
+
"mode"
|
|
2218
|
+
]
|
|
2219
|
+
}
|
|
2220
|
+
},
|
|
1920
2221
|
{
|
|
1921
2222
|
"slug": "erns-nrc-release-incident-screener",
|
|
1922
2223
|
"actorId": "malonestar/erns-nrc-release-incident-screener",
|
|
@@ -2329,11 +2630,11 @@
|
|
|
2329
2630
|
},
|
|
2330
2631
|
"sinceDate": {
|
|
2331
2632
|
"type": "string",
|
|
2332
|
-
"description": "Explicit delta anchor
|
|
2633
|
+
"description": "Explicit delta anchor. Overrides sinceDays. Only events on or after this date are returned. Accepted forms: 2026-01-15 (ISO, preferred), 2026-01 (first of that month), 2026 (1 January), or 01/15/2026 (US month/day/year). Anything else FAILS the run rather than being guessed at — this value is compared against ISO dates and sent verbatim to FDIC, so a format we cannot read silently returns the wrong window instead of an error. Day-first (15/01/2026) is rejected as genuinely ambiguous. A calendar-invalid date such as 2026-02-30 or 2026-13-01 is rejected too, even though it looks like ISO. Leave blank to use sinceDays instead."
|
|
2333
2634
|
},
|
|
2334
2635
|
"untilDate": {
|
|
2335
2636
|
"type": "string",
|
|
2336
|
-
"description": "End of the window
|
|
2637
|
+
"description": "End of the window. Defaults to today when blank. Accepted forms: 2026-07-25 (ISO, preferred), 2026-07 (first of that month), 2026 (1 January), or 07/25/2026 (US month/day/year). Anything else FAILS the run rather than being guessed at — this value is compared against ISO dates and sent verbatim to FDIC, so a format we cannot read silently returns the wrong window instead of an error. A calendar-invalid date such as 2026-13-01 is rejected even though it has the right shape. An untilDate earlier than sinceDate also fails, loudly, before any request is made."
|
|
2337
2638
|
},
|
|
2338
2639
|
"dateField": {
|
|
2339
2640
|
"type": "string",
|
|
@@ -2432,11 +2733,11 @@
|
|
|
2432
2733
|
},
|
|
2433
2734
|
"sinceDate": {
|
|
2434
2735
|
"type": "string",
|
|
2435
|
-
"description": "Lower date bound. Maps to min_date (receipts/disbursements) or min_receipt_date (filings).
|
|
2736
|
+
"description": "Lower date bound. Maps to min_date (receipts/disbursements) or min_receipt_date (filings), and is also compared against each row's ISO date in delta mode. MUST be YYYY-MM-DD (e.g. 2023-01-15) - any other format FAILS the run before anything is fetched or billed, rather than silently returning the whole fetched window or none of it. Measured on 3 fixture rows whose true answer was 2: \"01/15/2023\" returned 3, \"Jan 2023\" returned 0, \"2023-13-45\" returned 1, and the unpadded \"2023-1-1\" returned 1. An unpadded 2023-1-1 IS accepted and zero-padded (it is unambiguous); slash forms are rejected on purpose because 05/06/2025 is ambiguous between US and EU order. Empty = no lower bound. Example: \"2026-01-01\"."
|
|
2436
2737
|
},
|
|
2437
2738
|
"untilDate": {
|
|
2438
2739
|
"type": "string",
|
|
2439
|
-
"description": "Upper date bound. Maps to max_date (receipts/disbursements) or max_receipt_date (filings). Empty = no upper bound."
|
|
2740
|
+
"description": "Upper date bound. Maps to max_date (receipts/disbursements) or max_receipt_date (filings). MUST be YYYY-MM-DD (e.g. 2023-12-31) - any other format FAILS the run before anything is fetched or billed. An unpadded 2023-1-1 IS accepted and zero-padded; slash forms are rejected on purpose because 05/06/2025 is ambiguous between US and EU order. Empty = no upper bound."
|
|
2440
2741
|
},
|
|
2441
2742
|
"minAmount": {
|
|
2442
2743
|
"type": "string",
|
|
@@ -2530,6 +2831,68 @@
|
|
|
2530
2831
|
}
|
|
2531
2832
|
}
|
|
2532
2833
|
},
|
|
2834
|
+
{
|
|
2835
|
+
"slug": "fema-repetitive-loss-flood-market-screener",
|
|
2836
|
+
"actorId": "malonestar/fema-repetitive-loss-flood-market-screener",
|
|
2837
|
+
"title": "FEMA NFIP Repetitive Loss & Flood Insurance Market Screener",
|
|
2838
|
+
"description": "Resolve any US coordinate to its NFIP community, then return that community's repetitive-loss and severe-repetitive-loss property rollup, CRS class and premium discounts, NFIP participation status, and county flood-insurance market penetration. Four FEMA OpenFEMA datasets joined in one call.",
|
|
2839
|
+
"categories": [
|
|
2840
|
+
"REAL_ESTATE",
|
|
2841
|
+
"DEVELOPER_TOOLS",
|
|
2842
|
+
"AGENTS"
|
|
2843
|
+
],
|
|
2844
|
+
"storeUrl": "https://apify.com/malonestar/fema-repetitive-loss-flood-market-screener",
|
|
2845
|
+
"inputSchema": {
|
|
2846
|
+
"type": "object",
|
|
2847
|
+
"properties": {
|
|
2848
|
+
"assets": {
|
|
2849
|
+
"type": "array",
|
|
2850
|
+
"description": "Sites to screen. Each item is {\"lat\": <number>, \"lon\": <number>, \"label\": \"<your reference>\"}. Each site is resolved to the NFIP community whose published boundary contains it, then answered at community and county scope. FEMA redacts repetitive-loss property coordinates to one decimal place (roughly +/-5 to +/-55 km), so no radius or nearest-property distance is derivable from this data and none is offered. Maximum 25 sites per run; each distinct state costs one community-boundary download. Example: [{\"lat\":39.7392,\"lon\":-104.9903,\"label\":\"Denver City Hall, CO\"},{\"lat\":39.7047,\"lon\":-105.0814,\"label\":\"Lakewood, CO (city inside Jefferson County)\"},{\"lat\":40.015,\"lon\":-105.2705,\"label\":\"Boulder, CO\"},{\"lat\":40.53,\"lon\":-104.3,\"label\":\"Rural Weld County, CO (unincorporated)\"},{\"lat\":29.9511,\"lon\":-90.0715,\"label\":\"New Orleans, LA\"}].",
|
|
2851
|
+
"items": {
|
|
2852
|
+
"type": "string"
|
|
2853
|
+
}
|
|
2854
|
+
},
|
|
2855
|
+
"includeCountyCommunity": {
|
|
2856
|
+
"type": "boolean",
|
|
2857
|
+
"description": "When a site sits inside an incorporated place, the county or parish is usually ALSO an NFIP community covering unincorporated areas, with its own CRS class and its own repetitive-loss rollup. Leave on to receive a profile row for both. Turn off to receive only the governing municipal community. Defaults to on when omitted. Example: true."
|
|
2858
|
+
},
|
|
2859
|
+
"includeTribalEtjLayer": {
|
|
2860
|
+
"type": "boolean",
|
|
2861
|
+
"description": "FEMA publishes 608 tribal nation, extraterritorial-jurisdiction and special land-use-authority community polygons with no state or county code, so a state-scoped boundary read is structurally blind to them. Leave on to include them (one extra request per state). When off, tribal/ETJ coverage is reported as not checked rather than as a negative. Defaults to on when omitted. Example: true."
|
|
2862
|
+
},
|
|
2863
|
+
"includeLossProperties": {
|
|
2864
|
+
"type": "boolean",
|
|
2865
|
+
"description": "Off by default. When on, every repetitive-loss and severe-repetitive-loss property FEMA publishes for each matched community is emitted as its own row, with designation, flood zone, occupancy, loss count, insured and mitigated status, and the redacted coordinate together with its measured decimal precision. This multiplies the billable row count, so a per-community cap applies. Example: false."
|
|
2866
|
+
},
|
|
2867
|
+
"maxLossPropertiesPerCommunity": {
|
|
2868
|
+
"type": "integer",
|
|
2869
|
+
"description": "Caps how many individual repetitive-loss property rows are emitted per community when 'Also emit one row per repetitive-loss property' is on. The community rollup is always computed over every property FEMA publishes, not over this capped subset. Range 0 to 2000; 100 when omitted. Example: 100.",
|
|
2870
|
+
"minimum": 0,
|
|
2871
|
+
"maximum": 2000
|
|
2872
|
+
},
|
|
2873
|
+
"simulateOutage": {
|
|
2874
|
+
"type": "string",
|
|
2875
|
+
"description": "Diagnostic seam for verifying that this actor fails loudly rather than publishing an unverified answer. Leave as 'none' for normal use. Any other value forces the named source or drift probe to fail so the failure path can be re-proved on demand instead of only during a real outage. Example: \"none\".",
|
|
2876
|
+
"enum": [
|
|
2877
|
+
"none",
|
|
2878
|
+
"catalog",
|
|
2879
|
+
"schema",
|
|
2880
|
+
"community_layer",
|
|
2881
|
+
"status_book",
|
|
2882
|
+
"penetration",
|
|
2883
|
+
"multiple_loss",
|
|
2884
|
+
"geo",
|
|
2885
|
+
"canary",
|
|
2886
|
+
"negative_control",
|
|
2887
|
+
"tribal_etj"
|
|
2888
|
+
]
|
|
2889
|
+
}
|
|
2890
|
+
},
|
|
2891
|
+
"required": [
|
|
2892
|
+
"assets"
|
|
2893
|
+
]
|
|
2894
|
+
}
|
|
2895
|
+
},
|
|
2533
2896
|
{
|
|
2534
2897
|
"slug": "fhlbank-membership-delta-monitor",
|
|
2535
2898
|
"actorId": "malonestar/fhlbank-membership-delta-monitor",
|
|
@@ -2575,7 +2938,7 @@
|
|
|
2575
2938
|
},
|
|
2576
2939
|
"memberSince": {
|
|
2577
2940
|
"type": "string",
|
|
2578
|
-
"description": "Optional
|
|
2941
|
+
"description": "Optional cutoff. Only include members whose FHFA-published membership date is on or after this date. MUST be YYYY-MM-DD (e.g. 2020-01-15) - any other format is rejected and the run FAILS without billing, rather than silently returning every member or none of them. It is string-compared against ISO membership dates: an unvalidated '01/15/2020' returned the WHOLE matching set (as if no cutoff were applied) and 'Jan 2020' returned ZERO rows, both labelled a successful filtered answer. Slash forms are rejected on purpose - 05/06/2025 is ambiguous between US and EU order. Leave blank for no cutoff."
|
|
2579
2942
|
},
|
|
2580
2943
|
"quarter": {
|
|
2581
2944
|
"type": "string",
|
|
@@ -3077,6 +3440,136 @@
|
|
|
3077
3440
|
]
|
|
3078
3441
|
}
|
|
3079
3442
|
},
|
|
3443
|
+
{
|
|
3444
|
+
"slug": "historic-land-use-sic-contaminant-screener",
|
|
3445
|
+
"actorId": "malonestar/historic-land-use-sic-contaminant-screener",
|
|
3446
|
+
"title": "Historic Land Use Screener - Contaminating SIC/NAICS Sites",
|
|
3447
|
+
"description": "Screens a coordinate or address radius against EPA FRS SIC and NAICS classifications to find dry cleaners, gas stations, plating shops, auto shops, printers and other recognised contaminating land uses, for ASTM E1527-21 Section 8.3 prior-use review.",
|
|
3448
|
+
"categories": [
|
|
3449
|
+
"REAL_ESTATE",
|
|
3450
|
+
"DEVELOPER_TOOLS",
|
|
3451
|
+
"AGENTS"
|
|
3452
|
+
],
|
|
3453
|
+
"storeUrl": "https://apify.com/malonestar/historic-land-use-sic-contaminant-screener",
|
|
3454
|
+
"inputSchema": {
|
|
3455
|
+
"type": "object",
|
|
3456
|
+
"properties": {
|
|
3457
|
+
"assets": {
|
|
3458
|
+
"type": "array",
|
|
3459
|
+
"description": "Locations to screen for contaminating industrial land uses. Each item is EITHER {\"lat\": 39.7392, \"lon\": -104.9903, \"label\": \"...\"} OR {\"address\": \"1438 Tremont Pl, Denver, CO 80202\", \"label\": \"...\"}. Addresses are geocoded with the free US Census geocoder; a coordinate is faster and more precise. Required - a run without it is rejected before it starts, so nothing is billed. Example: [{\"lat\":39.7392,\"lon\":-104.9903,\"label\":\"Denver CBD parcel (CO)\"},{\"lat\":40.7274,\"lon\":-74.159,\"label\":\"Newark Ironbound parcel (NJ)\"}].",
|
|
3460
|
+
"items": {
|
|
3461
|
+
"type": "string"
|
|
3462
|
+
}
|
|
3463
|
+
},
|
|
3464
|
+
"radiusMiles": {
|
|
3465
|
+
"type": "number",
|
|
3466
|
+
"description": "Distance from each property within which EPA FRS facilities are screened. ASTM E1527-21 Section 8.3 concerns the subject property and adjoining properties, so 0.25 mi is the working default; 1 mi is the maximum and 0.02 mi the minimum. Example: 0.25.",
|
|
3467
|
+
"minimum": 0.02,
|
|
3468
|
+
"maximum": 1
|
|
3469
|
+
},
|
|
3470
|
+
"landUseClasses": {
|
|
3471
|
+
"type": "array",
|
|
3472
|
+
"description": "Optional filter. Leave empty (the default behaviour) to screen against every class in the vocabulary. Unknown values are ignored rather than silently dropping every result.",
|
|
3473
|
+
"items": {
|
|
3474
|
+
"type": "string",
|
|
3475
|
+
"enum": [
|
|
3476
|
+
"DRY_CLEANING",
|
|
3477
|
+
"FUEL_DISPENSING_STORAGE",
|
|
3478
|
+
"PETROLEUM_REFINING_PRODUCTION",
|
|
3479
|
+
"METAL_PLATING_FINISHING",
|
|
3480
|
+
"METAL_FABRICATION_FOUNDRY",
|
|
3481
|
+
"AUTOMOTIVE_SERVICE",
|
|
3482
|
+
"SALVAGE_SCRAP_RECYCLING",
|
|
3483
|
+
"WOOD_PRESERVING",
|
|
3484
|
+
"WOOD_PRODUCTS",
|
|
3485
|
+
"PRINTING_PUBLISHING",
|
|
3486
|
+
"CHEMICAL_MANUFACTURING",
|
|
3487
|
+
"EXPLOSIVES_ORDNANCE",
|
|
3488
|
+
"WASTE_MANAGEMENT_LANDFILL",
|
|
3489
|
+
"ELECTRONICS_SEMICONDUCTOR",
|
|
3490
|
+
"BATTERY_MANUFACTURING",
|
|
3491
|
+
"LEATHER_TEXTILE_FINISHING",
|
|
3492
|
+
"MANUFACTURED_GAS_UTILITY",
|
|
3493
|
+
"TRANSPORT_TERMINAL",
|
|
3494
|
+
"AIRPORT_AVIATION",
|
|
3495
|
+
"PHOTOFINISHING",
|
|
3496
|
+
"PESTICIDE_APPLICATION",
|
|
3497
|
+
"PLASTICS_RUBBER",
|
|
3498
|
+
"PULP_PAPER",
|
|
3499
|
+
"NATIONAL_SECURITY_FEDERAL"
|
|
3500
|
+
]
|
|
3501
|
+
}
|
|
3502
|
+
},
|
|
3503
|
+
"programs": {
|
|
3504
|
+
"type": "array",
|
|
3505
|
+
"description": "OPT-IN. Leave empty (the working default) and this actor behaves exactly as before: ASTM E1527-21 Section 8.3 prior uses only. Add \"state\" to also screen the ASTM Section 8.2 STATE AND TRIBAL EQUIVALENT record class - the ~57 state and tribal agency program systems EPA normalises into the same registry. Coverage is uneven and is measured live every run: every summary row carries state_coverage (complete / partial / none), the systems actually searched, and the systems EPA publishes for that state. MEASURED 2026-08-20, EPA publishes NO state or tribal agency system at all for AK, CO, DC, MI, SD, VT, WV or the US territories - for those, state_coverage reads \"none\" and every state count is null, so a zero can never be mistaken for a searched-and-clear result. Adds 2 requests per state (not per property) and no extra rows. Example: [].",
|
|
3506
|
+
"items": {
|
|
3507
|
+
"type": "string",
|
|
3508
|
+
"enum": [
|
|
3509
|
+
"state"
|
|
3510
|
+
],
|
|
3511
|
+
"enumTitles": [
|
|
3512
|
+
"State and tribal equivalent record sources (ASTM E1527-21 Section 8.2)"
|
|
3513
|
+
]
|
|
3514
|
+
}
|
|
3515
|
+
},
|
|
3516
|
+
"includeSecondaryClassifications": {
|
|
3517
|
+
"type": "boolean",
|
|
3518
|
+
"description": "EPA marks each SIC/NAICS code on a facility PRIMARY, SECONDARY or UNKNOWN. When true (the working default) a secondary contaminating code still counts as a hit and is labelled as secondary on the row. Set false to count only PRIMARY codes. Example: true."
|
|
3519
|
+
},
|
|
3520
|
+
"includeUnclassifiedFacilities": {
|
|
3521
|
+
"type": "boolean",
|
|
3522
|
+
"description": "When false (the working default) only facilities carrying a contaminating classification are emitted, plus one summary row per property. When true, every FRS facility in the radius is emitted, including those EPA publishes no SIC/NAICS for. This multiplies the row count and therefore the bill. Example: false."
|
|
3523
|
+
},
|
|
3524
|
+
"crossStateRecords": {
|
|
3525
|
+
"type": "string",
|
|
3526
|
+
"description": "EPA geocodes a substantial share of FRS records to the operator's mailing address rather than the operating site - measured 2026-08-18, 90 of 188 records within 402 m of downtown Denver are Wyoming well pads stacked on one Denver office coordinate. \"flag\" (working default) emits them with location_confidence=state_mismatch and excludes them from the verdict; \"exclude\" drops them; \"include\" counts them toward the verdict. Example: \"flag\".",
|
|
3527
|
+
"enum": [
|
|
3528
|
+
"flag",
|
|
3529
|
+
"exclude",
|
|
3530
|
+
"include"
|
|
3531
|
+
]
|
|
3532
|
+
},
|
|
3533
|
+
"coordinateStackThreshold": {
|
|
3534
|
+
"type": "integer",
|
|
3535
|
+
"description": "How many distinct facilities sharing one identical coordinate marks that coordinate as an address-level geocode rather than a site-specific location. Stacked facilities are emitted with location_confidence=coordinate_stack and are excluded from the verdict. Example: 5.",
|
|
3536
|
+
"minimum": 2,
|
|
3537
|
+
"maximum": 1000
|
|
3538
|
+
},
|
|
3539
|
+
"maxFacilitiesPerAsset": {
|
|
3540
|
+
"type": "integer",
|
|
3541
|
+
"description": "Cap on facility rows emitted per property, nearest first. When the cap truncates the result the summary row says so and the verdict cannot read as a clean negative. Example: 100.",
|
|
3542
|
+
"minimum": 1,
|
|
3543
|
+
"maximum": 500
|
|
3544
|
+
},
|
|
3545
|
+
"maxResults": {
|
|
3546
|
+
"type": "integer",
|
|
3547
|
+
"description": "Hard cap on total dataset rows across the whole run, which is also the hard cap on the bill. One row is one billable result. Example: 1000.",
|
|
3548
|
+
"minimum": 1,
|
|
3549
|
+
"maximum": 20000
|
|
3550
|
+
},
|
|
3551
|
+
"simulateOutage": {
|
|
3552
|
+
"type": "string",
|
|
3553
|
+
"description": "Permanent diagnostic seam for proving the failure paths on demand instead of only during a real outage. \"none\" is a genuine no-op. The other values force the named source or drift probe to fail so the loud-failure and degraded-disclosure paths can be re-verified. Example: \"none\".",
|
|
3554
|
+
"enum": [
|
|
3555
|
+
"none",
|
|
3556
|
+
"frs_interests",
|
|
3557
|
+
"frs_sic",
|
|
3558
|
+
"frs_naics",
|
|
3559
|
+
"geocoder",
|
|
3560
|
+
"drift_load_bearing",
|
|
3561
|
+
"drift_negative_control",
|
|
3562
|
+
"drift_fail",
|
|
3563
|
+
"state_programs",
|
|
3564
|
+
"drift_state_leg"
|
|
3565
|
+
]
|
|
3566
|
+
}
|
|
3567
|
+
},
|
|
3568
|
+
"required": [
|
|
3569
|
+
"assets"
|
|
3570
|
+
]
|
|
3571
|
+
}
|
|
3572
|
+
},
|
|
3080
3573
|
{
|
|
3081
3574
|
"slug": "hmda-fair-lending-disparity-rollup",
|
|
3082
3575
|
"actorId": "malonestar/hmda-fair-lending-disparity-rollup",
|
|
@@ -3332,7 +3825,7 @@
|
|
|
3332
3825
|
},
|
|
3333
3826
|
"sinceDate": {
|
|
3334
3827
|
"type": "string",
|
|
3335
|
-
"description": "Delta mode. When set, only returns designations that were newly Designated or newly Withdrawn on/after this date (compared against last-update and withdrawal dates). Adds a status_change field. A withdrawal = loss of Medicare originating-site / NHSC eligibility — a real recurring alert. Leave blank for a full snapshot. Example: \"\"."
|
|
3828
|
+
"description": "Delta mode. When set, only returns designations that were newly Designated or newly Withdrawn on/after this date (compared against last-update and withdrawal dates). MUST be YYYY-MM-DD (e.g. 2026-01-15) - any other format is rejected and the run FAILS without billing, rather than silently returning a confident empty or a plausible-looking wrong subset. It is string-compared against ISO designation dates: an unvalidated 'Jan 2025' returned 0 of 3 fixture designations (a confident empty) and '2025-13-45' returned a plausible-looking wrong 1 of 3, both labelled a successful delta answer. Slash forms are rejected on purpose - 05/06/2025 is ambiguous between US and EU order. Adds a status_change field. A withdrawal = loss of Medicare originating-site / NHSC eligibility — a real recurring alert. Leave blank for a full snapshot. Example: \"\"."
|
|
3336
3829
|
},
|
|
3337
3830
|
"rollupBy": {
|
|
3338
3831
|
"type": "string",
|
|
@@ -3871,7 +4364,7 @@
|
|
|
3871
4364
|
},
|
|
3872
4365
|
"sinceDate": {
|
|
3873
4366
|
"type": "string",
|
|
3874
|
-
"description": "Optional
|
|
4367
|
+
"description": "Optional floor on the notice date. Pending feeds: applications submitted/received on or after this date. Active feeds: licenses issued on or after this date. MUST be YYYY-MM-DD (e.g. 2026-01-15) - any other format is rejected and the run fails without billing, rather than being spliced unverified into a live query. Slash forms are rejected on purpose: 05/06/2026 is ambiguous between US and EU order."
|
|
3875
4368
|
},
|
|
3876
4369
|
"maxResults": {
|
|
3877
4370
|
"type": "integer",
|
|
@@ -4775,7 +5268,7 @@
|
|
|
4775
5268
|
},
|
|
4776
5269
|
"sinceModified": {
|
|
4777
5270
|
"type": "string",
|
|
4778
|
-
"description": "Return only wells spudded or updated on or after this date — use for new-permit monitoring. Applies only to states with a date field (currently North Dakota)."
|
|
5271
|
+
"description": "Return only wells spudded or updated on or after this date — use for new-permit monitoring. Applies only to states with a date field (currently North Dakota); ignored for others, but MUST still be YYYY-MM-DD (e.g. 2026-01-15) - any other format is rejected and the run fails without billing, rather than being silently reinterpreted by ArcGIS's own date parser. Slash forms are rejected on purpose: live-measured against North Dakota, an ambiguous 05/06/2025 is silently read as May 6 (US order) and differs from the June 5 (EU) reading by 8.0% of matching wells, with nothing in the response indicating a format was guessed. Empty = no lower bound."
|
|
4779
5272
|
},
|
|
4780
5273
|
"maxResults": {
|
|
4781
5274
|
"type": "integer",
|
|
@@ -5082,7 +5575,7 @@
|
|
|
5082
5575
|
},
|
|
5083
5576
|
"sinceDate": {
|
|
5084
5577
|
"type": "string",
|
|
5085
|
-
"description": "Only return proceedings whose petition was filed on or after this date. Drives the delta/monitoring window. Empty = no lower bound. Example: \"\"."
|
|
5578
|
+
"description": "Only return proceedings whose petition was filed on or after this date. MUST be YYYY-MM-DD (e.g. 2025-01-15) - any other format is rejected and the run fails without billing, rather than silently returning the whole docket or none of it. Drives the delta/monitoring window. Empty = no lower bound. Example: \"2025-01-01\"."
|
|
5086
5579
|
},
|
|
5087
5580
|
"priorItems": {
|
|
5088
5581
|
"type": "array",
|
|
@@ -5304,11 +5797,11 @@
|
|
|
5304
5797
|
},
|
|
5305
5798
|
"sinceDate": {
|
|
5306
5799
|
"type": "string",
|
|
5307
|
-
"description": "Only return loans with approval_date on or after this date. Empty = no lower bound."
|
|
5800
|
+
"description": "Only return loans with approval_date on or after this date. MUST be YYYY-MM-DD (e.g. 2023-01-15) - any other format is rejected and the run FAILS without billing, rather than silently returning the whole portfolio or none of it. It is string-compared against ISO approval dates, so a wrong format is invisible in the output: '01/15/2023' returned every loan and 'Jan 2023' returned none, both labelled as a successful filtered answer. Slash forms are rejected on purpose - 05/06/2025 is ambiguous between US and EU order. Empty = no lower bound."
|
|
5308
5801
|
},
|
|
5309
5802
|
"untilDate": {
|
|
5310
5803
|
"type": "string",
|
|
5311
|
-
"description": "Only return loans with approval_date on or before this date. Empty = no upper bound."
|
|
5804
|
+
"description": "Only return loans with approval_date on or before this date. MUST be YYYY-MM-DD (e.g. 2023-12-31) - any other format is rejected and the run FAILS without billing. It is string-compared against ISO approval dates, so a wrong format here returned ZERO rows ('01/15/2023') or the entire portfolio ('Jan 2023') with no sign in the output; a buyer reads that empty as a fact about SBA lending rather than as a rejected input. Must be on or after sinceDate - an inverted window also fails rather than returning a confident empty. Empty = no upper bound."
|
|
5312
5805
|
},
|
|
5313
5806
|
"minAmount": {
|
|
5314
5807
|
"type": "integer",
|
|
@@ -5468,8 +5961,8 @@
|
|
|
5468
5961
|
{
|
|
5469
5962
|
"slug": "site-due-diligence-bundle",
|
|
5470
5963
|
"actorId": "malonestar/site-due-diligence-bundle",
|
|
5471
|
-
"title": "
|
|
5472
|
-
"description": "
|
|
5964
|
+
"title": "Environmental Due Diligence Bundle: 20-Layer Site Scorecard",
|
|
5965
|
+
"description": "Environmental due diligence in one call: lat/lon plus radius returns a go/caution/no-go fatal-flaw verdict and a 0-100 site score across 20 federal layers - EPA contamination, FEMA flood, NWI wetlands, ESA habitat, NAAQS nonattainment, NRHP historic, karst, landslide, levee, dams, CBRS, pipelines.",
|
|
5473
5966
|
"categories": [
|
|
5474
5967
|
"REAL_ESTATE",
|
|
5475
5968
|
"DEVELOPER_TOOLS",
|
|
@@ -5545,7 +6038,7 @@
|
|
|
5545
6038
|
},
|
|
5546
6039
|
"sinceDate": {
|
|
5547
6040
|
"type": "string",
|
|
5548
|
-
"description": "Explicit start date
|
|
6041
|
+
"description": "Explicit start date. MUST be YYYY-MM-DD (e.g. 2023-01-15) - any other format is rejected and the run fails without billing, rather than being spliced unverified into the live Socrata query. Slash forms are rejected on purpose: 05/06/2025 is ambiguous between US and EU order. Overrides 'days back'. Empty = use days back."
|
|
5549
6042
|
},
|
|
5550
6043
|
"maxPerState": {
|
|
5551
6044
|
"type": "integer",
|
|
@@ -6123,14 +6616,14 @@
|
|
|
6123
6616
|
"properties": {
|
|
6124
6617
|
"sites": {
|
|
6125
6618
|
"type": "array",
|
|
6126
|
-
"description": "List of USGS
|
|
6619
|
+
"description": "List of USGS site (station) numbers to pull, e.g. [\"01646500\"] (Potomac River at Little Falls). Provide this OR a State code. Site numbers are the 8-15 digit USGS station IDs; the agency prefix is added automatically. Every site you list gets a row - one USGS did not answer for is returned with data_status \"not_returned\" rather than silently omitted, so silence is never mistaken for an all-clear. Example: [\"01646500\",\"09380000\",\"06752260\"]. Applied by default if omitted: [].",
|
|
6127
6620
|
"items": {
|
|
6128
6621
|
"type": "string"
|
|
6129
6622
|
}
|
|
6130
6623
|
},
|
|
6131
6624
|
"stateCd": {
|
|
6132
6625
|
"type": "string",
|
|
6133
|
-
"description": "USPS two-letter state code (e.g. \"VA\") to pull every gaging site in that state for the chosen parameter. Used only when no site numbers are supplied. A statewide pull can return hundreds of sites. Applied by default if omitted: \"\"."
|
|
6626
|
+
"description": "USPS two-letter state code (e.g. \"VA\") to pull every gaging site in that state for the chosen parameter. Used only when no site numbers are supplied. A statewide pull can return hundreds of sites - Colorado discharge returns 615. An unrecognised code is rejected rather than silently widened to a national query. Applied by default if omitted: \"\"."
|
|
6134
6627
|
},
|
|
6135
6628
|
"parameterCd": {
|
|
6136
6629
|
"type": "string",
|
|
@@ -6138,7 +6631,7 @@
|
|
|
6138
6631
|
},
|
|
6139
6632
|
"service": {
|
|
6140
6633
|
"type": "string",
|
|
6141
|
-
"description": "Which USGS
|
|
6634
|
+
"description": "Which USGS data set to read: \"iv\" for near real-time continuous (instantaneous) values, or \"dv\" for daily values. Instantaneous reads the latest-continuous collection; daily reads latest-daily and returns the daily MEAN (statistic 00003). Applied by default if omitted: \"iv\".",
|
|
6142
6635
|
"enum": [
|
|
6143
6636
|
"iv",
|
|
6144
6637
|
"dv"
|
|
@@ -6146,11 +6639,11 @@
|
|
|
6146
6639
|
},
|
|
6147
6640
|
"period": {
|
|
6148
6641
|
"type": "string",
|
|
6149
|
-
"description": "Optional ISO-8601 duration to widen the window so a prior reading is available for the change delta, e.g. \"PT2H\" (2 hours) or \"P1D\" (1 day). Leave blank to fetch only the latest reading per site. Applied by default if omitted: \"\"."
|
|
6642
|
+
"description": "Optional ISO-8601 duration to widen the window so a prior reading is available for the change delta, e.g. \"PT2H\" (2 hours), \"PT30M\" or \"P1D\" (1 day). Maximum 30 days. Leave blank to fetch only the latest reading per site. An unparseable value is REJECTED, not ignored - silently dropping it would return a single reading with no delta while appearing to honour the request. Applied by default if omitted: \"\"."
|
|
6150
6643
|
},
|
|
6151
6644
|
"thresholdValue": {
|
|
6152
6645
|
"type": "string",
|
|
6153
|
-
"description": "Optional flood-stage / alert threshold applied to every site
|
|
6646
|
+
"description": "Optional flood-stage / alert threshold applied to every site, in the parameter's own unit (cubic feet per second for 00060, feet for 00065). Sets above_threshold and amount_over_threshold when the latest reading meets or exceeds it. A reading that is stale, future-dated or flagged untrustworthy by USGS gets above_threshold NULL with an explanation, never false. Example: \"5000\". Applied by default if omitted: \"\"."
|
|
6154
6647
|
},
|
|
6155
6648
|
"siteThresholds": {
|
|
6156
6649
|
"type": "object",
|
|
@@ -6158,11 +6651,11 @@
|
|
|
6158
6651
|
},
|
|
6159
6652
|
"onlyAlerts": {
|
|
6160
6653
|
"type": "boolean",
|
|
6161
|
-
"description": "When true, only sites whose latest reading is at or above their threshold are returned
|
|
6654
|
+
"description": "When true, only sites whose latest reading is at or above their threshold are returned. Requires a global or per-site threshold. Sites you asked about that USGS did not answer for are still returned even in this mode - that is precisely where silence must not read as an all-clear. Applied by default if omitted: false."
|
|
6162
6655
|
},
|
|
6163
6656
|
"siteStatus": {
|
|
6164
6657
|
"type": "string",
|
|
6165
|
-
"description": "Which
|
|
6658
|
+
"description": "Which gages to include. \"all\" (default) returns everything, including gages that stopped reporting years ago - a Colorado discharge pull returns 615 sites of which 268 last reported over a year ago, the oldest in 1987. \"active\" and \"inactive\" are DERIVED, because the USGS OGC API publishes no operator-status flag: active means USGS has not flagged the gage DISCONTINUED and it has reported within your staleness threshold. A gage whose status cannot be judged is returned only by \"all\". Example: \"all\".",
|
|
6166
6659
|
"enum": [
|
|
6167
6660
|
"all",
|
|
6168
6661
|
"active",
|
|
@@ -6171,7 +6664,7 @@
|
|
|
6171
6664
|
},
|
|
6172
6665
|
"staleHours": {
|
|
6173
6666
|
"type": "integer",
|
|
6174
|
-
"description": "A reading older than this many hours is flagged is_stale=true and
|
|
6667
|
+
"description": "A reading older than this many hours is flagged is_stale=true, data_status=\"stale\", and its threshold verdict is withheld (above_threshold becomes null, not false). Default 72h: a healthy continuous gage reports every 15-60 minutes and a daily gage once a day. Rows are still returned - use \"Maximum reading age\" to drop them entirely. Example: 72.",
|
|
6175
6668
|
"minimum": 1
|
|
6176
6669
|
},
|
|
6177
6670
|
"maxReadingAgeHours": {
|
|
@@ -6181,11 +6674,11 @@
|
|
|
6181
6674
|
},
|
|
6182
6675
|
"reportMissingSites": {
|
|
6183
6676
|
"type": "boolean",
|
|
6184
|
-
"description": "When you supply explicit site numbers, emit a row for each one USGS returned nothing for, with data_status
|
|
6677
|
+
"description": "When you supply explicit site numbers, emit a row for each one USGS returned nothing for, with data_status \"not_returned\". Keeps silence from being read as an all-clear, and is what makes the result set provably complete for a site-scoped run. Ignored for statewide pulls. Example: true."
|
|
6185
6678
|
},
|
|
6186
6679
|
"includeNoDataSites": {
|
|
6187
6680
|
"type": "boolean",
|
|
6188
|
-
"description": "Include sites whose latest reading is
|
|
6681
|
+
"description": "Include sites whose latest reading is missing. The USGS OGC API publishes these as a JSON null (the retired legacy feed used the -999999 sentinel); each carries a qualifier explaining why - zero flow, dry, ice, equipment malfunction, discontinued, rating under development, or out of season. Off by default. Applied by default if omitted: false."
|
|
6189
6682
|
}
|
|
6190
6683
|
}
|
|
6191
6684
|
}
|
|
@@ -6444,7 +6937,7 @@
|
|
|
6444
6937
|
},
|
|
6445
6938
|
"sinceDate": {
|
|
6446
6939
|
"type": "string",
|
|
6447
|
-
"description": "Optional lower bound
|
|
6940
|
+
"description": "Optional lower bound on the notice date. When set, only notices on or after this date are fetched. MUST be YYYY-MM-DD (e.g. 2026-01-15); 2026-1-1 is accepted and zero-padded. Any other format FAILS the run before anything is fetched and bills nothing, rather than being spliced unverified into the live Socrata query - measured, 01/15/2026 and Jan 2026 both return HTTP 400 query.soql.type-mismatch from Socrata mid-fetch. Slash forms are rejected on purpose: 05/06/2026 is ambiguous between US and EU order. A bare year (2026) is rejected too, even though Socrata happens to coerce it to Jan 1. Leave blank for all available notices."
|
|
6448
6941
|
},
|
|
6449
6942
|
"priorItems": {
|
|
6450
6943
|
"type": "array",
|