mcp server
Basinwise
Determines which NPDES stormwater permit governs a US site and its requirements, cited to source.
Description as published by the maintainer. Source
- version 1.0.0
- active
active — Registry entry last updated 2026-07-22.
What this server can do
5 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
determine_permit(acres, state, endDate, activity, startDate, sectorCode, aridClimate, onTribalLand, disturbedAcres, federalFacility, partOfLargerPlan, dischargesToTier2Water, dischargesToImpairedWater, maxDisturbedAcresAtOneTime)- Determine which NPDES stormwater permit governs a construction or industrial site, and what that permit requires of it. Returns coverage ("required", "not_required" or "verify") with the reason, the governing permit and the version the answer was computed against, the jurisdiction and its permitting authority, the permit's eligibility screens, the requirements that attach to THIS site (each with the permit section it came from and a `because` explaining why it applies here rather than in general), the step-by-step derivation, and `notices`. ALWAYS surface `notices` verbatim to the user: it carries the preparer-credential warning, any coverage gap, and the fact that we do not perform the physical site inspections the permit requires. Deterministic, no model in the path. Requirements come back ONLY where we hold the governing permit's rules; where a state permit is identified but unread, `requirements` is empty and a notice says so rather than substituting the federal permit's numbers, so never treat an empty list as "nothing required". Free, no API key needed. Required: state, activity.
get_credential_gate(acres, state)- Whether a state requires a credentialed preparer (California's Qualified SWPPP Developer, and the analogous credential elsewhere) to prepare or sign a stormwater pollution prevention plan, and whether that requirement bites for a site of this size. This is the answer that decides whether a generated document is the operator's deliverable or a DRAFT for a credentialed person to review and sign, so `documentStatus` states that consequence in plain language on every response. `gate` is "open", "gated", "conditional" or "unknown"; a state we have not verified returns "unknown" and must never be treated as open. `appliesToThisSite` is null when the trigger is an acreage threshold you did not give acres for, or a plan-scope test we cannot resolve from site facts. Free, no API key needed. Required: state.
get_requirements(acres, state, endDate, activity, startDate, sectorCode, aridClimate, onTribalLand, disturbedAcres, federalFacility, partOfLargerPlan, dischargesToTier2Water, dischargesToImpairedWater, maxDisturbedAcresAtOneTime)- The requirements for a site: inspection frequency, stabilisation deadlines, Notice of Intent and Notice of Termination deadlines, corrective-action windows, record retention and buffer rules, each citing the permit section it came from. Same engine and same parser as determine_permit, projected down. The coverage verdict, the eligibility screens and the notices come with it, because a requirement list detached from whether coverage is triggered at all is a half-answer. An empty `requirements` array with a notice means we have not read that jurisdiction's permit, NOT that nothing is required. Free, no API key needed. Required: state, activity.
get_usage- What the credential on this connection is allowed to do: the tier it resolves to (anonymous, sandbox, test key, or a live key on a plan), the per-minute burst, the daily or monthly allowance, and whether calls bill. Call it once at the start of a long task to pace yourself, rather than discovering the ceiling as a rate_limited error halfway through. Takes no arguments. Free, no API key needed.
list_jurisdictions- Every state, territory and DC we hold a row for: NPDES authorisation status, the governing permit and its number, the agency name and URL, and the preparer-credential gate. Jurisdictions we have NOT verified are listed with confidence "unverified" and a note naming the agency to confirm with, rather than being omitted, because a jurisdiction missing from a coverage list reads as "no permit applies" and that is never what it means. Takes no arguments. Free, no API key needed.
Last successful function declaration observed on . Source: https://basinwise.vercel.app/api/mcp. We list what the server declared; we do not call any of these functions.
Endpoint status observed on . Source: https://basinwise.vercel.app/api/mcp.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| Latest published version | 1.0.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-07-22 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| First listed in the MCP Registry | 2026-07-22 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| mcp tools declared | 5 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | basinwise.vercel.app | |
| mcp endpoint status | ok | The server listed 5 functions when asked. | as of probe | basinwise.vercel.app |
Where to get it
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json