---
schema: "interfacedelta-service-md/1"
target_key: "sha256:2d36ef9cdc2ceda991c9f5da60872334dac76d74a83927f12e6ecea4dbfc3465"
origin: "https://ppmly.com"
protocols: ["mcp"]
observed_at: "2026-11-12T18:17:54.530Z"
generated_at: "2026-11-13T01:53:18.251Z"
record_url: "https://interfacedelta.com/atlas/sha256:2d36ef9cdc2ceda991c9f5da60872334dac76d74a83927f12e6ecea4dbfc3465"
record_api: "https://interfacedelta.com/api/v1/record/services/sha256:2d36ef9cdc2ceda991c9f5da60872334dac76d74a83927f12e6ecea4dbfc3465"
source: "InterfaceDelta atlas"
license_note: "Use of this record is governed by https://interfacedelta.com/terms."
---

# Service record: https://ppmly.com

## Identity
- Origin: https://ppmly.com
- Endpoints: https://ppmly.com/mcp
- Protocols: mcp
- Registry names: com.ppmly/site
- First retained observation: 2026-11-12T18:17:54.530Z
- Latest observation: 2026-11-12T18:17:54.530Z

## Tools
- Tool 1: dataset\_columns (mcp); inputs: none shown; inputs omitted: 0; annotations: {}
- Tool 2: dataset\_compare (mcp); inputs: column, values; inputs omitted: 0; annotations: {}
- Tool 3: dataset\_provenance (mcp); inputs: none shown; inputs omitted: 0; annotations: {}
- Tool 4: dataset\_row (mcp); inputs: column, value; inputs omitted: 0; annotations: {}
- Tool 5: dataset\_search (mcp); inputs: limit, query; inputs omitted: 0; annotations: {}
- Tool 6: dataset\_stats (mcp); inputs: column; inputs omitted: 0; annotations: {}
- Tool 7: dataset\_top (mcp); inputs: ascending, column, limit; inputs omitted: 0; annotations: {}
Tools omitted: 0.

## Effect readings (AI)
- Tool 1 (dataset\_columns): ◇ AI reading; state: counted; reads (confidence 0.8); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 1 purpose: ◇ AI reading; Lists a dataset's column names, which columns are numeric, its row count and provenance banner as a schema overview.; lens: tool-purpose-v1; model: not recorded.
- Tool 2 (dataset\_compare): ◇ AI reading; state: counted; reads (confidence 0.88); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 2 purpose: ◇ AI reading; Retrieves dataset rows where a chosen column matches any of 2 to 10 given values, returned in the requested order.; lens: tool-purpose-v1; model: not recorded.
- Tool 3 purpose: ◇ AI reading; Returns the origin, computation date, licence and citation details of the Ppmly dataset for attributing a figure.; lens: tool-purpose-v1; model: not recorded.
- Tool 4 (dataset\_row): ◇ AI reading; state: counted; reads (confidence 0.9); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 4 purpose: ◇ AI reading; Returns Ppmly dataset records whose named column exactly matches a given text value, ignoring letter case.; lens: tool-purpose-v1; model: not recorded.
- Tool 5 (dataset\_search): ◇ AI reading; state: counted; reads (confidence 0.901); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 5 purpose: ◇ AI reading; Returns up to 50 rows from the Ppmly dataset where any cell matches a given text query, ignoring case.; lens: tool-purpose-v1; model: not recorded.
- Tool 6 (dataset\_stats): ◇ AI reading; state: counted; reads (confidence 0.82); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 6 purpose: ◇ AI reading; Reports count, minimum, maximum, mean, median and sum for a named numeric column in the Ppmly dataset.; lens: tool-purpose-v1; model: not recorded.
- Tool 7 (dataset\_top): ◇ AI reading; state: counted; reads (confidence 0.91); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 7 purpose: ◇ AI reading; Returns the top or bottom rows of a dataset ranked by a chosen numeric column, up to 50 rows.; lens: tool-purpose-v1; model: not recorded.

## Change history
No changes recorded in the retained history.

## Payment rails
- Protocols observed: none.
- HTTP 402 seen in retained observations: false.

## Not covered
- We don't call tools.
- We don't rate or certify.
- We don't publish prices.
- We cover only what was observed.

## Evidence
- Identity: observed / declared; observation time: 2026-11-12T18:17:54.530Z.
- Tools: declared; observation time: 2026-11-12T18:17:54.530Z.
- Effect readings (AI): AI reading; observation time: 2026-11-12T18:17:54.530Z.
- Change history: observed; observation time: 2026-11-12T18:17:54.530Z; change observation times: none.
- Payment rails: observed; observation time: 2026-11-12T18:17:54.530Z.

