{
  "ard_spec_version": "0.91",
  "contract_version": "1.0.0",
  "dataset_count": 440,
  "endpoint": {
    "auth_required": false,
    "method": "POST",
    "transport": "streamable-http",
    "url": "https://mcp.data-pulse.my/mcp"
  },
  "entries": [
    {
      "capabilities": [
        "check_reconciliation",
        "check_reconciliation.dataset_name"
      ],
      "description": "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.",
      "displayName": "check_reconciliation",
      "identifier": "urn:air:data-pulse.my:mcp:check_reconciliation",
      "representativeQueries": [
        "do two sources agree on this figure?",
        "cross-check the published counts between sources",
        "which datasets disagree across sources?"
      ],
      "tags": [
        "malaysia",
        "read-only",
        "reconciliation",
        "trust-layer",
        "validation"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/check_reconciliation.json"
    },
    {
      "capabilities": [
        "find_anomalies",
        "find_anomalies.limit",
        "find_anomalies.min_reliability",
        "find_anomalies.mode"
      ],
      "description": "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.",
      "displayName": "find_anomalies",
      "identifier": "urn:air:data-pulse.my:mcp:find_anomalies",
      "representativeQueries": [
        "which datasets showed an unusual update anomaly?",
        "flag datasets with odd record-count jumps",
        "what anomalies did the latest detection find?"
      ],
      "tags": [
        "anomalies",
        "freshness",
        "malaysia",
        "read-only",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/find_anomalies.json"
    },
    {
      "capabilities": [
        "find_by_licence",
        "find_by_licence.licence"
      ],
      "description": "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.",
      "displayName": "find_by_licence",
      "identifier": "urn:air:data-pulse.my:mcp:find_by_licence",
      "representativeQueries": [
        "what can I reuse under an open licence?",
        "list datasets licensed for commercial use",
        "which datasets share this licence?"
      ],
      "tags": [
        "compliance",
        "discovery",
        "licence",
        "malaysia",
        "read-only"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/find_by_licence.json"
    },
    {
      "capabilities": [
        "find_deteriorating",
        "find_deteriorating.limit",
        "find_deteriorating.min_anomaly_rate"
      ],
      "description": "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.",
      "displayName": "find_deteriorating",
      "identifier": "urn:air:data-pulse.my:mcp:find_deteriorating",
      "representativeQueries": [
        "which datasets are trending worse over time?",
        "show datasets whose freshness is deteriorating",
        "what has been getting less reliable lately?"
      ],
      "tags": [
        "freshness",
        "malaysia",
        "read-only",
        "trends",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/find_deteriorating.json"
    },
    {
      "capabilities": [
        "find_recovering",
        "find_recovering.limit"
      ],
      "description": "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.",
      "displayName": "find_recovering",
      "identifier": "urn:air:data-pulse.my:mcp:find_recovering",
      "representativeQueries": [
        "which datasets have started updating again?",
        "show datasets recovering from a stale period",
        "what is improving in the catalogue?"
      ],
      "tags": [
        "freshness",
        "malaysia",
        "read-only",
        "trends",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/find_recovering.json"
    },
    {
      "capabilities": [
        "find_schema_drift",
        "find_schema_drift.limit",
        "find_schema_drift.min_change_count"
      ],
      "description": "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.",
      "displayName": "find_schema_drift",
      "identifier": "urn:air:data-pulse.my:mcp:find_schema_drift",
      "representativeQueries": [
        "which datasets changed their structure?",
        "detect column or schema changes in the catalogue",
        "has any dataset gained or lost fields recently?"
      ],
      "tags": [
        "malaysia",
        "read-only",
        "schema",
        "trust-layer",
        "validation"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/find_schema_drift.json"
    },
    {
      "capabilities": [
        "find_stale",
        "find_stale.max_age_hours"
      ],
      "description": "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.",
      "displayName": "find_stale",
      "identifier": "urn:air:data-pulse.my:mcp:find_stale",
      "representativeQueries": [
        "which datasets are stale or aging right now?",
        "find datasets at risk of freshness problems",
        "list degraded datasets"
      ],
      "tags": [
        "freshness",
        "malaysia",
        "read-only",
        "risk",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/find_stale.json"
    },
    {
      "capabilities": [
        "find_unreliable",
        "find_unreliable.at_or_below_grade",
        "find_unreliable.limit"
      ],
      "description": "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.",
      "displayName": "find_unreliable",
      "identifier": "urn:air:data-pulse.my:mcp:find_unreliable",
      "representativeQueries": [
        "which datasets fail to publish reliably?",
        "list datasets with a poor publishing record",
        "what is the least reliable source in the catalogue?"
      ],
      "tags": [
        "malaysia",
        "read-only",
        "reliability",
        "risk",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/find_unreliable.json"
    },
    {
      "capabilities": [
        "get_data_passport",
        "get_data_passport.dataset_id"
      ],
      "description": "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.",
      "displayName": "get_data_passport",
      "identifier": "urn:air:data-pulse.my:mcp:get_data_passport",
      "representativeQueries": [
        "produce the dataset passport for this dataset",
        "give me the machine-readable passport v1 for this dataset",
        "what does the passport say about this dataset's evidence?"
      ],
      "tags": [
        "evidence",
        "malaysia",
        "passport",
        "provenance",
        "read-only",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/get_data_passport.json"
    },
    {
      "capabilities": [
        "get_dataset",
        "get_dataset.dataset_id"
      ],
      "description": "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.",
      "displayName": "get_dataset",
      "identifier": "urn:air:data-pulse.my:mcp:get_dataset",
      "representativeQueries": [
        "what is the status of this dataset?",
        "show me the details for one dataset id",
        "is this dataset still updating?"
      ],
      "tags": [
        "dataset",
        "malaysia",
        "provenance",
        "read-only",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/get_dataset.json"
    },
    {
      "capabilities": [
        "get_evidence",
        "get_evidence.dataset_id"
      ],
      "description": "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.",
      "displayName": "get_evidence",
      "identifier": "urn:air:data-pulse.my:mcp:get_evidence",
      "representativeQueries": [
        "show me the evidence receipt for this dataset's last probe",
        "audit the published evidence for this dataset",
        "what did the last observation record for this dataset?"
      ],
      "tags": [
        "evidence",
        "malaysia",
        "read-only",
        "receipts",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/get_evidence.json"
    },
    {
      "capabilities": [
        "get_freshness_summary"
      ],
      "description": "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.",
      "displayName": "get_freshness_summary",
      "identifier": "urn:air:data-pulse.my:mcp:get_freshness_summary",
      "representativeQueries": [
        "how fresh is the catalogue overall?",
        "summary of stale versus fresh datasets",
        "which sources are lagging across the catalogue?"
      ],
      "tags": [
        "freshness",
        "malaysia",
        "read-only",
        "summary",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/get_freshness_summary.json"
    },
    {
      "capabilities": [
        "get_provenance",
        "get_provenance.dataset_ids"
      ],
      "description": "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.",
      "displayName": "get_provenance",
      "identifier": "urn:air:data-pulse.my:mcp:get_provenance",
      "representativeQueries": [
        "can I cite this source?",
        "what licence applies and how should I attribute it?",
        "where did this dataset's numbers come from?"
      ],
      "tags": [
        "evidence",
        "malaysia",
        "provenance",
        "read-only",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/get_provenance.json"
    },
    {
      "capabilities": [
        "search_datasets",
        "search_datasets.licence",
        "search_datasets.limit",
        "search_datasets.query",
        "search_datasets.source"
      ],
      "description": "Use for discovery only: find DataPulse's 440 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.",
      "displayName": "search_datasets",
      "identifier": "urn:air:data-pulse.my:mcp:search_datasets",
      "representativeQueries": [
        "find datasets about road accidents",
        "which Malaysian datasets cover household income?",
        "list open datasets published by a given agency"
      ],
      "tags": [
        "discovery",
        "malaysia",
        "public-data",
        "read-only",
        "trust-layer"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/search_datasets.json"
    },
    {
      "capabilities": [
        "trust_verdict",
        "trust_verdict.dataset_id"
      ],
      "description": "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.",
      "displayName": "trust_verdict",
      "identifier": "urn:air:data-pulse.my:mcp:trust_verdict",
      "representativeQueries": [
        "give me an overall trust verdict for this dataset",
        "should I warn users before they rely on this data?",
        "summarise the published trust signals"
      ],
      "tags": [
        "evidence",
        "malaysia",
        "read-only",
        "trust",
        "verification"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/trust_verdict.json"
    },
    {
      "capabilities": [
        "usage_summary",
        "usage_summary.since",
        "usage_summary.until"
      ],
      "description": "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.",
      "displayName": "usage_summary",
      "identifier": "urn:air:data-pulse.my:mcp:usage_summary",
      "representativeQueries": [
        "how many tool calls were made this week?",
        "which DataPulse tools are used most?",
        "summarise aggregate anonymous usage over the last month"
      ],
      "tags": [
        "audit",
        "malaysia",
        "read-only",
        "summary",
        "usage"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/usage_summary.json"
    },
    {
      "capabilities": [
        "verify_attestation",
        "verify_attestation.reference",
        "verify_attestation.replay_chain"
      ],
      "description": "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.",
      "displayName": "verify_attestation",
      "identifier": "urn:air:data-pulse.my:mcp:verify_attestation",
      "representativeQueries": [
        "check the signed attestation chain for this dataset",
        "is the published attestation signature valid?",
        "verify the day's signed envelope"
      ],
      "tags": [
        "attestation",
        "evidence",
        "malaysia",
        "read-only",
        "verification"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/verify_attestation.json"
    },
    {
      "capabilities": [
        "verify_dataset",
        "verify_dataset.dataset_id",
        "verify_dataset.include_proof_steps"
      ],
      "description": "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.",
      "displayName": "verify_dataset",
      "identifier": "urn:air:data-pulse.my:mcp:verify_dataset",
      "representativeQueries": [
        "can I rely on this dataset today?",
        "before I use this dataset, has it changed recently?",
        "check whether this dataset is fit to rely on"
      ],
      "tags": [
        "evidence",
        "malaysia",
        "read-only",
        "trust-layer",
        "verification"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/verify_dataset.json"
    },
    {
      "capabilities": [
        "verify_evidence",
        "verify_evidence.dataset_id"
      ],
      "description": "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.",
      "displayName": "verify_evidence",
      "identifier": "urn:air:data-pulse.my:mcp:verify_evidence",
      "representativeQueries": [
        "compare the published evidence against a fresh live check",
        "is the published freshness claim still true right now?",
        "verify the transport evidence for this dataset live"
      ],
      "tags": [
        "evidence",
        "malaysia",
        "read-only",
        "transport",
        "verification"
      ],
      "trustManifest": {
        "attestations": [
          {
            "type": "ed25519-probe-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-probe-keys.json"
          },
          {
            "type": "ed25519-vector-signing-key-registry",
            "uri": "https://www.data-pulse.my/.well-known/datapulse-vector-keys.json"
          },
          {
            "type": "verification-metadata",
            "uri": "https://www.data-pulse.my/llms.txt"
          }
        ],
        "identity": "https://data-pulse.my",
        "identityType": "https"
      },
      "type": "application/mcp-server-card+json",
      "url": "https://www.data-pulse.my/mcp/cards/verify_evidence.json"
    }
  ],
  "host": {
    "displayName": "DataPulse MY",
    "homepage": "https://www.data-pulse.my/",
    "repository": "https://github.com/r3dz4r/datapulse-my"
  },
  "license": "MIT (catalog); dataset licences as declared per dataset",
  "publisher": {
    "name": "DataPulse MY"
  },
  "specVersion": "1.0",
  "taxonomy": [
    "fresh",
    "aging",
    "stale",
    "discontinued",
    "degraded",
    "browser-dependent",
    "unreachable",
    "unknown",
    "unknown-freshness",
    "reference"
  ],
  "trust": {
    "model": "Signed probe attestation (Ed25519 L1, git-tag L2 anchor, per-dataset cosign keyless Sigstore bundle)",
    "verification_command": "cosign verify-blob --bundle <dataset>.sigstore.json --certificate-identity <oidc-identity> --certificate-oidc-issuer https://token.actions.githubusercontent.com",
    "verification_metadata_url": "https://www.data-pulse.my/llms.txt"
  }
}
