Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
EVIDENCELINE_REDACTNoOptional redaction configuration. Use 'builtin:fds01-demo' for the hosted fictional site, or a path to a TOML identifier file. Without it, only built-in patterns for emails, WA lots, street addresses, and Australian phone numbers are redacted.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
tidy_lab_filesA

Tidy one site's lab results, chain of custody and field sheet into one table, and list what needs review.

Converts units exactly (ug/L for water, mg/kg for soil; ng/L, mg/L and the spellings ug/L, µg/L, μg/L are understood), reads every date day first, matches sample ids across the three files, and runs six QA checks: sample ids, units, field duplicate RPD, holding times to extraction, blank detections linked through the field sheet's equipment column, and LOR against investigation levels (soil HIL A; both drinking-water rules for water, side by side).

Returns counts by matrix and analyte, numbered review items (what was found, the evidence rows, the rule and its source, and what the scientist decides), everything that was checked and not flagged, and what was not checked. The combined rows (one per lab result, with file and row numbers) are included only with include_rows=true; row_count always says how many there are. Show the person every review item and the checked list; never describe the result as "no issues". The tool never merges, rejects or corrects a result, and a guideline value is an investigation level, not a finding that a site is contaminated. The data is synthetic.

get_review_itemA

Return one review item from tidy_lab_files in full, with every evidence row quoted exactly as it is in its file.

Use it to show the person the lab, chain-of-custody and field-sheet lines behind a finding, with their row numbers, the rule and its source, and the judgement left to the scientist. Numbers come from tidy_lab_files for the same site.

get_resultsA

Return the lab results for one monitoring well, oldest round first.

Each result has the sample date, analyte, the result exactly as the lab reported it, the exact value in ug/L (null when not detected), the detection limit, the lab report id, and the file and row it came from, so any number can be traced to its source. Use these values verbatim; do not round them.

lookup_limitA

Look up the drinking-water guideline value for one analyte under one rule.

Returns the value and unit, whether the rule sets it for one analyte or for the sum of PFOS and PFHxS (applies_to), what to compare with it for the analyte asked about (compared_quantity), the source document, table and page, the rule's WA adoption status, and a one-line note in plain English. Under 'nemp-3.0', 0.07 ug/L applies to PFOS alone, PFHxS alone and their sum (Table 4, footnote a): asking for either returns that value, with the footnote quoted. Under 'current', there is no sum value. Drinking water is the only scenario loaded.

compare_rulesA

Screen one monitoring round under BOTH guideline rules side by side, with the arithmetic shown.

For each rule, every limit is listed with the value compared (for a sum, for example '0.038 + 0.019 = 0.057'), the limit, and whether the result is above or not above it. A result equal to the limit is not above it. The tool never picks a rule: choosing one is the scientist's call. When the two rules disagree, the notes say so; the lab values are identical in both columns.

check_paragraphA

Check a draft report paragraph against the lab data and guideline values, without any language model.

It finds (a) every number with a unit (ug/L, µg/L, ng/L, mg/L) and traces it to a lab row, a detection limit, a computed sum or difference, or a guideline table, or flags it as untraced; (b) claims of change between two dates (increased, fell, lower than, stable) and tests them against the data; (c) claims that a result is above, below or within the guideline, evaluated under each rule; (d) claims that an analyte was or was not detected. Negation such as 'did not increase' is handled.

Every checked item has a status: consistent, inconsistent, untraced, depends_on_rule or needs_judgement. Anything it could not read confidently is listed under not_checked with the reason. Show the person every item that is not 'consistent' and every not_checked item; the person decides what to change.

fill_numbersA

Fill in the numbers: replace each placeholder in a draft paragraph with the exact value and unit, by code.

Never type a concentration yourself. Write a placeholder where each number goes, then call this tool. Fields are separated by '|'; case and spaces around fields do not matter:

  • {ANALYTE|WELL|DATE}: measured result, e.g. {PFOS|MB2|Sep 2025} gives '0.038 ug/L'. A non-detect gives the result as reported, e.g. '<0.001 ug/L'; describe it as not detected.

  • {sum PFOS+PFHxS|WELL|DATE}: the sum of PFOS and PFHxS, e.g. {sum PFOS+PFHxS|MB2|2025-09-16} gives '0.057 ug/L'.

  • {lor|ANALYTE|WELL|DATE}: the detection limit, e.g. {lor|PFOA|MB2|Sep 2025} gives '0.001 ug/L'.

  • {limit|ANALYTE|RULE}: a guideline value. RULE is 'nemp-3.0' or 'current' and is required, e.g. {limit|PFOS|current} or {limit|PFOS+PFHxS|nemp-3.0}. Under nemp-3.0 use the PFOS+PFHxS form: its 0.07 ug/L applies to PFOS alone, PFHxS alone and the sum (Table 4, footnote a), so say which one the sentence compares.

  • {change|ANALYTE|WELL|FROM|TO}: change from the earlier round FROM to the later round TO, with direction and percent, e.g. {change|PFOS|MB2|Nov 2024|Sep 2025} gives 'a fall of 0.003 ug/L (7.3%)'. Write the sentence so the phrase fits, e.g. 'PFOS showed {change|...} between November 2024 and September 2025.' Dates: '2025-09-16', '16 September 2025' or 'Sep 2025'. One well per call.

Returns the filled text, the same text with [n] source markers, each value with its offsets and explanation, and a numbered source list (lab file and row, or guideline document, table and page). If any placeholder is unknown or ambiguous, nothing is filled and the error lists every problem and the valid forms. Afterwards, call check_paragraph on the filled text: it checks the words around the numbers.

search_guidelinesA

Search the indexed public guidance (ASC NEPM Schedule B1, PFAS NEMP 3.0, DWER guidelines on assessing and on reporting and classifying contaminated sites, and the ADWG PFAS fact sheet) and return the passages that match.

Each passage gives the document title, edition and date, its WA status, the PDF page and the printed page number, the nearest section heading and the headings above it, a short excerpt (shorter for documents whose licence allows only brief quotes, always with the notice) and the official link. At most one passage comes from any one page. When no passage covers enough of the question, the result is 'not covered' with the reason, instead of weak matches.

Never take a guideline value from an excerpt: tables extract badly. For PFAS drinking-water values use lookup_limit; for any other value, read it on the cited page. The tool never says which document or edition applies to a site. PFAS NEMP 3.1 is not indexed (its host was unreachable when the index was built).

show_redactionsA

Show what the redaction guard rail has replaced in this session: placeholder names and counts only.

Lists each placeholder in use (for example [CLIENT-1], [ADDRESS-1], [LOT-1], [EMAIL-1], [PHONE-1]) with how many times it replaced an identifier, the totals per type, how many identities the local identifier file defines per type (none when no identifier file is loaded, in which case names are not redacted), and the built-in patterns. It never shows the raw values: they stay in the memory of the machine running this server. Use the placeholders as they are in any text you write; the person's local export puts the real values back.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool owns a distinct task: data tidy/QA, review-item drill-down, per-well retrieval, limit lookup, rule comparison, paragraph checking, number filling, document search, and redaction reporting. The closest pairs (get_results vs tidy_lab_files and lookup_limit vs search_guidelines) are clearly separated by workflow step and output type.

Naming Consistency5/5

All nine tool names follow the same lowercase snake_case verb_noun pattern, from tidy_lab_files to show_redactions. Minor plural/singular variation such as get_results vs get_review_item is natural and does not break the convention.

Tool Count5/5

Nine tools is well within the ideal range and each one maps to a distinct step in the evidence-to-report workflow. The count feels deliberately scoped rather than padded or thin.

Completeness4/5

The core workflow is well covered: data ingestion/QA, review item drill-down, results retrieval, guideline comparison, report number filling, paragraph verification, document search, and redaction reporting. The main gap is that soil guideline values such as HIL A are only searchable as document passages rather than available through a structured lookup like the drinking-water values, so some soil reporting tasks require manual reading of cited pages.