Koskamo

FedWatch MCP

FedWatch is a public-data opportunity engine that monitors US federal contract and grant opportunities from sources like SAM.gov and Grants.gov. It provides source-backed search, saved profiles, change watching, ranking, pursuit briefs, and durable alerts. The server supports anonymous search with rate limits and offers a Pro tier for advanced features like saved profiles and alerts.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

FedWatch MCP logo, by SMAT DesignsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by SMAT Designs
MCP endpoint (Streamable HTTP)
https://fedwatch-mcp.smatdesigns.workers.dev/mcp
Vendor documentation

What you can do with it

  • Search for federal contracts and grants
  • Monitor changes in public-data opportunities
  • Generate pursuit briefs for leads
  • Set up saved profiles and alerts

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
fedwatch-mcp 1.0.0
MCP protocol
2025-06-18
Tools
17 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Tools

17 advertised

fedwatch_signal_search
Advertised by the server during the last successful anonymous check.

Search multiple promoted public-data sources for the same organization/topic, normalize the records, rank actionability with a deterministic reason-bearing heuristic, and surface only conservative cross-source identity candidates. Scores are not probabilities and name matches are never called verified identity.

fedwatch_signal_search input schema
{
  "type": "object",
  "required": [
    "keyword"
  ],
  "properties": {
    "keyword": {
      "type": "string",
      "description": "Organization/topic name to search across promoted sources"
    },
    "source_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional promoted source ids; defaults to all currently searchable Wave 1 public-data sources"
    },
    "limit_per_source": {
      "type": "integer",
      "description": "Maximum rows requested from each source before tier caps"
    }
  },
  "additionalProperties": false
}
permits_search
Advertised by the server during the last successful anonymous check.

Search normalized public permit/violation records from a promoted official source. Promoted (2026-10-16 all-states expansion): Phoenix AZ (ArcGIS), Chicago permits + building violations, NYC DOB permits/violations + HPD violations, Austin permits + code cases, Los Angeles, San Francisco, Seattle, Honolulu, New Orleans, Kansas City, Orlando, Cincinnati (Socrata), and Philadelphia, Columbus, Charlotte, Miami-Dade, Detroit, Albuquerque, Sioux Falls, Virginia Beach, Louisville, Portland OR (residential), Raleigh (180-day window) via ArcGIS. County feeds added 2026-10-18 (county census Batch A): Maricopa County AZ building permits (the county PND current-permits view — the former named gap, now promoted as a current-permits view, not a historical register), Adams County CO, Alachua County FL, Spokane County WA (layer lags; newest issued 2025-05-21), DC building permits (30-day window), Pottawattamie County IA septic-permit document index (ArcGIS), and Montgomery County MD commercial permits, Prince George's County MD permits (2023–2025), Howard County MD permits (city/zip only), Williamson County TX permits (WCAD file), King County WA food-establishment inspections, Marin County CA permit inspections (Socrata) — every feed reports its exact count/completeness so capped results are never mistaken for the whole universe. Per-state coverage for all 50 states + DC is in fedwatch_sources. Not every source supports every filter: an unsupported filter is refused with the reason, never silently ignored.

permits_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped; source max 2000)"
    },
    "status": {
      "type": "string",
      "description": "Exact permit status, e.g. OPEN"
    },
    "address": {
      "type": "string",
      "description": "Street address fragment"
    },
    "company": {
      "type": "string",
      "description": "Company/contractor name fragment"
    },
    "keyword": {
      "type": "string",
      "description": "Search permit name, company, address, description, scope, or permit number"
    },
    "source_id": {
      "type": "string",
      "description": "Source id; phoenix_current_permits (default) — see fedwatch_sources domain=permits for all promoted ids"
    },
    "permit_type": {
      "type": "string",
      "description": "Permit type/description fragment"
    }
  },
  "additionalProperties": false
}
licenses_search
Advertised by the server during the last successful anonymous check.

Search normalized public license records from promoted official sources. Arizona ADHS remains a partial provider-name search; California DCC remains a one-page partial search with unverified total/paging; New York OCM (jskf-tt3q) is an official statewide Socrata dataset whose exact filtered count, schema evidence, source refresh time and resumable paging are returned on every call — OCM rows are explicitly classified as active/expired/surrendered/cancelled/revoked-if-observed/pending/proximity-protection/under-review rather than treating every row as an active license; Oregon OLCC (or_olcc_cannabis_licenses) and Connecticut establishments (ct_cannabis_establishments) are official Socrata registers with exact counts. fedwatch_sources carries a licenses entry for all 50 states + DC with each program's status. Unnecessary personal contact fields are not fetched.

