gov-data-mcp 1.1.1 → 1.1.3

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/catalog.json +55 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gov-data-mcp",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "mcpName": "io.github.malonestar/gov-data-mcp",
5
5
  "description": "MCP server exposing published US government open-data tools (EPA, FEMA, USGS, NOAA, FAA, USACE, FDIC, HUD, state licensing boards) as agent-callable tools, backed by Apify Actors.",
6
6
  "type": "module",
package/src/catalog.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-09-09T06:58:12.843Z",
2
+ "generatedAt": "2026-09-24T04:13:45.505Z",
3
3
  "owner": "malonestar",
4
4
  "count": 120,
5
5
  "actors": [
@@ -823,6 +823,15 @@
823
823
  "description": "Safety cap on how many assets to screen in one run. Example: 500.",
824
824
  "minimum": 1,
825
825
  "maximum": 5000
826
+ },
827
+ "simulateOutage": {
828
+ "type": "string",
829
+ "description": "Diagnostic only - leave as 'none' for real screening. 'control' forces the corroborating Sacramento negative-control query to fail, which must leave the run SUCCEEDING with drift_gate_status=verified_degraded, because that probe cross-checks a conclusion the load-bearing probes already establish. 'all' forces every drift query to fail, which must FAIL the run with zero rows and zero billing because the load-bearing probes can then confirm nothing. Example: \"none\".",
830
+ "enum": [
831
+ "none",
832
+ "control",
833
+ "all"
834
+ ]
826
835
  }
827
836
  },
828
837
  "required": [
@@ -979,7 +988,7 @@
979
988
  },
980
989
  "maxResults": {
981
990
  "type": "integer",
982
- "description": "Hard cap on the number of disease-week rows returned across all pages (protects run time and cost). Default 1000. Example: 1000."
991
+ "description": "Hard cap on the number of disease-week rows returned across all pages (protects run time and cost). Default 1000. Example: 140. Applied by default if omitted: 1000."
983
992
  }
984
993
  }
985
994
  }
@@ -988,7 +997,7 @@
988
997
  "slug": "cdfi-nmtc-lowincome-energy-bonus-screener",
989
998
  "actorId": "malonestar/cdfi-nmtc-lowincome-energy-bonus-screener",
990
999
  "title": "CDFI Fund NMTC Low-Income Community Screener - IRA 48(e) Bonus",
991
- "description": "Coordinate lookup for the IRA 48(e) low-income clean-energy bonus. Batch lat/lon against CDFI Fund NMTC Low-Income Communities (IRC 45D(e)); each returns in_nmtc_low_income_community, tract GEOID, poverty/MFI basis, Category 1 bonus flag, adder, and an optional HUD QCT flag. MCP-ready.",
1000
+ "description": "Coordinate lookup for the IRA 48(e) low-income clean-energy bonus. Batch lat/lon against the DOE/NREL 48(e) Category 1 layer (IRC 45D(e) NMTC low-income communities). Returns a tract GEOID, Category 1 bonus flag, adder, Census tract coverage and a HUD QCT flag. MCP-ready.",
992
1001
  "categories": [
993
1002
  "REAL_ESTATE",
994
1003
  "DEVELOPER_TOOLS",
@@ -1017,7 +1026,7 @@
1017
1026
  "properties": {
1018
1027
  "assets": {
1019
1028
  "type": "array",
1020
- "description": "List of points to check against CDFI Fund NMTC Low-Income Communities (LIC). Each item is an object with numeric lat and lon (WGS84 decimal degrees) and an optional label echoed into the output. One billable result row is produced per asset, telling you whether the coordinate falls in a NMTC low-income community and therefore qualifies for the IRA 48(e) Category 1 clean-energy ITC bonus. Example: [{\"lat\":40.815,\"lon\":-73.904,\"label\":\"South Bronx, NY (low-income community, also a LIHTC QCT)\"},{\"lat\":35.6811,\"lon\":-109.0509,\"label\":\"Window Rock, AZ (low-income community on the Navajo Nation)\"},{\"lat\":34.073,\"lon\":-118.4,\"label\":\"Beverly Hills, CA (genuine clear - not a low-income community)\"}].",
1029
+ "description": "List of points to check against NMTC Low-Income Communities (LIC), read from the DOE/NREL Low-Income Communities Bonus Credit Program Category 1 eligibility layer. Each item is an object with numeric lat and lon (WGS84 decimal degrees) and an optional label echoed into the output. One billable result row is produced per asset, telling you whether the coordinate falls in a NMTC low-income community and therefore qualifies for the IRA 48(e) Category 1 clean-energy ITC bonus. A negative is published only when a separate Census census-tract coverage check confirms the point is inside a US tract; otherwise the flag is null (not checked), never false. Example: [{\"lat\":40.815,\"lon\":-73.904,\"label\":\"South Bronx, NY (low-income community, also a LIHTC QCT)\"},{\"lat\":35.6811,\"lon\":-109.0509,\"label\":\"Window Rock, AZ (low-income community on the Navajo Nation)\"},{\"lat\":34.073,\"lon\":-118.4,\"label\":\"Beverly Hills, CA (genuine clear - not a low-income community)\"}].",
1021
1030
  "items": {
1022
1031
  "type": "string"
1023
1032
  }
@@ -1034,7 +1043,7 @@
1034
1043
  },
1035
1044
  "checkTribal": {
1036
1045
  "type": "boolean",
1037
- "description": "When true (default), each asset is also checked against the CDFI CIMS Federal Indian Reservation layer and the result carries on_federal_indian_reservation plus the reservation name. This is informational context for the separate IRC 48(e) Category 2 (Indian land) pathway - statutory Indian land under 25 U.S.C. 3501(2) is broader than federal reservations, so false does not rule Category 2 out. Set false to skip the extra lookup. Applied by default if omitted: true."
1046
+ "description": "When true (default), each asset is also checked against the U.S. Census Bureau TIGERweb Federal American Indian Reservations layer and the result carries on_federal_indian_reservation plus the reservation name. This is informational context for the separate IRC 48(e) Category 2 (Indian land) pathway - statutory Indian land under 25 U.S.C. 3501(2) is broader than federal reservations, so false does not rule Category 2 out. Set false to skip the extra lookup. Applied by default if omitted: true."
1038
1047
  }
1039
1048
  },
1040
1049
  "required": [
@@ -2103,7 +2112,7 @@
2103
2112
  },
2104
2113
  "maxHitsPerProgram": {
2105
2114
  "type": "integer",
2106
- "description": "Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 50.",
2115
+ "description": "Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 10. Applied by default if omitted: 50.",
2107
2116
  "minimum": 1,
2108
2117
  "maximum": 1000
2109
2118
  },
@@ -3271,7 +3280,7 @@
3271
3280
  },
