Skip to main content
Glama

DataPulse

Live dashboard: https://www.data-pulse.my

Open in Google Colab: Open In Colab

datapulse-my MCP server M8ven Verified mcpgrade

๐Ÿค– AI-agent-ready โ€” Wire DataPulse into Claude Desktop, Cursor, Cline, or any MCP-compatible client with one config block. Your agent gets

418 official Malaysian datasets โ€” including 30 GTFS transit feeds (KTMB, Prasarana, BAS.MY) โ€” with declared licences and an honest ten-status trust taxonomy instead of a blanket green checkmark.

โ†’ Connect your AI agent in 30 seconds

This is DataPulse

When an AI quote is wrong, it is often wrong because the underlying data was stale, mis-licensed, or unverifiable โ€” not because the model hallucinated. An official-looking page does not tell an agent when the dataset behind it last updated, who published it, whether it may legally be reused, or whether the observation can be reproduced by a second party.

DataPulse exists to make that uncertainty explicit. It is an open, read-only verification layer for Malaysian public data: it continuously probes

and publishes โ€” for each one โ€” machine-readable evidence about whether the source is reachable, how fresh the content is, what licence applies, how the schema behaves, and when the observation was signed.

It does not replace the official source. It documents, on an honest and reproducible basis, what the official portal states and whether that material is current, so you know what you are reusing or citing. The verification speaks for itself: every claim here is a live, checkable artefact, not a promise.

Related MCP server: Data.gov.my MCP Server

What we do, simply

  • We watch the sources. A scheduled probe revisits each dataset under its declared cadence and records what it actually finds โ€” reachability, an honest freshness signal, schema shape, record counts, and collection quirks.

  • We state the truth plainly. Instead of a blanket green checkmark, each dataset carries one of ten honest health statuses (fresh, aging, stale, discontinued, degraded, browser-dependent, unreachable, unknown, unknown-freshness, reference). A dataset that cannot be proven fresh is labelled unknown-freshness โ€” not silently treated as healthy.

  • We publish evidence, not just claims. Each dated observation is signed and recorded to an immutable public log, so you can verify when DataPulse observed the source and that the record has not been altered.

  • We make it machine-readable first. The whole portfolio is discoverable from one index and queryable over a read-only MCP server, so an agent receives the same freshness, licence, and provenance signal a careful human reviewer would.

Who this serves

  • AI builders and agent developers, who want a model to check a Malaysian figure's freshness and licence before it cites the number โ€” without building a bespoke integration or trusting a scraping pipeline.

  • Researchers, analysts, and journalists, who need to ground coursework, a thesis, a dashboard, or a published figure in data whose currency and licence they can actually verify.

  • Compliance and regulatory-monitoring teams, who must keep a tamper-evident trail that an official figure was checked at a known time before it reached a product or a public statement.

  • Civic technologists and public servants, who want a transparent, reproducible view of how discoverable and reliably described public data is.

Why you can trust the verification

Three independent, checkable layers. You do not have to take DataPulse's word โ€” you can verify each with the published public key, the public Git source record, and the public transparency log:

Layer

What it proves

How to check it yourself

Signed envelope

Each per-dataset observation is Ed25519-signed over its exact content by a key in the published registry

python3 scripts/verify_external.py

Source of record

The served observation byte-matches the versioned Git source

python3 scripts/verify_external.py

Temporal witness

The health statement carries a Rekor/Sigstore public-log inclusion proof

python3 scripts/verify_external.py

Run it yourself, from anywhere, with no checkout and no DataPulse code:

curl -fsSLO https://raw.githubusercontent.com/r3dz4r/datapulse-my/main/scripts/verify_external.py
python3 verify_external.py

See Verify DataPulse externally for the full guide, and our methodology below for how health is judged.

Verify an observation receipt

scripts/observation_verify.py verifies receipt identity, signature, key registry validity, and any available chain linkage from local files. It makes no network calls in any mode. Supplying --health <artifact> additionally reproduces the normalized artifact digest and re-derives its dataset and freshness-status claims: only health_binding: checked and artifact_claims: verified attest those claims. Without --health, the report explicitly says artifact_claims: NOT verified; use --require-health-binding when that incomplete result must fail.

For receipts with a signed <commit>@<path> artifact locator, pass --repo owner/name to print the corresponding immutable raw-GitHub URL. The repository is supplied, never guessed or hardcoded. Fetch that URL separately, then give the saved file to --health; the URL is a discovery aid, not proof until the local digest and claims check succeeds.

A verification layer is only as honest as its method, so DataPulse deliberately tells you when it cannot be sure โ€” a source that cannot be proven current is labelled accordingly, never silently marked healthy. That is the boundary we hold: the platform proves the integrity and timing of its observations, not that an upstream government figure is semantically true. That distinction is the whole point of an evidence layer, and we do not blur it.

Dataset health

Health is reported as fresh, aging, stale, discontinued, degraded, browser-dependent, unreachable, unknown, unknown-freshness, or reference. Unknown freshness means the URL and content shape work, but neither a Last-Modified header nor a parseable content date proves when the data was updated. Reference means versioned lookup data is reachable and its record count is measured, while date-based freshness does not apply. Within the catalogue, data_type refines the reference family without changing the status: policy-reference rows (policy state that stays valid until superseded โ€” BNM OPR is current while unchanged, not stale) and reference-current rows (lookups that must still pass freshness, such as a bank-rate table that can itself go stale) are judged by their declared policy, while plain reference rows are static. The public _trust_summary shows the distribution and explicitly counts missing freshness and row-count signals.

Discontinued โ€” The source has stopped publishing new data. The data is frozen at the last known content date. This is not a freshness failure โ€” it's a publisher decision.

Current distribution (_trust_summary): 143 fresh ยท 94 aging ยท 153 stale ยท 1 discontinued ยท 3 degraded ยท 5 browser-dependent ยท 1 unreachable ยท 4 unknown-freshness ยท 14 reference

Subscribe: RSS feed โ€” get notified when dataset health changes.

Browser-dependent datasets

The current health summary identifies 5 browser-dependent sources (1.2% of the catalogue) that require a real browser to probe because their source pages render client-side JavaScript.

DataPulse uses Camofox, a self-hosted patched headless-Chromium sidecar, to probe these. The probe path is check.sh โ†’ Camofox sidecar โ†’ DOM snapshot โ†’ content-date extraction.

