Skip to main content
Glama

Server Details

Verified reference data; each record carries its source URL and quote. verify_quote checks claims.

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
Uptime
98.3% over 60 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
joelp22-maker/referencesource-mcp
GitHub Stars
0

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool maps to a distinct stage of the read-only workflow: list_datasets discovers datasets, search_records finds records within one, get_record fetches a single record by id, and verify_quote validates a claim. Although get_record and search_records both return records, the lookup-vs-search split is explicitly described, so selection is unambiguous.

Naming Consistency5/5

All four names follow a clean verb_noun pattern: get_record, list_datasets, search_records, verify_quote. No mixing of conventions or vague one-word verbs.

Tool Count5/5

Four tools exactly cover the browse/search/fetch/verify loop of a reference-data server, with no redundant or filler entries. This is a tightly scoped set for the domain.

Completeness4/5

The read-only lifecycle (discover, search, retrieve, verify) is fully covered, and no create/update/delete is expected for curated reference data. Minor friction remains: descriptions alternate between 'id' and 'slug' for the same key, and there is no explicit way to page beyond the 20-result search cap or inspect a dataset's schema.

Available Tools

4 tools
get_recordGet one record by idA
Read-only
Inspect

Fetch one record by id — for example, look up a FIPS 140 certificate's status, a state's boiler inspection rules, or a county's loan limit. Returns the full record with its source URL and verbatim source quote. Record ids appear in search_records results and in each record's url.

ParametersJSON Schema
NameRequiredDescriptionDefault
record_idYesThe record's id field, e.g. "ak".
dataset_slugYesDataset slug from list_datasets.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safe-read nature is clear. The description adds value by stating it returns the full record with source URL and verbatim quote, which annotations don't cover. For a simple read tool, this is sufficient behavioral disclosure.

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 two sentences long with no wasted words. It front-loads the core action and examples, then explains the return value and ID source in a logical order. Every sentence earns its place.

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 simple 2-parameter read tool with good annotations and no output schema, the description covers the return format and ID provenance. It is slightly lacking in explicitly noting that dataset_slug comes from list_datasets, but this is implied by the sibling tool. Overall, it is sufficiently complete for the tool's complexity.

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%, so the schema already documents both parameters (record_id and dataset_slug) adequately. The description mentions 'record ids appear in search_records results' but does not add new syntax or format details 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 clearly states that it fetches a single record by ID, provides concrete examples (FIPS 140 certificate, boiler rules, loan limits), and specifies that the returned record includes a source URL and verbatim quote. This distinguishes it from siblings like search_records (search) and list_datasets (listing datasets).

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 says the record ID comes from search_records results or the record's URL, guiding the agent on where to find the ID. However, it does not mention when to prefer this over verify_quote or explicitly exclude alternative tools, leaving a minor gap in usage guidance.

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

list_datasetsList reference datasetsA
Read-only
Inspect

What reference datasets are available? Lists every published dataset with its title, record count, last-verified date and a one-sentence summary. Covers regulatory thresholds, version compatibility, certification registers, licensing rules and more. Pass query to list only the datasets matching a topic — that is much cheaper than reading the whole list. Use the returned slug with search_records or get_record.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoReturn each dataset's complete scope statement instead of the first sentence. Off by default: the full text is roughly four times the size and is rarely needed to choose a dataset.
queryNoOptional topic filter, e.g. "boiler", "tariff" or "loan limit". Case-insensitive substring, matched against each dataset's slug, title and full description; if that phrase matches nothing, the words are matched separately and the answer says so in `matched_on`. Omit it to list every dataset.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, non-destructive and closed-world, so the safety profile is covered. The description adds meaningful behavioral context beyond that: a cost/size tradeoff for the unfiltered list, the ~4x size of full scope text, and the degraded-match fallback surfaced in `matched_on`. It stops short of describing pagination, limits, or the result envelope, which keeps it out of the top band.

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, the payload (what it returns, how to filter cheaply, what to do with the slug) is front-loaded, and the opening question is answered immediately rather than left hanging. No sentence is filler.

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?

There is no output schema, so the description correctly enumerates the returned fields (title, record count, last-verified date, one-sentence summary) and the dataset domains covered. Combined with annotations and a 100%-documented 2-parameter schema, an agent has everything needed to call it and use the result.

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%, so both `full` and `query` are already fully documented in the schema, including the substring semantics and matched_on fallback. The description only restates the `query` use case and adds a cost cue; it says nothing about `full`, which the schema has to carry alone. Baseline 3 is the correct ceiling here.

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 ('lists every published dataset') plus the exact fields returned (title, record count, last-verified date, summary). It also names where to go next (search_records / get_record), so an agent can distinguish it from its siblings without opening any schema.

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 says to pass `query` for topic-filtered listing, when to omit it ('Omit it to list every dataset' is in the schema, and the description frames the whole-list case), and warns that the filtered path is 'much cheaper than reading the whole list.' It also states the follow-up workflow: use the returned slug with search_records or get_record.

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

search_recordsSearch records in a datasetA
Read-only
Inspect

Look up a specific record — search by state name, chemical, certificate number, product name or any keyword. Searches one dataset's records (case-insensitive substring match across all fields). Returns up to 20 matching records, each with its url, source and verbatim source_quote so the answer can be checked.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSubstring to match, case-insensitive, e.g. a state code, chemical name or standard number.
dataset_slugYesDataset slug from list_datasets, e.g. "graduated-driver-licensing".

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds key behavioral details: case-insensitive substring matching across all fields, maximum return of 20 records, and the fact that results include url, source, and verbatim source_quote. No contradictions found.

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?