3272
3281
  "maxResults": {
3273
3282
  "type": "integer",
3274
- "description": "Hard cap on the number of dataset rows emitted, for example 500. This is what you are billed for, so it defaults to 500 - the same number as the prefill - and never silently sweeps a whole state. Raise it deliberately for a full sweep (a large state can produce tens of thousands of rows). Example: 500.",
3283
+ "description": "Hard cap on the number of dataset rows emitted. This is what you are billed for, so it never silently sweeps a whole state. The form is prefilled with 60 - a deliberately small, cheap demo that a free-tier account can run whole - while the default applied when you omit the field entirely is 500. Raise it deliberately for a full sweep (a large state can produce tens of thousands of rows). Example: 60. Applied by default if omitted: 500.",
3275
3284
  "minimum": 1,
3276
3285
  "maximum": 100000
3277
3286
  },
@@ -3468,7 +3477,7 @@
3468
3477
  },
3469
3478
  "maxResults": {
3470
3479
  "type": "integer",
3471
- "description": "Maximum number of dataset rows to emit (caps your cost). Areas are processed largest-deposits-first, so the cap keeps the biggest markets. When the cap bites, results_truncated=true is stamped on every row - the shares and HHI themselves are always computed over the COMPLETE market, never over the truncated output. Example: 500.",
3480
+ "description": "Maximum number of dataset rows to emit (caps your cost). Areas are processed largest-deposits-first, so the cap keeps the biggest markets. When the cap bites, results_truncated=true is stamped on every row - the shares and HHI themselves are always computed over the COMPLETE market, never over the truncated output. Example: 80. Applied by default if omitted: 500.",
3472
3481
  "minimum": 1,
3473
3482
  "maximum": 100000
3474
3483
  },
@@ -3687,7 +3696,7 @@
3687
3696
  },
3688
3697
  "maxResults": {
3689
3698
  "type": "integer",
3690
- "description": "Maximum number of itemized rows to fetch before delta, concentration or graph processing. Rows come back NEWEST FIRST, so a cap gives you the most recent slice - not a ranked or representative sample. Concentration and graph rows computed over a capped fetch are labelled analysis_basis=\"sample\" rather than being presented as the population figure. Applied by default if omitted: 1000.",
3699
+ "description": "Maximum number of itemized rows to fetch before delta, concentration or graph processing. Rows come back NEWEST FIRST, so a cap gives you the most recent slice - not a ranked or representative sample. Concentration and graph rows computed over a capped fetch are labelled analysis_basis=\"sample\" rather than being presented as the population figure. Example: 120. Applied by default if omitted: 1000.",
3691
3700
  "minimum": 1,
3692
3701
  "maximum": 500000
3693
3702
  },
