Skip to main content
Glama
Wickemu

well-data-mcp

by Wickemu

well-data-mcp

MCP server for oil & gas and geothermal well data worldwide, pulled live from the public services of state, provincial and national regulators and geological surveys. No API keys, no accounts, no scraping of pages meant for people: these are the same ArcGIS, WFS and query endpoints the agencies' own map viewers use.

It answers questions like "which wells does Fervo have at Cape Station", "every well within 2 km of this pad", "look up API 30-025-36283", "Equinor's wellbores on the Norwegian shelf" or "geothermal wells in the Netherlands" - and says plainly when a country publishes nothing machine-readable.

World map: countries with live well registries, countries covered through the pan-European GSEU compilation, and countries checked and found to have no public registry

Coverage

United States

Key

Coverage

Agency

Via

CA-OG

California oil & gas wells

CalGEM (WellSTAR)

ArcGIS

CA-GEO

California geothermal wells

CalGEM (WellSTAR)

ArcGIS

UT

Utah oil & gas wells

Utah Division of Oil, Gas & Mining (DOGM)

ArcGIS

UT-GEO

Utah deep geothermal wells (incl. Fervo Cape Station, Utah FORGE)

Utah Division of Water Rights (DWRi)

ArcGIS

UT-WLOG

Utah drilled-well logs (every well drilled under a water-rights approval, incl. geothermal)

Utah Division of Water Rights (DWRi)

ArcGIS

UT-THERMAL

Utah thermal wells and springs (temperature + water chemistry)

Utah Geological Survey (UGS)

ArcGIS

NM

New Mexico oil & gas wells

NM OCD (EMNRD)

ArcGIS

CO

Colorado wells (API spots)

Colorado ECMC (via DNR GIS)

ArcGIS

WY

Wyoming oil & gas wells (WOGCC database snapshot)

Wyoming State Geological Survey (copy of the WOGCC well database)

ArcGIS

WY-LIVE

Wyoming wells - live WOGCC list (name, status, type)

Wyoming Oil and Gas Conservation Commission (WOGCC) Data Explorer

WFS

MT

Montana oil & gas wells

Montana Board of Oil & Gas Conservation (DNRC)

ArcGIS

ID-OG

Idaho oil & gas wells

Idaho Geological Survey

ArcGIS

ID-GEO

Idaho geothermal wells (low-temperature use, with water temperatures)

Idaho Department of Water Resources (IDWR)

ArcGIS

OR-GEO

Oregon geothermal wells and temperature-gradient holes (incl. Newberry)

Oregon DOGAMI (GTILO-2 compilation)

ArcGIS

WA-OG

Washington oil & gas wells

Washington DNR (Geology)

ArcGIS

WA-GEO

Washington geothermal well permits

Washington DNR (Geology)

ArcGIS

AZ

Arizona oil, gas, helium & geothermal wells

Arizona Oil & Gas Conservation Commission (hosted by ADEQ)

ArcGIS

NV-GEO

Nevada geothermal wells

NBMG (UNR) / NGDS

ArcGIS

NV-OG

Nevada oil & gas wells (compiled through 2013)

NBMG (UNR)

ArcGIS

AK

Alaska oil, gas & geothermal wells (incl. state offshore)

Alaska Oil and Gas Conservation Commission (via Alaska Division of Oil & Gas)

ArcGIS

HI-GEO

Hawaii geothermal wells (Puna)

Hawaii Statewide GIS Program

ArcGIS

SD

South Dakota oil & gas wells

South Dakota Geological Survey / DANR

ArcGIS

ND

North Dakota oil & gas wells

ND DMR Oil & Gas Division

ArcGIS

TX

Texas well locations (location + API only)

Texas RRC public GIS

ArcGIS

TX-RRC

Texas wellbores with operator, lease, field and county

Texas Railroad Commission (EWA wellbore query)

RRC query

OK

Oklahoma oil, gas & injection wells

Oklahoma Corporation Commission (RBDMS)

ArcGIS

KS

Kansas oil & gas wells

Kansas Geological Survey (KCC well data)

ArcGIS

NE

Nebraska oil & gas wells (API, name, location)

Nebraska Oil & Gas Conservation Commission

WFS

MO

Missouri oil & gas wells

Missouri DNR / Missouri Geological Survey

ArcGIS

AR

Arkansas oil & gas wells

Arkansas Oil and Gas Commission (via Arkansas GIS Office)

ArcGIS

LA

Louisiana oil & gas wells (incl. state waters)

Louisiana DENR Office of Conservation (SONRIS)

ArcGIS

MS

Mississippi oil & gas wells

Mississippi State Oil & Gas Board

WFS

AL

Alabama oil, gas & coalbed-methane wells

State Oil and Gas Board of Alabama (via Geological Survey of Alabama)

ArcGIS

PA

Pennsylvania oil & gas wells

Pennsylvania DEP Office of Oil and Gas Management

ArcGIS

OH

Ohio oil & gas wells

Ohio DNR Division of Oil & Gas Resources

ArcGIS

WV

West Virginia oil & gas wells

West Virginia DEP Office of Oil and Gas

ArcGIS

KY

Kentucky oil & gas wells

Kentucky Geological Survey