licenses_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Maximum returned rows. Tier-capped for search; NY OCM supports explicit resume metadata when the exact filtered set is larger."
    },
    "county": {
      "type": "string",
      "description": "NY OCM only: exact county, e.g. 'Kings'"
    },
    "status": {
      "type": "string",
      "description": "CA/NY: exact upstream status or status code, e.g. 'Active' or 'LICACT'; OR/CT: exact license status"
    },
    "keyword": {
      "type": "string",
      "description": "Facility/business/license/application fragment; at least 2 characters for ADHS, optional for the Socrata/API sources"
    },
    "page_size": {
      "type": "integer",
      "description": "NY OCM only: bounded page size, 1-1000 (default 500)"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: azdhs_marijuana_facilities (default), ca_dcc_cannabis_licenses, ny_ocm_cannabis_licenses, or_olcc_cannabis_licenses, ct_cannabis_establishments"
    },
    "license_type": {
      "type": "string",
      "description": "License type/code fragment, e.g. 'Retailer' or 'OCMRETL'"
    },
    "record_class": {
      "type": "string",
      "description": "NY OCM only: active_license | expired_license | surrendered_license | cancelled_license | revoked_license | pending_application | proximity_protection | license_under_review | inactive_license"
    },
    "start_offset": {
      "type": "integer",
      "description": "NY OCM only: row offset for an explicit resume. Any non-zero start is deliberately partial."
    }
  },
  "additionalProperties": false
}
businesses_search
Advertised by the server during the last successful anonymous check.

Search normalized public business-register / new-filing records. PROMOTED (2026-10-16): ct_business_registry (Connecticut Business Master, 1.30M entities), or_business_registry (Oregon active businesses, 1.58M), pa_business_registry (Pennsylvania registered businesses, 4.17M), tx_franchise_taxpayers (Texas franchise-tax accounts incl. SOS file numbers, 3.49M) — all via the states' official Socrata open-data portals with exact counts. GATED: co_business_entities (Colorado SOS automated-collection authorization + written terms) and ny_business_filings (NY Open Data written consent) return the named gate; Arizona stays planned (Business Center is CAPTCHA/identity-gated, no public API). fedwatch_sources carries a businesses entry for all 50 states + DC. Filters a source cannot honor exactly (e.g. entity_type on CT, which publishes none) are refused with the reason.

businesses_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped; source max 2000)"
    },
    "county": {
      "type": "string",
      "description": "PA: county name; NY (gated): county of principal office"
    },
    "status": {
      "type": "string",
      "description": "Exact entity status where the source publishes one (CT/OR; CO gated)"
    },
    "keyword": {
      "type": "string",
      "description": "Entity name fragment"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: ct_business_registry (default), or_business_registry, pa_business_registry, tx_franchise_taxpayers, co_business_entities / ny_business_filings (gated)"
    },
    "entity_type": {
      "type": "string",
      "description": "Entity type filter (OR exact, PA/TX fragment; refused for CT)"
    },
    "filing_type": {
      "type": "string",
      "description": "NY only (gated): exact filing type, e.g. 'ARTICLES OF ORGANIZATION'"
    },
    "formed_after": {
      "type": "string",
      "description": "ISO date — only entities formed/registered after it (the new-business window)"
    }
  },
  "additionalProperties": false
}
securities_search
Advertised by the server during the last successful anonymous check.

Search SEC EDGAR filings. Source sec_edgar_filings (default): full-text search across filing text (keyword required) with optional form filter (e.g. 'D', '8-K', '13F-HR'), or a per-CIK submissions view when cik is given (recent-filings window — 13F coverage is that window only, labelled as such). EDGAR's own hit total is carried; when EDGAR reports it as a lower bound (relation gte) the response says so. Watch a CIK or a keyword+form query for new-filings alerts.

securities_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "cik": {
      "type": "string",
      "description": "CIK number — switches to the per-filer submissions view"
    },
    "form": {
      "type": "string",
      "description": "Form filter, comma-separated, e.g. 'D' or '8-K,13F-HR'"
    },
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped)"
    },
    "keyword": {
      "type": "string",
      "description": "Full-text keyword/phrase searched across filing text"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: sec_edgar_filings (default)"
    }
  },
  "additionalProperties": false
}
healthcare_search
Advertised by the server during the last successful anonymous check.