To enable browser probing:

  1. Run the Camofox Docker sidecar on a reachable address (default http://localhost:9377). The probe script and the GitHub Actions workflow pick this up from the CAMOFOX_BASE_URL environment variable; nothing in this repo encodes a public IP.

  2. Set CAMOFOX_BASE_URL to that address.

  3. Restart the timer with systemctl restart datapulse-health.timer.

Without Camofox, these datasets will sit at browser-dependent โ€” the honest status: DataPulse cannot probe them without a browser, so it says so rather than failing silently. See scripts/smoke_browser_probes.sh for isolated smoke tests.

Methodology

Topic

DataPulse's position

Health status

Ten-status taxonomy, judged by reachability + an honest freshness signal (Last-Modified, parseable content date, or declared policy) โ€” never a fabricated green checkmark. A series that stopped publishing is discontinued (a publisher decision, frozen data), not a freshness failure.

Licence

Every dataset declares its licence machine-readably. Creative Commons Attribution 4.0 (285); MBPP Government Open Data Terms (attribution required) (1); MIT License (8); Open Government Licence (Malaysia) (115); Publisher licence not stated; portal disclaimer applies (4); Singapore Open Data Licence v1.0 (attribution required) (5). A second party can reproduce this from datapulse.json โ†’ .datasets[].licence.

Freshness cadence

Each dataset is probed on its own tiered schedule (5-minute timer, cadence-aware) โ€” daily references, weekly fuel prices, monthly surveys, etc. Always with the human-readable steward and a stable custodian ID for publisher provenance.

Provenance

Stable custodian per dataset; signed probe attestations per observation

Observed claim

The platform proves what an official source was observed to be at a known time โ€” it does not claim upstream data is semantically true

Read-only + lawful

Publicly available, authenticated sources only โ€” never bypassed; rate-limited; identifies itself to sources

Verification

Fresh days are Rekor-witnessed; signed envelopes + Git source-of-record + public-log inclusion, checkable by anyone

Connect an AI agent

DataPulse exposes an AI-ready, read-only MCP server so agents can query the catalogue natively. It provides the same freshness, licence, schema-drift, and provenance evidence available to a human reviewer.

  • Endpoint: https://mcp.data-pulse.my/mcp (Streamable HTTP, no auth) Graded by mcpgrade โ€” replay with bash scripts/audit_mcpgrade.sh (pinned version, writes artifacts/mcpgrade/). The canonical tool count lives in mcp.json.

  • 19 tools: search_datasets, get_dataset, get_data_passport, find_stale, find_anomalies, find_deteriorating, find_recovering, find_unreliable, find_schema_drift, check_reconciliation, get_provenance, get_evidence, verify_dataset, get_freshness_summary, verify_evidence, trust_verdict, verify_attestation, find_by_licence, usage_summary

The public endpoint serves all 19 read-only tools over the 418-dataset catalogue.

get_evidence exposes pipeline receipts; verify_evidence performs cached transport-only live checks and does not update health.

Connect from Claude Desktop:

{
  "mcpServers": {
    "datapulse-my": {
      "transport": "streamable-http",
      "url": "https://mcp.data-pulse.my/mcp"
    }
  }
}

See llms.txt for the full discovery index, and docs/mcp-deploy.md for the deployment architecture.

Wire it into Claude Desktop via claude_desktop_config.json (30 seconds, no API key):

{
  "mcpServers": {
    "datapulse-my": {
      "transport": "streamable-http",
      "url": "https://mcp.data-pulse.my/mcp"
    }
  }
}

Restart Claude Desktop, confirm the hammer icon shows "datapulse-my" with the read-only tools listed above. Cursor / Cline use the same JSON in their MCP config panel.

Included datasets

418 official datasets across 44 publishers, including 30 GTFS transit feeds. Browse the published reports for plain-language health assessments, or use datapulse.json as the machine-readable index of every source, licence, health-report path, and declared refresh cadence.

Current coverage

Declared refresh cadences: annual (144); monthly (119); daily (48); as-required (35); quarterly (35); 30 seconds (14); biennial to triennial (survey years) (11); hourly (4); daily (weekdays) (2); weekly (2); daily (weekdays, 0900 MYT) (1); daily (weekdays, 1130 MYT) (1); daily (weekdays, 1200 MYT) (1); daily (weekdays, 1700 MYT) (1). Per-dataset cadence remains available in datapulse.json and each published health report.

How to use it

Start with datapulse.json to discover datasets and their official sources. Follow each health_report link for a plain-language assessment. Non-GTFS datasets also have matching machine-readable report envelopes under data/json/; the 30 GTFS transit feeds intentionally do not, and instead publish their health reports and GTFS samples.

For example, a data pipeline can inspect status, content_freshness_date, and freshness_signal_source before processing a source, while a researcher can review the known quirks before designing a collection method.

External verification

For a clone-less, independent check of the published Ed25519 dataset envelope, GitHub source parity, and Rekor/Sigstore health witness, see Verify DataPulse externally.

Every dataset in this catalogue ships with a publicly-signed Sigstore DSSE evidence receipt that an agent can verify offline, without trusting the DataPulse server. An agent (human or MCP) can obtain, for any dataset, the full health row + evidence + signed-receipt-verification in three MCP tool calls or fewer: verify_dataset โ†’ get_freshness_summary. The standard offline path is the verify_external.py command above.

For the portfolio-level health bundle, verify /signatures/health.latest.sigstore.json with the exact companion manifest at /signatures/datapulse.json. That signed-manifest snapshot is distinct from /datapulse.json, the current discovery manifest: the latter can change when generated metadata is refreshed. A valid signature proves the integrity of DataPulse's attested observation, not that upstream data is semantically true. Every refresh publishes signed bundles to the public Rekor log.

Monitoring

  • The VPS datapulse-health.timer wakes every 5 minutes and runs only the datasets whose cadence tier is due.

  • GitHub Actions performs a full weekly probe as a fallback and republishes the generated health, badge, feed, README, catalog snapshot, and delta artifacts.

  • RSS feed โ€” available.

  • Status badges โ€” available.

  • More datasets โ€” planned.

Adopt a dataset

Know a Malaysian public dataset that deserves dependable health metadata? Adopt it: verify its source and licence, document its schema and quirks, and submit a health report. See CONTRIBUTING.md for the expected three-file contribution model.

New contributors can start with the repository's Good first issues or propose a dataset through the GitHub issue forms. Maintainers use good first issue (yellow), adopt-a-dataset (blue), freshness-check (blue), bug (red), documentation (blue), question (purple), and wontfix (gray) to route contributions.

Licence

DataPulse is released under the MIT License. Source datasets remain subject to the licences and attribution requirements stated in their individual health reports.

Privacy

See PRIVACY.md for what DataPulse collects (transient operational logs for rate limiting and usage aggregation) and what it does not collect (no credentials, no accounts, no personal data).

DataPulse probes publicly-published open-data sources. We do not bypass authentication, CAPTCHAs, or terms-of-service restrictions. Every source we probe is publicly available without login; the data is aggregate/non-personal; and the probe respects each dataset's declared refresh frequency.

All scraping is rate-limited (5-minute cadence, dataset-tier cadence applied) and identifies itself via User-Agent. Sources we cannot probe without authentication, CAPTCHA bypass, or ToS violation are marked unreachable or browser-dependent โ€” never silently scraped through a workaround.

If you are a data source maintainer and would like DataPulse to adjust its probe cadence, exclude a dataset, or remove it from the manifest, please open a GitHub issue or contact the maintainers.

Available Tools

19 tools
check_reconciliationCheck Cross-Source ReconciliationA
Read-onlyIdempotent
Inspect

Return the published cross-source reconciliation group for a dataset name or id, including per-member counts, dates, statuses, tolerances, and contextual deltas. A discrepancy requires human review and does not prove either source is wrong. Use it to compare a dataset with its published cross-source group; do not use it for provenance or evidence receiptsโ€”use get_provenance or get_evidence instead. It reads precomputed reconciliation data, and single_source means no group contains the resolved dataset; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_nameYesStable dataset slug or exact display name to resolve, e.g. 'interestrates' or 'Monthly Interest Rates'; use search_datasets to discover valid values.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds valuable context beyond that: interpretation guidance ('does not prove either source is wrong'), the semantic meaning of 'single_source', the read-only/precomputed nature, and rate-limit behavior. Slight gap: no detail on what 'contextual deltas' means, but annotations carry the safety profile.

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 dense and informative without being wasteful. The core purpose is front-loaded in the first sentence, followed by usage boundaries and behavioral caveats. It packs many distinct pieces of guidance into a compact space, though the last sentence is slightly long and could be split for readability.

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 a single parameter, 100% schema coverage, rich annotations, and an output schema, the description covers key context: purpose, alternatives, interpretation, read-only behavior, and rate limiting. It lacks a mention of pagination or potential error conditions, but these are minor given the output schema and simple parameter surface.

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 100% and the schema already provides a clear description and examples. The description adds the resolution detail (slug or exact display name) by pointing to discoverability via search_datasets)Skip? It enriches the parameter meaning by tying it to the tool's purpose, though the schema already does most of the work.

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 ('Return') and resource ('published cross-source reconciliation group'), and enumerates the returned content (per-member counts, dates, statuses, tolerances, contextual deltas). It also explicitly differentiates from provenance/evidence tools, making its purpose unambiguous against siblings.

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 when to use (compare a dataset with its published cross-source group) and when not to use, naming the alternatives (get_provenance or get_evidence). It also warns that discrepancies require human review)Skip? It explains interpretation caveat, read-only nature, and rate limiting.

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

find_anomaliesIdentify Dataset Update AnomaliesA
Read-onlyIdempotent
Inspect

Return datasets flagged by the latest published anomaly detection (anomalies), ranked by how far the observed update interval exceeds its threshold. Optionally require a minimum publish-reliability grade; includes pipeline-computed anomaly and reliability evidence so agents do not recompute it. Use it for unusual update intervals; do not use it for worsening freshness, recovery, reliability grades, or structural driftโ€”use find_deteriorating, find_recovering, find_unreliable, or find_schema_drift instead. It reads precomputed anomaly data, so an empty result means no published row survives the selected filters; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoOptional exact published detection mode filter, e.g. 'rolling_14d' or 'cadence_fallback'; omit it to include every mode.
limitNoMaximum highest-ranked anomalies to return, e.g. 50; omit it to use 50 without changing the ranking.
min_reliabilityNoOptional inclusive published reliability floor, e.g. 'C' keeps A, B, and C; omit it to retain rows regardless of grade.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark read-only, idempotent, and non-destructive, but the description adds new context: it reads precomputed data, empty result semantics, no API key requirement, and rate limiting ('roughly one request per second with a small burst'). This exceeds what annotations provide.

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?

Four sentences, each carrying distinct value: purpose, evidence inclusion, usage routing, and operational caveats. No repetition of schema fields or annotations. Front-loaded with the core action and ranking, then conditional and exclusion guidance.

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?

Complete for a read-only query tool with an output schema. It covers purpose, alternatives, empty-result handling, authentication, and rate limits. The output schema already handles return value details, so no further description is needed.

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 baseline is 3. The description adds nominal context ('minimum publish-reliability grade' maps to min_reliability; 'ranked' relates to limit) but does not materially exceed the schema's parameter descriptions. No compensation needed.

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+resource ('Return datasets flagged by the latest published anomaly detection') and the ranking criterion ('how far the observed update interval exceeds its threshold'). Explicitly distinguishes from sibling tools by naming what it is not for and pointing to find_deteriorating, find_recovering, find_unreliable, and find_schema_drift.

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?

Gives explicit when-to-use ('Use it for unusual update intervals') and when-not-to-use ('do not use it for worsening freshness, recovery, reliability grades, or structural drift') with named alternatives. This leaves no ambiguity about tool selection.

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

find_by_licenceScope Reusable Data by LicenceA
Read-onlyIdempotent
Inspect

Return all datasets with the given licence, summarised. Use to enumerate what's available under a specific licence for compliance/reuse scoping. Use it to enumerate one licence; do not use it to discover by topic or inspect a dataset's citation contextโ€”use search_datasets or get_provenance instead. It reads published manifest data, so an empty list means no published dataset has the resolved licence; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
licenceYesExact published licence name or supported alias, e.g. 'Creative Commons Attribution 4.0'; use search_datasets to discover licence values.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it reads published manifest data, an empty list means no published dataset has the resolved licence, DataPulse is read-only and requires no API key, and the edge limits clients to roughly one request per second with a small burst. This is useful operational context that annotations do not provide.

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 compact and front-loaded: the core action and output are in the first sentence, followed by usage boundaries and operational notes. Every sentence earns its place, and there is no redundant restating of the tool name or schema fields.

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 single-parameter tool with a rich schema, clear annotations, and an output schema, the description covers the essential selection and invocation context: what it returns, when to use it, when not to, and operational constraints. Nothing an agent needs to call it 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 description coverage is 100%, so the schema already documents the licence parameter with examples and a pointer to search_datasets for discovering values. The description adds the notion of 'resolved licence' and the exact-match/alias behavior, which slightly enriches the schema. Since the schema carries most of the burden, a 4 is appropriate rather than a 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 states a specific verb ('Return all datasets with the given licence'), a clear resource (datasets by licence), and a summarised output. It also distinguishes itself from siblings by explicitly naming search_datasets and get_provenance as alternatives for different intents, so an agent can select it correctly without opening schemas.

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?

The description gives explicit when-to-use guidance ('enumerate what's available under a specific licence for compliance/reuse scoping') and explicit when-not-to-use guidance ('do not use it to discover by topic or inspect a dataset's citation contextโ€”use search_datasets or get_provenance instead'). It also clarifies the single-licence scope, leaving no ambiguity about alternatives.

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

find_deterioratingIdentify Deteriorating Dataset TrendsA
Read-onlyIdempotent
Inspect

Return datasets whose published freshness trend is deteriorating, ranked by staleness slope. Optionally require a minimum historical anomaly rate; includes pipeline-computed trend and reliability evidence so agents do not recompute it. Use it for worsening freshness trends; do not use it for anomalies, recovery, reliability grades, or structural driftโ€”use find_anomalies, find_recovering, find_unreliable, or find_schema_drift instead. It reads precomputed trend data, so an empty result means no published deteriorating row survives the selected filters; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum highest-ranked deteriorating datasets to return, e.g. 50; omit it to use 50 without changing ranking.
min_anomaly_rateNoOptional inclusive anomaly-rate filter on published history, e.g. 25.0; omit it to retain every deteriorating row.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it reads precomputed trend data, an empty result means no deteriorating row survives the filters, DataPulse is read-only and requires no API key, and there is a rate limit of roughly one request per second with a small burst. This is useful operational context that annotations do not provide. It does not contradict 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 dense paragraph that front-loads the core purpose and ranking criterion, then covers exclusions, alternatives, and operational notes. It earns its length by packing in usage guidance and rate-limit context, though it could be slightly more scannable with sentence breaks. No wasted words.

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 has only 2 optional parameters, a rich output schema, and annotations covering read-only/idempotent behavior, the description is complete. It explains what the tool returns, how results are ranked, when to use it, when not to use it, what an empty result means, and the rate limit. An agent has everything needed to select and invoke it 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?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly, including defaults, ranges, examples, and semantics. The description adds a small amount of context by mentioning 'minimum historical anomaly rate' and 'staleness slope' ranking, but it does not need to compensate for any schema gap. 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 states a specific verb ('Return'), a specific resource ('datasets whose published freshness trend is deteriorating'), and a ranking criterion ('staleness slope'). It also explicitly distinguishes itself from four sibling tools by name, so an agent can tell it apart from find_anomalies, find_recovering, find_unreliable, and find_schema_drift without opening their schemas.

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?

The description explicitly says when to use it ('Use it for worsening freshness trends') and when not to use it ('do not use it for anomalies, recovery, reliability grades, or structural drift'), naming the exact alternative tools. It also clarifies that it reads precomputed trend data, so agents know not to recompute it. This is explicit when/when-not/alternatives guidance.

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

find_recoveringIdentify Recovering Dataset TrendsA
Read-onlyIdempotent
Inspect

Return datasets whose published freshness trend is recovering, with the fastest staleness reductions first. Includes pipeline-computed trend and publish-reliability evidence. Use it for improving freshness trends; do not use it for deterioration, anomalies, reliability grades, or structural driftโ€”use find_deteriorating, find_anomalies, find_unreliable, or find_schema_drift instead. It reads precomputed trend data, so an empty result means no published recovering row exists; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum fastest-recovering datasets to return, e.g. 50; omit it to use 50 without changing ranking.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: it reads precomputed trend data, explains the meaning of an empty result, states that it requires no API key, and discloses the rate limit with pacing advice. All of this is useful and consistent with the readOnlyHint, idempotentHint, openWorldHint, and destructiveHint annotations.

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 compact and front-loaded: purpose first, then usage guidance, then behavioral/rate-limit details. Every sentence adds necessary information without redundancy or 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?

For a single-parameter read-only tool with an output schema, the description covers purpose, selection criteria, output semantics, authentication, and rate limits. Nothing an agent needs to invoke it correctly is missing from the textual description.

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 'limit' parameter is already well-documented with defaults, bounds, and examples. The description adds a small clarification that omitting limit keeps ranking unchangedebb, but the parameter's core meaning is fully conveyed by the schema, so the baseline score 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?

The description states a specific verb and resource: 'Return datasets whose published freshness trend is recovering' with a clear ordering ('fastest staleness reductions first'). It also distinguishes itself by naming exact alternatives for other cases, so an agent can immediately tell it apart from sibling tools.

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?

It explicitly says when to use this tool ('Use it for improving freshness trends') and when not to use it, listing the specific sibling tools for deterioration, anomalies, reliability grades, and structural drift. This is the strongest possible guidance for tool selection.

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

find_schema_driftIdentify Schema and Content DriftA
Read-onlyIdempotent
Inspect

Return datasets with published structural or record-count drift evidence, ranked with structural changes first. Optionally require a minimum number of structural transitions; includes pipeline-computed evidence so agents do not infer drift from freshness alone. Use it for structural or record-count changes; do not use it for freshness risk, anomalies, trends, or reliabilityโ€”use find_stale, find_anomalies, find_deteriorating, or find_unreliable instead. It reads precomputed drift data, so an empty result means no published drift row survives the selected filters; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum structural-first ranked drift results to return, e.g. 50; omit it to use 50 without changing ranking.
min_change_countNoInclusive filter on the larger published shape or column transition count, e.g. 1; omit it to include every drift row.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior, but the description adds valuable operational context: it reads precomputed drift data, explains that an empty result means no published drift row survives filters, notes DataPulse requires no API key, and warns about the rate limit with pacing guidance. 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.

Conciseness5/5

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

The description is dense but every clause earns its place: core behavior, parameter nuance, usage boundaries, empty-result interpretation, auth/rate-limit context, and alternative tools. It front-loads the primary purpose and avoids 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?

The description covers purpose, parameter semantics, behavioral caveats, rate limits, and sibling routing. With an output schema present, the return shape is already documented, so no critical information is missing 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.

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 adds meaningful nuance by framing min_change_count as 'a minimum number of structural transitions' and reinforcing that results are ranked structural-first, which goes slightly beyond the schema's raw parameter descriptions.

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: 'Return datasets with published structural or record-count drift evidence, ranked with structural changes first.' It clearly distinguishes the tool from siblings by naming the exact purpose (drift detection) and later lists what it is not for.

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?

The description explicitly states when to use the tool and when not to: 'Use it for structural or record-count changes; do not use it for freshness risk, anomalies, trends, or reliabilityโ€”use find_stale, find_anomalies, find_deteriorating, or find_unreliable instead.' This is model guidance with named alternatives.

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

find_staleIdentify Freshness and Schema RisksA
Read-onlyIdempotent
Inspect

Return datasets whose status is aging, stale, or degraded, plus datasets missing from the latest health snapshot. Use when an agent needs to know which data has a freshness or schema-validity risk. Use it to enumerate freshness or schema-risk candidates; do not use it for anomalies, trends, reliability, or driftโ€”use find_anomalies, find_deteriorating, find_unreliable, or find_schema_drift instead. It reads the published health snapshot, so an empty result means no rows met this snapshot-based rule; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_age_hoursNoMaximum published-snapshot age before otherwise healthy rows are included, e.g. 72; omit it to use 24 hours.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description adds meaningful behavioral context: it reads the published health snapshot, empty results mean no rows met the snapshot-based rule, DataPulse is read-only, no API key is required, and there is a one-request-per-second edge limit with a small burst. These details help an agent set expectations and handle retries.

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: the first defines the function, the second and third cover usage and exclusions, and the fourth adds essential behavioral and rate-limit context. It is front-loaded with the core purpose before routing to alternatives.

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 tool with one optional parameter, rich annotations, an output schema, and explicit sibling distinctions, this description is complete. It covers what the tool returns, when to use it, what not to use it for, empty-result semantics, authentication, and rate-limit behaviorโ€”nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents max_age_hours with examples and defaults. The main description does not add extra meaning about the parameter beyond what the input schema already provides, which aligns with the baseline of 3 for high 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 verb and resource: 'Return datasets whose status is aging, stale, or degraded, plus datasets missing from the latest health snapshot.' It clearly distinguishes this tool from siblings by naming the relevant risk categories and by referencing the published health snapshot, which anchors its scope.

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?

The description gives explicit when-to-use guidance: use when an agent needs to know freshness or schema-validity risk and to enumerate candidates. It also gives strong negative guidance: do not use for anomalies, trends, reliability, or drift, and explicitly names find_anomalies, find_deteriorating, find_unreliable, and find_schema_drift as alternatives.

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

find_unreliableIdentify Unreliable Dataset PublishingA
Read-onlyIdempotent
Inspect

Return datasets whose evaluated publish-reliability grade is at or below a threshold (the unreliable ones), with the worst grades and lowest on-time percentages first. Reliability measures timeliness of successful freshness observations, not uptime; sample days are included so agents can judge evidence depth. Use it for timeliness reliability grades; do not use it for individual anomalies, trends, or structural driftโ€”use find_anomalies, find_deteriorating, find_recovering, or find_schema_drift instead. It reads precomputed reliability data, so an empty result means no published grade meets the threshold; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum worst-ranked unreliable datasets to return, e.g. 50; omit it to use 50 without changing ranking.
at_or_below_gradeNoInclusive published reliability threshold; e.g. 'C' returns grades C, D, and F; omit it to use C.C

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: it clarifies that reliability measures timeliness of successful freshness observations (not uptime), that sample days are included for evidence depth, that it reads precomputed data, and that DataPulse is read-only with rate limits (roughly one request per second with burst). This is rich behavioral disclosure. The only minor gap is not describing the exact output structure, but the output schema exists, so that's not required.

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 dense paragraph that front-loads the core purpose and ranking order, then adds usage exclusions, behavioral context, and rate-limit guidance. Every sentence earns its place, though the paragraph is long and could benefit from slight structural separation (e.g., a second sentence for rate limits). It is appropriately sized for the complexity and contains no 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?

Given the tool's moderate complexity (2 optional params, output schema present, rich annotations), the description is complete. It covers what the tool returns, how results are ordered, what reliability means, when to use alternatives, how to interpret empty results, and operational constraints (rate limits). An agent has everything needed to select and invoke this tool correctly without opening the schema.

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 (limit and at_or_below_grade) with defaults, examples, and inclusive threshold semantics. The description adds the ranking context ('worst grades and lowest on-time percentages first') and the inclusive threshold meaning ('at or below'), which slightly enhances the schema. However, the schema already explains the inclusive behavior in the at_or_below_grade description, so the added value is marginal. 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 states a specific verb ('Return'), a specific resource ('datasets whose evaluated publish-reliability grade is at or below a threshold'), and a clear scope ('the unreliable ones'). It also distinguishes itself from siblings by naming find_anomalies, find_deteriorating, find_recovering, and find_schema_drift as alternatives for different concerns. This is a clear, specific purpose that an agent can act on.

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?

The description explicitly says when to use it ('Use it for timeliness reliability grades') and when not to use it ('do not use it for individual anomalies, trends, or structural drift'), and names the exact sibling tools to use instead. It also clarifies that an empty result means no published grade meets the threshold, which is a key interpretation guideline. This is exemplary usage guidance.

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

get_data_passportRead Dataset Evidence PassportA
Read-onlyIdempotent
Inspect

Return one bounded, machine-readable Dataset Passport v1 for a canonical dataset ID. It reads the published Passport artifact only; it does not fetch an upstream source or create evidence. The Passport describes observed metadata and evidence availability, not semantic truth, completeness, certification, legal permission, safety, or AI admission. Use it for the bounded Passport artifact; do not use it for current health detail or citation contextโ€”use get_dataset or get_provenance instead. It reads precomputed published data, and evidence_available=false identifies an unavailable or unsupported Passport; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesStable dataset slug returned by search_datasets, e.g. 'fuelprice'; this tool requires the slug, not a display name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, but the description adds substantial context: it reads precomputed published data, does not fetch upstream or create evidence, and describes a bounded artifact not representing semantic truth, completeness, certification, legal permission, safety, or AI admission. It also discloses DataPulse is read-only, needs no API key, and is rate-limited to roughly one request per second with a burst, giving the agent realistic expectations beyond the structured 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 longer than typical, but every sentence earns its place: core action, artifact scope, semantic limitations, alternative tools, and rate-limit guidance are all distinct, non-redundant facts. It is front-loaded with the primary purpose and then layers caveats in a logical order, though it could be slightly tightened without losing information.

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 is thorough: it specifies the artifact version, what the passport describes and does not describe, the exact meaning of evidence_available=false, authentication and rate limits, and clear routing to sibling tools. The output schema exists, so return values need no description, but all other operational context required for correct invocation is present.

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 input schema has 100% coverage, including a detailed description of dataset_id as a stable slug returned by search_datasets, an example, and the requirement that it must be a slug rather than a display name. The description calls it a 'canonical dataset ID' but adds nothing beyond that; the schema already carries the semantic weight. 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 begins with a specific verb and resource: 'Return one bounded, machine-readable Dataset Passport v1 for a canonical dataset ID.' It also distinguishes itself from siblings by explicitly stating it 'reads the published Passport artifact only; it does not fetch an upstream source or create evidence' and contrasts with 'get_dataset or get_provenance'. This leaves no ambiguity about the tool's function.

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?

The description gives explicit when-to-use and when-not-to-use guidance: 'Use it for the bounded Passport artifact; do not use it for current health detail or citation contextโ€”use get_dataset or get_provenance instead.' It further clarifies the semantics of evidence_available=false and rate-limit behavior, so an agent can decide when to invoke it and what to expect.

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

get_datasetInspect Dataset Health and DetailsA
Read-onlyIdempotent
Inspect

Return full detail for one dataset id, including its latest health status and last-verified timestamp, content_freshness_date, and freshness_signal_source (last_modified, content_parse, or none). Use to fetch the provenance/citation metadata for a dataset found via search_datasets and distinguish unknown-freshness from proven stale data. Use it for one dataset's current published detail; do not use it for citation context or a Passportโ€”use get_provenance or get_data_passport instead. It reads published data, so an absent health row is reported as unknown rather than probed live; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesStable dataset slug returned by search_datasets, e.g. 'dosm_cpi_state'; this tool requires the slug, not a display name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral context: it states that absent health rows are reported as unknown rather than probed live (open-world behavior), that DataPulse is read-only and requires no API key, and that rate limits are roughly one request per second with a small burst. This goes beyond the annotations without contradicting them.

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 fairly long but packs essential information: purpose, key fields, usage guidance, exclusions, and rate-limit warnings. It is front-loaded with the core functionality before getting into alternatives and constraints. It could be slightly more concise, but every sentence earns its place through actionable 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?

The tool is simple (one parameter, no nested objects) and has an output schema, so the description doesn't need to detail return values. It covers the main use case, alternatives, and operational constraints (rate limiting, no API key, unknown-freshness behavior). The only minor gap is not specifying the exact format of the freshness_signal_source values, but the description does list the possible values.

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 input schema already describes the parameter dataset_id with an example and the requirement of a slug. The description reinforces this by stating it requires the slug, not a display name, which adds slight value. However, since schema coverage is 100%, the baseline of 3 is appropriate; the description's additional clarification is helpful but not critical.

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 verb ('fetch full detail') and resource ('one dataset id'), and specifies the exact fields returned (health status, last-verified timestamp, content_freshness_date, freshness_signal_source). It distinguishes itself from sibling tools by explicitly listing what to use instead for other purposes.

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?