ArcGIS

IL

Illinois oil & gas wells

Illinois State Geological Survey (ILOIL)

ArcGIS

IN

Indiana oil & gas wells

Indiana DNR Division of Oil & Gas

ArcGIS

MI

Michigan oil, gas & mineral wells

Michigan EGLE (Oil, Gas, and Minerals Division)

ArcGIS

NY

New York oil, gas & solution-mining wells

New York DEC Division of Mineral Resources

ArcGIS

TN

Tennessee oil & gas wells

Tennessee Department of Environment and Conservation (TDEC)

ArcGIS

VA

Virginia gas & oil wells (active)

Virginia Energy, Division of Gas and Oil

ArcGIS

US federal offshore

Key

Coverage

Agency

Via

OCS-GOM

US Gulf federal offshore wells (Outer Continental Shelf)

BOEM / BSEE (federal offshore)

ArcGIS

OCS-PAC

US Pacific federal offshore wells (Outer Continental Shelf)

BOEM / BSEE (federal offshore)

ArcGIS

OCS-AK

US Alaska federal offshore wells (Outer Continental Shelf)

BOEM / BSEE (federal offshore)

ArcGIS

OCS-ATL

US Atlantic federal offshore wells (Outer Continental Shelf)

BOEM / BSEE (federal offshore)

ArcGIS

Canada

Key

Coverage

Agency

Via

SK

Saskatchewan oil & gas wells (vertical)

Saskatchewan Ministry of Energy and Resources

ArcGIS

SK-HZ

Saskatchewan oil & gas wells (horizontal / directional)

Saskatchewan Ministry of Energy and Resources

ArcGIS

BC

British Columbia oil & gas wells

BC Energy Regulator (BCER)

ArcGIS

ON

Ontario oil, gas, salt & storage wells (incl. Lake Erie)

Ontario Ministry of Natural Resources (Land Information Ontario)

ArcGIS

NL-OFF

Newfoundland & Labrador offshore wells

Newfoundland and Labrador Department of Industry, Energy and Technology

ArcGIS

NS-OFF

Nova Scotia offshore wells

Canada-Nova Scotia Offshore Energy Board directory (via NRCan)

ArcGIS

NT

Northwest Territories oil & gas wells

NWT Office of the Regulator of Oil and Gas Operations (OROGO)

ArcGIS

YT

Yukon oil & gas wells

Government of Yukon (Oil and Gas Resources Branch)

ArcGIS

YT-GEO

Yukon geothermal boreholes (temperature, gradient, heat flow)

Yukon Geological Survey

ArcGIS

Latin America & Caribbean

Key

Coverage

Agency

Via

BZ

Belize exploration & production wells (onshore and offshore)

Government of Belize - petroleum data coverage map (Geology & Petroleum Department data)

ArcGIS

MX

Mexico oil & gas wells (onshore and offshore)

CNH well inventory as re-hosted by SEMARNAT

ArcGIS

CO-EPIS

Colombia oil & gas wells

Servicio Geológico Colombiano (EPIS)

ArcGIS

BR-ANP

Brazil oil & gas wells (onshore and offshore, incl. pre-salt)

ANP - Agência Nacional do Petróleo, Gás Natural e Biocombustíveis

WFS

PE

Peru oil & gas wells

PERUPETRO

WFS

AR-CONV

Argentina oil & gas wells - conventional

Secretaría de Energía de la Nación (Argentina)

WFS (FES)

AR-SHALE

Argentina oil & gas wells - shale (Vaca Muerta...)

Secretaría de Energía de la Nación (Argentina)

WFS (FES)

AR-TIGHT

Argentina oil & gas wells - tight

Secretaría de Energía de la Nación (Argentina)

WFS (FES)

AR-OTHER

Argentina oil & gas wells - resource type not reported

Secretaría de Energía de la Nación (Argentina)

WFS (FES)

Europe

Key

Coverage

Agency

Via

FR-BSS

France boreholes incl. overseas departments (Guadeloupe/Bouillante, Martinique, Réunion...)

BRGM - Banque du Sous-Sol (BSS)

WFS (FES)

NO-SODIR

Norway offshore wellbores (all: exploration, development, other)

Sodir - Norwegian Offshore Directorate (FactMaps)

ArcGIS

GB-NSTA-OFF

UK offshore wellbores (UKCS)

North Sea Transition Authority (NSTA)

ArcGIS

GB-NSTA-ON

England onshore petroleum wells

North Sea Transition Authority (NSTA)

ArcGIS

GB-BGS

Great Britain borehole index (all onshore drilling, incl. deep geothermal)

British Geological Survey (Single Onshore Borehole Index)

ArcGIS

NL-NLOG

Netherlands deep boreholes (oil, gas, geothermal, salt, storage; onshore and offshore)

TNO / NLOG (Dutch Oil and Gas Portal)

WFS

IS-OS

Iceland borehole registry (geothermal production, reinjection, gradient wells...)

Orkustofnun (National Energy Authority) via the national geoportal

WFS

DE-LBEG

Germany deep wells (hydrocarbon, storage, salt, geothermal) - North German Basin, North Sea, Upper Rhine

LBEG - Landesamt für Bergbau, Energie und Geologie (NIBIS)

