Skip to main content
Glama

Determine which stormwater permit governs a site

determine_permit
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
acresNoAlias for disturbedAcres.
stateYesTwo-letter state, territory or DC code, e.g. "CA".
endDateNoISO yyyy-mm-dd. Recorded on the determination.
activityYesRequired. Construction and industrial sites are governed by different permits and neither is assumed. "industrial" returns coverage "verify": EPA's Multi-Sector General Permit expired on 28 February 2026 and new operators cannot currently obtain coverage.
startDateNoISO yyyy-mm-dd. Recorded on the determination.
sectorCodeNoMSGP industrial sector code. Industrial sites only.
aridClimateNoArid, semi-arid or drought-stricken area, which may allow a reduced inspection frequency during the seasonally dry period.
onTribalLandNoEPA retains NPDES authority in Indian country even inside a state that runs its own programme.
disturbedAcresNoTOTAL acres the project will disturb over its life. This is what the 1-acre coverage threshold is measured against. `acres` is accepted as an alias.
federalFacilityNoEPA's permit covers federal facilities in some delegated states.
partOfLargerPlanNoWhether the project is part of a larger common plan of development or sale. Defaults to false. Send it explicitly: a half-acre lot inside a 40-acre subdivision IS covered, and this is the most commonly missed trigger in the permit.
dischargesToTier2WaterNoDischarges to a Tier 2, 2.5 or 3 water. Same tri-state handling as dischargesToImpairedWater.
dischargesToImpairedWaterNoDischarges to a sediment or nutrient impaired water. OMIT IT if you do not know: it is never assumed false, and the determination reports the answer as unknown instead. It changes both the inspection frequency and the stabilisation deadline.
maxDisturbedAcresAtOneTimeNoGreatest acreage disturbed AT ANY ONE TIME. A different quantity from disturbedAcres, and the one the stabilisation deadline actually turns on (2022 CGP Table 2): a project over five acres in total still gets the longer 14-day deadline if it phases the work so no more than five acres are open at once. OMIT IT if you do not know, and the determination assumes an unphased site and says so, rather than asserting phasing it was not told about.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this by stating 'Deterministic, no model in the path.' It transparently explains behavioral nuances: requirements are returned only when rules are available, empty lists indicate unread permits rather than no requirements, and physical site inspections are not performed. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is thorough and front-loaded with the core purpose. While it is relatively long, every sentence adds value by detailing outputs, edge cases, and usage instructions. It is well-organized and avoids redundancy, though minor trimming could improve conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 14 parameters, no output schema, and the tool's complexity, the description is remarkably comprehensive. It covers return fields, derivation, notices, limitations, and parameter interdependencies. It addresses edge cases like state permits lacking rules and the EPA permit expiration, ensuring agents have a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing a baseline of 3. However, the description adds substantial context beyond the schema: it clarifies that 'acres' is an alias for 'disturbedAcres', explains the significance of 'partOfLargerPlan' as a commonly missed trigger, and details the nuanced behavior of 'maxDisturbedAcresAtOneTime' regarding stabilization deadlines. This greatly aids parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description precisely states the tool's function: determining which NPDES stormwater permit governs a site and what it requires. It lists the specific outputs and clearly distinguishes from sibling tools like get_requirements and list_jurisdictions by focusing on permit identification and site-specific requirements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: it is for construction or industrial sites, and includes critical instructions like always surfacing notices verbatim and not treating empty requirements as 'nothing required'. While it doesn't explicitly state when not to use it vs siblings, the description effectively implies its primary role and sets clear expectations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: permit determination, credential gate check, requirements retrieval, usage info, and jurisdiction listing. No overlaps or confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., determine_permit, get_usage, list_jurisdictions), making them predictable and readable.

Tool Count5/5

With 5 tools, the server is well-scoped for its domain of NPDES permit compliance, covering essential operations without unnecessary bloat.

Completeness4/5

The set covers permit determination, requirements, credential gates, jurisdiction info, and usage—leaving minor gaps like direct document submission or status tracking, but core workflows are well-supported.

Resources