The description provides explicit when-to-use ('for one dataset's current published detail', 'to fetch provenance/citation metadata for a dataset found via search_datasets') and when-not-to-use ('do not use it for citation context or a Passportโ€”use get_provenance or get_data_passport instead'). It also names alternatives clearly.

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

get_evidenceAudit Published Evidence ReceiptA
Read-onlyIdempotent
Inspect

Use for a deep evidence audit or to inspect a provenance and evidence receipt. Returns the complete published evidence receipt for one dataset: probe time, transport, access dependency, freshness, schema drift / record-count drift, tolerance, status, anomaly fields, and receipt/evidence references. It reads published pipeline evidence, not a live source fetch: you may report what the pipeline observed, but must not infer the source is currently reachable or semantically true. Use it for a deep audit before or alongside verification. search_datasets โ†’ get_evidence โ†’ verify_evidence โ†’ verify_attestation. Use it for a complete published receipt; do not use it for a live transport check or signature verificationโ€”use verify_evidence or verify_attestation instead. It reads precomputed evidence, so evidence_available=false means no published health row; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesStable dataset slug returned by search_datasets for its complete receipt, e.g. 'fuelprice'; this tool requires the slug, not a display name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly, openWorld, idempotent, and non-destructive annotations, the description discloses crucial runtime behavior: it reads precomputed pipeline evidence rather than live sources, evidence_available=false semantics, the one-request-per-second rate limit with burst, and the DataPulse read-only/no-API-key property. It also warns against inferring current source reachability or truth.

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 long but every sentence carries useful information: field list, workflow sequence, exclusions, caveats, and rate limiting. It is front-loaded with the core purpose and then adds necessary operational detail. Slight redundancy around 'use it for a complete published receipt' and the earlier audit phrasing prevents a perfect 5.

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 complex sibling landscape and the need to route agents to correct verification tools, the description covers purpose, alternatives, workflow, behavioral caveats, rate limits, and failure semantics. The presence of an output schema and full annotations further reduces the need to document return values or safety, so nothing essential is missing.

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

Parameters3/5

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

Schema coverage is 100% and the dataset_id parameter is already well described in the schema, including 'stable dataset slug returned by search_datasets' and the requirement to use a slug rather than a display name. The tool description adds little beyond the schema's parameter documentation, so the 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 states a precise verb and resource: it retrieves the complete published evidence receipt for one dataset and lists the exact fields included. It also distinguishes itself from sibling verification tools by explicitly naming what it is not for, making its purpose unambiguous.

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?

The description gives explicit when-to-use guidance ('deep audit before or alongside verification'), a recommended pipeline order (search_datasets โ†’ get_evidence โ†’ verify_evidence โ†’ verify_attestation), and clear exclusions ('do not use it for a live transport check or signature verificationโ€”use verify_evidence or verify_attestation instead'). This is model usage guidance.

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

get_freshness_summarySummarize Catalogue FreshnessA
Read-onlyIdempotent
Inspect

Return a freshness-at-a-glance summary of the published catalogue: fresh, aging, stale, and reference counts plus the latest health check time. Use it for catalogue-level freshness context; do not use it to enumerate affected datasetsโ€”use find_stale instead. It reads the latest published snapshot, so missing counts or check time mean the artifact omitted them; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, and non-destructive. The description goes beyond this by disclosing that it reads the latest published snapshot (and what missing counts mean), that DataPulse requires no API key, and that the edge imposes a rate limit of roughly one request per second with a small burst. This adds meaningful behavioral context that annotations alone do not convey.

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 dense, well-organized sentences. The first sentence front-loads the core function and outputs; the second covers usage, limitations, and operational guidance. Every clause earns its placeโ€”no fluff or repetition.

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 output schema exists (so return structure doesn't need detailing), the description still summarizes key return contents, specifies when to use it, clarifies data source and completeness implications, and includes rate-limit guidance. Nothing an agent needs to call it 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?

The tool has zero parameters, so the baseline is 4 per the rubric. The description does not include any parameter-specific details, which is appropriate since there are none to document. It correctly avoids fabricating meaning for a schema with no properties.

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 precise verb ('Return') and resource ('freshness-at-a-glance summary of the published catalogue'), lists the exact outputs (fresh, aging, stale, and reference counts plus latest health check time), and immediately distinguishes it from a sibling ('do not use it to enumerate affected datasetsโ€”use find_stale instead'). This is unambiguous and self-sufficient.

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?

It explicitly states when to use ('catalogue-level freshness context') and when not to ('enumerate affected datasets'), names the alternative tool (find_stale), and adds practical constraints (reads latest snapshot, rate limiting with pace/retry advice). The agent gains clear decision rules without needing to infer anything.

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

get_provenanceCite Dataset ProvenanceA
Read-onlyIdempotent
Inspect

Use when asked 'can I cite this source?', for licence and attribution, or for citation-ready provenance. Returns source, steward, licence/attribution context, canonical URL, and compact published evidence context: probe time, transport, access dependency, freshness signal, schema drift / record-count drift context, anomaly flag, and status. Bind a citation to dataset identity, source/evidence URL, observed-at or last-checked time, DataPulse status/verdict, licence/attribution, and a receipt/evidence digest when available. You may cite the returned provenance and describe its published evidence; it is not a freshness guarantee and does not itself verify the source is current. For pre-trust use search_datasets โ†’ verify_dataset โ†’ get_provenance. Use it for citation-ready provenance; do not use it for full evidence or a live comparisonโ€”use get_evidence or verify_evidence instead. It reads published evidence context, so absent fields mean the pipeline did not publish that value; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idsYesDataset slugs returned by search_datasets for a batched citation lookup, e.g. ['fuelprice', 'pricecatcher']; preserve order and use get_dataset for display-name resolution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and mutability. The description adds critical behavioral context beyond annotations: it explains the data source (published evidence context), the meaning of absent fields, that it is not a freshness guarantee, that DataPulse requires no API key, and the rate limit (one request per second with small burst). This is strong but not perfectโ€”it could clarify the response shape or error handling, but it goes far beyond what annotations provide.

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 long but front-loaded with the primary use case and return-list summary, then provides usage routing, behavioral caveats, and rate limits. Every sentence serves a purpose, but the density is high and some details (e.g., 'compact published evidence context') are repeated. It is structured logically and not redundant, so it earns a 4.

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?

This is a complex tool with a rich output schema, but the description covers all essential context: when to use, what it returns, what it does not do, the data source semantics, rate limits, and how it fits with sibling tools. Given the existence of an output schema, the description does not need to detail return values, and it is complete enough for an agent to call it correctly. A 5 is justified.

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 100%, so the schema already documents the parameter well, including examples and the note about preserving order. The description adds value by explaining the expected format (dataset slugs from search_datasets) and the relationship to get_provenance, which is useful for correct invocation. It slightly over-extends by mentioning get_dataset for display-name resolution, but that is helpful context. Baseline 3 is exceeded because of the added guidance, but not a 5 since the description doesn't add much beyond what the schema has.

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

Purpose5/5

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

States a specific verb ('get') and resource (provenance) and clearly enumerates what the tool returns (source, steward, licence/attribution, canonical URL, evidence context, etc.). It is distinct from siblings like get_evidence and verify_evidence, and the description explicitly contrasts it with those tools, so an agent can tell them apart.

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 states when to use the tool ('Use when asked can I cite this source?', for citation-ready provenance) and when not to use it ('do not use it for full evidence or a live comparisonโ€”use get_evidence or verify_evidence instead'). Provides a recommended pipeline ('search_datasets โ†’ verify_dataset โ†’ get_provenance') and notes rate limits and retry behavior. This is exemplary guidance.

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

search_datasetsFind Malaysian Public DataA
Read-onlyIdempotent
Inspect

Use for discovery only: find DataPulse's 418 Malaysian public datasets by topic, source, or licenceโ€”for example, 'Malaysian public data inflation', licence and attribution, or a government dataset source. Returns ranked matches with id, title, source, licence, published status, and score. This is not trust verification: a status is published pipeline context, not proof that a dataset is current or reliable. For pre-trust use search_datasets โ†’ verify_dataset โ†’ get_provenance. Use it to discover candidates; do not use it for a trust decisionโ€”use verify_dataset instead. It reads published catalogue data, so no match means the published catalogue has no matching entry; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum highest-ranked discovery matches to return, e.g. 10; omitted defaults to 10 and does not change ranking.
queryYesTopic or task phrasing used to rank discovery candidates, e.g. 'Malaysian public data inflation'; use a returned id with get_dataset.
sourceNoOptional publisher/source substring filter applied before ranking, e.g. 'OpenDOSM'; omit it to search every source.
licenceNoOptional exact licence name or supported alias applied before ranking, e.g. 'CC BY 4.0'; omit it to search every licence.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond that: it is discovery-only, not trust verification, and it discloses the rate limit ('roughly one request per second with a small burst, so pace or retry'). It also explains that 'published status' is pipeline context, not a reliability proof. Minor gap: it doesn't describe pagination or what happens when limit is exceeded, but the rate-limit disclosure is strong.

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 dense but well-structured: it front-loads the core purpose, then the trust caveat, then the pipeline guidance, then the rate-limit note. Every sentence earns its place, though the final sentence is long and packs several distinct facts (read-only, no API key, rate limit) into one clause, which slightly reduces scannability.

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 discovery tool with a rich output schema, full parameter documentation, and safety annotations, the description covers the essential context: what it returns, how to use it in the larger workflow, what it does not do, and operational constraints. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters with examples and defaults. The description adds a little context by explaining that source and licence filters are applied before ranking, and that query is topic/task phrasing, but it mostly restates what the schema already provides. 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 states a specific verb ('find'), a resource ('DataPulse's 418 Malaysian public datasets'), and the dimensions by which to search (topic, source, licence). It also explicitly contrasts with trust verification and names the sibling verify_dataset, so an agent can distinguish it from the many sibling tools.

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?

The description gives explicit when-to-use guidance ('Use it to discover candidates; do not use it for a trust decisionโ€”use verify_dataset instead') and even names the intended pre-trust pipeline: search_datasets โ†’ verify_dataset โ†’ get_provenance. It also clarifies the meaning of no matches, which is a usage-relevant edge case.

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

trust_verdictAggregate a Published Trust VerdictA
Read-onlyIdempotent
Inspect

Return published attestation facts, the unsigned methodology-versioned trust score, numeric components, and component_availability reasons, plus existing health/trend/drift/reconciliation evidence for one canonical dataset id, e.g. 'fuelprice'. This tool does not re-probe or verify the signature; call verify_attestation separately. Use it to assemble the published trust view; do not use it for receipt verification, live comparison, or signature verificationโ€”use verify_dataset, verify_evidence, or verify_attestation instead. It reads precomputed artifacts, so missing component availability explains omitted evidence rather than a live probe; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesStable dataset slug returned by search_datasets to aggregate, e.g. 'fuelprice'; display names are not resolved here.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond annotations: it explains the tool reads precomputed artifacts rather than probing live, that missing component availability explains omitted evidence, and that DataPulse is read-only with no API key required. It also clarifies the tool does not verify signatures, which is a meaningful behavioral disclosure. Minor gap: it doesn't detail the exact structure of the returned trust score or evidence objects, but the output schema likely covers that.

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 dense but well-organized, front-loading the core purpose and then covering exclusions, usage guidance, and operational constraints. Every sentence adds information. It could be slightly more concise, but the density is justified given the need to distinguish from many sibling tools.

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 read-only aggregation tool with a single parameter, full schema coverage, and an output schema, the description is complete. It covers what the tool returns, what it does not do, when to use it, and operational constraints. The output schema handles return-value details, so nothing critical 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 schema already documents the single parameter. The description adds value by explaining the parameter is a stable dataset slug returned by search_datasets, giving an example ('fuelprice'), and clarifying that display names are not resolved here. This goes beyond the schema's basic description and examples.

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 aggregates published attestation facts, trust score, numeric components, and evidence for one canonical dataset id. It distinguishes itself from sibling verification tools by explicitly naming verify_attestation, verify_dataset, and verify_evidence as alternatives.

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?

The description explicitly states when to use this tool ('assemble the published trust view') and when not to use it ('do not use it for receipt verification, live comparison, or signature verification'), naming the specific sibling tools to use instead. It also provides operational guidance about rate limits and retry behavior.

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

usage_summarySummarize Aggregate Tool UsageA
Read-onlyIdempotent
Inspect

Aggregate anonymous tool usage for an inclusive ISO date range, e.g. 2026-08-01 to 2026-08-07. Returns total_calls, by_outcome, by_tool, by_dataset, trust_verdict_calls (the count of trust_verdict records regardless of outcome or result shape), and trust_distribution (counts of returned trust verdicts by published score band: 90-100, 75-89, 50-74, 25-49, 0-24) for the inclusive range. Use it for aggregate tool activity; do not use it to find data-quality risksโ€”use find_stale, find_anomalies, find_deteriorating, find_recovering, find_unreliable, or find_schema_drift instead. It reads persisted usage records, so zero totals mean no retained records in that range; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceYesInclusive first day of the persisted-record window, e.g. '2026-08-01'; it must not be after until.
untilYesInclusive last day of the persisted-record window, e.g. '2026-08-07'; it must not be before since.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent, and the description adds non-redundant behavioral context: it reads persisted records, zero totals mean no retained records, requires no API key, and the edge is rate-limited to roughly one request per second. This goes beyond the structured annotations.

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?

Every sentence earns its place: purpose, return shape, when-to-use/alternatives, and behavioral caveats. The most important scoping and exclusion information is front-loaded before lower-level details.

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?

Complete for a read-only aggregate tool: parameters are fully covered, return values are explained, alternatives are named, and operational constraints (rate limit, no API key, zero-total meaning) are given. Nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters with examples and constraints. The description adds the aggregate 'inclusive ISO date range' framing and an example range, but does not carry the semantic burden.

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 ('aggregate') and resource ('tool usage') with an explicit inclusive ISO date range and enumerates the exact return metrics. It also distinguishes itself from the data-quality find_* siblings, so an agent can select it correctly.

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 use it for 'aggregate tool activity' and clearly says not to use it for data-quality risks, naming six alternatives in the same tool family. This is unambiguous routing guidance with no reliance on inference.

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

verify_attestationVerify Signed Attestation ChainA
Read-onlyIdempotent
Inspect

Use to verify a signed published probe attestation after an evidence audit. Returns L1 signature, key, time, and chain-link checks; optional L2 replay of daily heads to a Git-tag anchor; and L3 scope, which requires verify_evidence for live transport. A valid signature proves attestation integrity and scope, not upstream semantic truth or currentness. For a deep audit use search_datasets โ†’ get_evidence โ†’ verify_evidence โ†’ verify_attestation. Use it for signed-attestation integrity; do not use it for published receipt verification, a live transport comparison, or an aggregate verdictโ€”use verify_dataset, verify_evidence, or trust_verdict instead. L2 is not run unless replay_chain is set, and a failed level reports an unsatisfied check rather than upstream semantic truth; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesDataset slug returned by search_datasets or an exact published digest reference, e.g. 'fuelprice'; the slug resolves through the attestation index.
replay_chainNoSet true to perform the slower L2 daily-head replay to a Git tag, e.g. true; omit it to run L1 only.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds substantial behavioral context beyond those hints: L2 replay is not run unless replay_chain is set, a failed level reports an unsatisfied check rather than upstream semantic truth, a valid signature proves attestation integrity and scope but not semantic truth or currentness, and DataPulse is read-only with no API key and rate limits of roughly one request per second with a small burst. This is rich, non-obvious behavioral disclosure that an agent needs for correct invocation.

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 dense but every sentence earns its place: purpose, scope, exclusions, alternatives, behavioral caveats, and rate limits are all covered. It is somewhat long, but the density of useful routing and behavioral information justifies the length. The most important scoping information is front-loaded in the first sentence, and the rate-limit note is placed at the end where it is still discoverable.

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 (three verification levels, optional replay, rate limits, and multiple sibling tools), the description is complete. It covers what the tool verifies, what it does not verify, when to use it, when not to use it, the effect of the optional parameter, and operational constraints. The output schema exists, so return values need not be described. An agent has everything needed to select and invoke this tool correctly.

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 100%, so the schema already documents both parameters well. The description adds value by explaining the behavioral consequence of replay_chain (slower L2 daily-head replay to a Git tag, omitted for L1 only) and by clarifying that reference can be a dataset slug or an exact published digest reference. It doesn't add syntax details beyond the schema, but it reinforces the semantic distinction between the two parameters and their runtime effects.

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: 'verify a signed published probe attestation after an evidence audit.' It clearly distinguishes the tool from siblings by naming verify_dataset, verify_evidence, and trust_verdict as alternatives for other verification tasks. The scope of L1/L2/L3 checks is explicitly stated, so an agent can tell exactly what this tool does and what it does not do.

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?

The description provides explicit when-to-use and when-not-to-use guidance: use it for signed-attestation integrity, not for published receipt verification, live transport comparison, or aggregate verdicts. It also names the alternatives (verify_dataset, verify_evidence, trust_verdict) and gives a recommended deep-audit sequence: search_datasets โ†’ get_evidence โ†’ verify_evidence โ†’ verify_attestation. This is exemplary routing guidance.

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

verify_datasetVerify Dataset Before RelyingA
Read-onlyIdempotent
Inspect

This is the preferred single-call pre-trust check for 'is this dataset current?', stale, unknown-freshness, degraded, or browser-dependent questions, and whenever an agent must verify before relying on data. Returns dataset metadata, published evidence and fail-closed signed receipt verification with artifact references. It verifies published artifacts, not a live source check: you may infer whether their receipt verifies, but must not infer current upstream availability or semantic truth. Use search_datasets โ†’ verify_dataset โ†’ get_provenance. Use it for one published pre-trust check; do not use it for a live transport comparison or attestation-chain verificationโ€”use verify_evidence or verify_attestation instead. It verifies precomputed published artifacts, so a failed check does not identify current upstream availability; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesStable dataset slug returned by search_datasets for the published receipt check, e.g. 'fuelprice'; this tool requires the slug, not a display name.
include_proof_stepsNoSet true to include bounded verifier diagnostics for an audit, e.g. false; omit it to suppress diagnostics without changing verification.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, idempotentHint, openWorldHint, and non-destructive hints. The description goes beyond them by disclosing that this verifies precomputed published artifacts rather than live sources, that a failed check does not indicate current upstream availability, that verification is fail-closed, and that semantic truth must not be inferred. 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 dense but each sentence carries useful information: purpose, scope, limitations, pipeline, alternatives, and rate limits. There is minor redundancy around the 'verifies published artifacts, not a live source' point, but the front-loaded purpose and the clear structure keep it effective.

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 tool with this complexity and an existing output schema, the description covers all needed operational context: when to use, what it returns, what it cannot tell the agent, alternatives, pipeline ordering, read-only auth behavior, and rate limits. Nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters, including the required slug semantics and the include_proof_steps behavior. The description does not meaningfully add parameter-level detail beyond what the schema provides, so the baseline score of 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?

States a specific verb (verify) and resource (dataset), plus a clear scope: a single-call pre-trust check for questions about currentness/staleness/freshness. It also distinguishes itself from the sibling verify_evidence and verify_attestation by naming what it is not, so an agent can route correctly without opening other schemas.

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 when to use it ('pre-trust check', 'before relying on data'), when not to use it ('live transport comparison' or 'attestation-chain verification'), names the alternative tools, and even gives the intended pipeline order: search_datasets โ†’ verify_dataset โ†’ get_provenance. Rate-limit pacing guidance is also included.

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

verify_evidenceLive-check Published Transport EvidenceA
Read-onlyIdempotent
Inspect

Use when a fresh, rate-limited live-vs-published comparison is needed for a direct-access dataset, for example after asking whether a government dataset is reachable now. Performs a rate-limited live GET and returns comparable transport receipts plus a match, mismatch, unreachable, or not_verifiable verdict. This live check is an observation, not semantic truth: it does not recompute content dates, record counts, or shape fingerprints. Results are ephemeral and do not update published health artifacts. For a deep audit use search_datasets โ†’ get_evidence โ†’ verify_evidence โ†’ verify_attestation. Use it for a live transport comparison; do not use it for published receipt integrity or signed-attestation verificationโ€”use verify_dataset or verify_attestation instead. An unreachable or not_verifiable verdict reports that this live comparison could not establish a match, while cached results are still ephemeral; DataPulse is read-only, requires no API key, and the edge limits clients to roughly one request per second with a small burst, so pace or retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesStable direct-access dataset slug returned by search_datasets for a live transport observation, e.g. 'fuelprice'; browser-dependent sources return not_verifiable.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that the live check is an observation, not semantic truth; that it does not recompute content dates, record counts, or shape fingerprints; that results are ephemeral and do not update published health artifacts; and that an unreachable or not_verifiable verdict only means the live comparison could not establish a match. It also discloses rate limits (roughly one request per second with a small burst) and that DataPulse is read-only and requires no API key. This is rich behavioral context that complements the readOnlyHint and idempotentHint annotations without contradicting them.

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 dense but well-structured, front-loading the primary use case and verdict types before moving to exclusions and rate-limit details. It is longer than strictly necessary, but every sentence carries meaningful information: the observation caveat, ephemeral results, workflow sequence, exclusions, and rate limits all earn their place. The only minor issue is that the final sentence packs several distinct facts (unreachable verdict meaning, ephemerality, read-only, no API key, rate limit) into one long sentence, which slightly reduces scannability.

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 tool with one parameter, a rich output schema, and comprehensive annotations, the description is complete. It covers what the tool does, when to use it, what it does not do, what the verdicts mean, rate limits, authentication requirements, and how it fits into a broader audit workflow. An agent has everything needed to select and invoke this tool correctly without opening the schema or output schema.

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 covers the single parameter dataset_id with 100% coverage, including an example and a note about browser-dependent sources returning not_verifiable. The description adds context by explaining the parameter is a stable direct-access dataset slug returned by search_datasets, which helps the agent understand where the value comes from. Since schema coverage is 100%, the baseline is 3, and the description's added context about the slug's origin and the browser-dependent caveat justifies a 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?

The description clearly states the tool performs a rate-limited live-vs-published comparison for a direct-access dataset and returns a verdict. It distinguishes itself from siblings by explicitly naming verify_dataset and verify_attestation as alternatives for different purposes, and the title 'Live-check Published Transport Evidence' reinforces the specific verb and resource.

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?

The description provides explicit when-to-use guidance ('Use when a fresh, rate-limited live-vs-published comparison is needed'), gives a concrete example ('after asking whether a government dataset is reachable now'), and explicitly states what not to use it for ('do not use it for published receipt integrity or signed-attestation verificationโ€”use verify_dataset or verify_attestation instead'). It also outlines a deep-audit workflow sequence, which is strong usage 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. 18 tool updatesv3.36.1
    • Changedcheck_reconciliation1 field changed
      • changedInput schema / properties / dataset_name / description
        Previous value: -"Dataset id or name to reconcile, e.g. 'interestrates' or 'Monthly Interest Rates'."New value: +"Stable dataset slug or exact display name to resolve, e.g. 'interestrates' or 'Monthly Interest Rates'; use search_datasets to discover valid values."
    • Changedfind_anomalies3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum ranked anomalies to return; integer from 1 to 200, e.g. 50."New value: +"Maximum highest-ranked anomalies to return, e.g. 50; omit it to use 50 without changing the ranking."
      • changedInput schema / properties / min_reliability / description
        Previous value: -"Optional minimum publish-reliability grade; e.g. 'C' keeps A, B, and C and excludes insufficient data."New value: +"Optional inclusive published reliability floor, e.g. 'C' keeps A, B, and C; omit it to retain rows regardless of grade."
      • changedInput schema / properties / mode / description
        Previous value: -"Optional exact detection mode; e.g. 'rolling_14d' or 'cadence_fallback'."New value: +"Optional exact published detection mode filter, e.g. 'rolling_14d' or 'cadence_fallback'; omit it to include every mode."
    • Changedfind_by_licence1 field changed
      • changedInput schema / properties / licence / description
        Previous value: -"Exact licence name or supported alias, e.g. 'Creative Commons Attribution 4.0'."New value: +"Exact published licence name or supported alias, e.g. 'Creative Commons Attribution 4.0'; use search_datasets to discover licence values."
    • Changedfind_deteriorating2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum ranked deteriorating datasets to return; integer from 1 to 200, e.g. 50."New value: +"Maximum highest-ranked deteriorating datasets to return, e.g. 50; omit it to use 50 without changing ranking."
      • changedInput schema / properties / min_anomaly_rate / description
        Previous value: -"Optional minimum percent of anomaly-evaluable history days, e.g. 25.0."New value: +"Optional inclusive anomaly-rate filter on published history, e.g. 25.0; omit it to retain every deteriorating row."
    • Changedfind_recovering1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum ranked recovering datasets to return; integer from 1 to 200, e.g. 50."New value: +"Maximum fastest-recovering datasets to return, e.g. 50; omit it to use 50 without changing ranking."
    • Changedfind_schema_drift2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum ranked drift results to return; integer from 1 to 200, e.g. 50."New value: +"Maximum structural-first ranked drift results to return, e.g. 50; omit it to use 50 without changing ranking."
      • changedInput schema / properties / min_change_count / description
        Previous value: -"Minimum structural fingerprint or column-count transitions; integer from 0 to 100, e.g. 1."New value: +"Inclusive filter on the larger published shape or column transition count, e.g. 1; omit it to include every drift row."
    • Changedfind_stale1 field changed
      • changedInput schema / properties / max_age_hours / description
        Previous value: -"Maximum acceptable age of the latest health check in whole hours; non-negative integer, e.g. 72."New value: +"Maximum published-snapshot age before otherwise healthy rows are included, e.g. 72; omit it to use 24 hours."
    • Changedfind_unreliable2 fields changed
      • changedInput schema / properties / at_or_below_grade / description
        Previous value: -"Inclusive reliability threshold; e.g. 'C' returns grades C, D, and F."New value: +"Inclusive published reliability threshold; e.g. 'C' returns grades C, D, and F; omit it to use C."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum ranked unreliable datasets to return; integer from 1 to 200, e.g. 50."New value: +"Maximum worst-ranked unreliable datasets to return, e.g. 50; omit it to use 50 without changing ranking."
    • Changedget_data_passport1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical dataset identifier for its published Passport v1, e.g. 'fuelprice'."New value: +"Stable dataset slug returned by search_datasets, e.g. 'fuelprice'; this tool requires the slug, not a display name."
    • Changedget_dataset1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical dataset identifier, e.g. 'dosm_cpi_state'. See the registry catalogue for valid IDs."New value: +"Stable dataset slug returned by search_datasets, e.g. 'dosm_cpi_state'; this tool requires the slug, not a display name."
    • Changedget_evidence1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical dataset identifier for its complete published evidence receipt, e.g. 'fuelprice'; this tool does not fetch the live source."New value: +"Stable dataset slug returned by search_datasets for its complete receipt, e.g. 'fuelprice'; this tool requires the slug, not a display name."
    • Changedget_provenance1 field changed
      • changedInput schema / properties / dataset_ids / description
        Previous value: -"JSON array of 1 to 50 canonical dataset IDs for provenance and citation, e.g. ['fuelprice', 'pricecatcher']; this is not a live freshness check."New value: +"Dataset slugs returned by search_datasets for a batched citation lookup, e.g. ['fuelprice', 'pricecatcher']; preserve order and use get_dataset for display-name resolution."
    • Changedsearch_datasets4 fields changed
      • changedInput schema / properties / licence / description
        Previous value: -"Optional exact licence name or supported alias for reuse discovery, e.g. 'CC BY 4.0'; this does not verify attribution compliance."New value: +"Optional exact licence name or supported alias applied before ranking, e.g. 'CC BY 4.0'; omit it to search every licence."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum discovery matches to return; integer from 1 to 50, e.g. 10."New value: +"Maximum highest-ranked discovery matches to return, e.g. 10; omitted defaults to 10 and does not change ranking."
      • changedInput schema / properties / query / description
        Previous value: -"Topic or task phrasing for Malaysian public-data discovery only, e.g. 'Malaysian public data inflation'; verify a result separately."New value: +"Topic or task phrasing used to rank discovery candidates, e.g. 'Malaysian public data inflation'; use a returned id with get_dataset."
      • changedInput schema / properties / source / description
        Previous value: -"Optional case-insensitive publisher/source filter, e.g. 'OpenDOSM'."New value: +"Optional publisher/source substring filter applied before ranking, e.g. 'OpenDOSM'; omit it to search every source."
    • Changedtrust_verdict1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical dataset identifier to aggregate, e.g. 'fuelprice'."New value: +"Stable dataset slug returned by search_datasets to aggregate, e.g. 'fuelprice'; display names are not resolved here."
    • Changedusage_summary2 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"Inclusive ISO start date YYYY-MM-DD, e.g. '2026-08-01'."New value: +"Inclusive first day of the persisted-record window, e.g. '2026-08-01'; it must not be after until."
      • changedInput schema / properties / until / description
        Previous value: -"Inclusive ISO end date YYYY-MM-DD, e.g. '2026-08-07'."New value: +"Inclusive last day of the persisted-record window, e.g. '2026-08-07'; it must not be before since."
    • Changedverify_attestation2 fields changed
      • changedInput schema / properties / reference / description
        Previous value: -"Dataset id or safe relative published digest reference for signed-attestation verification, e.g. 'fuelprice'."New value: +"Dataset slug returned by search_datasets or an exact published digest reference, e.g. 'fuelprice'; the slug resolves through the attestation index."
      • changedInput schema / properties / replay_chain / description
        Previous value: -"Replay signed daily heads to a Git-tag anchor for L2 verification, e.g. true for an auditor."New value: +"Set true to perform the slower L2 daily-head replay to a Git tag, e.g. true; omit it to run L1 only."
    • Changedverify_dataset2 fields changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical dataset identifier for the published pre-trust receipt check, e.g. 'fuelprice'; this does not perform a live source fetch."New value: +"Stable dataset slug returned by search_datasets for the published receipt check, e.g. 'fuelprice'; this tool requires the slug, not a display name."
      • changedInput schema / properties / include_proof_steps / description
        Previous value: -"Include bounded signed-receipt verifier diagnostics for an audit, e.g. false; the result still does not establish upstream semantic truth."New value: +"Set true to include bounded verifier diagnostics for an audit, e.g. false; omit it to suppress diagnostics without changing verification."
    • Changedverify_evidence1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical direct-access dataset identifier for a rate-limited live transport observation, e.g. 'fuelprice'; browser-dependent sources cannot be fetched here."New value: +"Stable direct-access dataset slug returned by search_datasets for a live transport observation, e.g. 'fuelprice'; browser-dependent sources return not_verifiable."
  2. 8 tool updatesv0.12.0
    • Addedget_data_passport
    • Changedget_evidence1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical dataset identifier for a deep receipt, e.g. 'fuelprice'."New value: +"Canonical dataset identifier for its complete published evidence receipt, e.g. 'fuelprice'; this tool does not fetch the live source."
    • Changedget_provenance1 field changed
      • changedInput schema / properties / dataset_ids / description
        Previous value: -"JSON array of 1 to 50 canonical dataset IDs, e.g. ['fuelprice', 'pricecatcher']."New value: +"JSON array of 1 to 50 canonical dataset IDs for provenance and citation, e.g. ['fuelprice', 'pricecatcher']; this is not a live freshness check."
    • Changedsearch_datasets5 fields changed
      • changedInput schema / properties / licence / description
        Previous value: -"Optional exact licence name or supported alias, e.g. 'CC BY 4.0'."New value: +"Optional exact licence name or supported alias for reuse discovery, e.g. 'CC BY 4.0'; this does not verify attribution compliance."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum ranked matches to return; integer from 1 to 50, e.g. 10."New value: +"Maximum discovery matches to return; integer from 1 to 50, e.g. 10."
      • changedInput schema / properties / query / description
        Previous value: -"Free-text search terms; natural language is allowed, e.g. 'inflation cpi'."New value: +"Topic or task phrasing for Malaysian public-data discovery only, e.g. 'Malaysian public data inflation'; verify a result separately."
      • changedInput schema / properties / query / examples
        Previous value: -[
        -  "inflation cpi"
        -]New value: +[
        +  "Malaysian public data inflation"
        +]
      • changedInput schema / properties / source / description
        Previous value: -"Optional case-insensitive source-name substring, e.g. 'OpenDOSM'."New value: +"Optional case-insensitive publisher/source filter, e.g. 'OpenDOSM'."
    • Changedusage_summary2 fields changed
      • removedInput schema / properties / buyer_id
        Removed value: -{
        -  "description": "Buyer identifier, e.g. 'pro-default' or 'anonymous'.",
        -  "examples": [
        -    "pro-default"
        -  ],
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "buyer_id",
        -  "since",
        -  "until"
        -]New value: +[
        +  "since",
        +  "until"
        +]
    • Changedverify_attestation2 fields changed
      • changedInput schema / properties / reference / description
        Previous value: -"Dataset id or relative digest reference, e.g. 'fuelprice'."New value: +"Dataset id or safe relative published digest reference for signed-attestation verification, e.g. 'fuelprice'."
      • changedInput schema / properties / replay_chain / description
        Previous value: -"Replay daily heads to the newest tag anchor, e.g. true for an auditor."New value: +"Replay signed daily heads to a Git-tag anchor for L2 verification, e.g. true for an auditor."
    • Changedverify_dataset2 fields changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical dataset identifier to verify before trust, e.g. 'fuelprice'."New value: +"Canonical dataset identifier for the published pre-trust receipt check, e.g. 'fuelprice'; this does not perform a live source fetch."
      • changedInput schema / properties / include_proof_steps / description
        Previous value: -"Include bounded Cosign verifier output for audit steps, e.g. false."New value: +"Include bounded signed-receipt verifier diagnostics for an audit, e.g. false; the result still does not establish upstream semantic truth."
    • Changedverify_evidence1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Canonical direct-access dataset identifier to re-fetch, e.g. 'fuelprice'."New value: +"Canonical direct-access dataset identifier for a rate-limited live transport observation, e.g. 'fuelprice'; browser-dependent sources cannot be fetched here."
  3. 18 tool updatesv1.0.2
    • Addedcheck_reconciliation
    • Addedfind_anomalies
    • Addedfind_by_licence
    • Addedfind_deteriorating
    • Addedfind_recovering
    • Addedfind_schema_drift
    • Addedfind_stale
    • Addedfind_unreliable
    • Addedget_dataset
    • Addedget_evidence
    • Addedget_freshness_summary
    • Addedget_provenance
    • Addedsearch_datasets
    • Addedtrust_verdict
    • Addedusage_summary
    • Addedverify_attestation
    • Addedverify_dataset
    • Addedverify_evidence

TDQS

A4.3/5.0

Scored across 19 tools

Disambiguation3/5

The find_* family is clearly distinct, but there is meaningful overlap among get_dataset, get_data_passport, get_provenance, get_evidence, verify_dataset, trust_verdict, and verify_attestation, all of which return related trust/evidence information. The descriptions use explicit 'use X not Y' guidance, yet an agent could still misselect, especially since get_dataset itself mentions provenance/citation metadata.

Naming Consistency4/5

Names are uniformly lowercase snake_case and mostly follow a verb_noun pattern like search_datasets, find_stale, and verify_evidence. A few names such as usage_summary and trust_verdict are noun-phrase style, but the overall convention is predictable and readable.

Tool Count3/5

With 19 tools, the server sits in the 16-25 range that feels heavy. Many tools are narrowly scoped variants of finding risk signals or verifying evidence, so the surface could plausibly be consolidated without losing much functionality.

Completeness5/5

For a read-only data-trust server, the surface is remarkably complete: discovery, metadata, freshness summaries, stale/anomaly/trend/reliability/drift detection, reconciliation, provenance, evidence receipts, live verification, attestation, trust verdicts, and licence filtering are all present. No obvious dead ends or missing lifecycle operations for the stated domain.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Model Context Protocol (MCP) server that provides weather forecast, warnings, water level associated with flood, and earthquake reports from Malaysia Government's Open API.
    4
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides seamless access to Malaysia's official government data catalogue, enabling developers to discover, explore, and fetch datasets from the Malaysian government's open data platform through a simple, unified interface.
    4
    2 npm
    12
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects to Malaysia's OpenDOSM open data API via Pipeworx, enabling access to official statistics through MCP tools or natural language queries.
    2 npm
    MIT