WFS (FES)

PL-PGI

Poland borehole database (all purposes, incl. geothermal)

Polish Geological Institute (PGI-PIB, CBDG)

ArcGIS

IE-OFF

Ireland offshore petroleum wells

Petroleum Affairs Division (Department of the Environment, Climate and Communications)

ArcGIS

IE-ON

Ireland onshore petroleum wells

Petroleum Affairs Division (Department of the Environment, Climate and Communications)

ArcGIS

DK-GEUS

Denmark released exploration wells (onshore and offshore)

GEUS - Geological Survey of Denmark and Greenland (Samba)

WFS (FES)

EU-GSEU

Pan-European deep boreholes with bottom-hole temperatures (25 national surveys)

Geological Service for Europe (GSEU) via EGDI

WFS (FES)

Africa & Asia

Key

Coverage

Agency

Via

ID-MIGAS

Indonesia oil & gas wells

Directorate General of Oil and Gas (Ditjen Migas), Ministry of Energy and Mineral Resources - MDR

ArcGIS

ZA-PASA

South Africa petroleum wells (mostly offshore: Bredasdorp, Orange...)

Petroleum Agency SA (PASA)

ArcGIS

MZ-INP

Mozambique exploration & production wells

Instituto Nacional de Petróleo (INP)

ArcGIS

KE-PET

Kenya petroleum exploration wells (unofficial copy of the ministry map)

State Department for Petroleum map, re-hosted on ArcGIS Online by a third-party account

ArcGIS

Oceania

Key

Coverage

Agency

Via

NZ-PET

New Zealand petroleum wells (nationwide, incl. offshore)

NZ Petroleum & Minerals (NZP&M)

ArcGIS

NZ-WAIKATO

Waikato geothermal wells (Taupō Volcanic Zone, incl. deep production wells)

Waikato Regional Council (National Wells Database)

ArcGIS

NZ-BOP

Bay of Plenty geothermal bores (Rotorua, Tauranga...)

Bay of Plenty Regional Council

ArcGIS

AU-GA

Australia national borehole database (petroleum, coal-seam gas, geothermal, stratigraphic)

Geoscience Australia

WFS

AU-SA-PET

South Australia petroleum wells (Cooper/Eromanga...)

Government of South Australia, Department for Energy and Mining (SARIG)

WFS

AU-SA-GEO

South Australia geothermal wells (incl. Habanero)

Government of South Australia, Department for Energy and Mining (SARIG)

WFS

AU-QLD-PET

Queensland petroleum wells

Geological Survey of Queensland

ArcGIS

AU-QLD-CSG

Queensland coal-seam-gas wells

Geological Survey of Queensland

ArcGIS

AU-WA

Western Australia onshore petroleum wells

WA Department of Energy, Mines, Industry Regulation and Safety (DMIRS-025)

ArcGIS