@@ -4891,7 +4900,7 @@
4891
4900
  },
4892
4901
  "maxResults": {
4893
4902
  "type": "integer",
4894
- "description": "Maximum number of site rows to return. Applied by default if omitted: 1000.",
4903
+ "description": "Maximum number of site rows to return. Example: 140. Applied by default if omitted: 1000.",
4895
4904
  "minimum": 1,
4896
4905
  "maximum": 100000
4897
4906
  },
@@ -5603,7 +5612,7 @@
5603
5612
  "slug": "liquor-license-new-openings-tracker",
5604
5613
  "actorId": "malonestar/liquor-license-new-openings-tracker",
5605
5614
  "title": "Liquor License New Openings Tracker — Bar & Restaurant Leads",
5606
- "description": "Pre-opening bar & restaurant leads from state liquor registries. Pulls NEW licenses + PENDING applications from TX TABC, NY SLA, FL DBPR — normalized business type, address, owner, dates. Delta mode emits only new applications, newly issued licenses, and status changes.",
5615
+ "description": "Pre-opening bar & restaurant leads from state liquor registries. NEW licenses + PENDING applications from TX TABC, NY SLA, FL DBPR and CA ABC, with California new-premises vs transfer flags. Delta mode emits only new applications, newly issued licenses and status changes.",
5607
5616
  "categories": [
5608
5617
  "LEAD_GENERATION",
5609
5618
  "AGENTS",
@@ -5632,18 +5641,20 @@
5632
5641
  "properties": {
5633
5642
  "states": {
5634
5643
  "type": "array",
5635
- "description": "Which state liquor-license registries to query. Available: TX (TABC active + pending), NY (SLA active + pending), FL (DBPR licensed extract, active only). California (ABC) ships in v1.1. Example: [\"TX\",\"NY\"].",
5644
+ "description": "Which state liquor-license registries to query. Available: TX (TABC active + pending), NY (SLA active + pending), FL (DBPR licensed extract, active only), CA (ABC daily export, active + pending; CA applications carry no date, so a sinceDate cannot be applied to CA pending). Example: [\"TX\",\"NY\"].",
5636
5645
  "items": {
5637
5646
  "type": "string",
5638
5647
  "enum": [
5639
5648
  "TX",
5640
5649
  "NY",
5641
- "FL"
5650
+ "FL",
5651
+ "CA"
5642
5652
  ],
5643
5653
  "enumTitles": [
5644
5654
  "Texas (TABC)",
5645
5655
  "New York (SLA)",
5646
- "Florida (DBPR ABT)"
5656
+ "Florida (DBPR ABT)",
5657
+ "California (ABC)"
5647
5658
  ]
5648
5659
  }
5649
5660
  },
@@ -5674,7 +5685,7 @@
5674
5685
  },
5675
5686
  "sinceDate": {
5676
5687
  "type": "string",
5677
- "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."
5688
+ "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. California pending applications publish NO date: combining sinceDate with CA pending fails that leg (disclosed on every row) instead of returning an empty result -- use mode \"delta\" to catch new CA applications."
5678
5689
  },
5679
5690
  "maxResults": {
5680
5691
  "type": "integer",
@@ -6016,6 +6027,12 @@
6016
6027
  "includeNonNetworkFlowlines": {
6017
6028
  "type": "boolean",
6018
6029
  "description": "Also query NHDPlus HR layer 4 (NonNetworkNHDFlowline) for isolated ditches, canals and disconnected reaches near the site. Leave on for a conservative wetland-delineation scope; turn off to save one request per asset. Note that layer 4 carries no NHDPlus value-added attributes, so a nearest reach found there has no mean annual flow, stream order or drainage area. Example: true."
6030
+ },
6031
+ "runBudgetSeconds": {
6032
+ "type": "integer",
6033
+ "description": "Optional. One time budget for the whole run, shared by the live drift checks (at most 90 s of it) and every site. If hydro.nationalmap.gov is slow and the budget runs out, the sites not yet reached are returned as rows with failure_kind \"deadline\" and null counts/flags instead of the run dragging on. Leave empty to use max(240, 90 + 30 x number of assets) seconds. Clamped to 30-3500; the run also always stops before its Apify timeout. Example: 240.",
6034
+ "minimum": 30,
6035
+ "maximum": 3500
6019
6036
  }
6020
6037
  },
6021
6038
  "required": [
@@ -6654,6 +6671,18 @@
6654
6671
  "description": "Safety cap on how many crossings are returned per site (or per geography query). When it bites, matched_rows_total still reports the true total and results_truncated is set, so a capped answer is never read as a complete one. Example: 500.",
6655
6672
  "minimum": 1,
6656
6673
  "maximum": 20000
6674
+ },
6675
+ "simulateOutage": {
6676
+ "type": "string",
6677
+ "description": "Leave as none for normal use. A diagnostic seam that drives one named failure path end to end so the availability-vs-drift split can be proven on the shipped build rather than argued for. transient_canary_refusal makes ArcGIS emit its load-shed refusal twice before answering (the run should still succeed); persistent_canary_refusal and named_parameter_refusal make a load-bearing probe fail loudly with nothing billed; canary_field_drift makes the canary ANSWER with a wrong value, which must stay fatal; incident_outage takes the FRA incident source away, which degrades the run rather than failing it. Example: \"none\".",
6678
+ "enum": [
6679
+ "none",
6680
+ "transient_canary_refusal",
6681
+ "persistent_canary_refusal",
6682
+ "named_parameter_refusal",
6683
+ "canary_field_drift",
6684
+ "incident_outage"
6685
+ ]
6657
6686
  }
6658
6687
  }
6659
6688
  }
@@ -6875,7 +6904,7 @@
6875
6904
  },
6876
6905
  "maxResults": {
6877
6906
  "type": "integer",
6878
- "description": "Maximum number of well/permit records to return per state. Applied by default if omitted: 1000.",
6907
+ "description": "Maximum number of well/permit records to return per state. Example: 120. Applied by default if omitted: 1000.",
6879
6908
  "minimum": 1,
6880
6909
  "maximum": 200000
6881
6910
  },
@@ -8769,12 +8798,14 @@
8769
8798
  },
8770
8799
  "simulateOutage": {
8771
8800
  "type": "string",
8772
- "description": "Permanent diagnostic seam used to prove the failure path without waiting for a real outage. 'measurements' fails the water-level read, 'locations' fails the monitoring-location read, 'both' fails both, 'none' is the normal behaviour. With 'both' the run fails loudly and emits nothing. Example: \"none\".",
8801
+ "description": "Permanent diagnostic seam used to prove the failure path without waiting for a real outage. 'measurements' fails the water-level read, 'locations' fails the monitoring-location read, 'both' fails both, 'none' is the normal behaviour. With 'both' the run fails loudly and emits nothing. The two drift modes exercise the gate itself: 'drift_advisory_probe' forces the ADVISORY paging-exhaustion probe to fail, which must leave the run SUCCEEDING with the skip disclosed in drift_probes_unavailable, because that probe exercises the cursor at a page size production never uses; 'drift_load_bearing_probe' forces a load-bearing probe to fail, which must FAIL the run with zero rows and zero billing. Example: \"none\".",
8773
8802
  "enum": [
8774
8803
  "none",
8775
8804
  "measurements",
8776
8805
  "locations",
8777
- "both"
8806
+ "both",
8807
+ "drift_advisory_probe",
8808
+ "drift_load_bearing_probe"
8778
8809
  ]
8779
8810
  }
8780
8811
  },
@@ -8861,6 +8892,12 @@
8861
8892
  "minimum": 1,
8862
8893
  "maximum": 5000
8863
8894
  },
8895
+ "runBudgetSeconds": {
8896
+ "type": "integer",
8897
+ "description": "Wall-clock ceiling for the whole run, shared by the upstream verification probes and every site. The USGS TNM Access API is intermittently very slow - measured on one identical input, this run has taken anywhere from 4 seconds to over 5 minutes - so every request is gated and clamped against this one deadline. A site still being read when the budget expires is reported unavailable with null verdicts and run_deadline_exceeded=true; it is never reported as 'no maps found'. The default leaves headroom inside the 5-minute ceiling the Apify Store applies. Raise it for large portfolios you are happy to wait for; it can never exceed 280. Example: 240.",
8898
+ "minimum": 10,
8899
+ "maximum": 280
8900
+ },
8864
8901
  "verifyUpstream": {
8865
8902
  "type": "boolean",
8866
8903
  "description": "ON by default. Before any of your sites are touched, the run confirms USGS still publishes the two collection tags, probes a positive canary in Denver that must return decades of maps back to 1890, probes a US Topo canary, and probes a mid-Pacific negative control that must return exactly zero. If USGS renamed the collection or stopped applying the spatial filter, every site would otherwise report 'no maps cover this property' on a green run. Costs four extra requests. Example: true."