@cliwant/mcp-sam-gov 1.4.0 → 1.5.0
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/README.ja.md +11 -11
- package/README.ko.md +11 -11
- package/README.md +21 -13
- package/dist/cbp-border.d.ts +51 -0
- package/dist/cbp-border.d.ts.map +1 -0
- package/dist/cbp-border.js +123 -0
- package/dist/cbp-border.js.map +1 -0
- package/dist/datagov-catalog.d.ts.map +1 -1
- package/dist/datagov-catalog.js +16 -2
- package/dist/datagov-catalog.js.map +1 -1
- package/dist/ecfr.d.ts +2 -2
- package/dist/ecfr.d.ts.map +1 -1
- package/dist/ecfr.js +24 -10
- package/dist/ecfr.js.map +1 -1
- package/dist/edgar.d.ts.map +1 -1
- package/dist/edgar.js +26 -6
- package/dist/edgar.js.map +1 -1
- package/dist/epa-envirofacts.d.ts.map +1 -1
- package/dist/epa-envirofacts.js +14 -1
- package/dist/epa-envirofacts.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -1
- package/dist/far.d.ts.map +1 -1
- package/dist/far.js +3 -1
- package/dist/far.js.map +1 -1
- package/dist/federal-register.d.ts +2 -2
- package/dist/federal-register.d.ts.map +1 -1
- package/dist/federal-register.js +26 -10
- package/dist/federal-register.js.map +1 -1
- package/dist/fema.d.ts +36 -0
- package/dist/fema.d.ts.map +1 -1
- package/dist/fema.js +124 -0
- package/dist/fema.js.map +1 -1
- package/dist/gov-domains.d.ts +66 -0
- package/dist/gov-domains.d.ts.map +1 -0
- package/dist/gov-domains.js +211 -0
- package/dist/gov-domains.js.map +1 -0
- package/dist/nist-controls.d.ts +48 -0
- package/dist/nist-controls.d.ts.map +1 -0
- package/dist/nist-controls.js +174 -0
- package/dist/nist-controls.js.map +1 -0
- package/dist/nws-weather.d.ts +57 -0
- package/dist/nws-weather.d.ts.map +1 -0
- package/dist/nws-weather.js +131 -0
- package/dist/nws-weather.js.map +1 -0
- package/dist/openfda-drugsfda.d.ts +72 -0
- package/dist/openfda-drugsfda.d.ts.map +1 -0
- package/dist/openfda-drugsfda.js +230 -0
- package/dist/openfda-drugsfda.js.map +1 -0
- package/dist/openfda.d.ts.map +1 -1
- package/dist/openfda.js +31 -8
- package/dist/openfda.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +331 -10
- package/dist/server.js.map +1 -1
- package/dist/treasury.d.ts +2 -0
- package/dist/treasury.d.ts.map +1 -1
- package/dist/treasury.js +7 -0
- package/dist/treasury.js.map +1 -1
- package/dist/usaspending.d.ts +32 -1
- package/dist/usaspending.d.ts.map +1 -1
- package/dist/usaspending.js +143 -16
- package/dist/usaspending.js.map +1 -1
- package/package.json +2 -2
- package/src/cbp-border.ts +177 -0
- package/src/datagov-catalog.ts +18 -2
- package/src/ecfr.ts +27 -10
- package/src/edgar.ts +39 -7
- package/src/epa-envirofacts.ts +17 -1
- package/src/errors.ts +11 -0
- package/src/far.ts +3 -1
- package/src/federal-register.ts +29 -10
- package/src/fema.ts +139 -0
- package/src/gov-domains.ts +237 -0
- package/src/nist-controls.ts +219 -0
- package/src/nws-weather.ts +167 -0
- package/src/openfda-drugsfda.ts +313 -0
- package/src/openfda.ts +30 -7
- package/src/server.ts +352 -10
- package/src/treasury.ts +7 -0
- package/src/usaspending.ts +189 -17
package/README.ja.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @cliwant/mcp-sam-gov
|
|
2
2
|
|
|
3
3
|
> **最も包括的なキーレス連邦データ MCP サーバー。**
|
|
4
|
-
> SAM.gov · USAspending · SEC EDGAR · OFAC · FDIC · Federal Register · Regulations.gov · eCFR · FAR/DFARS · BLS · Treasury · NIH · NSF · ClinicalTrials · CMS · NVD/CISA · USITC · Census · FRED · BEA · DOL · FEMA · openFDA · NHTSA · CPSC · EPA Envirofacts · CourtListener · IRS-990(ProPublica) ほか **
|
|
4
|
+
> SAM.gov · USAspending · SEC EDGAR · OFAC · FDIC · Federal Register · Regulations.gov · eCFR · FAR/DFARS · BLS · Treasury · NIH · NSF · ClinicalTrials · CMS · NVD/CISA · USITC · Census · FRED · BEA · DOL · FEMA · openFDA · NHTSA · CPSC · EPA Envirofacts · CourtListener · IRS-990(ProPublica) ほか **48 の連邦データソース、142 ツール。** キーレス優先 — Census business-patterns · FRED · BEA · DOL データエンドポイントの 4 ソースのみ無料キーが必要で、残り 44 ソースはキー不要。
|
|
5
5
|
> API キー不要、登録不要、サインアップ不要。Claude Desktop, Claude Code, Codex CLI, Cursor, Continue, Gemini CLI、すべての MCP ホスト対応。
|
|
6
6
|
|
|
7
7
|
[English README](./README.md) · [한국어 README](./README.ko.md)
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
| 🌐 **貿易・地理・災害** | "この品目の HTS 関税、この住所の Census tract、この州の FEMA 宣言" | USITC HTS, Census, FEMA, Socrata, CKAN |
|
|
31
31
|
| 🎓 **grant・データセット** | "過去 30 日のサイバーセキュリティ grant、連邦オープンデータセット発見" | Grants.gov, data.gov |
|
|
32
32
|
|
|
33
|
-
**
|
|
33
|
+
**48 の連邦データソース、合計 142 ツール — キーレス優先: Census business-patterns · FRED · BEA · DOL データエンドポイントの 4 ソースのみ無料キーが必要で、残り 44 ソースはキー不要。** (初期の 52 ツール版でおおよそ p50 ~0.25s / p95 ~0.8s を計測 — ソースや上流負荷で変動する近似値であり保証値ではありません。)
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
@@ -57,7 +57,7 @@ Claude Code (CLI) を既に使用している場合:
|
|
|
57
57
|
/plugin install cliwant/mcp-sam-gov
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
MCP サーバー + Claude が
|
|
60
|
+
MCP サーバー + Claude が 142 ツールをいつ・どう呼ぶかを教える [SKILL.md ワークフローガイド](./skills/sam-gov/SKILL.md) を同時登録。
|
|
61
61
|
|
|
62
62
|
### 🔵 パス 3 — Codex / Cursor / Continue / Gemini 等の手動インストール
|
|
63
63
|
|
|
@@ -171,14 +171,14 @@ npm install --omit=dev
|
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
## ツールカタログ (
|
|
174
|
+
## ツールカタログ (142)
|
|
175
175
|
|
|
176
|
-
ワークフロー別グループ。キーレス優先 — 大半はキー不要、Census business-patterns · FRED · BEA · DOL データエンドポイントは無料キーが必要。全 per-tool 一覧と入力 schema・誠実性 caveat の原文は [英語 README のカタログセクション](./README.md#tool-catalog-
|
|
176
|
+
ワークフロー別グループ。キーレス優先 — 大半はキー不要、Census business-patterns · FRED · BEA · DOL データエンドポイントは無料キーが必要。全 per-tool 一覧と入力 schema・誠実性 caveat の原文は [英語 README のカタログセクション](./README.md#tool-catalog-142-tools) を正とします。
|
|
177
177
|
|
|
178
178
|
- **案件 + ソリシテーション — SAM.gov + Grants.gov (10)**: `sam_search_opportunities` `sam_search_shaping` `sam_get_opportunity` `sam_fetch_description` `sam_fetch_attachment_text` `sam_attachment_url` `sam_lookup_organization` `sam_lookup_notice_fields` `grants_search` `grants_get_opportunity`
|
|
179
|
-
- **spending・受注・競合 — USAspending + FPDS + GAO (
|
|
179
|
+
- **spending・受注・競合 — USAspending + FPDS + GAO (31)**: `usas_search_awards` `usas_search_individual_awards` `usas_get_award_detail` `usas_search_awards_by_recipient` `usas_search_subawards` `usas_search_recompetes` `usas_search_expiring_contracts`(deprecated) `usas_analyze_incumbent` `usas_search_teaming_partners` `usas_spending_over_time` `usas_search_agency_spending` `usas_search_subagency_spending` `usas_search_psc_spending` `usas_search_cfda_spending` `usas_search_state_spending` `usas_search_federal_account_spending` `usas_search_recipients` `usas_get_recipient_profile` `usas_get_agency_profile` `usas_get_agency_awards_summary` `usas_get_agency_budget_function` `usas_list_toptier_agencies` `usas_lookup_agency` `usas_autocomplete_naics` `usas_autocomplete_recipient` `usas_naics_hierarchy` `usas_glossary` `usas_list_disaster_codes`(災害緊急基金コード(DEFC)一覧 — COVID-19·IIJA/インフラ等の緊急歳出タグ) `usas_disaster_spending`(指定 DEFC の災害/緊急基金支出の地域別内訳 — どの州/郡/選挙区が COVID/IIJA 救済金を受領) `fpds_search_awards` `gao_protest_lookup`
|
|
180
180
|
- **パートナー・企業の検証 — OFAC · SAM · FAC · FDIC · EPA (15)**: `ofac_screen_entity` `sam_check_exclusions` `sam_integrity_lookup` `fac_search_audits` `fac_get_findings` `fdic_search_institutions` `fdic_institution_financials` `fdic_risk_ratios` `fdic_institution_history` `fdic_branch_deposits` `fdic_bank_failures` `fdic_industry_summary` `echo_search_facilities` `echo_facility_report` `epa_tri_facilities`(EPA Envirofacts TRI 有害物質排出施設 — 環境/ESG 検証)
|
|
181
|
-
- **製品安全・リコール — openFDA · NHTSA · CPSC (
|
|
181
|
+
- **製品安全・リコール — openFDA · NHTSA · CPSC (6)**: `openfda_enforcement`(FDA 医薬品・医療機器・食品のリコール・執行) `openfda_device_clearances`(FDA 510(k) 医療機器承認) `openfda_drug_approvals`(openFDA Drugs@FDA 医薬品承認申請 — スポンサー・承認製品・提出/承認履歴) `nhtsa_recalls`(NHTSA 車両リコール) `nhtsa_complaints`(NHTSA 車両安全苦情) `cpsc_recalls`(CPSC 消費者製品リコール)
|
|
182
182
|
- **訴訟・裁判所 — CourtListener (1)**: `courtlistener_search_opinions`(米連邦裁判所の判例 — 連邦請求裁判所の契約請求/入札異議、連邦巡回控訴裁判所; CourtListener/Free Law Project 経由、明示)
|
|
183
183
|
- **非営利ベンダー — IRS 990 via ProPublica (2)**: `nonprofit_search`(IRS-990 非営利検索 by 名称/州/NTEE) `nonprofit_financials`(IRS-990 非営利財務 by EIN) — ProPublica Nonprofit Explorer 経由(明示)
|
|
184
184
|
- **財務開示 — SEC EDGAR (8)**: `edgar_lookup_cik` `edgar_company_filings` `edgar_company_facts` `edgar_company_concept` `edgar_xbrl_frames` `edgar_full_text_search` `edgar_filing_index` `edgar_daily_filing_index`
|
|
@@ -186,10 +186,10 @@ npm install --omit=dev
|
|
|
186
186
|
- **価格・労務・財政 — GSA CALC · SAM WD · BLS · Census CBP · FRED · BEA · Treasury · GSA per-diem (15)**: `gsa_benchmark_labor_rates` `sam_search_wage_determinations` `sam_get_wage_rates` `bls_timeseries` `bls_oews_wages` `bls_qcew` `treasury_debt_to_penny` `treasury_avg_interest_rates` `treasury_monthly_statement` `treasury_query_dataset` `bea_regional_data`(無料 BEA_API_KEY 必要) `census_business_patterns`(無料 CENSUS_API_KEY 必要) `fred_search_series`(無料 FRED_API_KEY 必要) `fred_series_observations`(無料 FRED_API_KEY 必要) `gsa_perdiem_rates`(DEMO_KEY キーレス)
|
|
187
187
|
- **医療・研究資金 — NIH · NSF · ClinicalTrials · CMS · NPPES (9)**: `nih_reporter_search_projects` `nsf_search_awards` `nsf_get_award` `clinicaltrials_search_studies` `clinicaltrials_get_study` `clinicaltrials_facet_counts` `cms_search_datasets` `cms_query_dataset` `nppes_lookup_provider`
|
|
188
188
|
- **医療提供者・施設 — CMS (5)**: `cms_medicare_provider_services`(Medicare provider 利用・支払 — 医療市場規模) `cms_hospital_compare`(CMS 病院品質評価) `cms_facility_directory`(介護施設/在宅医療/ホスピス/透析施設ディレクトリ) `cms_dmepos_suppliers`(DMEPOS 医療機器サプライヤーディレクトリ + Medicare 支出) `cms_revoked_providers`(Medicare 取消/除外リスト — 遵守検証)
|
|
189
|
-
- **サイバー遵守 — NVD + CISA KEV (
|
|
190
|
-
-
|
|
191
|
-
- **地理・災害・州/市オープンデータ — Census · FEMA · Socrata · CKAN (
|
|
192
|
-
-
|
|
189
|
+
- **サイバー遵守 — NVD + CISA KEV + NIST 800-53 (3)**: `cve_lookup` `cisa_kev_lookup` `nist_800_53_controls`(NIST SP 800-53 Rev 5 セキュリティ・プライバシー管理策の照会 — FedRAMP/CMMC/RMF 要件テキスト by controlId/family/キーワード)
|
|
190
|
+
- **貿易・関税・物流 — USITC · CBP (2)**: `hts_lookup` `cbp_border_wait_times`(CBP 陸上国境の商用車リアルタイム待ち時間 — カナダ・メキシコ港; 貨物/物流)
|
|
191
|
+
- **地理・災害・州/市オープンデータ — Census · FEMA · NWS · Socrata · CKAN (10)**: `census_geocode_address` `census_geographies_by_coordinates` `fema_disaster_declarations` `fema_search_public_assistance` `fema_search_hazard_mitigation`(FEMA 災害軽減支援プロジェクト — HMGP/FMA/PDM/BRIC 軽減補助金; Public Assistance 復旧とは区別) `nws_active_alerts`(現在有効な NWS 気象警報 — 注意報/警報/勧告; 災害/気候への備え、FEMA ツールとペア) `socrata_discover_datasets` `socrata_query` `ckan_discover_datasets` `ckan_query`
|
|
192
|
+
- **データセット・レジストリ発見 — data.gov · get.gov (2)**: `datagov_search_datasets` `search_gov_domains`(CISA get.gov 公式 .gov ドメインレジストリ — ドメイン所有機関の解決; 連邦機関の列挙 + SLED マッピング)
|
|
193
193
|
- **中小企業 — SBA (1)**: `sba_size_standard`
|
|
194
194
|
- **労務コンプライアンス — US DOL (2)**: `dol_list_datasets`(DOL 執行・遵守データセットのカタログ閲覧 — WHD, OFCCP 等、キーレス) `dol_get_dataset`(DOL 執行記録の取得 — WHD 賃金・労働 / OFCCP; 無料 DOL_API_KEY 必要)
|
|
195
195
|
- **ロビー・影響力 — US Senate LDA (1)**: `lda_search_filings`(上院ロビー届出: 誰がどの機関に、どの争点で、いくら費やすか; キーレス)
|
package/README.ko.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @cliwant/mcp-sam-gov
|
|
2
2
|
|
|
3
3
|
> **가장 포괄적인 keyless 연방 데이터 MCP 서버.**
|
|
4
|
-
> SAM.gov · USAspending · SEC EDGAR · OFAC · FDIC · Federal Register · Regulations.gov · eCFR · FAR/DFARS · BLS · Treasury · NIH · NSF · ClinicalTrials · CMS · NVD/CISA · USITC · Census · FRED · BEA · DOL · FEMA · openFDA · NHTSA · CPSC · EPA Envirofacts · CourtListener · IRS-990(ProPublica) 외 **
|
|
4
|
+
> SAM.gov · USAspending · SEC EDGAR · OFAC · FDIC · Federal Register · Regulations.gov · eCFR · FAR/DFARS · BLS · Treasury · NIH · NSF · ClinicalTrials · CMS · NVD/CISA · USITC · Census · FRED · BEA · DOL · FEMA · openFDA · NHTSA · CPSC · EPA Envirofacts · CourtListener · IRS-990(ProPublica) 외 **48개 연방 데이터 소스, 142개 도구.** keyless 우선 — Census business-patterns · FRED · BEA · DOL 데이터 엔드포인트 4개 소스만 무료 키가 필요하고 나머지 44개 소스는 키가 필요 없습니다.
|
|
5
5
|
> API 키 / 등록 / 가입 불필요. Claude Desktop, Claude Code, Codex CLI, Cursor, Continue, Gemini CLI, 모든 MCP 호스트 호환.
|
|
6
6
|
|
|
7
7
|
[English README](./README.md) · [日本語 README](./README.ja.md)
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
| 🌐 **무역·지리·재난** | "이 품목 HTS 관세, 이 주소 Census tract, 이 주의 FEMA 선포" | USITC HTS, Census, FEMA, Socrata, CKAN |
|
|
31
31
|
| 🎓 **grant·데이터셋** | "최근 30일 사이버보안 grant, 연방 오픈 데이터셋 발굴" | Grants.gov, data.gov |
|
|
32
32
|
|
|
33
|
-
**
|
|
33
|
+
**48개 연방 데이터 소스, 총 142개 도구 — keyless 우선: Census business-patterns · FRED · BEA · DOL 데이터 엔드포인트 4개 소스만 무료 키가 필요하고 나머지 44개 소스는 키가 필요 없습니다.** (초기 52-도구 빌드 기준 대략 p50 ~0.25s / p95 ~0.8s 측정 — 소스·업스트림 부하에 따라 변동하는 근사치이며 보장값이 아님.)
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
@@ -57,7 +57,7 @@ PowerShell, npm 등 필요 없음.
|
|
|
57
57
|
/plugin install cliwant/mcp-sam-gov
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
MCP 서버 + Claude 가
|
|
60
|
+
MCP 서버 + Claude 가 142개 도구를 언제 / 어떻게 호출할지 가르치는 [SKILL.md 워크플로 가이드](./skills/sam-gov/SKILL.md) 동시 등록.
|
|
61
61
|
|
|
62
62
|
### 🔵 경로 3 — Codex / Cursor / Continue / Gemini 등 수동 설치
|
|
63
63
|
|
|
@@ -171,14 +171,14 @@ npm install --omit=dev
|
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
## 도구 카탈로그 (
|
|
174
|
+
## 도구 카탈로그 (142개)
|
|
175
175
|
|
|
176
|
-
워크플로별 그룹. keyless 우선 — 대부분 키가 필요 없고, Census business-patterns · FRED · BEA · DOL 데이터 엔드포인트는 무료 키가 필요합니다. 전체 per-tool 목록과 입력 schema·정직성 caveat 원문은 [영문 README 의 카탈로그 섹션](./README.md#tool-catalog-
|
|
176
|
+
워크플로별 그룹. keyless 우선 — 대부분 키가 필요 없고, Census business-patterns · FRED · BEA · DOL 데이터 엔드포인트는 무료 키가 필요합니다. 전체 per-tool 목록과 입력 schema·정직성 caveat 원문은 [영문 README 의 카탈로그 섹션](./README.md#tool-catalog-142-tools)을 기준으로 하세요.
|
|
177
177
|
|
|
178
178
|
- **입찰 + 솔리시테이션 — SAM.gov + Grants.gov (10)**: `sam_search_opportunities` `sam_search_shaping` `sam_get_opportunity` `sam_fetch_description` `sam_fetch_attachment_text` `sam_attachment_url` `sam_lookup_organization` `sam_lookup_notice_fields` `grants_search` `grants_get_opportunity`
|
|
179
|
-
- **spending·수주·경쟁 — USAspending + FPDS + GAO (
|
|
179
|
+
- **spending·수주·경쟁 — USAspending + FPDS + GAO (31)**: `usas_search_awards` `usas_search_individual_awards` `usas_get_award_detail` `usas_search_awards_by_recipient` `usas_search_subawards` `usas_search_recompetes` `usas_search_expiring_contracts`(deprecated) `usas_analyze_incumbent` `usas_search_teaming_partners` `usas_spending_over_time` `usas_search_agency_spending` `usas_search_subagency_spending` `usas_search_psc_spending` `usas_search_cfda_spending` `usas_search_state_spending` `usas_search_federal_account_spending` `usas_search_recipients` `usas_get_recipient_profile` `usas_get_agency_profile` `usas_get_agency_awards_summary` `usas_get_agency_budget_function` `usas_list_toptier_agencies` `usas_lookup_agency` `usas_autocomplete_naics` `usas_autocomplete_recipient` `usas_naics_hierarchy` `usas_glossary` `usas_list_disaster_codes`(재난긴급자금코드(DEFC) 목록 — COVID-19·IIJA/인프라 등 긴급세출 태그) `usas_disaster_spending`(지정 DEFC의 재난/긴급자금 지출 지역별 분해 — 어느 주/카운티/선거구가 COVID/IIJA 구호금 수령) `fpds_search_awards` `gao_protest_lookup`
|
|
180
180
|
- **파트너·기업 검증 — OFAC · SAM · FAC · FDIC · EPA (15)**: `ofac_screen_entity` `sam_check_exclusions` `sam_integrity_lookup` `fac_search_audits` `fac_get_findings` `fdic_search_institutions` `fdic_institution_financials` `fdic_risk_ratios` `fdic_institution_history` `fdic_branch_deposits` `fdic_bank_failures` `fdic_industry_summary` `echo_search_facilities` `echo_facility_report` `epa_tri_facilities`(EPA Envirofacts TRI 독성물질 배출 시설 — 환경/ESG 검증)
|
|
181
|
-
- **제품 안전·리콜 — openFDA · NHTSA · CPSC (
|
|
181
|
+
- **제품 안전·리콜 — openFDA · NHTSA · CPSC (6)**: `openfda_enforcement`(FDA 의약품·의료기기·식품 리콜·집행) `openfda_device_clearances`(FDA 510(k) 의료기기 승인) `openfda_drug_approvals`(openFDA Drugs@FDA 의약품 승인 신청 — 스폰서·승인 제품·제출/승인 이력) `nhtsa_recalls`(NHTSA 차량 리콜) `nhtsa_complaints`(NHTSA 차량 안전 불만) `cpsc_recalls`(CPSC 소비자 제품 리콜)
|
|
182
182
|
- **소송·법원 — CourtListener (1)**: `courtlistener_search_opinions`(미 연방 법원 판례 — 연방청구법원 계약 청구/입찰 이의, 연방순회항소법원; CourtListener/Free Law Project 경유, 명시)
|
|
183
183
|
- **비영리 벤더 — IRS 990 via ProPublica (2)**: `nonprofit_search`(IRS-990 비영리 검색 by 이름/주/NTEE) `nonprofit_financials`(IRS-990 비영리 재무 by EIN) — ProPublica Nonprofit Explorer 경유(명시)
|
|
184
184
|
- **재무 공시 — SEC EDGAR (8)**: `edgar_lookup_cik` `edgar_company_filings` `edgar_company_facts` `edgar_company_concept` `edgar_xbrl_frames` `edgar_full_text_search` `edgar_filing_index` `edgar_daily_filing_index`
|
|
@@ -186,10 +186,10 @@ npm install --omit=dev
|
|
|
186
186
|
- **가격·노무·재정 — GSA CALC · SAM WD · BLS · Census CBP · FRED · BEA · Treasury · GSA per-diem (15)**: `gsa_benchmark_labor_rates` `sam_search_wage_determinations` `sam_get_wage_rates` `bls_timeseries` `bls_oews_wages` `bls_qcew` `treasury_debt_to_penny` `treasury_avg_interest_rates` `treasury_monthly_statement` `treasury_query_dataset` `bea_regional_data`(무료 BEA_API_KEY 필요) `census_business_patterns`(무료 CENSUS_API_KEY 필요) `fred_search_series`(무료 FRED_API_KEY 필요) `fred_series_observations`(무료 FRED_API_KEY 필요) `gsa_perdiem_rates`(DEMO_KEY keyless)
|
|
187
187
|
- **보건·연구 자금 — NIH · NSF · ClinicalTrials · CMS · NPPES (9)**: `nih_reporter_search_projects` `nsf_search_awards` `nsf_get_award` `clinicaltrials_search_studies` `clinicaltrials_get_study` `clinicaltrials_facet_counts` `cms_search_datasets` `cms_query_dataset` `nppes_lookup_provider`
|
|
188
188
|
- **의료 제공자·시설 — CMS (5)**: `cms_medicare_provider_services`(Medicare provider 이용·지급 — 의료 시장규모) `cms_hospital_compare`(CMS 병원 품질 등급) `cms_facility_directory`(요양원/재택의료/호스피스/투석 시설 디렉터리) `cms_dmepos_suppliers`(DMEPOS 의료기기 공급자 디렉터리 + Medicare 지출) `cms_revoked_providers`(Medicare 취소/배제 목록 — 준수 검증)
|
|
189
|
-
- **사이버 준수 — NVD + CISA KEV (
|
|
190
|
-
-
|
|
191
|
-
- **지리·재난·주/시 오픈데이터 — Census · FEMA · Socrata · CKAN (
|
|
192
|
-
-
|
|
189
|
+
- **사이버 준수 — NVD + CISA KEV + NIST 800-53 (3)**: `cve_lookup` `cisa_kev_lookup` `nist_800_53_controls`(NIST SP 800-53 Rev 5 보안·프라이버시 관리항목 조회 — FedRAMP/CMMC/RMF 요구사항 by controlId/family/키워드)
|
|
190
|
+
- **무역·관세·물류 — USITC · CBP (2)**: `hts_lookup` `cbp_border_wait_times`(CBP 육상국경 상용차 실시간 대기시간 — 캐나다·멕시코 항구; 화물/물류)
|
|
191
|
+
- **지리·재난·주/시 오픈데이터 — Census · FEMA · NWS · Socrata · CKAN (10)**: `census_geocode_address` `census_geographies_by_coordinates` `fema_disaster_declarations` `fema_search_public_assistance` `fema_search_hazard_mitigation`(FEMA 재해경감지원 프로젝트 — HMGP/FMA/PDM/BRIC 경감보조금; Public Assistance 복구와 구별) `nws_active_alerts`(현재 활성 NWS 기상 경보 — 주의보/경보/특보; 재난/기후 대비, FEMA 도구와 페어) `socrata_discover_datasets` `socrata_query` `ckan_discover_datasets` `ckan_query`
|
|
192
|
+
- **데이터셋·레지스트리 발굴 — data.gov · get.gov (2)**: `datagov_search_datasets` `search_gov_domains`(CISA get.gov 공식 .gov 도메인 레지스트리 — 도메인 소유 기관 확인; 연방기관 열거 + SLED 매핑)
|
|
193
193
|
- **소상공인 — SBA (1)**: `sba_size_standard`
|
|
194
194
|
- **노무 준수 — US DOL (2)**: `dol_list_datasets`(DOL 집행·준수 데이터셋 카탈로그 탐색 — WHD, OFCCP 등, keyless) `dol_get_dataset`(DOL 집행 기록 조회 — WHD 임금·근로 / OFCCP; 무료 DOL_API_KEY 필요)
|
|
195
195
|
- **로비·영향력 — US Senate LDA (1)**: `lda_search_filings`(상원 로비 신고: 누가 어느 기관에, 어떤 이슈로, 얼마를 쓰는지; keyless)
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
### **$4 trillion of public federal data, one `npm install` away.**
|
|
6
6
|
|
|
7
|
-
The most comprehensive **keyless-first** MCP server for US federal contracting + spending + regulation + partner vetting. **
|
|
7
|
+
The most comprehensive **keyless-first** MCP server for US federal contracting + spending + regulation + partner vetting. **142 tools across 48 federal data sources** — keyless-first: only 4 sources (Census business-patterns, FRED, BEA, and DOL's data endpoint) need a free key; the other 44 need none. Works today, in any AI agent.
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/@cliwant/mcp-sam-gov)
|
|
10
10
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=cliwant)
|
|
@@ -50,7 +50,7 @@ The most comprehensive **keyless-first** MCP server for US federal contracting +
|
|
|
50
50
|
|---|---|
|
|
51
51
|
| GovWin: $30K-$100K/yr per seat | Free, MIT license |
|
|
52
52
|
| API key registration → wait 24h → quota tier shopping | `npm install` → working in 60s |
|
|
53
|
-
| 5+ separate vendor APIs / scrapers | 1 unified surface,
|
|
53
|
+
| 5+ separate vendor APIs / scrapers | 1 unified surface, 142 tools across 48 sources |
|
|
54
54
|
| LLMs hallucinate NAICS codes / agency names | Anti-hallucination autocomplete guards built-in |
|
|
55
55
|
| Brittle scraping breaks weekly | Daily live smoke test ([badge above](#)) |
|
|
56
56
|
| Procurement officer → IT ticket → 3-week wait | Claude Desktop double-click install |
|
|
@@ -79,7 +79,7 @@ The federal data this wraps is **public domain**. There is no good reason it sho
|
|
|
79
79
|
| 🌐 **Trade, geo & disaster** | "HTS tariff for this product; Census tract for this address; FEMA declarations in this state" | USITC HTS, US Census, FEMA, Socrata, CKAN |
|
|
80
80
|
| 🎓 **Grants & datasets** | "Cybersecurity grants posted in the last 30 days; discover federal open datasets" | Grants.gov, data.gov |
|
|
81
81
|
|
|
82
|
-
**
|
|
82
|
+
**142 tools across 48 federal data sources — keyless-first: only 4 sources (Census business-patterns, FRED, BEA, and DOL's data endpoint) need a free key; the other 44 need none.** (An earlier 52-tool build measured roughly p50 ~0.25s / p95 ~0.8s against production federal APIs; latency varies by source and upstream load — treat it as fast, not a benchmarked guarantee.)
|
|
83
83
|
|
|
84
84
|
---
|
|
85
85
|
|
|
@@ -106,7 +106,7 @@ If you already use Claude Code (the CLI):
|
|
|
106
106
|
/plugin install cliwant/mcp-sam-gov
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
This installs the MCP server **plus** a [SKILL.md](./skills/sam-gov/SKILL.md) workflow guide that teaches Claude when + how to use each of the
|
|
109
|
+
This installs the MCP server **plus** a [SKILL.md](./skills/sam-gov/SKILL.md) workflow guide that teaches Claude when + how to use each of the 142 tools.
|
|
110
110
|
|
|
111
111
|
### 🔵 Path 3 — Manual install for any MCP host (Codex, Cursor, Continue, Gemini)
|
|
112
112
|
|
|
@@ -174,7 +174,7 @@ Then point your host config at the absolute path:
|
|
|
174
174
|
|
|
175
175
|
(Or skip this entirely — use Path 1's `.mcpb` and it auto-configures.)
|
|
176
176
|
|
|
177
|
-
Restart Claude Desktop fully (system tray quit on Windows / Quit menu on macOS), then look for the 🔨 icon. You should see "sam-gov (
|
|
177
|
+
Restart Claude Desktop fully (system tray quit on Windows / Quit menu on macOS), then look for the 🔨 icon. You should see "sam-gov (142 tools)".
|
|
178
178
|
|
|
179
179
|
### Claude Code
|
|
180
180
|
|
|
@@ -380,7 +380,7 @@ Get one free (instant, no wait) at [api.data.gov/signup](https://api.data.gov/si
|
|
|
380
380
|
|
|
381
381
|
---
|
|
382
382
|
|
|
383
|
-
## Tool catalog (
|
|
383
|
+
## Tool catalog (142 tools)
|
|
384
384
|
|
|
385
385
|
Grouped by workflow. Keyless-first — most tools need no key; Census business-patterns, FRED, BEA, and DOL's data endpoint require a free key, and a handful of others gain higher limits from an optional free key (noted above). Descriptions are condensed — each tool's own `inputSchema` carries the full contract and honesty caveats.
|
|
386
386
|
|
|
@@ -400,7 +400,7 @@ Grouped by workflow. Keyless-first — most tools need no key; Census business-p
|
|
|
400
400
|
</details>
|
|
401
401
|
|
|
402
402
|
<details>
|
|
403
|
-
<summary><b>Spending, awards & competition — USAspending + FPDS + GAO (
|
|
403
|
+
<summary><b>Spending, awards & competition — USAspending + FPDS + GAO (31 tools)</b></summary>
|
|
404
404
|
|
|
405
405
|
- `usas_search_awards` — aggregate share-of-wallet at agency × NAICS
|
|
406
406
|
- `usas_search_individual_awards` — line-item federal contracts (returns generatedInternalId)
|
|
@@ -429,6 +429,8 @@ Grouped by workflow. Keyless-first — most tools need no key; Census business-p
|
|
|
429
429
|
- `usas_autocomplete_recipient` — anti-hallucination recipient guard
|
|
430
430
|
- `usas_naics_hierarchy` — navigate the NAICS tree (2→4→6) + active-contract count per code
|
|
431
431
|
- `usas_glossary` — 151 federal-spending terms
|
|
432
|
+
- `usas_list_disaster_codes` — list Disaster Emergency Fund Codes (DEFC): COVID-19, IIJA/infrastructure, and other emergency-appropriation tags
|
|
433
|
+
- `usas_disaster_spending` — disaster/emergency-fund spending BY GEOGRAPHY for given DEFCs (which state/county/district captured COVID/IIJA relief money)
|
|
432
434
|
- `fpds_search_awards` — FPDS-NG federal contract award actions (the authoritative award-action feed)
|
|
433
435
|
- `gao_protest_lookup` — recent GAO bid-protest decisions from the public Legal-Products RSS feed (recent window only)
|
|
434
436
|
</details>
|
|
@@ -454,10 +456,11 @@ Grouped by workflow. Keyless-first — most tools need no key; Census business-p
|
|
|
454
456
|
</details>
|
|
455
457
|
|
|
456
458
|
<details>
|
|
457
|
-
<summary><b>Product safety & recalls — openFDA · NHTSA · CPSC (
|
|
459
|
+
<summary><b>Product safety & recalls — openFDA · NHTSA · CPSC (6 tools)</b></summary>
|
|
458
460
|
|
|
459
461
|
- `openfda_enforcement` — FDA drug / device / food recalls & enforcement actions (product-safety supplier vetting)
|
|
460
462
|
- `openfda_device_clearances` — FDA 510(k) medical-device clearances (device-maker capability check)
|
|
463
|
+
- `openfda_drug_approvals` — openFDA Drugs@FDA drug-approval applications (sponsor, approved products, submission/approval history)
|
|
461
464
|
- `nhtsa_recalls` — NHTSA vehicle recalls by make / model / year
|
|
462
465
|
- `nhtsa_complaints` — NHTSA vehicle safety complaints by make / model / year
|
|
463
466
|
- `cpsc_recalls` — CPSC consumer-product recalls (product supplier vetting)
|
|
@@ -524,7 +527,7 @@ Grouped by workflow. Keyless-first — most tools need no key; Census business-p
|
|
|
524
527
|
- `treasury_debt_to_penny` — daily total US public debt outstanding (Treasury Fiscal Data)
|
|
525
528
|
- `treasury_avg_interest_rates` — average interest rate the Treasury pays by security type
|
|
526
529
|
- `treasury_monthly_statement` — Monthly Treasury Statement: receipts, outlays, deficit/surplus by month
|
|
527
|
-
- `treasury_query_dataset` — escape-hatch query over
|
|
530
|
+
- `treasury_query_dataset` — escape-hatch query over 7 confirmed Treasury Fiscal Data datasets
|
|
528
531
|
- `bea_regional_data` — GDP / personal income by industry × geography (BEA Regional; requires free BEA_API_KEY)
|
|
529
532
|
- `census_business_patterns` — establishments / employment / annual payroll by NAICS × geography (Census CBP; requires free CENSUS_API_KEY)
|
|
530
533
|
- `fred_search_series` — search the FRED macroeconomic series catalog (GDP/CPI/rates/unemployment; requires free FRED_API_KEY)
|
|
@@ -557,25 +560,29 @@ Grouped by workflow. Keyless-first — most tools need no key; Census business-p
|
|
|
557
560
|
</details>
|
|
558
561
|
|
|
559
562
|
<details>
|
|
560
|
-
<summary><b>Cyber compliance — NVD + CISA KEV (
|
|
563
|
+
<summary><b>Cyber compliance — NVD + CISA KEV + NIST 800-53 (3 tools)</b></summary>
|
|
561
564
|
|
|
562
565
|
- `cve_lookup` — look up NIST NVD CVE records
|
|
563
566
|
- `cisa_kev_lookup` — filter the CISA Known Exploited Vulnerabilities catalog (binding BOD 22-01 remediation due-dates)
|
|
567
|
+
- `nist_800_53_controls` — NIST SP 800-53 Rev 5 security & privacy controls lookup (FedRAMP/CMMC/RMF requirement text by controlId/family/keyword)
|
|
564
568
|
</details>
|
|
565
569
|
|
|
566
570
|
<details>
|
|
567
|
-
<summary><b>Trade &
|
|
571
|
+
<summary><b>Trade, tariffs & logistics — USITC · CBP (2 tools)</b></summary>
|
|
568
572
|
|
|
569
573
|
- `hts_lookup` — US import-tariff classification + duty rates from the USITC Harmonized Tariff Schedule
|
|
574
|
+
- `cbp_border_wait_times` — live CBP land-border commercial-vehicle wait times (Canadian + Mexican ports; freight/logistics)
|
|
570
575
|
</details>
|
|
571
576
|
|
|
572
577
|
<details>
|
|
573
|
-
<summary><b>Geo, disaster & state/local open data — Census · FEMA · Socrata · CKAN (
|
|
578
|
+
<summary><b>Geo, disaster & state/local open data — Census · FEMA · NWS · Socrata · CKAN (10 tools)</b></summary>
|
|
574
579
|
|
|
575
580
|
- `census_geocode_address` — resolve a one-line US address → matched address + Census geographies (tract, CD, place)
|
|
576
581
|
- `census_geographies_by_coordinates` — resolve a longitude/latitude point → Census geographies
|
|
577
582
|
- `fema_disaster_declarations` — FEMA disaster / emergency declarations by state, type, incident, year
|
|
578
583
|
- `fema_search_public_assistance` — FEMA Public Assistance funded projects
|
|
584
|
+
- `fema_search_hazard_mitigation` — FEMA Hazard Mitigation Assistance projects (HMGP/FMA/PDM/BRIC mitigation grants to state/local/tribal subrecipients; disaster-resilience, distinct from Public Assistance recovery)
|
|
585
|
+
- `nws_active_alerts` — currently-active NWS weather alerts (watches/warnings/advisories; disaster/climate readiness, pairs with the FEMA tools)
|
|
579
586
|
- `socrata_discover_datasets` — find Socrata dataset 4x4 ids by keyword
|
|
580
587
|
- `socrata_query` — query rows from an allowlisted Socrata/SODA open-data portal
|
|
581
588
|
- `ckan_discover_datasets` — find CKAN datastore resource ids by keyword
|
|
@@ -583,9 +590,10 @@ Grouped by workflow. Keyless-first — most tools need no key; Census business-p
|
|
|
583
590
|
</details>
|
|
584
591
|
|
|
585
592
|
<details>
|
|
586
|
-
<summary><b>Dataset discovery — data.gov (
|
|
593
|
+
<summary><b>Dataset & registry discovery — data.gov · get.gov (2 tools)</b></summary>
|
|
587
594
|
|
|
588
595
|
- `datagov_search_datasets` — search the data.gov v4 catalog for federal open datasets across all publishing agencies
|
|
596
|
+
- `search_gov_domains` — CISA get.gov authoritative .gov domain registry (resolve which org owns a .gov domain; enumerate federal agencies + map SLED entities)
|
|
589
597
|
</details>
|
|
590
598
|
|
|
591
599
|
<details>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cbp-border.ts — CBP Border Wait Times (bwt.cbp.gov, KEYLESS) — the FREIGHT /
|
|
3
|
+
* LOGISTICS lane. Live commercial-vehicle (and passenger) wait times at every US
|
|
4
|
+
* land border port (Canadian + Mexican): per-port lane delays, operational status,
|
|
5
|
+
* and open-lane counts. Answers "what's the current commercial-truck delay at port
|
|
6
|
+
* X" — real-time freight-crossing situational awareness for logistics/trade vendors.
|
|
7
|
+
*
|
|
8
|
+
* SOURCE: CBP's official Border Wait Times API (bwt.cbp.gov/api/bwtnew) — a .gov host,
|
|
9
|
+
* keyless, returns a JSON ARRAY of ports. This is REAL-TIME operational data: each
|
|
10
|
+
* lane carries its own `update_time` (surfaced verbatim) — freshness is disclosed and
|
|
11
|
+
* never implied to be live-to-the-second.
|
|
12
|
+
*
|
|
13
|
+
* HONESTY: fixed host + redirect:"error" (SSRF); a non-array body ⇒ driftError (never
|
|
14
|
+
* a fake empty); an outage/4xx/timeout THROWS. delay/lanes are upstream STRINGS →
|
|
15
|
+
* number|null (a real 0 stays 0; an empty/N/A value is null, NEVER a fabricated 0 — a
|
|
16
|
+
* closed lane's delay is UNKNOWN, not "0 minutes"). totalAvailable = the EXACT count
|
|
17
|
+
* of matched ports (client-side filter; the API returns the whole set).
|
|
18
|
+
*/
|
|
19
|
+
import { type MetaBundle } from "./meta.js";
|
|
20
|
+
export declare const CBP_HOST = "bwt.cbp.gov";
|
|
21
|
+
export type CbpLane = {
|
|
22
|
+
operationalStatus: string | null;
|
|
23
|
+
delayMinutes: number | null;
|
|
24
|
+
lanesOpen: number | null;
|
|
25
|
+
updateTime: string | null;
|
|
26
|
+
};
|
|
27
|
+
export type CbpPort = {
|
|
28
|
+
portNumber: string | null;
|
|
29
|
+
portName: string | null;
|
|
30
|
+
crossingName: string | null;
|
|
31
|
+
border: string | null;
|
|
32
|
+
portStatus: string | null;
|
|
33
|
+
asOf: string | null;
|
|
34
|
+
commercialVehicle: {
|
|
35
|
+
maxLanes: number | null;
|
|
36
|
+
standard: CbpLane;
|
|
37
|
+
fast: CbpLane;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* List CBP land-border-port commercial-vehicle (+ passenger) wait times, optionally
|
|
42
|
+
* filtered by border (Canadian/Mexican) and/or port name (substring). Client-side
|
|
43
|
+
* filter over the live feed; honest `_meta` (exact match total + real-time freshness).
|
|
44
|
+
*/
|
|
45
|
+
export declare function borderWaitTimes(args: {
|
|
46
|
+
border?: string;
|
|
47
|
+
portName?: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
offset?: number;
|
|
50
|
+
}): Promise<MetaBundle>;
|
|
51
|
+
//# sourceMappingURL=cbp-border.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cbp-border.d.ts","sourceRoot":"","sources":["../src/cbp-border.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAEzE,eAAO,MAAM,QAAQ,gBAAgB,CAAC;AA+BtC,MAAM,MAAM,OAAO,GAAG;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iBAAiB,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CAClF,CAAC;AA2DF;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsCtB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cbp-border.ts — CBP Border Wait Times (bwt.cbp.gov, KEYLESS) — the FREIGHT /
|
|
3
|
+
* LOGISTICS lane. Live commercial-vehicle (and passenger) wait times at every US
|
|
4
|
+
* land border port (Canadian + Mexican): per-port lane delays, operational status,
|
|
5
|
+
* and open-lane counts. Answers "what's the current commercial-truck delay at port
|
|
6
|
+
* X" — real-time freight-crossing situational awareness for logistics/trade vendors.
|
|
7
|
+
*
|
|
8
|
+
* SOURCE: CBP's official Border Wait Times API (bwt.cbp.gov/api/bwtnew) — a .gov host,
|
|
9
|
+
* keyless, returns a JSON ARRAY of ports. This is REAL-TIME operational data: each
|
|
10
|
+
* lane carries its own `update_time` (surfaced verbatim) — freshness is disclosed and
|
|
11
|
+
* never implied to be live-to-the-second.
|
|
12
|
+
*
|
|
13
|
+
* HONESTY: fixed host + redirect:"error" (SSRF); a non-array body ⇒ driftError (never
|
|
14
|
+
* a fake empty); an outage/4xx/timeout THROWS. delay/lanes are upstream STRINGS →
|
|
15
|
+
* number|null (a real 0 stays 0; an empty/N/A value is null, NEVER a fabricated 0 — a
|
|
16
|
+
* closed lane's delay is UNKNOWN, not "0 minutes"). totalAvailable = the EXACT count
|
|
17
|
+
* of matched ports (client-side filter; the API returns the whole set).
|
|
18
|
+
*/
|
|
19
|
+
import { getJson, driftError } from "./datasource.js";
|
|
20
|
+
import { memoize } from "./cache.js";
|
|
21
|
+
import { num } from "./coerce.js";
|
|
22
|
+
import { withMeta } from "./meta.js";
|
|
23
|
+
export const CBP_HOST = "bwt.cbp.gov";
|
|
24
|
+
const CBP_URL = "https://bwt.cbp.gov/api/bwtnew";
|
|
25
|
+
const CBP_LABEL = "cbp:border-wait-times";
|
|
26
|
+
const CBP_TIMEOUT_MS = 15_000;
|
|
27
|
+
// Real-time feed — a SHORT 60s cache (upstream politeness) while staying fresh; the
|
|
28
|
+
// per-lane update_time is the authoritative freshness signal, disclosed per port.
|
|
29
|
+
const CBP_CACHE_TTL_MS = 60_000;
|
|
30
|
+
const FRESHNESS_NOTE = "REAL-TIME operational data: each lane carries its own asOf/updateTime (surfaced verbatim) — this is a live border-wait snapshot, not a historical series. A closed port or lane reports operationalStatus accordingly; its delayMinutes is null (UNKNOWN), never a fabricated 0.";
|
|
31
|
+
const PROVENANCE_NOTE = "Source: CBP Border Wait Times API (bwt.cbp.gov), keyless. Covers all US land border ports on the Canadian and Mexican borders.";
|
|
32
|
+
/** Trim to a non-empty string or null (never ""). */
|
|
33
|
+
function s(v) {
|
|
34
|
+
if (typeof v !== "string")
|
|
35
|
+
return v == null ? null : String(v);
|
|
36
|
+
const t = v.trim();
|
|
37
|
+
return t.length > 0 ? t : null;
|
|
38
|
+
}
|
|
39
|
+
/** Map ONE lane object → curated lane (delay/lanes via `num`: 0 stays 0, ""→null). */
|
|
40
|
+
function mapLane(lane) {
|
|
41
|
+
const l = (lane ?? {});
|
|
42
|
+
return {
|
|
43
|
+
operationalStatus: s(l.operational_status),
|
|
44
|
+
delayMinutes: num(l.delay_minutes),
|
|
45
|
+
lanesOpen: num(l.lanes_open),
|
|
46
|
+
updateTime: s(l.update_time),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function mapPort(port) {
|
|
50
|
+
const cv = (port.commercial_vehicle_lanes ?? {});
|
|
51
|
+
const date = s(port.date);
|
|
52
|
+
const time = s(port.time);
|
|
53
|
+
return {
|
|
54
|
+
portNumber: s(port.port_number),
|
|
55
|
+
portName: s(port.port_name),
|
|
56
|
+
crossingName: s(port.crossing_name),
|
|
57
|
+
border: s(port.border),
|
|
58
|
+
portStatus: s(port.port_status),
|
|
59
|
+
asOf: date && time ? `${date} ${time}` : (date ?? time),
|
|
60
|
+
commercialVehicle: {
|
|
61
|
+
maxLanes: num(cv.maximum_lanes),
|
|
62
|
+
standard: mapLane(cv.standard_lanes),
|
|
63
|
+
fast: mapLane(cv.FAST_lanes),
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Fetch + parse the full port array, memoized 60s. A non-array body ⇒ driftError. */
|
|
68
|
+
async function loadPorts() {
|
|
69
|
+
return memoize("cbp:bwt", async () => {
|
|
70
|
+
const built = new URL(CBP_URL);
|
|
71
|
+
if (built.hostname !== CBP_HOST || built.protocol !== "https:") {
|
|
72
|
+
throw driftError(CBP_LABEL, `Constructed CBP URL host ${JSON.stringify(built.hostname)} is not ${CBP_HOST} over https — refusing to fetch (SSRF safety).`);
|
|
73
|
+
}
|
|
74
|
+
const body = await getJson(CBP_URL, { label: CBP_LABEL, redirect: "error", timeoutMs: CBP_TIMEOUT_MS });
|
|
75
|
+
if (!Array.isArray(body)) {
|
|
76
|
+
throw driftError(CBP_LABEL, "CBP Border Wait Times returned a non-array body — schema drift, never a fake-empty result.");
|
|
77
|
+
}
|
|
78
|
+
return body.map(mapPort);
|
|
79
|
+
}, CBP_CACHE_TTL_MS);
|
|
80
|
+
}
|
|
81
|
+
// ─── Tool: cbp_border_wait_times ──────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* List CBP land-border-port commercial-vehicle (+ passenger) wait times, optionally
|
|
84
|
+
* filtered by border (Canadian/Mexican) and/or port name (substring). Client-side
|
|
85
|
+
* filter over the live feed; honest `_meta` (exact match total + real-time freshness).
|
|
86
|
+
*/
|
|
87
|
+
export async function borderWaitTimes(args) {
|
|
88
|
+
const limit = args.limit ?? 100;
|
|
89
|
+
const offset = args.offset ?? 0;
|
|
90
|
+
const all = await loadPorts();
|
|
91
|
+
const filtersApplied = [];
|
|
92
|
+
const borderQ = args.border?.trim().toLowerCase();
|
|
93
|
+
const portQ = args.portName?.trim().toLowerCase();
|
|
94
|
+
if (args.border !== undefined)
|
|
95
|
+
filtersApplied.push("border");
|
|
96
|
+
if (args.portName !== undefined)
|
|
97
|
+
filtersApplied.push("portName");
|
|
98
|
+
const matched = all.filter((p) => {
|
|
99
|
+
if (borderQ && !(p.border ?? "").toLowerCase().includes(borderQ))
|
|
100
|
+
return false;
|
|
101
|
+
if (portQ && !(p.portName ?? "").toLowerCase().includes(portQ))
|
|
102
|
+
return false;
|
|
103
|
+
return true;
|
|
104
|
+
});
|
|
105
|
+
const totalAvailable = matched.length;
|
|
106
|
+
const page = matched.slice(offset, offset + limit);
|
|
107
|
+
const returned = page.length;
|
|
108
|
+
const hasMore = offset + returned < totalAvailable;
|
|
109
|
+
const nextOffset = hasMore ? offset + returned : null;
|
|
110
|
+
return withMeta({ ports: page }, {
|
|
111
|
+
source: "bwt.cbp.gov Border Wait Times (keyless)",
|
|
112
|
+
keylessMode: true,
|
|
113
|
+
returned,
|
|
114
|
+
totalAvailable,
|
|
115
|
+
truncated: hasMore,
|
|
116
|
+
filtersApplied,
|
|
117
|
+
filtersDropped: [],
|
|
118
|
+
fieldsUnavailable: [],
|
|
119
|
+
pagination: { offset, limit, hasMore, nextOffset },
|
|
120
|
+
notes: [PROVENANCE_NOTE, FRESHNESS_NOTE],
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=cbp-border.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cbp-border.js","sourceRoot":"","sources":["../src/cbp-border.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagov-catalog.d.ts","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAOzE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAelD,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAO1E,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AA2EF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"datagov-catalog.d.ts","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAOzE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAelD,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAO1E,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AA2EF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAyHrB"}
|
package/dist/datagov-catalog.js
CHANGED
|
@@ -161,14 +161,19 @@ export async function searchDatasets(args) {
|
|
|
161
161
|
const params = new URLSearchParams();
|
|
162
162
|
const filtersApplied = [];
|
|
163
163
|
if (args.query !== undefined) {
|
|
164
|
-
|
|
164
|
+
// DRIFT FIX (dogfooding 2026-07-16): the data.gov v4 catalog renamed its
|
|
165
|
+
// free-text param `_q` → `q` (and `_size` → `size`). The old `_q` was SILENTLY
|
|
166
|
+
// IGNORED — every query returned the same default catalog page while
|
|
167
|
+
// filtersApplied still claimed "query", a confidently-wrong result. LIVE-VERIFIED:
|
|
168
|
+
// q=wildfire → wildfire datasets; _q=wildfire → the generic default list.
|
|
169
|
+
params.set("q", args.query);
|
|
165
170
|
filtersApplied.push("query");
|
|
166
171
|
}
|
|
167
172
|
if (args.organization !== undefined) {
|
|
168
173
|
params.set("organization", args.organization);
|
|
169
174
|
filtersApplied.push("organization");
|
|
170
175
|
}
|
|
171
|
-
params.set("
|
|
176
|
+
params.set("size", String(limit));
|
|
172
177
|
if (args.cursor !== undefined) {
|
|
173
178
|
params.set("after", args.cursor);
|
|
174
179
|
filtersApplied.push("cursor");
|
|
@@ -211,6 +216,15 @@ export async function searchDatasets(args) {
|
|
|
211
216
|
if (filtersApplied.length === 0) {
|
|
212
217
|
notes.push("No filters were applied — this is an unscoped scan of the WHOLE data.gov catalog. Add `query` and/or `organization` for a meaningful scoped result set.");
|
|
213
218
|
}
|
|
219
|
+
// Behavior-driven limit-honesty (dogfooding 2026-07-16): the v4 catalog currently
|
|
220
|
+
// returns an upstream-FIXED page (~20) and ignores the `size` argument. Fire ONLY
|
|
221
|
+
// when the API returned MORE than requested (returned > limit) — a DEFINITIVE
|
|
222
|
+
// "limit ignored" signal that can't be confused with a genuine small result set
|
|
223
|
+
// (returned < limit could just be few matches). Behavior-driven, so if the API
|
|
224
|
+
// begins honoring `size` again (returned ≤ limit) the note self-suppresses.
|
|
225
|
+
if (returned > limit) {
|
|
226
|
+
notes.push(`The requested limit (${limit}) was NOT honored — the data.gov v4 catalog returned MORE (${returned} rows): it currently serves an upstream-fixed page and ignores the size argument. Page through the full result set with _meta.nextCursor, not by raising limit.`);
|
|
227
|
+
}
|
|
214
228
|
return withMeta({ datasets }, {
|
|
215
229
|
source: DATAGOV_CATALOG_SOURCE(keyModeLabel()),
|
|
216
230
|
keylessMode: false, // genuinely keyed (api.data.gov X-Api-Key)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagov-catalog.js","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"datagov-catalog.js","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/ecfr.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Both keyless. Documented at https://www.ecfr.gov/developers/.
|
|
14
14
|
*/
|
|
15
|
-
export declare function listTitles(): Promise<{
|
|
15
|
+
export declare function listTitles(): Promise<import("./meta.js").MetaBundle<{
|
|
16
16
|
titles: {
|
|
17
17
|
number: number;
|
|
18
18
|
name: string;
|
|
@@ -21,7 +21,7 @@ export declare function listTitles(): Promise<{
|
|
|
21
21
|
upToDateAsOf: string | undefined;
|
|
22
22
|
reserved: boolean;
|
|
23
23
|
}[];
|
|
24
|
-
}
|
|
24
|
+
}>>;
|
|
25
25
|
export declare function search(args: {
|
|
26
26
|
query: string;
|
|
27
27
|
titleNumber?: number;
|
package/dist/ecfr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecfr.d.ts","sourceRoot":"","sources":["../src/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2BH,wBAAsB,UAAU;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ecfr.d.ts","sourceRoot":"","sources":["../src/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2BH,wBAAsB,UAAU;;;;;;;;;IA0C/B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;;;IA0IA"}
|