No public registry found

  • Guatemala - No official registry. The Energy & Mines ministry (mem.gob.gt) and the open-data portal sit behind a browser challenge scripts cannot pass; the national spatial data infrastructure (IDEG/SEGEPLAN) WFS has no hydrocarbon or geothermal layers. Geothermal well data (Zunil, Amatitlán) is operator-held. Project level: search_gem_projects.

  • Eastern Caribbean geothermal islands - Dominica, St Kitts & Nevis, Montserrat, St Lucia, Grenada, St Vincent: no machine-readable well data found (reports and PDF tables only; the regional CHARIM GeoNode is offline). Guadeloupe and Martinique boreholes are in FR-BSS. Project level: search_gem_projects.

  • Central American geothermal - El Salvador, Honduras, Nicaragua, Costa Rica, Panama: no public geothermal well service found (Ahuachapán, Berlín, Momotombo, San Jacinto-Tizate, Miravalles are operator-held). Project level: search_gem_projects.

  • Mexico (geothermal) - CFE publishes no geothermal well data (Cerro Prieto, Los Azufres, Los Humeros). Oil & gas wells are in MX (a 2024 snapshot). The former CNH map (mapa.hidrocarburos.gob.mx) is offline.

  • Ecuador - The hydrocarbon regulator's geoportal requires a login; well data is released only by formal request.

  • Bolivia - GeoBolivia (geo.gob.bo) is unreachable; no other official well service found.

  • Trinidad & Tobago - The Ministry of Energy publishes only PDF data-package listings for bid rounds; no well service.

  • Chile (geothermal) - No geothermal well service found (Cerro Pabellón is operator-held); open-data and ministry GIS searches return nothing.

  • Alberta and Manitoba - Not yet supported: Alberta's AER publishes its well list (ST37) only as a 565 MB monthly bulk download, and its live map layer covers abandoned wells only and blocks text search. Manitoba publishes a 0.7 MB shapefile download (wells.zip) but no working query service.

  • Turkey - MTA's earth-science viewer exposes no data endpoint; no public well service found. Some Turkish boreholes may appear in EU-GSEU.

  • Hungary, Austria, Croatia, Romania, Greece, Portugal (incl. Azores), Spain - No national keyless well service found (or only names and basins, as with Spain's IGME layer). Use EU-GSEU, which carries deep boreholes - many geothermal, with bottom-hole temperatures - from these countries' surveys.

  • Italy - Not yet supported: the ministry (UNMIG) publishes producing hydrocarbon wells only as CSV/KML downloads, without dates or depths; historic wells (ViDEPI) are PDF logs. Italian deep boreholes appear in EU-GSEU.

  • Switzerland - Not yet supported: swisstopo publishes wells deeper than 500 m (incl. Basel-1 and other geothermal wells) through the geo.admin.ch API, which needs its own adapter. Swiss boreholes appear in EU-GSEU.

  • Kenya - No official machine-readable registry. Petroleum exploration wells: KE-PET, an unofficial copy of the State Department for Petroleum's map. Geothermal wells (Olkaria, Menengai) are held by KenGen and GDC, whose GIS hosts are not public; some Olkaria research data is in the DOE GDR (search_geothermal_datasets); heat flow and temperature gradients across the Kenya Rift: search_heat_flow; plant level: search_gem_projects.

  • Namibia - No public well registry. The Ministry of Mines and Energy's petroleum licence layers (Landfolio cadastre) need a token, and NAMCOR sells E&P data (incl. the offshore Orange Basin discoveries). Heat flow: search_heat_flow; field level: search_gem_projects.

  • Uganda, Ghana, Nigeria, Ethiopia, Tanzania, Rwanda, Senegal, Egypt - No keyless official well service found: Uganda's and Ghana's petroleum ArcGIS services require tokens, Egypt's upstream gateway requires a login, and the others publish HTML/PDF or nothing. Heat flow: search_heat_flow; field level: search_gem_projects.

  • New Zealand (national geothermal database) - GNS Science's GGW database is a click-through web app whose terms allow internal use only (no publishing), so it is not used. Geothermal wells come from regional councils instead: NZ-WAIKATO and NZ-BOP. NZP&M petroleum wells are in NZ-PET.

  • Victoria, New South Wales, Northern Territory, Tasmania - Not yet wired: Victoria and NSW publish petroleum wells via WFS, the NT as a CSV download, Tasmania inside a mixed borehole layer. AU-GA covers these states from the national database.

  • Japan - Not yet supported: the Geological Survey of Japan publishes borehole temperatures (GT-4) only as static GeoJSON files; no well registry service found.

  • Philippines, India, Malaysia, Papua New Guinea, Timor-Leste - No keyless well service found: India's national data repository needs a login, Timor-Leste's is a virtual data room, and the others publish PDFs or nothing.

Related MCP server: mcp-arcgis-albuquerque

Tools

Tool

What it does

list_sources

Coverage index; pass country, state or source for endpoints, filters, id types, caveats and licences, plus notes on places with no registry

search_wells

Search by operator, well name, county/area, field, status or type in one source, a state, a country, or everywhere. count_only sizes a query first

get_well

One well's full raw record by identifier. US API numbers in any format are routed to the right state by their 2-digit API prefix; UWIs, wellbore names and agency codes work with country or source

wells_near

Every well within a radius of a point. Only sources whose coverage area overlaps the circle are asked, so it works anywhere without picking a source

list_operators

The exact operator strings a source uses ('Fervo Energy Company', 'Equinor Energy AS'...)

raw_query

Raw SQL-92 where (ArcGIS sources) or CQL (GeoServer WFS sources) for filters the normalized search doesn't cover - dates, depths, cumulative production

search_geothermal_datasets

DOE geothermal datasets: text search via OSTI, or - given a latitude/longitude - the Geothermal Data Repository catalog's footprints, returning datasets that cover the place with direct file links (Cape Station, Utah FORGE, Newberry...)

search_heat_flow

Bundled IHFC Global Heat Flow Database (offline): ~91,000 heat-flow measurements worldwide with temperature gradient, thermal conductivity, depth and purpose - geothermal screening anywhere, with summary statistics for a radius

search_gem_projects

Bundled Global Energy Monitor trackers (offline): geothermal power units and oil & gas fields worldwide - the fallback where no well registry exists

What a record looks like

Every source is mapped to the same core fields, then keeps its own extras (temperatures, production, formation, links to scanned well files...):

source, country, state, api, wellName, operator, status, wellType, field, county, latitude, longitude, spudDate plus whatever else the source publishes (completionDate, depthMD, depthTVD, waterDepth, bottomHoleTempC...).

  • api holds the source's well identifier: a US API number, Canadian UWI, Norwegian wellbore name, BSS code and so on. list_sources says which, per source.

  • Coordinates are WGS84 decimal degrees, taken from the server-reprojected geometry (attribute coordinates are often NAD27, ED50 or sign-flipped).

  • Every *Date field is an ISO YYYY-MM-DD string or null, whatever the source stores (epoch milliseconds, MM/DD/YYYY, DD.MM.YYYY, 16-NOV-2017...).

  • Units are the agency's: most US sources use feet, most others metres. Sources that mix units carry a depthUnit field.

  • A source that cannot apply a filter you asked for is skipped with a note rather than returning unfiltered results.

Run / register

Requires Node 18+ (native fetch, top-level await); developed on Node 22.

npm install
npm test               # offline unit tests
npm run smoke          # live: search + id lookup + radius search against every source
npm run smoke -- NO UT # just some sources (matches key, country or state)
claude mcp add --scope user well-data -- node <abs-path>/src/index.js

claude mcp add stores that absolute path in ~/.claude.json; moving the project folder breaks the registration until you run it again. Any other MCP client can launch node src/index.js over stdio the same way. package.json's bin entry means npx -y well-data-mcp will work if the package is ever published to npm (it isn't yet).

