DATAPULSE · DOCUMENTATION
MCP reference
Public documentation for the DataPulse MY read-only trust layer.
DataPulse MY exposes 18 read-only tools over 418 datasets and the
10-status health taxonomy at
https://mcp.data-pulse.my/mcp.
Tools
search_datasets
Search DataPulse MY's 418 Malaysian public datasets by natural-language query. Filter by licence (e.g. 'CC BY 4.0', 'Open Government Licence (Malaysia)') or source ('OpenDOSM', 'data.gov.my', 'MET Malaysia', etc.). Returns ranked matches: id, title, source, licence, status, score. Use when an agent needs to find datasets covering a topic, by an agency, or under a specific licence.
Input schema:
{
"additionalProperties": false,
"properties": {
"query": {
"description": "Free-text search terms; natural language is allowed, e.g. 'inflation cpi'.",
"examples": [
"inflation cpi"
],
"minLength": 1,
"type": "string"
},
"licence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional exact licence name or supported alias, e.g. 'CC BY 4.0'.",
"examples": [
"CC BY 4.0",
"Open Government Licence (Malaysia)"
]
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional case-insensitive source-name substring, e.g. 'OpenDOSM'.",
"examples": [
"OpenDOSM",
"data.gov.my",
"MET Malaysia"
]
},
"limit": {
"default": 10,
"description": "Maximum ranked matches to return; integer from 1 to 50, e.g. 10.",
"maximum": 50,
"minimum": 1,
"type": "integer"
}
},
"required": [
"query"
],
"type": "object"
}get_dataset
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"dataset_id": {
"description": "Canonical dataset identifier, e.g. 'dosm_cpi_state'. See the registry catalogue for valid IDs.",
"examples": [
"dosm_cpi_state"
],
"minLength": 1,
"type": "string"
}
},
"required": [
"dataset_id"
],
"type": "object"
}find_stale
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"max_age_hours": {
"default": 24,
"description": "Maximum acceptable age of the latest health check in whole hours; non-negative integer, e.g. 72.",
"examples": [
24,
72
],
"minimum": 0,
"type": "integer"
}
},
"type": "object",
"required": []
}find_anomalies
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"limit": {
"default": 50,
"description": "Maximum ranked anomalies to return; integer from 1 to 200, e.g. 50.",
"examples": [
10,
50
],
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional exact detection mode; e.g. 'rolling_14d' or 'cadence_fallback'.",
"examples": [
"rolling_14d",
"cadence_fallback"
]
},
"min_reliability": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional minimum publish-reliability grade; e.g. 'C' keeps A, B, and C and excludes insufficient data.",
"examples": [
"A",
"C"
]
}
},
"type": "object",
"required": []
}find_deteriorating
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"limit": {
"default": 50,
"description": "Maximum ranked deteriorating datasets to return; integer from 1 to 200, e.g. 50.",
"examples": [
10,
50
],
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"min_anomaly_rate": {
"anyOf": [
{
"maximum": 100,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional minimum percent of anomaly-evaluable history days, e.g. 25.0.",
"examples": [
25.0,
50.0
]
}
},
"type": "object",
"required": []
}find_recovering
Return datasets whose published freshness trend is recovering, with the fastest staleness reductions first. Includes pipeline-computed trend and publish-reliability evidence.
Input schema:
{
"additionalProperties": false,
"properties": {
"limit": {
"default": 50,
"description": "Maximum ranked recovering datasets to return; integer from 1 to 200, e.g. 50.",
"examples": [
10,
50
],
"maximum": 200,
"minimum": 1,
"type": "integer"
}
},
"type": "object",
"required": []
}find_unreliable
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"limit": {
"default": 50,
"description": "Maximum ranked unreliable datasets to return; integer from 1 to 200, e.g. 50.",
"examples": [
10,
50
],
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"at_or_below_grade": {
"default": "C",
"description": "Inclusive reliability threshold; e.g. 'C' returns grades C, D, and F.",
"examples": [
"C",
"F"
],
"type": "string"
}
},
"type": "object",
"required": []
}find_schema_drift
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"limit": {
"default": 50,
"description": "Maximum ranked drift results to return; integer from 1 to 200, e.g. 50.",
"examples": [
10,
50
],
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"min_change_count": {
"default": 0,
"description": "Minimum structural fingerprint or column-count transitions; integer from 0 to 100, e.g. 1.",
"examples": [
0,
1
],
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
"type": "object",
"required": []
}check_reconciliation
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"dataset_name": {
"description": "Dataset id or name to reconcile, e.g. 'interestrates' or 'Monthly Interest Rates'.",
"examples": [
"interestrates",
"Monthly Interest Rates"
],
"minLength": 1,
"type": "string"
}
},
"required": [
"dataset_name"
],
"type": "object"
}get_provenance
Return citation-ready provenance metadata for the listed dataset ids, plus compact pipeline-published evidence receipts: row probe time, HTTP status, request URL, access dependency, freshness source, content date, record count, shape fingerprint, anomaly flag, and status. Use when an agent must cite data and show the evidence behind the trust claim without recomputing it.
Input schema:
{
"additionalProperties": false,
"properties": {
"dataset_ids": {
"description": "JSON array of 1 to 50 canonical dataset IDs, e.g. ['fuelprice', 'pricecatcher'].",
"examples": [
[
"fuelprice",
"pricecatcher"
]
],
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"dataset_ids"
],
"type": "object"
}get_evidence
Return the complete pipeline-published evidence receipt for one dataset id, including probe time, transport, access dependency, freshness, record-count, shape, tolerance, status, and anomaly fields. Use for a deep audit, e.g. get_evidence('fuelprice'); values are presented without MCP-side recomputation.
Input schema:
{
"additionalProperties": false,
"properties": {
"dataset_id": {
"description": "Canonical dataset identifier for a deep receipt, e.g. 'fuelprice'.",
"examples": [
"fuelprice"
],
"minLength": 1,
"type": "string"
}
},
"required": [
"dataset_id"
],
"type": "object"
}verify_dataset
Verify one dataset before trust in a single read-only call. Returns dataset metadata, the published health and evidence rows, and a fail-closed Sigstore per-dataset receipt verification result with artifact references. Use verify_dataset('fuelprice') before relying on a dataset claim.
Input schema:
{
"additionalProperties": false,
"properties": {
"dataset_id": {
"description": "Canonical dataset identifier to verify before trust, e.g. 'fuelprice'.",
"examples": [
"fuelprice"
],
"minLength": 1,
"type": "string"
},
"include_proof_steps": {
"default": false,
"description": "Include bounded Cosign verifier output for audit steps, e.g. false.",
"examples": [
false,
true
],
"type": "boolean"
}
},
"required": [
"dataset_id"
],
"type": "object"
}get_freshness_summary
Return a freshness-at-a-glance summary of the published catalogue: fresh, aging, stale, and reference counts plus the latest health check time.
Input schema:
{
"additionalProperties": false,
"properties": {},
"type": "object",
"required": []
}verify_evidence
Perform a rate-limited live streamed GET for one direct-access
dataset and compare transport receipts with the latest published
evidence, e.g. verify_evidence('fuelprice'). Content dates, row counts,
and shape fingerprints remain pipeline-only and are explicitly reported
as unverified; results are ephemeral and never update health artifacts.
Returns a dict with transport receipt fields and a verdict
for downstream trust checks without re-fetching.
Input schema:
{
"additionalProperties": false,
"properties": {
"dataset_id": {
"description": "Canonical direct-access dataset identifier to re-fetch, e.g. 'fuelprice'.",
"examples": [
"fuelprice"
],
"minLength": 1,
"type": "string"
}
},
"required": [
"dataset_id"
],
"type": "object"
}trust_verdict
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.
Input schema:
{
"additionalProperties": false,
"properties": {
"dataset_id": {
"description": "Canonical dataset identifier to aggregate, e.g. 'fuelprice'.",
"examples": [
"fuelprice"
],
"minLength": 1,
"type": "string"
}
},
"required": [
"dataset_id"
],
"type": "object"
}verify_attestation
Verify a published Ed25519 probe attestation by canonical dataset id
or safe relative digest reference, e.g. 'fuelprice' or
'attestations/2026-08-15/fuelprice.json'. L1 checks signature/key
validity; optional L2 replays daily heads to a Git-tag anchor; L3 is
provided by verify_evidence. Returns
levels.L1.signature_valid and
levels.L2.satisfied for signature and replay status.
Input schema:
{
"additionalProperties": false,
"properties": {
"reference": {
"description": "Dataset id or relative digest reference, e.g. 'fuelprice'.",
"examples": [
"fuelprice",
"attestations/2026-08-15/fuelprice.json"
],
"minLength": 1,
"type": "string"
},
"replay_chain": {
"default": false,
"description": "Replay daily heads to the newest tag anchor, e.g. true for an auditor.",
"examples": [
false,
true
],
"type": "boolean"
}
},
"required": [
"reference"
],
"type": "object"
}find_by_licence
Return all datasets with the given licence, summarised. Use to enumerate what's available under a specific licence for compliance/reuse scoping.
Input schema:
{
"additionalProperties": false,
"properties": {
"licence": {
"description": "Exact licence name or supported alias, e.g. 'Creative Commons Attribution 4.0'.",
"examples": [
"Creative Commons Attribution 4.0",
"CC BY 4.0",
"OGL"
],
"minLength": 1,
"type": "string"
}
},
"required": [
"licence"
],
"type": "object"
}usage_summary
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_distribution (per-status counts of cited datasets)
for the inclusive range. Legacy identity fields are ignored.
Input schema:
{
"additionalProperties": false,
"properties": {
"since": {
"description": "Inclusive ISO start date YYYY-MM-DD, e.g. '2026-08-01'.",
"examples": [
"2026-08-01"
],
"type": "string"
},
"until": {
"description": "Inclusive ISO end date YYYY-MM-DD, e.g. '2026-08-07'.",
"examples": [
"2026-08-07"
],
"type": "string"
}
},
"required": [
"since",
"until"
],
"type": "object"
}Resources
datapulse://index— Read first; lightweight list of all DataPulse MY dataset ids with current status, title, source, licence, and namespace.datapulse://anomalies— Datasets flagged by the latest published anomaly detection, ranked by severity with pipeline-computed evidence.datapulse://trends— Published per-dataset freshness trends and publish-reliability evidence, including methodology and aggregate counts.datapulse://reliability— Live count of DataPulse MY datasets by evaluated publish-reliability grade; reliability is timeliness, not uptime.datapulse://drift— Published per-dataset schema and record-count drift evidence, including methodology and aggregate verdict counts.datapulse://reconciliation— Published cross-source reconciliation groups with pairwise count, date, status, tolerance, and verdict evidence.datapulse://attestations— Latest signed probe attestation index and daily chain head.datapulse://licences— Live count of DataPulse MY datasets grouped by licence.
Resource templates
datapulse://citation/{dataset_id}— Canonical evidence-bound citation for one exact DataPulse MY dataset id.datapulse://{dataset_id}— Full published manifest entry for one exact DataPulse MY dataset id.