```json
{
  "schema": "interfacedelta-service-md/1",
  "target_key": "sha256:2d36ef9cdc2ceda991c9f5da60872334dac76d74a83927f12e6ecea4dbfc3465",
  "origin": "https://ppmly.com",
  "protocols": [
    "mcp"
  ],
  "observed_at": "2026-11-12T18:17:54.530Z",
  "generated_at": "2026-11-13T01:53:18.251Z",
  "record_url": "https://interfacedelta.com/atlas/sha256:2d36ef9cdc2ceda991c9f5da60872334dac76d74a83927f12e6ecea4dbfc3465",
  "record_api": "https://interfacedelta.com/api/v1/record/services/sha256:2d36ef9cdc2ceda991c9f5da60872334dac76d74a83927f12e6ecea4dbfc3465",
  "source": "InterfaceDelta atlas",
  "license_note": "Use of this record is governed by https://interfacedelta.com/terms.",
  "identity": {
    "origin": "https://ppmly.com",
    "endpoints": [
      "https://ppmly.com/mcp"
    ],
    "protocols": [
      "mcp"
    ],
    "registry_names": [
      "com.ppmly/site"
    ],
    "first_retained_observation": "2026-11-12T18:17:54.530Z",
    "latest_observation": "2026-11-12T18:17:54.530Z"
  },
  "tools": [
    {
      "name": "dataset_columns",
      "protocol": "mcp",
      "inputs": [],
      "inputs_omitted": 0,
      "annotations": {},
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.8
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      },
      "purpose": {
        "marker": "◇ AI reading",
        "text": "Lists a dataset's column names, which columns are numeric, its row count and provenance banner as a schema overview.",
        "lens": "tool-purpose-v1",
        "model": null
      }
    },
    {
      "name": "dataset_compare",
      "protocol": "mcp",
      "inputs": [
        "column",
        "values"
      ],
      "inputs_omitted": 0,
      "annotations": {},
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.88
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      },
      "purpose": {
        "marker": "◇ AI reading",
        "text": "Retrieves dataset rows where a chosen column matches any of 2 to 10 given values, returned in the requested order.",
        "lens": "tool-purpose-v1",
        "model": null
      }
    },
    {
      "name": "dataset_provenance",
      "protocol": "mcp",
      "inputs": [],
      "inputs_omitted": 0,
      "annotations": {},
      "effects": null,
      "purpose": {
        "marker": "◇ AI reading",
        "text": "Returns the origin, computation date, licence and citation details of the Ppmly dataset for attributing a figure.",
        "lens": "tool-purpose-v1",
        "model": null
      }
    },
    {
      "name": "dataset_row",
      "protocol": "mcp",
      "inputs": [
        "column",
        "value"
      ],
      "inputs_omitted": 0,
      "annotations": {},
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.9
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      },
      "purpose": {
        "marker": "◇ AI reading",
        "text": "Returns Ppmly dataset records whose named column exactly matches a given text value, ignoring letter case.",
        "lens": "tool-purpose-v1",
        "model": null
      }
    },
    {
      "name": "dataset_search",
      "protocol": "mcp",
      "inputs": [
        "limit",
        "query"
      ],
      "inputs_omitted": 0,
      "annotations": {},
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.901
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      },
      "purpose": {
        "marker": "◇ AI reading",
        "text": "Returns up to 50 rows from the Ppmly dataset where any cell matches a given text query, ignoring case.",
        "lens": "tool-purpose-v1",
        "model": null
      }
    },
    {
      "name": "dataset_stats",
      "protocol": "mcp",
      "inputs": [
        "column"
      ],
      "inputs_omitted": 0,
      "annotations": {},
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.82
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      },
      "purpose": {
        "marker": "◇ AI reading",
        "text": "Reports count, minimum, maximum, mean, median and sum for a named numeric column in the Ppmly dataset.",
        "lens": "tool-purpose-v1",
        "model": null
      }
    },
    {
      "name": "dataset_top",
      "protocol": "mcp",
      "inputs": [
        "ascending",
        "column",
        "limit"
      ],
      "inputs_omitted": 0,
      "annotations": {},
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.91
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      },
      "purpose": {
        "marker": "◇ AI reading",
        "text": "Returns the top or bottom rows of a dataset ranked by a chosen numeric column, up to 50 rows.",
        "lens": "tool-purpose-v1",
        "model": null
      }
    }
  ],
  "tools_omitted": 0,
  "tools_state": "recorded",
  "changes": [],
  "payment_rails": {
    "protocols": [],
    "http_402_seen": false
  },
  "not_covered": [
    "We don't call tools.",
    "We don't rate or certify.",
    "We don't publish prices.",
    "We cover only what was observed."
  ],
  "evidence": [
    {
      "section": "Identity",
      "classes": [
        "observed",
        "declared"
      ],
      "observed_at": "2026-11-12T18:17:54.530Z"
    },
    {
      "section": "Tools",
      "classes": [
        "declared"
      ],
      "observed_at": "2026-11-12T18:17:54.530Z"
    },
    {
      "section": "Effect readings (AI)",
      "classes": [
        "AI reading"
      ],
      "observed_at": "2026-11-12T18:17:54.530Z"
    },
    {
      "section": "Change history",
      "classes": [
        "observed"
      ],
      "observed_at": "2026-11-12T18:17:54.530Z",
      "observation_times": []
    },
    {
      "section": "Payment rails",
      "classes": [
        "observed"
      ],
      "observed_at": "2026-11-12T18:17:54.530Z"
    }
  ]
}
```