node scripts/call-tool.js <tool> '<json args>' calls one tool over stdio, the way an MCP client would - handy for trying a query from a terminal.

Adding a source

Each source is one object in src/sources/<region>.js: endpoint, a map from the normalized filters to the layer's own field names, a normalize(attrs, geometry) function, a rough extent, and a probe filter known to return hits (the smoke test uses it). The protocol is a kind:

  • arcgis (default) - any ArcGIS MapServer/FeatureServer layer. Find layers with …/rest/services?f=json, then a layer's fields with …/MapServer/<id>?f=json. Options cover common server quirks: noPaging, noReproject, apiNumeric, dedupeBy, baseWhere, headers, outFields (see src/providers/arcgis.js).

  • wfs - OGC WFS 2.0 with GeoJSON output: dialect: "cql" for GeoServer, dialect: "fes" for MapServer, deegree and others that ignore CQL.

  • rrc-ewa - the Texas RRC wellbore query (operator, lease and field for Texas).

Run npm run smoke -- <KEY> until search, id and radius checks pass, then node scripts/coverage-table.js to refresh the tables above.

Data licences and attribution

Each agency's terms apply to its data; list_sources shows the licence where the agency states one. Notably:

  • Alabama (State Oil and Gas Board): the terms forbid redistributing the data to third parties without permission. Query it live; don't republish it.

  • Norway (Sodir): Norwegian Licence for Open Government Data (NLOD).

  • UK (NSTA): NSTA Open User Licence. Ontario / Canada (NRCan): Open Government Licence. Argentina (Secretaría de Energía): CC BY 4.0.

  • DOE Geothermal Data Repository datasets: mostly CC BY 4.0 (each result says).

  • IHFC Global Heat Flow Database bundled in data/: CC BY 4.0 - cite it as given in every search_heat_flow response (see data/ATTRIBUTION.md). Refresh by downloading a new release from GFZ Data Services and running python scripts/convert-ihfc.py <zip>.

  • Global Energy Monitor trackers bundled in data/: CC BY 4.0 - credit "Global Energy Monitor" (see data/ATTRIBUTION.md). Refresh by downloading a new release from globalenergymonitor.org/download-data, pip install -r scripts/requirements.txt, then python scripts/convert-gem.py <dir>.

Source

https://github.com/Wickemu/well-data-mcp - MIT licensed (the code; data licences above).

Available Tools

8 tools
get_wellGet well by API numberA

Look up a specific well by API number and return its FULL raw record from the state source plus the normalized summary. Handles formatting differences (dashes, state prefixes): tries an exact match first, then the bare digits, then a dash-tolerant contains-match on the county + sequence digits — so undashed input still finds wells in sources that store dashed APIs (NM, ND, CO, NV). If state is omitted, tries every state.

NameRequiredDescriptionDefault
apiYesAPI well number in any common format (e.g. 04-029-12345, 0402912345, 33-053-04652, 4300712345).
stateNoTwo-letter state code if known (much faster).

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the behavior of handling different API formats (dashes, state prefixes) and the fallback matching strategy. It also reveals that if state is omitted, it iterates over all states, which implies potential performance implications. This is good coverage beyond what the schema provides.

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 two sentences, which is concise and front-loaded with the main purpose. The first sentence defines the function and output. The second sentence adds important behavioral details about formatting tolerance and multi-state search. Some redundancy with the schema examples is present, but the description as a whole is tightly written without fluff.

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 the tool's moderate complexity (two parameters, one optional enum), the description covers everything an agent needs: the output format (raw + summary), the handling of input variations, the matching algorithm, and the behavior when state is omitted. No additional context is necessary for correct invocation.

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?

The schema already provides a clear description of the api parameter (with examples) and the state parameter (with enum). The description adds nuance that the api parameter tolerates formatting differences and that state is optional but speeds up the lookup. This meaningfully enhances what the schema states, so a 4 is warranted.

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 the specific verb ('Look up') and resource ('a specific well by API number'), and clearly defines the output as the full raw record plus the normalized summary. It distinguishes itself from siblings like search_wells and wells_near by focusing on exact API lookup rather than broad search or proximity.

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

Usage Guidelines5/5

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

Explicitly explains when to use this tool: to retrieve a specific well by API number, and even notes that omitting the state will try every state (slower, but still functional). While it doesn't name alternatives, it implies that for broader search one would use search_wells or wells_near, and for raw queries raw_query. The description of the matching fallbacks (exact, bare digits, contains-match) also guides usage in edge cases.

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

list_operatorsList operators matching a nameA

Find the exact operator name strings a state uses (they rarely match what you would guess — 'Fervo Energy Company', 'CALIFORNIA RESOURCES PRODUCTION CORPORATION'). Returns distinct operator names containing the search text, per source. Use before search_wells when an operator search returns nothing.

