Skip to main content
Glama

WellState Labs SB 1150 Screening (read-only)

Server Details

Signed Texas SB 1150 screens. Cost proxies, not ARO, not legal determinations, not bond amounts.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

Most tools target distinct resources or operations: publication metadata, verification, single well, plug record, search, and book screening. The main overlap is between get_operator_exposure (one operator) and screen_operators (batch of up to 200), which return similar screening fields, and to a lesser extent list_operator_wells; descriptions clarify the single-vs-batch and wellbore-list distinctions, so misselection is possible but not severe.

Naming Consistency5/5

All nine tools use snake_case with a consistent verb_noun pattern (get_*, list_*, screen_*, search_*, verify_*). There are no mixed conventions or vague names.

Tool Count5/5

Nine tools is well-scoped for a read-only screening publication server. Each tool covers a distinct layer: metadata, verification, well lookup, operator lookup, listing, batch screening, book screening, search, and plug records.

Completeness4/5

The read-only surface covers the lifecycle well: publication description and verification, well and operator lookups, wellbore listing, single and batch operator screening, surety-book screening, search, and plug records. Minor gaps include no pagination for search_operators beyond 20 matches and no explicit enumeration of all operators or districts, but these are workable limitations rather than dead ends.

Available Tools

9 tools
get_operator_exposureGet operator SB 1150 exposureB
Read-onlyIdempotent
Inspect

Returns one operator's SB 1150 screening exposure from the publication, by six-digit Railroad Commission of Texas operator number: wellbore claim counts (affected, approaching by 2042-09-01 (compliance-plan horizon), review, contested, shared), the Commission-published plugging cost summed over affected wellbores with its rate label, the crossing schedule by year as published and, on editions that carry the Full Wellbore cross-check, the affected claims whose wellbore that file flags as plugged (a cross-check only; it changes no outcome, count or cost).

NameRequiredDescriptionDefault
operator_numberYesSix-digit Railroad Commission of Texas operator number, with leading zeros (e.g. 276959).

Output Schema

NameRequiredDescription
linkYes
nameYes
termsYes
countsYes
boundaryYes
count_unitYes
display_nameYes
affected_costYes
operator_numberYes
publication_rootYes
crossing_scheduleYes
crossing_schedule_basisYes
full_wellbore_crosscheck_noteYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, closed-world, non-destructive behavior, so the safety bar is lower. The description adds genuinely useful context beyond that — the compliance-plan horizon date, the rate-label on plugging cost, and the explicit note that the Full Wellbore cross-check changes no outcome, count, or cost. It does not address cost/rate-limit or failure behavior for unknown operator numbers.

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

Conciseness3/5

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

The purpose is front-loaded, but the payload is one sprawling sentence with deeply nested parentheticals ('approaching by 2042-09-01 (compliance-plan horizon)', '(a cross-check only; ...)'), which is hard to parse. The information earns its place but the structure could be broken into a scope line plus a returned-fields list.

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?

An output schema exists, so return values need not be spelled out — yet the description's enumeration of claim counts, plugging cost, crossing schedule, and the cross-check caveat is accurate and helps the agent decide whether this tool answers the user's question. Only the absence of sibling routing keeps it from a 5.

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% and the single parameter already documents the six-digit format with leading zeros and an example. The description restates the same meaning without adding format, validation, or lookup semantics beyond the schema.

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 and resource: returns one operator's SB 1150 screening exposure from the publication, keyed by RRC operator number. It's clear what the tool produces, though it never explicitly contrasts itself with siblings like screen_operators or list_operator_wells.

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 resource ('one operator's ... exposure'). There is no statement of when to prefer this over screen_operators or get_well, and no prerequisites or exclusions are given.

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

get_plug_recordGet the plug recordA
Read-onlyIdempotent
Inspect

Returns the publication's plug record (contract 1.4.0 and later): W-3 plug dates on the Railroad Commission of Texas Full Wellbore file, counted by the calendar year the operator reported and by district, as published. Without a district it returns the statewide count for each year and each district's count for each year. With a district it returns that district's years with state-funded plug numbers, well types and district bases. With rows_limit it pages the per-wellbore rows one district and one year's count is made of, each with the line of the Full Wellbore file it was read from. Every response carries the publication's claims with their labels (DOCUMENTED_FACT, INFERENCE, UNKNOWN), the two UNKNOWN claims that travel with every count, and the publication's statement of what the record is not. This server computes no figure from these counts and combines none with the screening counts. On an edition without a plug record the plug_record field is null.

NameRequiredDescriptionDefault
districtNoA district key of the plug record: a Commission district (e.g. 08, 7C, 8A) or NOT_IN_SOURCE for wellbore-years the file gives no district. Omit for the statewide years and every district's counts.
last_yearNoLast calendar year returned. Default: the last year of the plug record's window.
first_yearNoFirst calendar year returned. Default: the first year of the plug record's window.
rows_limitNoPer-wellbore rows to return, 0-200. Default 0 (counts only). Rows are served for one district and one year per call: pass district, and first_year equal to last_year.
rows_offsetNoRows to skip before the first one returned, for paging. Default 0.

Output Schema

NameRequiredDescription
noteYes
termsYes
boundaryYes
plug_recordYes
contract_versionYes
publication_rootYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds meaningful behavioral context beyond that: every response carries labeled claims (DOCUMENTED_FACT, INFERENCE, UNKNOWN), two UNKNOWN claims travel with each count, the server computes and combines nothing, and plug_record is null on editions without a plug record.

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

Conciseness3/5

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

The key scoping sentence is front-loaded, but the body is a dense run of long sentences covering district modes, paging, claims labels, null behavior, and disclaimers. It is informative rather than padded, yet the volume and lack of structure make it harder to scan than it needs to be.

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 an output schema present, return values need not be spelled out, and the description still covers null-field behavior, claims labeling, and non-computation guarantees. The one gap is that it never contrasts itself with the screening tools, leaving the agent to infer when to reach for it.

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%, so a baseline of 3 applies. The description adds real semantics on top: district omission vs. supply changes the shape of the result, and rows_limit requires district plus first_year equal to last_year to page per-wellbore rows, which clarifies the constraint that the schema only implies.

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 and resource ('Returns the publication's plug record') and immediately scopes what the record is: W-3 plug dates on the Railroad Commission Full Wellbore file, counted by reported year and district. It is clearly distinct from screening siblings, though it never names an alternative tool explicitly.

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 lays out three modes of use: no district → statewide year counts plus per-district counts; district → that district's years with state-funded plug numbers, well types and bases; rows_limit → per-wellbore rows for one district and one year. It does not name sibling tools or say when to prefer them, which keeps it below a 5.

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

get_publicationGet publication detailsB
Read-onlyIdempotent
Inspect

Describes the WellState SB 1150 screening publication served here: root hash, publication id, contract (schema) version, evaluation date, the Railroad Commission of Texas source file with its SHA-256, the screening rule parameters and headline counts, the Commission rate table the plugging costs were computed from, the manifest's Full Wellbore cross-check counts and, from contract 1.4.0, the plug record's basis with its claims and their labels (DOCUMENTED_FACT, INFERENCE, UNKNOWN), each when the edition carries it. The verified field is true when the bundled copy of the manifest recomputes to the pinned root hash and the derived-data attestation matches the digest pinned at build time.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
ruleYes
basisYes
termsYes
countsYes
vintageYes
boundaryYes
verifiedYes
how_to_citeYes
produced_atYes
source_filesYes
verificationYes
publication_idYes
cost_rate_basisYes
data_file_countYes
evaluation_dateYes
contract_versionYes
publication_rootYes
plug_record_basisYes
full_wellbore_crosscheckYes
affected_commission_published_costYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds genuinely useful trust semantics — the definition of the verified field (bundled manifest recomputes to the pinned root hash, attestation matches the build-time digest) and version-dependent content (contract 1.4.0 adds plug record basis with DOCUMENTED_FACT/INFERENCE/UNKNOWN labels). That is real value beyond annotations, but the rest is a field inventory rather than behavior.

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

Conciseness2/5

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

The first sentence is a ~100-word run-on that enumerates nearly every field of the response, most of which the output schema already documents. The one genuinely non-obvious fact — the meaning of verified and the contract-1.4.0 conditional content — is buried at the end instead of being front-loaded.

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?

With an output schema present, return values need no explanation, yet the description spends most of its length on exactly that. What an agent actually lacks — when to call this versus verify_publication or get_plug_record — is never addressed, so the definition is complete on data shape but incomplete on routing.

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 tool takes zero parameters, so the baseline is 4. There is nothing to disambiguate, and the description correctly does not invent parameter guidance.

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 opening clause names a specific verb and resource: it describes the publication metadata served by this endpoint, and the enumerated fields (root hash, publication id, contract version, source file digest, rule parameters) make the resource concrete. It never distinguishes itself from the sibling verify_publication, whose subject matter it partly overlaps, so an agent must infer the boundary.

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?

There is no explicit when-to-use or when-not-to-use statement, and no named alternative among the eight siblings. The sentence about the verified field implies the tool also reports verification status, which makes the overlap with verify_publication more confusing rather than resolving it.

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

get_wellGet wellbore screening recordA
Read-onlyIdempotent
Inspect

Returns one wellbore's screening record by its 8-digit API number as the Commission's Inactive Well Aging Report records it (county code + unique number, no 42 state prefix): lease, well number, district, county, months inactive, oldest well record date (RRC), screening outcome, date affected, per-operator evaluations, Commission-published plugging cost with the per-foot rate it was computed from (fiscal year, district, USD per foot) when the edition publishes it, the Full Wellbore plug flag and latest W-3 plug date as a cross-check when the edition carries it (it changes no outcome, count or cost), and source line references.

NameRequiredDescriptionDefault
apiYesEight-digit API number as recorded in the IWAR: county code + unique number, no 42 prefix, no dashes (e.g. 00100001).

Output Schema

NameRequiredDescription
apiYes
linkYes
termsYes
countyYes
outcomeYes
boundaryYes
districtYes
operatorYes
well_typeYes
cost_basisYes
field_nameYes
lease_nameYes
approachingYesNot AFFECTED at the evaluation date, and AFFECTED on the same rule, with no other change, by 2042-09-01 (compliance-plan horizon).
evaluationsYes
plug_statusYes
well_numberYes
source_linesYes
affected_fromYes
total_depth_ftYes
commission_costYes
months_inactiveYes
publication_rootYes
source_lines_totalYes
oldest_well_record_dateYes
full_wellbore_crosscheckYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered; the description adds genuinely new context about conditional field presence ('when the edition publishes it', 'when the edition carries it') and explicitly states the plug flag 'changes no outcome, count or cost', which prevents an agent from misreading it as an authoritative plug determination. It stops short of describing not-found or error behavior.

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

Conciseness3/5

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

The lead clause is well front-loaded, but the body is one sprawling sentence that enumerates roughly a dozen return fields. Since an output schema exists, that enumeration largely duplicates structured data and inflates the description at the cost of scannability.

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 an output schema present, the description need not document return values, yet it does so thoroughly and adds the conditional-presence and plug-flag caveats that matter for interpretation. The only real omission is behavior on an unknown or malformed API number.

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% and the api parameter's description already spells out the eight-digit, no-42-prefix, no-dashes format. The description restates the same constraint ('county code + unique number, no 42 state prefix') without adding new syntax or edge cases, so it neither compensates nor detracts — 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 a specific verb and resource — returns one wellbore's screening record keyed by API number — and anchors it to the Inactive Well Aging Report, which separates it from get_plug_record and get_operator_exposure without needing to open a schema. The record's domain (screening outcome, operator evaluations, plugging cost) is concrete enough to distinguish it from every sibling.

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 implied rather than stated: the single-record, API-keyed lookup shape makes it obvious this is a point retrieval, and the note that the plug flag is only a cross-check hints at get_plug_record's role. But there is no explicit 'use this when…' or 'for plug details use X instead' routing, and nothing about what to do when the API is not found.

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

list_operator_wellsList an operator's wellboresA
Read-onlyIdempotent
Inspect

Lists one operator's wellbore claims from the publication, filtered by outcome (AFFECTED, APPROACHING or ALL; default AFFECTED) and sorted by Commission-published plugging cost descending, unpriced wellbores last, then by API number. Returns one page of at most 100 rows plus the number matching and the Commission-published cost total over all matching rows (the same on every page). When more rows remain, next_cursor is set: pass it back as cursor, with the same operator_number and outcome, for the next page. A cursor is bound to the publication root that issued it.

NameRequiredDescriptionDefault
limitNoMaximum rows on this page, 1-100. Default 25.
cursorNonext_cursor from the previous page, unchanged. Omit for the first page. Refused when it was issued for another publication root, operator or outcome.
outcomeNoAFFECTED: affected at the evaluation date. APPROACHING: not affected then but affected by 2042-09-01 (compliance-plan horizon). ALL: every claim. Default AFFECTED.AFFECTED
operator_numberYesSix-digit Railroad Commission of Texas operator number, with leading zeros (e.g. 276959).

Output Schema

NameRequiredDescription
linkYes
sortYes
termsYes
wellsYes
offsetYesPosition of this page's first row in the full sorted listing, from 0.
boundaryYes
returnedYes
truncatedYesTrue when rows remain after this page.
next_cursorYesPass as cursor for the next page; null on the last page.
display_nameYes
outcome_filterYes
total_matchingYes
operator_numberYes
publication_rootYes
matching_unpriced_countYes
matching_commission_published_totalYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent safety profile, and the description layers on real behavioral detail: a 100-row page cap, totals that repeat on every page, next_cursor presence signalling more rows, and the constraint that a cursor is bound to the issuing publication root and refused otherwise. That is more than the structured fields convey.

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?

Ordering and paging facts are front-loaded and every sentence carries information, but the opening sentence bundles filter, sort, and tie-break rules into one long clause, and the cursor-binding sentence partly duplicates the cursor schema description.

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?

With an output schema present, return-shape explanation is optional, yet the description still tells the agent what comes back (rows, match count, cost total) and how to continue paging. Nothing needed to call this correctly is missing.

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%, so the baseline is 3; the description earns above that by explaining the outcome semantics (APPROACHING means affected by 2042-09-01) and the sorting consequences of the default limit. Cursor reuse rules are restated from the schema, so it does not reach 5.

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 names a specific verb and resource ('Lists one operator's wellbore claims from the publication') and pins down scope, filters, and sort order. An agent can distinguish it from siblings like get_well or get_operator_exposure without opening a schema.

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?

It gives clear operational guidance: default outcome AFFECTED, how to page (pass next_cursor back as cursor with the same operator_number and outcome), and that ALL means every claim. It stops short of stating when to prefer this over get_operator_exposure or screen_book, so it is clear context but not full alternative routing.

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

screen_bookScreen a surety book of principalsA
Read-onlyIdempotent
Inspect

Screens a surety broker's book of up to 25 Railroad Commission of Texas operator numbers (principals) with the surety-book-v1 semantics: one row per principal in request order with the P-5 letter verbatim (A labelled active, D delinquent, any other letter unlabelled), claims on file, AFFECTED on the evaluation date, approaching within 24 months, the Commission-published cost proxy with the priced claim count and the rate label read from the publication's cost_rate_basis (a fiscal year's Commission rates, or the publication's own label verbatim when it establishes no table year), unpriced claims, the Full Wellbore flagged counts (a cross-check only) and the 16 TAC §3.78 blanket floor from inactive wells only (a lower bound, not a bond amount). Book totals are given only where a sum is valid; unpriced claims and the floors are NOT_SUMMED, with the reason. Wellbores two principals of the book both claim are disclosed with the claims and cost the totals count more than once. A principal not in the publication refuses the whole book rather than leave a row out.

NameRequiredDescriptionDefault
operator_numbersYes1-25 six-digit Railroad Commission of Texas operator numbers as strings, each once (e.g. ["276959", "760218"]). The rows keep this order.

Output Schema

NameRequiredDescription
rowsYes
termsYes
totalsYes
overlapYes
p5_noteYes
boundaryYes
relianceYes
cost_noteYes
count_unitYes
iwar_as_ofYes
principalsYes
rate_basisYes
publicationYes
format_versionYes
evaluation_dateYes
publication_rootYes
blanket_floor_noteYes
within_24_months_byYes
full_wellbore_crosscheck_noteYes

TDQS

A3.9/5.0
Behavior5/5

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

The description goes well beyond the readOnly/idempotent/non-destructive annotations by disclosing row structure, P-5 letter handling, claims and cost semantics, NOT_SUMMED totals, cross-check caveats, shared-wellbore double counting, and the all-or-nothing refusal when a principal is missing. These details materially affect how an agent should interpret and trust the output.

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 purpose is front-loaded and nearly every clause carries specific semantic weight for a complex batch tool. However, the description is one very long run-on sentence, and some phrasing reiterates schema facts like the 25-principal limit and order preservation, making it slightly harder to parse than necessary.

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 complexity, the description covers the critical behavioral edge cases an agent needs: row ordering, missing-principal refusal, unpriced and floor NOT_SUMMED totals, shared-wellbore double counting, and the non-bond nature of the §3.78 floor. The output schema is available for return-value structure, so no further detail is required.

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%, so the parameter is already fully documented, but the description adds meaning by stating that rows preserve request order and that any principal outside the publication causes the entire book to be refused. This goes beyond the schema's syntactic constraints.

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 states a specific verb ('Screens') and resource ('a surety broker's book of up to 25 Railroad Commission of Texas operator numbers'), making the batch-book scope clear. It does not explicitly name or contrast with sibling tools like screen_operators, so sibling differentiation is implicit rather than stated.

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 explains what the tool does but gives no explicit when-to-use guidance, no exclusions, and no alternatives. An agent must infer that this is the batch-screening option versus single-operator siblings from the phrase 'book of up to 25' alone.

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

screen_operatorsScreen a list of operatorsB
Read-onlyIdempotent
Inspect

Screens up to 200 Railroad Commission of Texas operator numbers at once and returns one row per requested operator, in request order: inactive wellbores on the IWAR, affected, approaching by 2042-09-01 (compliance-plan horizon), contested, review and shared claims, Commission-published plugging cost on affected wellbores with its rate label, unpriced affected count, on editions that carry the Full Wellbore cross-check the affected claims whose wellbore that file flags as plugged (a cross-check only; it changes no outcome, count or cost), the crossing schedule by bucket (empty buckets left out of the rows), the raw P-5 status code, and a 16 TAC §3.78 blanket-assurance floor computed from inactive wells only (a lower bound, not a bond amount). Operators not in the publication come back as found:false rows. Includes totals over the found rows.

NameRequiredDescriptionDefault
operator_numbersYes1-200 Railroad Commission of Texas operator numbers as strings (e.g. ["276959", "760218"]). Shorter numeric strings are left-padded to 6 digits; duplicates are removed, keeping the first occurrence.

Output Schema

NameRequiredDescription
rowsYes
termsYes
totalsYes
boundaryYes
screenedYes
requestedYes
cost_labelYes
count_unitYes
publication_rootYes
duplicates_removedYes
blanket_floor_basisYes
p5_status_code_noteYes
full_wellbore_crosscheck_noteYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, so the bar is lower, and the description still adds real behavioral context: ordering, found:false rows for unpublished operators, empty buckets omitted, the wellbore cross-check explicitly flagged as cosmetic ('changes no outcome, count or cost'), and the §3.78 floor called out as a lower bound rather than a bond amount. Those caveats are exactly the kind of thing an agent cannot infer from annotations.

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

Conciseness2/5

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

The core purpose is front-loaded, but the body is one enormous run-on enumeration of output fields that runs well past what any agent needs before calling. Much of that enumeration duplicates the output schema and buries the genuinely useful caveats mid-sentence.

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?

An output schema exists, so the long field-by-field enumeration is largely redundant effort; the parts that do carry weight (found:false handling, cross-check is informational only, floor is a lower bound) are present. Missing is any indication of cost, rate limits, or when this batch screen is preferable to the single-operator siblings.

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% and the single parameter is documented in the schema (padding, dedupe, bounds), so baseline 3 applies. The description only restates the 200 cap and does not add format or semantic detail beyond the schema.

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?

Opens with a specific verb and resource: screens up to 200 RRC operator numbers and returns one row per requested operator in request order. That is clearly distinct from siblings like search_operators or get_well, though the description never explicitly contrasts itself with them.

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?

No when-to-use or when-not-to-use guidance, and no sibling alternatives named despite eight related tools. The only usage-shaped information is incidental ('up to 200 at once', 'found:false rows'), which tells an agent about batching but not about tool selection.

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

search_operatorsSearch operators by nameA
Read-onlyIdempotent
Inspect

Finds operators whose Railroad Commission of Texas name contains the given text, case-insensitive. Returns up to 20 matches with operator number, display name, wellbore claims and affected count, ordered by affected count descending, then by name.

NameRequiredDescriptionDefault
limitNoMaximum results, 1-20. Default 20.
queryYesPart of the operator name, e.g. formentera. 2-64 characters.

Output Schema

NameRequiredDescription
queryYes
termsYes
resultsYes
boundaryYes
returnedYes
truncatedYes
total_matchesYes
publication_rootYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add behavior beyond that—which it does: a hard 20-result cap, the returned fields, and the sort order (affected count desc, then name). It stops short of noting truncation implications or rate limits, so not a 5.

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 matching purpose front-loaded and the return shape second. Every clause carries 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?

An output schema exists, so return values needn't be explained, yet the description still summarizes them without bloat. Matching semantics, result cap, and ordering are all covered; only the truncation consequence of the 20-cap goes unstated.

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%, so baseline is 3, but the description adds genuinely new semantics: matching is case-insensitive and substring-based, which the schema's 'Part of the operator name' does not state. The 'up to 20' line also corroborates the limit parameter's maximum.

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 and resource ('Finds operators'), the matching rule (substring, case-insensitive) and the data domain (Railroad Commission of Texas). It does not name or contrast with its closest sibling screen_operators, so an agent must infer the boundary between search and screen.

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 implied by the substring-matching semantics, but there is no explicit when-to-use, when-not-to-use, or named alternative such as screen_operators or list_operator_wells. The agent has to reason from the name.

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

verify_publicationVerify publication hashesA
Read-onlyIdempotent
Inspect

Recomputes the publication root hash from the manifest copy bundled with this server, reports the SHA-256 and byte count of each manifest data file as verified against the manifest when the server was built (all files, or the given paths), and re-hashes every bundled derived index file against its build attestation. Also returns the manifest URL and file URL template for an independent check, and the manifest's Full Wellbore cross-check counts when the edition carries them.

NameRequiredDescriptionDefault
pathsNoManifest data_files paths to report (e.g. data/operator.ndjson). Omit to report every file.

Output Schema

NameRequiredDescription
rootYes
filesYes
termsYes
derivedYes
boundaryYes
all_matchYes
elapsed_msYes
files_checkedYes
files_matchedYes
publication_rootYes
independent_checkYes
full_wellbore_crosscheckYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description adds genuinely new context: verification is against the manifest copy bundled at build time, not a live remote, and it exposes manifest/file URLs so the caller can independently check. It stops short of saying what happens on a hash mismatch (error vs. reported discrepancy).

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 core purpose is front-loaded in the opening clause and every subsequent clause carries real information (data files, index files, URLs, cross-check counts). It is a single very dense sentence, though, and would read better split into two or three.

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?

Return content is well sketched (SHA-256 and byte counts, re-hash of index files, manifest URL, file URL template, cross-check counts) and an output schema exists to carry the structure. The one missing piece is failure semantics – whether a mismatch throws or is returned as data.

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 description notes 'all files, or the given paths', which matches the schema's own 'Omit to report every file' text, so the semantics of the optional array are confirmed rather than added. With 100% schema description coverage the baseline of 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?

Precise verbs (recomputes, reports, re-hashes) paired with specific resources (publication root hash, manifest data files, derived index files) make the integrity-verification role unambiguous. It is clearly distinct from sibling get_publication, though that sibling is never explicitly named as the contrasting read path.

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?

Use is only implied by the word 'verify' – an agent can infer this is for integrity checking rather than data retrieval. There is no explicit statement of when to call it instead of get_publication, and no preconditions or cost guidance.

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. 9 tool updates
    • Changedget_operator_exposure2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "operator_number",
        -  "name",
        -  "display_name",
        -  "count_unit",
        -  "counts",
        -  "full_wellbore_crosscheck_note",
        -  "affected_cost",
        -  "crossing_schedule",
        -  "crossing_schedule_basis",
        -  "link"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "operator_number",
        +  "name",
        +  "display_name",
        +  "count_unit",
        +  "counts",
        +  "full_wellbore_crosscheck_note",
        +  "affected_cost",
        +  "crossing_schedule",
        +  "crossing_schedule_basis",
        +  "link"
        +]
    • Changedget_plug_record2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "contract_version",
        -  "note",
        -  "plug_record"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "contract_version",
        +  "note",
        +  "plug_record"
        +]
    • Changedget_publication2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "publication_id",
        -  "contract_version",
        -  "basis",
        -  "produced_at",
        -  "evaluation_date",
        -  "vintage",
        -  "source_files",
        -  "rule",
        -  "counts",
        -  "affected_commission_published_cost",
        -  "cost_rate_basis",
        -  "full_wellbore_crosscheck",
        -  "plug_record_basis",
        -  "data_file_count",
        -  "verified",
        -  "verification",
        -  "how_to_cite"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "publication_id",
        +  "contract_version",
        +  "basis",
        +  "produced_at",
        +  "evaluation_date",
        +  "vintage",
        +  "source_files",
        +  "rule",
        +  "counts",
        +  "affected_commission_published_cost",
        +  "cost_rate_basis",
        +  "full_wellbore_crosscheck",
        +  "plug_record_basis",
        +  "data_file_count",
        +  "verified",
        +  "verification",
        +  "how_to_cite"
        +]
    • Changedget_well2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "api",
        -  "lease_name",
        -  "well_number",
        -  "operator",
        -  "district",
        -  "county",
        -  "field_name",
        -  "well_type",
        -  "plug_status",
        -  "total_depth_ft",
        -  "months_inactive",
        -  "oldest_well_record_date",
        -  "outcome",
        -  "approaching",
        -  "affected_from",
        -  "evaluations",
        -  "commission_cost",
        -  "cost_basis",
        -  "full_wellbore_crosscheck",
        -  "source_lines",
        -  "source_lines_total",
        -  "link"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "api",
        +  "lease_name",
        +  "well_number",
        +  "operator",
        +  "district",
        +  "county",
        +  "field_name",
        +  "well_type",
        +  "plug_status",
        +  "total_depth_ft",
        +  "months_inactive",
        +  "oldest_well_record_date",
        +  "outcome",
        +  "approaching",
        +  "affected_from",
        +  "evaluations",
        +  "commission_cost",
        +  "cost_basis",
        +  "full_wellbore_crosscheck",
        +  "source_lines",
        +  "source_lines_total",
        +  "link"
        +]
    • Changedlist_operator_wells2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "operator_number",
        -  "display_name",
        -  "outcome_filter",
        -  "sort",
        -  "total_matching",
        -  "returned",
        -  "truncated",
        -  "offset",
        -  "next_cursor",
        -  "matching_commission_published_total",
        -  "matching_unpriced_count",
        -  "wells",
        -  "link"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "operator_number",
        +  "display_name",
        +  "outcome_filter",
        +  "sort",
        +  "total_matching",
        +  "returned",
        +  "truncated",
        +  "offset",
        +  "next_cursor",
        +  "matching_commission_published_total",
        +  "matching_unpriced_count",
        +  "wells",
        +  "link"
        +]
    • Changedscreen_book2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "format_version",
        -  "principals",
        -  "count_unit",
        -  "evaluation_date",
        -  "within_24_months_by",
        -  "iwar_as_of",
        -  "rate_basis",
        -  "cost_note",
        -  "p5_note",
        -  "blanket_floor_note",
        -  "full_wellbore_crosscheck_note",
        -  "reliance",
        -  "rows",
        -  "totals",
        -  "overlap",
        -  "publication"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "format_version",
        +  "principals",
        +  "count_unit",
        +  "evaluation_date",
        +  "within_24_months_by",
        +  "iwar_as_of",
        +  "rate_basis",
        +  "cost_note",
        +  "p5_note",
        +  "blanket_floor_note",
        +  "full_wellbore_crosscheck_note",
        +  "reliance",
        +  "rows",
        +  "totals",
        +  "overlap",
        +  "publication"
        +]
    • Changedscreen_operators2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "requested",
        -  "screened",
        -  "duplicates_removed",
        -  "count_unit",
        -  "cost_label",
        -  "full_wellbore_crosscheck_note",
        -  "p5_status_code_note",
        -  "blanket_floor_basis",
        -  "rows",
        -  "totals"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "requested",
        +  "screened",
        +  "duplicates_removed",
        +  "count_unit",
        +  "cost_label",
        +  "full_wellbore_crosscheck_note",
        +  "p5_status_code_note",
        +  "blanket_floor_basis",
        +  "rows",
        +  "totals"
        +]
    • Changedsearch_operators2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "query",
        -  "total_matches",
        -  "returned",
        -  "truncated",
        -  "results"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "query",
        +  "total_matches",
        +  "returned",
        +  "truncated",
        +  "results"
        +]
    • Changedverify_publication2 fields changed
      • addedOutput schema / properties / terms
        Added value: +{
        +  "const": "https://mcp.wellstatelabs.com/terms",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "boundary",
        -  "publication_root",
        -  "root",
        -  "files",
        -  "files_checked",
        -  "files_matched",
        -  "derived",
        -  "full_wellbore_crosscheck",
        -  "all_match",
        -  "elapsed_ms",
        -  "independent_check"
        -]New value: +[
        +  "boundary",
        +  "terms",
        +  "publication_root",
        +  "root",
        +  "files",
        +  "files_checked",
        +  "files_matched",
        +  "derived",
        +  "full_wellbore_crosscheck",
        +  "all_match",
        +  "elapsed_ms",
        +  "independent_check"
        +]
  2. 9 tool updates
    • First observedget_operator_exposure
    • First observedget_plug_record
    • First observedget_publication
    • First observedget_well
    • First observedlist_operator_wells
    • First observedscreen_book
    • First observedscreen_operators
    • First observedsearch_operators
    • First observedverify_publication

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to assess structural information-asymmetry risk in prediction-market event contracts from contract text alone, with deterministic scoring and no LLM API dependency.
    97
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Deterministic construction and specialty contractor financial skills, WIP over/under-billing reconciler, AIA G702/G703 retainage analyzer, and LevelBench-100 evaluation harness.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Deterministic AI liability attribution engine. Scores fault across AI supply-chain participants (deployer, developer, vendor) with tamper-evident certificates and weekly cryptographic anchoring.’
    8 npm
    2
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources