Skip to main content
Glama
archer-clawbot

The Septic Guide MCP server

The Septic Guide MCP server

Read-only Model Context Protocol server for thesepticguide.com, a U.S. septic contractor directory built from published state license and certification records.

No API key. No writes. Every result carries a source_url on thesepticguide.com.

Tools

Tool

What it returns

list_states

States with a licensing page and/or company directory, with links

get_state_licensing

state (name or code): the agency that licenses septic work, its official lookup URL, page date, and the page's licensing Q&A

search_septic_companies

state plus optional city, county, zip, service, licensed_only, limit: listings with license number(s), agency verify link, phone, website, profile link

get_cost_guide

optional topic (e.g. pumping, drain field): short answer, cost tables, and the third-party sources the page cites. No topic = list topics

Related MCP server: LicenseGround MCP Server

Data

By default the server answers from a bundled snapshot in data/ (data/snapshot.json for the index, licensing and cost pages, plus one gzipped file per state in data/companies/). Every response includes data_mode and data_as_of (the snapshot date). Rebuild it with:

npm run snapshot   # crawls thesepticguide.com (sitemap, state + county pages) and rewrites data/

Set TSG_LIVE=1 to skip the snapshot and read thesepticguide.com live instead (6-hour in-memory cache). Live mode is also used automatically if data/ is missing.

Company counts

Each state page's meta description gives a headline number (e.g. Texas: "363 septic companies"). In some states the listings actually rendered on the state page plus its county pages come to fewer (Texas: 360). The server never pads results: search_septic_companies reports listed_on_pages (rendered listings it searched) and state_page_headline_count (the page's own number), with a count_note when they differ. Same-name listings with different services or license records are distinct state-list records and are kept.

Data & limits

  • Read-only. No writes, no API key, no user data collected.

  • Public data from thesepticguide.com. Every result carries a source_url on thesepticguide.com.

  • License data comes from published state agency license and certification lists, as matched by thesepticguide.com. Confirm any license with the agency verify_url before hiring.

  • Not affiliated with any state agency.

  • Snapshot data can lag the live site; check data_as_of.

Use

Remote (Streamable HTTP): https://mcp.thesepticguide.com/mcp

Local (stdio):

git clone https://github.com/archer-clawbot/thesepticguide-mcp && cd thesepticguide-mcp && npm install && npm run build
{ "mcpServers": { "thesepticguide": { "command": "node", "args": ["/path/to/thesepticguide-mcp/dist/stdio.js"] } } }

Docker: docker build -t thesepticguide-mcp . && docker run -i --rm thesepticguide-mcp

Develop:

npm install && npm run build
npm test                 # stdio smoke test with the MCP SDK client
npm test -- http         # same against MCP_URL (default http://localhost:3000/mcp)
npm run start:http       # http://localhost:3000/mcp

Deploy on Vercel: api/mcp.ts + vercel.json (rewrites /mcp to the function).

License

MIT. Copyright (c) 2026 Catalyst Digital Services LLC.

Available Tools

4 tools
get_cost_guideSeptic cost guideA
Read-only
Inspect

Septic cost guidance (pumping, inspection, repair, installation, drain field, tank replacement, aerobic systems) as published on thesepticguide.com: the short answer, cost tables, and the third-party sources the page cites. Call with no topic to list topics.

NameRequiredDescriptionDefault
topicNoCost topic slug or words, e.g. 'septic-tank-pumping-cost' or 'drain field'

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds that the content comes from a named third-party site (thesepticguide.com) and that results include a short answer, cost tables, and cited sources. That gives the agent a sense of provenance and shape without an output schema. It still doesn't note staleness, currency, or failure behavior for unknown topics.

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

Conciseness5/5

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

Two sentences, front-loaded with the resource and coverage list, followed by the zero-argument affordance. Every clause carries information; nothing is redundant with the title or schema.

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

Completeness4/5

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

For a single-optional-parameter read tool with no output schema, the description supplies provenance, content shape, and the no-argument fallback — enough to invoke correctly. The only gap is error/empty-result behavior, which is low-stakes here.

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

Parameters4/5

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

Schema coverage is 100% and the schema gives an example slug, so the baseline is 3; the description earns above baseline by documenting the omission behavior (no topic returns a topic list), which the schema does not state. It doesn't clarify slug normalization or what happens on a miss.

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?

States a specific verb (get) and resource (septic cost guidance) and enumerates the covered subtopics (pumping, inspection, repair, installation, drain field, tank replacement, aerobic systems). Nothing overlaps with the sibling tools get_state_licensing, list_states, or search_septic_companies, so an agent can route unambiguously.

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?

"Call with no topic to list topics" gives an explicit zero-argument behavior that the schema cannot express, which is real usage guidance. It stops short of naming alternatives or exclusions, but the sibling set is clearly disjoint in domain, so the omission is minor.

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

get_state_licensingState septic licensingA
Read-only
Inspect

Who licenses septic installers/pumpers in a U.S. state, the agency's official license lookup link, and the licensing Q&A published on thesepticguide.com.

NameRequiredDescriptionDefault
stateYesState name or 2-letter code, e.g. 'Texas' or 'TX'

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds useful provenance: results include a third-party site's Q&A and an external license lookup link, which signals web/external content. It stops short of saying what happens for an unrecognized state or how fresh the licensing data is.

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?

One compact sentence with the core purpose front-loaded and no filler. It reads as a noun phrase rather than a verb+resource statement, but nothing is wasted.

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

Completeness4/5

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

For a one-parameter read tool with no output schema, the description adequately previews the return payload (agency, official link, Q&A). Minor gaps remain around not-found handling and data currency, but nothing an agent needs to invoke it is missing.

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

Parameters3/5

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

Schema coverage is 100% with a single 'state' parameter that already documents accepting a name or 2-letter code. The description only echoes the U.S.-state scope, adding no format, normalization, or error-handling detail beyond the schema, so the baseline 3 applies.

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?

States precisely what the tool returns: the licensing authority for septic installers/pumpers in a U.S. state, the agency's official lookup link, and licensing Q&A from thesepticguide.com. That scope clearly separates it from list_states (enumeration) and search_septic_companies (company lookup).

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

Usage Guidelines3/5

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

Usage is only implied by the stated output; there is no explicit guidance such as 'call this after list_states to resolve a state' or what to do when the state is unknown. No alternatives or exclusions are named, so the agent must infer when this beats search_septic_companies.

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

list_statesList covered statesA
Read-only
Inspect

List the U.S. states that have a septic licensing page and/or a septic company directory page on thesepticguide.com, with links.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds useful behavioral scope: it returns states that have a licensing page and/or directory page, with links. It does not contradict the annotations and adds context beyond them.

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

Conciseness5/5

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

It is a single front-loaded sentence that states the verb, resource, coverage condition, and return characteristic without wasted wording.

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

Completeness4/5

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

For a zero-parameter read-only listing tool with no output schema, the description is largely complete: it explains what is listed and that links are included. A minor gap remains around exact return structure, but the tool’s simplicity and annotations reduce that need.

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

Parameters4/5

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

There are zero parameters, so there is no parameter semantics burden. The empty schema matches the tool’s no-input nature, and the description correctly implies no filtering inputs.

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

Purpose4/5

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

The description gives a specific verb and resource: "List the U.S. states" with a clear coverage condition and links. It is understandable without the schema, though it does not explicitly contrast itself with sibling tools such as get_state_licensing.

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

Usage Guidelines2/5

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

The description does not state when to use this tool versus get_state_licensing or search_septic_companies. Usage is only implied by the tool name and coverage scope, with no explicit alternatives or exclusions.

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

search_septic_companiesSearch septic companiesA
Read-only
Inspect

Search the septic companies thesepticguide.com lists in a state, optionally filtered by city, county, ZIP, service or license match. Returns each listing's state license record(s) with the agency verify link, phone and website as published.

NameRequiredDescriptionDefault
zipNo5-digit ZIP code
cityNoCity name, e.g. 'Temple'
limitNoMax results (default 25)
stateYesState name or 2-letter code
countyNoCounty name, e.g. 'Bell' or 'Bell County'
serviceNoService keyword, e.g. 'pumping', 'aerobic', 'installation'
licensed_onlyNoOnly listings matched to a state license or certification record

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds real value on top: it names the data source, discloses that results carry state license records with agency verify links, and clarifies that 'license match' is a filter path. It does not mention the default/max result cap (limit), which would be useful for an open-world search.

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

Conciseness5/5

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

Two sentences, zero filler: the first defines scope and filters, the second defines the return payload. Nothing is repeated from the title and nothing could be cut without losing information.

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

Completeness4/5

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

With seven parameters, one required, and no output schema, the description covers both input scoping and output shape (license records, verify link, phone, website), which is the main gap it needs to fill. Only the result-limit/pagination behavior is left unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% with per-parameter descriptions for zip, city, county, state, service, and licensed_only, so the schema already carries the semantics. The description touches on the filter set but adds no format or interaction detail beyond what the schema provides — the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (search) and resource (septic companies listed on thesepticguide.com) plus the scoping dimension (a state) and the return content. The resource is distinct from the sibling tools (get_cost_guide, get_state_licensing, list_states), though no sibling is named explicitly, so it stops short of a 5.

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

Usage Guidelines3/5

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

The enumerated filters imply the usage contexts (find contractors by city, county, ZIP, service, or license match), but there is no explicit 'use this when…' guidance and no statement about when to prefer get_state_licensing or get_cost_guide instead.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.2.0
    • First observedget_cost_guide
    • First observedget_state_licensing
    • First observedlist_states
    • First observedsearch_septic_companies

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a clearly distinct resource: state index, state licensing details, company search, and cost guidance. Although licensing appears in both state licensing and company search results, the primary purposes are unambiguous.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun pattern: list_states, get_state_licensing, search_septic_companies, get_cost_guide. The verbs accurately reflect the operations.

Tool Count5/5

Four tools are well scoped for a focused septic-guide lookup server, and each covers a distinct content area. There is no unnecessary duplication or bloat.

Completeness4/5

The surface covers state discovery, licensing, company search, and cost guidance, which are the core needs of this domain. Minor gaps exist around retrieving individual company details or broader non-cost/non-licensing guide content.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents and procurement systems to verify contractor licenses against official state boards, search contractors by trade and location, audit workers' comp, surety bonds and OSHA safety records, and check SAM.gov federal debarment status. It returns a deterministic ALLOW/WARN/BLOCK compliance decision plus registry health metrics for US trade contractors.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to search U.S. hydraulic fracturing disclosure records — well-level frac job details (operator, API number, location, dates, base fluid volumes) and the disclosed chemical additives per job — by state, county, operator, or API number, plus lookups of where a given chemical has been used by CAS number. Responses include source, license, and coverage-window metadata so callers can distinguish missing data from out-of-window disclosures.
    21 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables lookup of licensed US real estate agents on official state license registers by license number or name, returning the brokerage of record along with its active agent count, size band, and the agent's license status and expiry. It also lists every active agent at a given brokerage or every brokerage office in a zip code across 19 states.
    1
    140 npm
    MIT