NameRequiredDescriptionDefault
nameYesPartial operator name, case-insensitive.
stateNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully reveals that results are exact, case-insensitive name strings, distinct, 'containing the search text', and grouped 'per source'. However, it does not clarify what 'per source' means, whether state is required, or what the response shape looks like.

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 compact and front-loaded: purpose first, then behavior, then usage guidance. The quoted examples are slightly long but earn their place by illustrating the tool's core warning that operator strings rarely match guesses.

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

Completeness3/5

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

The description covers purpose, basic behavior, and a usage trigger, which is good for a simple lookup tool. However, without annotations or an output schema, the vague 'per source' wording and unaddressed state parameter leave meaningful gaps for an agent deciding how to call it correctly.

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

Parameters2/5

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

Schema description coverage is only 50%; the description does not meaningfully explain the 'state' parameter beyond 'a state uses' and 'per source'. The 'name' parameter is already described in the schema, but the optional state parameter's role and default behavior remain unclear.

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 states a specific verb ('Find') and resource ('exact operator name strings a state uses') and makes the domain concrete with real examples. It clearly differentiates this tool from sibling search_wells by focusing on operator name strings rather than well records.

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?

The description explicitly gives a usage context: 'Use before search_wells when an operator search returns nothing.' It names an alternative and the condition for choosing this tool, though it does not discuss exclusions for other sibling tools.

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

list_sourcesList well-data sourcesA

List the state regulator well-data sources this server can query: coverage, agency, searchable filters, and caveats. Call this first to see what is available.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. The description explains it returns coverage, agency, searchable filters, and caveats, and frames the operation as non-mutating discovery. It does not detail error behavior or performance, but for a zero-parameter list operation this is acceptable.

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, with the most useful instruction ('Call this first') included. Every word earns its place and the key content is front-loaded.

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?

For a simple, zero-parameter discovery tool, the description completely covers what an agent needs to know: what it will receive, why it should call it, and that it is the initial discovery step. No output schema or annotation gaps need compensation 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?

There are no parameters Except for the schema's empty object, and schema coverage is 100%. The description adds no parameter details, but none are needed. Baseline for a zero-parameter tool is 4.

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 ('List'), a clear resource ('state regulator well-data sources'), and a scope ('this server can query'). It clearly distinguishes itself from search_tools and other list-like tools because it describes a catalog/discovery function, not a data query.

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?

Explicitly says 'Call this first to see what is available,' giving clear when-to-use guidance for discovery before querying. It does not explicitly mention alternatives or exclusions, but the context strongly implies this is the correct initial tool among the siblings.

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

raw_queryRaw ArcGIS queryA

Escape hatch: run a raw SQL-92 WHERE clause against one source's ArcGIS layer and get raw attributes back. Use list_sources for source keys; field names are the layer's own (see the searchableFilters mapping, or query with where='1=1' limit=1 to inspect a record). Useful for filters the normalized search does not cover (dates, depths, cumulative production).

NameRequiredDescriptionDefault
limitNo
whereYesArcGIS SQL-92 where clause, e.g. "totcum_oil > 1000000 AND county = 'BEAVER'"
offsetNo
sourceYesSource key, e.g. UT or CA-OG.
out_fieldsNoComma-separated field list, or * for all.*

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that field names are the layer's own rather than normalized, and recommends querying where='1=1' limit=1 to inspect a record, which sets expectations about raw output. It could say more about read-only guarantees or error modes, but the main behavioral quirk is covered.

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?

Three sentences pack the tool's purpose, usage context, and field-name caveat without redundancy. The inline example 'where='1=1' limit=1' is a compact, actionable illustration.

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 an escape-hatch tool with no output schema and no annotations, it gives an agent enough to call it correctly: how to choose source keys, how to discover valid fields, and what kind of filters it supports. Minor gaps remain around exact response shape and behavior when SQL is invalid, but the critical invocation steps are present.

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 covers 60% of parameters with descriptions (where, source, out_fields). The description adds beyond the schema by advising list_sources for source keys and explaining that where-clause field names are raw and can be discovered via a probe query. It doesn't elaborate on limit/offset, but those are constrained with defaults in the schema.

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 and resource: 'run a raw SQL-92 WHERE clause against one source's ArcGIS layer and get raw attributes back.' The 'Escape hatch' framing differentiates it from sibling search tools, making its role in the family immediately clear.

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

Usage Guidelines5/5

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

Explicitly positions itself as a fallback: 'filters the normalized search does not cover (dates, depths, cumulative production).' It also directs the agent to list_sources for valid source keys and suggests a field-inspection technique, so when to use it and what to do first are clear.

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

search_gem_projectsSearch global energy projects (GEM)A

Search bundled Global Energy Monitor tracker data: geothermal power units worldwide (Geothermal Power Tracker - covers Kenya/Olkaria, New Zealand, Guadeloupe/Bouillante, Guatemala, US) and upstream oil & gas fields/discoveries (Oil & Gas Extraction Tracker - covers Namibia Orange Basin, Guatemala, NZ). Project/field level, NOT well level. Filters are ANDed, case-insensitive substrings. Local data - fast, works offline. Cite 'Global Energy Monitor' when publishing results.