Search FDA/CMS healthcare sources. openfda_drug_recalls (default): FDA drug enforcement/recall reports — keyword matches product description or recalling firm. openfda_device_510k: FDA 510(k) clearances — keyword matches device name or applicant. npi_registry: NPPES NPI registry — keyword is an organization-name prefix (city/state refine; an exact NPI goes in the apn field); phone numbers and authorized-official contacts are never returned. FDA warning letters have no openFDA endpoint (separate planned entry); CMS Open Payments is archived 2015–2022 and blocked as a live source — see fedwatch_sources.

healthcare_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "apn": {
      "type": "string",
      "description": "NPI only: exact 10-digit NPI number"
    },
    "city": {
      "type": "string",
      "description": "NPI only: practice city"
    },
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped)"
    },
    "state": {
      "type": "string",
      "description": "NPI only: practice state (2-letter)"
    },
    "status": {
      "type": "string",
      "description": "Recalls only: exact FDA status, e.g. 'Ongoing'"
    },
    "keyword": {
      "type": "string",
      "description": "Keyword: product/firm (recalls), device/applicant (510k), organization name prefix (NPI)"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: openfda_drug_recalls (default), openfda_device_510k, or npi_registry"
    }
  },
  "additionalProperties": false
}
property_search
Advertised by the server during the last successful anonymous check.

Search Maricopa County Assessor parcel records (GIS Parcels layer) by APN, situs-address fragment, or subdivision/address keyword. Parcel identity, situs address, sale date/price, deed and subdivision only — owner name and mailing address exist in the layer and are deliberately never returned. TOOL SHAPE ONLY: recorder documents and tax delinquency are not this pack; delinquency data belongs to the liens program.

property_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "apn": {
      "type": "string",
      "description": "Assessor parcel number (APN or APN_DASH form)"
    },
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped)"
    },
    "address": {
      "type": "string",
      "description": "Situs street-address fragment"
    },
    "keyword": {
      "type": "string",
      "description": "Address or subdivision name fragment"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: maricopa_property_records (default)"
    }
  },
  "additionalProperties": false
}
enforcement_search
Advertised by the server during the last successful anonymous check.

Federal enforcement sources — currently ALL gated or planned, and the tools say exactly why per source: epa_echo (EPA ECHO DFR services documented but the documented calls did not reproduce from fleet egress on 2026-10-16 — adapter deferred, not faked), osha_enforcement (DOL API now requires a registered key; none is held and registration is an account creation), fcc_uls / faa_registry (bulk-file ETL shapes, not query APIs). Calls return the named gate for the chosen source.

enforcement_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "zip": {
      "type": "string",
      "description": "ZIP filter (reserved)"
    },
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped)"
    },
    "state": {
      "type": "string",
      "description": "State filter (reserved)"
    },
    "keyword": {
      "type": "string",
      "description": "Keyword (reserved for promoted adapters)"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: epa_echo (default), osha_enforcement, fcc_uls, faa_registry"
    }
  },
  "additionalProperties": false
}
courts_search
Advertised by the server during the last successful anonymous check.

Court dockets via CourtListener/RECAP — GATED on the expansion's one named credential gap: CourtListener's API returns 401 without a token, no CourtListener credential exists in fleet stores, and account creation is out of scope for this server. Provisioning a COURTLISTENER_API_TOKEN secret is the exact unlock; until then calls return that named gate. PACER is never scraped.

courts_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped)"
    },
    "keyword": {
      "type": "string",
      "description": "Docket/case keyword (reserved for the promoted adapter)"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: courtlistener_dockets (default)"
    }
  },
  "additionalProperties": false
}
ip_search
Advertised by the server during the last successful anonymous check.

USPTO trademark/patent data — GATED on credential provisioning: the modern USPTO APIs (ODP, TSDR case status) all require a registered API key (keyless routes retired). The fleet holds a scoped USPTO ODP credential in its secure vault from the USIPE program; copying it into this Worker (secret USPTO_ODP_API_KEY, budgeted against the shared daily cap) is the named unlock. uspto_bulk is the keyless bulk-file path (ETL shape, planned). Calls return the named gate until a source is promoted.