Three sentences, each adding unique information. First sentence: purpose and searchable fields. Second: scope and matching behavior. Third: return information. No filler, but could be slightly tighter.

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?

Given the moderate complexity (2 params, no nested objects, no output schema), the description explains purpose, fields searched, matching behavior, result limit, and what each result contains. For a search tool with annotations, this is thorough. Minor gap: no mention of pagination beyond the 20-result limit.

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% with clear descriptions for both parameters. The description adds value by explaining that the query applies as case-insensitive substring match across all fields, and that dataset_slug should come from list_datasets, providing an example. This goes beyond the schema alone.

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 starts with 'Look up a specific record' which is a specific verb+resource pairing. It explicitly lists searchable fields (state name, chemical, certificate number, product name or keyword) and distinguishes from siblings like 'get_record' which likely fetches by ID, and 'list_datasets' which lists available datasets.

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 clearly states when to use this tool: to search across a dataset's records with substring matching. It also mentions the result size (up to 20) and that it returns full records with source URL. However, it does not explicitly say when NOT to use it (e.g., for exact matches use 'get_record') or mention alternatives, but the context is strong enough for a typical agent.

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

verify_quoteCheck a claimed value against a recordA
Read-only
Inspect

Is this value actually right? Check a claimed fact against a published record instead of trusting it. Reports whether the claim matches the record's stored value (exact, case-insensitive or normalised — the match type is named), whether it appears in the record's verbatim source quote, and returns the source URL and quote so the claim can be traced upstream. Use this whenever you want to confirm a number, date, threshold or status before stating it. Verdicts: matches_record, matches_quote, differs or not_found.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldNoField name to check the claim against, e.g. "limit_1_unit". Without it, every stored field is checked.
record_idNoThe record's id, if known (shown in search_records results and in each record's url). Without it, the dataset's stored values are searched for the claimed value.
dataset_slugYesDataset slug from list_datasets.
claimed_valueYesThe value to check, exactly as claimed, e.g. "$832,750" or "no passengers younger than 21".

TDQS

A4.3/5.0
Behavior4/5

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

The description adds significant behavioral context beyond the annotations (readOnlyHint, destructiveHint): it explains match types (exact, case-insensitive or normalized), the possible verdicts (matches_record, matches_quote, differs, not_found), and that it returns the source URL and quote. This is more than what annotations provide. There is no contradiction with annotations.

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 paragraph but is concise and front-loaded with the key question 'Is this value actually right?' Every sentence earns its place: purpose, reporting details, usage guidance, and verdicts. It is not overly long, though it could be more structured (e.g., bullet points for verdicts) to improve scanability.

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?

Given the tool has 4 parameters and no output schema, the description adequately covers the main outputs (verdicts, source URL, quote) and usage scenarios. It explains what happens when optional parameters are omitted. However, it lacks explicit details on the exact response structure (e.g., field names like 'verdict', 'source_url'), which would be helpful for an agent to parse the result. Still, it provides enough context for effective use.

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% (all parameters have descriptions), so baseline is 3. The description adds value beyond the schema by clarifying behavior when optional parameters are omitted: 'Without it, every stored field is checked' (for field) and 'Without it, the dataset's stored values are searched for the claimed value' (for record_id). It also explains the match types and verdicts, providing richer semantics.

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 clearly states the tool's purpose: 'Check a claimed fact against a published record.' It explains what it reports (match types, source quote, URL) and lists possible verdicts. This verb+resource combination is distinct from sibling tools like get_record (fetch full record) or search_records (search for records), making it easy for an agent to differentiate.

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 instructs: 'Use this whenever you want to confirm a number, date, threshold or status before stating it.' This provides strong guidance on when to use the tool. It does not explicitly state when not to use it (e.g., if you need the full record, use get_record instead), but the sibling context and the clear purpose make the decision boundary reasonably clear.

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. 1 tool update
    • Changedlist_datasets1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Optional topic filter, e.g. \"boiler\", \"tariff\" or \"loan limit\". Case-insensitive substring, matched against each dataset's slug, title and full description. Omit it to list every dataset."New value: +"Optional topic filter, e.g. \"boiler\", \"tariff\" or \"loan limit\". Case-insensitive substring, matched against each dataset's slug, title and full description; if that phrase matches nothing, the words are matched separately and the answer says so in `matched_on`. Omit it to list every dataset."
  2. 1 tool update
    • Changedlist_datasets2 fields changed
      • addedInput schema / properties / full
        Added value: +{
        +  "description": "Return each dataset's complete scope statement instead of the first sentence. Off by default: the full text is roughly four times the size and is rarely needed to choose a dataset.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Optional topic filter, e.g. \"boiler\", \"tariff\" or \"loan limit\". Case-insensitive substring, matched against each dataset's slug, title and full description. Omit it to list every dataset.",
        +  "type": "string"
        +}
  3. 4 tool updates
    • First observedget_record
    • First observedlist_datasets
    • First observedsearch_records
    • First observedverify_quote

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Verifies claims with verdicts (supported/disputed/unverifiable), confidence scores, and cited sources by cross-referencing FoundryNet Data Network and web search.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables users to verify citations and bibliographies and to check whether source documents support factual claims, using local inference, exact evidence provenance, and deterministic verdicts.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables per-claim citation verification for AI-generated text by fetching cited sources and judging whether they support the claim, with verdicts and evidence quotes.
    47 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables language models to verify claims against a local document corpus by returning a literal supporting quote, a contradiction, or an explicit refusal when evidence is insufficient. Runs deterministically offline over local sources without network access or LLM calls.
    4
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.