NameRequiredDescriptionDefault
nameNoProject/unit/field name (also matches other names and blocks), e.g. 'Olkaria', 'Venus', 'Bouillante'.
limitNo
statusNoStatus substring: operating, construction, announced, discovered, producing, shelved, cancelled, retired...
countryNoCountry/area name, e.g. 'Kenya', 'Namibia', 'New Zealand'.
datasetNoboth
latitudeNoWith longitude + radius_km: only projects within the radius, sorted by distance.
operatorNoOperator or owner name, e.g. 'KenGen', 'Ormat', 'TotalEnergies'.
longitudeNo
radius_kmNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does well: it discloses that filters are ANDed case-insensitive substrings, that data is local and offline, and that results are project/field level rather than well level. It does not describe response format or any limits, but the core query behavior is transparent.

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?

The description is dense but every clause earns its place: data source, tracker coverage, scope, filter behavior, performance characteristics, and citation requirement. The core purpose and exclusion are front-loaded before the supporting details.

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 9-parameter tool with no annotations and no output schema, the description provides substantial context: data provenance, geographic coverage, project-level scope, match semantics, offline behavior, and citation obligations. It stops short of explaining result fields or how limit/radius parameters shape output, but it is detailed enough for an agent to select and invoke the tool correctly.

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?

The schema already documents five of nine parameters with useful examples, and the description adds general filter semantics with 'Filters are ANDed, case-insensitive substrings'. Still, the main description does little to clarify limit, longitude, or radius_km on its own, so it only partially compensates for the 56% schema coverage.

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 states a specific action and resource: 'Search bundled Global Energy Monitor tracker data' and enumerates the exact trackers and coverage areas. It explicitly distinguishes itself from the well-level sibling tools by saying 'Project/field level, NOT well level', so an agent can tell it apart from search_wells and wells_near.

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?

The description gives clear context on when this tool is appropriate: for project/field-level searches over bundled GEM geothermal and oil & gas data, and it explicitly excludes well-level use. However, it never names sibling alternatives such as search_wells or raw_query, so the when-not guidance is implied rather than fully explicit.

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

search_geothermal_datasetsSearch DOE geothermal datasets (GDR)A

Search U.S. DOE-funded geothermal project datasets via OSTI Data Explorer - this indexes the Geothermal Data Repository (gdr.openei.org): well logs, stimulation and flow-test data, microseismic, DTS, geologic models. THE source for Fervo Cape Station (search 'cape egs' or 'fervo' - note 'cape station' also matches Cape Grim air station), Utah FORGE, and some international geothermal studies. Terms are ANDed. Returns titles, DOIs, dates, and links to the data.

NameRequiredDescriptionDefault
rowsNo
queryYesSearch terms, e.g. 'cape station', 'utah forge stimulation', 'olkaria kenya'.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does well: it explains that terms are ANDed, that results return titles/DOIs/dates/links, and even warns about a false-match case ('cape station' also matching Cape Grim air station). It does not mention pagination, sorting, or auth/rate limits, but the disclosed search semantics are materially useful.

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?

The description is dense but every sentence earns its place: scope, content types, key corpus examples, a query ambiguity warning, AND semantics, and return fields. It is front-loaded with the resource name and keeps all guidance relevant without repetition or filler.

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 search tool with no output schema and no annotations, the description covers the essential invocation context: what is indexed, how to phrase queries, what results look like, and notable edge cases. Minor gaps such as row-count behavior and pagination are not likely to prevent an agent from calling the tool successfully.

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 50%: the query parameter has examples, but rows has only schema constraints with no description. The tool description compensates by explaining AND semantics and giving realistic query patterns, which adds meaning beyond the schema. It doesn't elaborate on rows behavior, but the schema's default/min/max plus the name make it reasonably self-evident.

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 opens with a specific verb and resource: searching U.S. DOE-funded geothermal datasets via OSTI Data Explorer/GDR. It names the content types (well logs, stimulation data, microseismic) and cites concrete projects like Fervo Cape Station and Utah FORGE, which clearly separates it from sibling tools such as search_wells or search_gem_projects.

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?

The description gives clear context for when to use the tool: it is the source for GDR/Fervo/FORGE and international geothermal datasets, and it offers concrete query examples such as 'cape egs' or 'fervo'. It does not explicitly rule out alternatives or name when_not scenarios, but the domain-specific examples and scope make the intended use fairly unambiguous.

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

search_wellsSearch wellsA

Search state regulator well databases by operator, well/lease name, county, field, status, or type. Returns normalized records (API number, name, operator, status, type, field, county, lat/lon, dates, depths where available) plus source-specific extras. All *Date fields are normalized to ISO 'YYYY-MM-DD' strings (or null) regardless of how the source stores them, so they sort and compare across states. Filters combine with AND. Set count_only=true to size a query before pulling records.