ip_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Maximum returned records (tier-capped)"
    },
    "keyword": {
      "type": "string",
      "description": "Trademark/patent keyword (reserved for promoted adapters)"
    },
    "source_id": {
      "type": "string",
      "description": "Source id: uspto_odp (default) or uspto_bulk"
    }
  },
  "additionalProperties": false
}
contracts_search_opportunities
Advertised by the server during the last successful anonymous check.

Search live federal contract opportunities on SAM.gov, newest-modified first. Filter by keyword, NAICS codes, set-aside codes (e.g. SBA, 8A, HZC, SDVOSBC, WOSB), and notice types (e.g. 'Sources Sought'). The public index applies those filters after fetch, so a filtered search pages deeper (up to 10 pages / 1,000 records) until the filter is satisfied — the response reports pages_fetched, how many records were examined (fetched), and scan_truncated when the page budget ran out. Returns the SAM index total and the post-filter count.

contracts_search_opportunities input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "size": {
      "type": "integer",
      "description": "Index records per page (1-100, default 100); also the post-filter target a filtered scan pages toward"
    },
    "naics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "NAICS codes to require, e.g. ['561720']"
    },
    "keyword": {
      "type": "string",
      "description": "Free-text keyword, e.g. 'janitorial'"
    },
    "active_only": {
      "type": "boolean",
      "description": "Only active notices (default true)"
    },
    "notice_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Notice types to require, matched case-insensitively, e.g. ['Sources Sought']"
    },
    "set_aside_codes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "SAM set-aside codes to require"
    }
  },
  "additionalProperties": false
}
contracts_search_awards
Advertised by the server during the last successful anonymous check.

Search federal contract AWARDS already made (USASpending, served from FedWatch's relay-ingested copy — a fleet machine syncs USASpending daily because USASpending blocks direct Worker fetches): who won, how much, which agency, period of performance. Filter by keyword, NAICS, and/or agency; sort by amount (default) or most recent. Every response states its data-as-of and the true total_matches under the filters. The incumbency/recompete evidence layer.

contracts_search_awards input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "sort": {
      "type": "string",
      "description": "'amount' (default, largest first) or 'recent' (newest obligation first)"
    },
    "limit": {
      "type": "integer",
      "description": "Max results (default 25)"
    },
    "naics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "NAICS codes"
    },
    "agency": {
      "type": "string",
      "description": "Agency name fragment to require, e.g. 'Veterans Affairs'"
    },
    "keyword": {
      "type": "string",
      "description": "Keyword, e.g. a service or incumbent name"
    },
    "days_back": {
      "type": "integer",
      "description": "Award window in days (default 365)"
    }
  },
  "additionalProperties": false
}
contracts_search_bid_outcomes
Advertised by the server during the last successful anonymous check.

Search PUBLIC, curator-ingested historical procurement results, disclosed winners, explicitly documented unsuccessful bidders, selection records and linked evidence. An award is never proof of which other firms lost or why. This is a partial curated KB, not all government procurements.

contracts_search_bid_outcomes input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Maximum returned cases (tier-capped)"
    },
    "agency": {
      "type": "string",
      "description": "Exact agency name filter"
    },
    "keyword": {
      "type": "string",
      "description": "Case ID, title or agency keyword"
    },
    "outcome": {
      "type": "string",
      "description": "awarded | canceled | no_award | open | unknown"
    },
    "category": {
      "type": "string",
      "description": "Exact services/category filter"
    }
  },
  "additionalProperties": false
}
contracts_search_bid_research
Advertised by the server during the last successful anonymous check.

Search nine source-linked historical PUBLIC procurement research cases: rubrics, committee scores, rankings, recommendations, approved awards and noncompetitive purchases. Preserves original stage; recommended/ranked is not awarded. This is a hand-selected research sample, NOT a complete bid universe or live SMAT outcomes.

contracts_search_bid_research input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Maximum cases returned, tier-capped"
    },
    "stage": {
      "type": "string",
      "description": "Filter observed stage, e.g. ranked_recommended, award_approved, committee_feedback"
    },
    "keyword": {
      "type": "string",
      "description": "Search buyer, subject or procurement ID"
    }
  },
  "additionalProperties": false
}
grants_search
Advertised by the server during the last successful anonymous check.

Search live federal grant opportunities on Grants.gov (posted by default). Returns hit count, agency, open/close dates, and assistance-listing (CFDA) numbers. Filter by agency code; sort by close date (soonest first); or restrict to grants closing within N days — sort/window apply to the fetched window and the response says when the window is narrower than the total hit count.

grants_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "rows": {
      "type": "integer",
      "description": "Max results (default 25)"
    },
    "sort": {
      "type": "string",
      "description": "'close_date' for soonest deadline first (default: Grants.gov order)"
    },
    "agency": {
      "type": "string",
      "description": "Grants.gov agency code to require, e.g. 'EPA'"
    },
    "status": {
      "type": "string",
      "description": "posted | forecasted | closed | archived (default posted)"
    },
    "keyword": {
      "type": "string",
      "description": "Keyword, e.g. 'water infrastructure'"
    },
    "closing_within_days": {
      "type": "integer",
      "description": "Only grants whose close date falls within the next N days"
    }
  },
  "additionalProperties": false
}
grants_search_programs
Advertised by the server during the last successful anonymous check.

Search the SAM.gov Assistance Listings program catalog (the programs behind the grants — by agency and program number). Catalog data: use grants_search for live deadlines.

grants_search_programs input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "size": {
      "type": "integer",
      "description": "Max results (default 25)"
    },
    "keyword": {
      "type": "string",
      "description": "Program keyword, e.g. 'rural health'"
    }
  },
  "additionalProperties": false
}
liens_search
Advertised by the server during the last successful anonymous check.

Search tax-lien data. Default mode 'db': FedWatch's lien database (county lien records ingested from public sources; every hit is labeled with its source and extraction path) — filter by state, county, parcel, or free text matched against address/owner/parcel/city. For upcoming sales pass upcoming_only (sale date today or later) and/or sale_within_days, with sort 'sale_date_asc' for next-sale-first; the default view is historical, most recent sale first. Modes 'nyc' (NYC's official lien-sale notice lists, live) and 'discover'/'both' (live discovery of public tax-lien datasets on open-data portals) remain available explicitly and serve as the labeled fallback when the DB has no match or is unreachable. Every response carries the partial-coverage label — this is not national coverage.

liens_search input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "zip": {
      "type": "string",
      "description": "NYC ZIP filter"
    },
    "mode": {
      "type": "string",
      "description": "'db' (default), 'nyc', 'discover', or 'both' (nyc + discover)"
    },
    "sort": {
      "type": "string",
      "description": "DB mode: 'sale_date_desc' (default) or 'sale_date_asc' (next sale first)"
    },
    "limit": {
      "type": "integer",
      "description": "Max results (default 25)"
    },
    "query": {
      "type": "string",
      "description": "DB mode: free text matched against address / owner / parcel / city. Discovery query for mode=discover, e.g. 'Cook County tax sale' or 'Florida tax lien'"
    },
    "state": {
      "type": "string",
      "description": "DB mode: state name or 2-letter abbreviation, e.g. 'New York' or 'NY'"
    },
    "county": {
      "type": "string",
      "description": "DB mode: county name (partial match), e.g. 'Queens'"
    },
    "parcel": {
      "type": "string",
      "description": "DB mode: exact parcel / APN id"
    },
    "borough": {
      "type": "string",
      "description": "NYC borough code 1-5 (1=Manhattan, 2=Bronx, 3=Brooklyn, 4=Queens, 5=Staten Island)"
    },
    "upcoming_only": {
      "type": "boolean",
      "description": "DB mode: only records whose sale date is today or later"
    },
    "sale_within_days": {
      "type": "integer",
      "description": "DB mode: only sales within the next N days (implies upcoming)"
    }
  },
  "additionalProperties": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1075 ms
95th percentile latency
1075 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1075 ms · metadata changed · 17 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http fedwatch-mcp https://fedwatch-mcp.smatdesigns.workers.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add fedwatch-mcp --url https://fedwatch-mcp.smatdesigns.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable fedwatch-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "fedwatch-mcp": {
      "url": "https://fedwatch-mcp.smatdesigns.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "fedwatch-mcp": {
      "type": "streamableHttp",
      "url": "https://fedwatch-mcp.smatdesigns.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start fedwatch-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "fedwatch-mcp": {
      "type": "http",
      "url": "https://fedwatch-mcp.smatdesigns.workers.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http fedwatch-mcp https://fedwatch-mcp.smatdesigns.workers.dev/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "fedwatch-mcp": {
      "url": "https://fedwatch-mcp.smatdesigns.workers.dev/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "fedwatch-mcp": {
      "serverUrl": "https://fedwatch-mcp.smatdesigns.workers.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like FedWatch MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.