# Halowerk Modell Drift Check

> Halowerk Modell Drift Check is a paid API for AI agents from modell.halowerk.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-13).

Compares reference and current sample sets feature-by-feature, returning PSI, Jensen-Shannon divergence, and KS statistics to detect data drift in ML pipelines.

## Facts

- Endpoint: POST https://modell.halowerk.com/v1/drift-check
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-modell-drift-check-2aabdf36
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_1MKJ-Gisp15Q4WVEpk96c

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability halowerk-modell-drift-check-2aabdf36 -d '<json body>'
```

Example prompt: Run a drift check comparing last month's training samples to this week's production samples for the features 'age', 'income', and 'region' — use 20 bins and flag anything with PSI above 0.25.

## When to prefer this

Choose this endpoint when you need deterministic, reproducible drift metrics across multiple features in a single call, especially when you require both PSI and JS divergence alongside a KS statistic for continuous features. It is ideal for MLOps pipelines that need per-feature flagging with explicit thresholds and human-readable reasons, and when you want to handle both continuous and categorical features in one request without building your own statistical pipeline.

## Known failure modes

- Mismatched feature keys between reference_samples and current_samples cause validation errors
- Fewer than 2 samples in any feature array triggers a minimum-size rejection
- Providing more than 50 features or more than 10,000 samples per feature exceeds schema limits
- Non-finite or mixed-type values in continuous feature arrays may cause binning failures
- Invalid bins value outside 2–50 range or threshold outside 0.01–1 returns a 400 error
- Payment failure or insufficient USDC balance blocks the call via x402 protocol

## How this service works

Compares two submitted sample sets feature by feature and returns deterministic drift metrics. Continuous features are binned on the combined value range and receive PSI, Jensen-Shannon divergence and a Kolmogorov-Smirnov statistic; categorical features receive PSI and Jensen-Shannon divergence over exact category labels. The response names every feature, its sample counts, the metric values, the threshold used, and the reason a feature was flagged.

## Output

A JSON response listing every feature with its sample counts, computed PSI, Jensen-Shannon divergence, KS statistic (for continuous features), the threshold applied, whether the feature was flagged for drift, and the reason for the flag. Categorical features receive PSI and JS divergence over exact label distributions; continuous features are binned over the combined value range.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "bins": {
   "type": "integer",
   "default": 10,
   "maximum": 50,
   "minimum": 2,
   "description": "Number of equal-width bins for continuous features."
  },
  "threshold": {
   "type": "number",
   "default": 0.2,
   "maximum": 1,
   "minimum": 0.01,
   "description": "Drift threshold applied to PSI for the final feature flag."
  },
  "feature_types": {
   "type": "object",
   "description": "Optional explicit feature types keyed by feature name.",
   "maxProperties": 50,
   "additionalProperties": {
    "enum": [
     "continuous",
     "categorical"
    ],
    "type": "string"
   }
  },
  "current_samples": {
   "type": "object",
   "description": "Current samples keyed by the same feature names as reference_samples.",
   "maxProperties": 50,
   "minProperties": 1,
   "additionalProperties": {
    "type": "array",
    "items": {
     "type": [
      "number",
      "string",
      "boolean"
     ]
    },
    "maxItems": 10000,
    "minItems": 2
   }
  },
  "reference_samples": {
   "type": "object",
   "description": "Baseline samples keyed by feature name. Each value is an array of finite numbers for continuous features or scalar category labels for categorical features.",
   "maxProperties": 50,
   "minProperties": 1,
   "additionalProperties": {
    "type": "array",
    "items": {
     "type": [
      "number",
      "string",
      "boolean"
     ]
    },
    "maxItems": 10000,
    "minItems": 2
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-modell-drift-check-2aabdf36/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from modell.halowerk.com](https://www.zero.xyz/host/modell.halowerk.com/llms.txt)