NameRequiredDescriptionDefault
apiNoAPI well number exactly as the state formats it. For cross-state API lookup use get_well instead.
fieldNoField name, partial match.
limitNoMax records per source (default 25).
stateNoTwo-letter state code to search. Omit to search ALL states (slower; prefer setting it).
countyNoCounty name, partial match.
offsetNoPagination offset within each source.
sourceNoExact source key (e.g. CA-GEO for California geothermal only). Overrides state.
statusNoWell status, partial match (vocabulary varies by state: 'Active', 'Plugged', 'New', ...).
operatorNoOperator/company name, partial match, case-insensitive (e.g. 'Fervo', 'California Resources').
well_nameNoWell or lease name, partial match.
well_typeNoWell type, partial match (e.g. 'OG', 'Geothermal', 'Water Disposal'; vocabulary varies by state).
count_onlyNoIf true, return only match counts per source — cheap way to size a query first.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full behavioral burden and largely delivers: it discloses date normalization to ISO YYYY-MM-DD (or null), states that filters combine with AND, describes the returned record shape, and flags the performance cost of omitting state. It stops short of covering error behavior, rate limits, or what 'source-specific extras' concretely contain, so it's strong but not exhaustive.

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 a single front-loaded paragraph that leads with purpose, then normalization, then filter semantics, then the count_only usage tip. Each sentence carries distinct information and nothing is redundant with the schema. It is dense, but that density is justified for a 12-parameter tool.

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 tool with 12 parameters, no output schema, and no annotations, the description covers the essential ground: return format, date normalization, filter combination, and query sizing. Gaps include pagination semantics across multiple sources (offset/limit are only defined 'per source' in the schema) and the precise shape of multi-source results, which an agent would want when aggregating.

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 inline examples (e.g. 'Fervo', 'California Resources', 'CA-GEO'), so the schema already documents every parameter well. The description adds global semantics that enrich parameter understanding — AND-combination of filters and date normalization across returned fields — but does not extend per-parameter meaning beyond the schema. Baseline 3 is appropriate.

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 opens with a specific verb and resource ('Search state regulator well databases') and enumerates the exact search dimensions (operator, well/lease name, county, field, status, type). It further differentiates from get_well via the api parameter note ('For cross-state API lookup use get_well instead'), which explicitly carves out the sibling's territory. An agent can immediately tell what this tool does and how it relates to get_well.

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?

The description gives concrete usage direction: the api param steers exact API lookups to get_well, the state param advises preferring a state code to avoid slower all-state searches, and count_only is positioned as a way to size a query before pulling records. It does not, however, address when to reach for spatial sibling wells_near or raw_query over this tool, leaving part of the alternative routing implicit.

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

wells_nearFind wells near a pointA

Find wells within a radius of a lat/lon point — e.g. all wells on or around a pad, lease, or project site. Searches the geographically relevant sources unless state/source is given.

NameRequiredDescriptionDefault
limitNo
stateNo
sourceNo
latitudeYes
longitudeYes
radius_kmNoSearch radius in kilometers (default 3).

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It adds important non-obvious behavior: 'Searches the geographically relevant sources unless state/source is given.' This explains default source selection and how optional filters change behavior, which is valuable beyond the schema. It does not describe response format, but the core behavior is disclosed.

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 with no filler. The core action and use case are front-loaded, and the source-selection behavior is stated compactly. Every clause contributes to an agent's understanding of when and how to call the tool.

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 tool with six parameters and no output schema or annotations, the description covers the essential invocation context: what it finds, how it selects sources, and when to use it. It does not describe return shape or result limits, but those are less critical for correct invocation given the detailed schema and defaults.

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 description coverage is only 17%, so the description must compensate. It does clarify the central parameters: lat/lon as the search point, radius_km as the search radius, and state/source as optional filters. The limit parameter is not mentioned, but its name and default make it inferable; the description still adds meaning for the most important parameters.

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 states a specific verb ('Find'), a precise resource ('wells'), and a clear spatial criterion ('within a radius of a lat/lon point'). This distinguishes it from siblings like search_wells or get_well, and the example of pads/leases/project sites reinforces its intended scope.

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?

The description gives a clear use case ('all wells on or around a pad, lease, or project site') and explains when to narrow by state/source ('unless state/source is given'). It does not explicitly name alternatives or state when not to use this tool, but the context is clear enough for an agent to select it appropriately.

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. 8 tool updatesv0.1.0
    • First observedget_well
    • First observedlist_operators
    • First observedlist_sources
    • First observedraw_query
    • First observedsearch_gem_projects
    • First observedsearch_geothermal_datasets
    • First observedsearch_wells
    • First observedwells_near

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation4/5

Tools are largely distinct: search_wells, raw_query, and wells_near differ by query mode, while search_gem_projects and search_geothermal_datasets target separate datasets. The only mild ambiguity is between the three 'search_*' tools, but descriptions clearly specify data source and query style.

Naming Consistency4/5

Most tools follow a clear list_/search_/get_ verb_noun pattern, making the set predictable. raw_query and wells_near break that pattern, but they are still readable and not confusing.

Tool Count5/5

8 tools is well-scoped for the domain: source discovery, operator lookup, normalized search, spatial proximity, raw SQL escape hatch, and specialized project/dataset searches. Each tool earns its place without redundancy.

Completeness5/5

The surface covers the full read-only workflow: discover sources, inspect operators, query wells by attributes or location, retrieve full records by API, and fall back to raw SQL when needed. The specialized GEM and OSTI searches add meaningful coverage beyond state well data.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers