# Constat MCP — FDA Device Evidence Lifecycle (remote · constat.dev)

FDA and CMS evidence for AI medical devices: 510(k), postmarket, reimbursement, and compliance.

- Trust score: 70/100 (medium)
- Change this week: +11
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `constat.dev`: 70/100 (this document), [markdown](https://verifymcp.io/servers/com-healthai-radar/api-mcp.md), [page](https://verifymcp.io/servers/com-healthai-radar/api-mcp)

## Channel facts

- Endpoint: `https://constat.dev/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1916 tokens (~136/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 85% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-healthai-radar https://constat.dev/api/mcp
```

### Codex

```toml
[mcp_servers.com-healthai-radar]
url = "https://constat.dev/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-healthai-radar": {
      "type": "remote",
      "url": "https://constat.dev/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-healthai-radar --url https://constat.dev/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-healthai-radar:
    url: "https://constat.dev/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-healthai-radar": {
      "type": "http",
      "url": "https://constat.dev/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 70, +5)

- [security improvement] HTTPS: unverified → pass

### 2026-08-01 (score 65, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 64, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 66, +5)

- [security improvement] Authorization: unverified → partial
- [functional improvement] Tool “reimbursement_stats” now declares an output schema
- [functional improvement] Tool “vehicle_risk_lookup” now declares an output schema
- [functional improvement] Tool “watchlist_diff” now declares an output schema
- [functional improvement] Tool “cohort_postmarket_stats” now declares an output schema
- [functional improvement] Tool “device_evidence_lookup” now declares an output schema
- [functional improvement] Tool “device_postmarket_lookup” now declares an output schema
- [functional improvement] Tool “device_risk_lookup” now declares an output schema
- [functional improvement] Tool “evidence_cohort_stats” now declares an output schema
- [functional improvement] Tool “evidence_search” now declares an output schema
- [functional improvement] Tool “firm_compliance_history” now declares an output schema
- [functional improvement] Tool “postmarket_search” now declares an output schema
- [functional improvement] Tool “predicate_chain” now declares an output schema
- [functional improvement] Tool “reimbursement_lookup” now declares an output schema
- [functional improvement] Tool “reimbursement_search” now declares an output schema
- [functional] First check of Tool coverage: 100
- [functional] Server version: 0.5.2 → 0.5.3
- [functional] Server version: 0.5.0 → 0.5.2
- [cosmetic] Tool “reimbursement_stats” changed its title: Summarize Reimbursement Cohort
- [cosmetic] Tool “vehicle_risk_lookup” changed its title: Look Up Vehicle Safety History
- [cosmetic] Tool “watchlist_diff” changed its title: Poll Watchlist Changes
- [cosmetic] Tool “cohort_postmarket_stats” changed its title: Summarize Postmarket Cohort
- [cosmetic] Tool “device_evidence_lookup” changed its title: Look Up Device Evidence
- [cosmetic] Tool “device_postmarket_lookup” changed its title: Look Up Device Postmarket Signals
- [cosmetic] Tool “device_risk_lookup” changed its title: Review Device Category Risk Signals
- [cosmetic] Tool “evidence_cohort_stats” changed its title: Summarize Evidence Cohort
- [cosmetic] Tool “evidence_search” changed its title: Search Device Evidence
- [cosmetic] Tool “firm_compliance_history” changed its title: Review Firm Compliance History
- [cosmetic] Tool “postmarket_search” changed its title: Search Postmarket Signals
- [cosmetic] Tool “predicate_chain” changed its title: Trace Predicate Chain
- [cosmetic] Tool “reimbursement_lookup” changed its title: Look Up Reimbursement Pathways
- [cosmetic] Tool “reimbursement_search” changed its title: Search Reimbursement Pathways

### 2026-07-29 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 59, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 59)

First indexed and scored.

## MCP tools (14)

### `device_risk_lookup` (~87 tokens)

Review Device Category Risk Signals

Review a medical-device category's public FDA signals by three-letter product code (e.g. FRN = infusion pump). Returns recalls, MAUDE adverse-event trend, warning-letter matches, a normalized category signal, its driver contributions, and interpretation limits. It does not predict enforcement against a firm.

Input parameters:

- `product_code` (string, required): FDA product code, e.g. FRN

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `firm_compliance_history` (~200 tokens)

Review Firm Compliance History

Build a recent, source-bounded FDA public-record timeline for a device firm: matched recalls, warning letters, and Form 483 citations where exact FEI numbers are available. Product codes are discovered from Constat's AI/ML-device corpus or may be supplied explicitly. Returns attribution and coverage limits with the records; it is not a finding of noncompliance or a prediction of FDA action.

Input parameters:

- `fei_numbers` (array): Optional exact FDA FEI numbers; improves Form 483 attribution.
- `firm_name` (string, required): FDA applicant or company name, e.g. 'Medtronic'
- `limit` (integer): Maximum records per source and events in the timeline (default 50).
- `product_codes` (array): Optional FDA product-code scope. When omitted, Constat discovers codes from applicant matches in its device corpus.
- `since` (string): Earliest event date, YYYY-MM-DD. Defaults to five years ago.

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `watchlist_diff` (~149 tokens)

Poll Watchlist Changes

Return machine-generated FDA public-record changes detected for monitored product codes since a caller-supplied date, plus each code's latest category snapshot and postmarket coverage. Defaults to Constat Radar's five-code watchlist and the last seven days. Analyst verdict text and internal review status are excluded; use next_since as the next polling cursor.

Input parameters:

- `limit` (integer): Maximum changes to return (default 100).
- `product_codes` (array): FDA product codes to poll. Omit for the default Radar watchlist.
- `since` (string): Return changes on or after this ISO date or UTC timestamp. Defaults to the last seven days; pass the prior response's next_since for exact polling.

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `device_evidence_lookup` (~110 tokens)

Look Up Device Evidence

Look up the structured premarket evidence FDA accepted for a specific AI/ML-enabled device by 510(k) number (e.g. K252148). Returns parsed summary fields — validation study design, sample sizes, endpoints, reported performance, predicate chain, PCCP — each with a verbatim source quote and page. Null means the summary did not state it.

Input parameters:

- `k_number` (string, required): 510(k) or De Novo number, e.g. K252148 or DEN180001

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `evidence_search` (~210 tokens)

Search Device Evidence

Find AI/ML device clearances by filter — product code, panel, applicant, and whether the submission reported clinical data, any sensitivity metric, or a PCCP. Answers 'what evidence did FDA accept for devices like mine'. Returns matching records with their parsed evidence. Presence flags are descriptive: 'reports a sensitivity metric' is not 'reports a comparable sensitivity' — analysis units differ across devices.

Input parameters:

- `applicant` (string): Substring match on applicant/company name
- `has_clinical_data` (boolean)
- `has_pccp` (boolean): Included a Predetermined Change Control Plan
- `limit` (integer)
- `panel` (string): Advisory panel, e.g. Radiology
- `product_code` (string): FDA product code, e.g. QAS
- `reports_any_sensitivity_metric` (boolean): Reported any sensitivity metric (canonical — includes per-finding sensitivities, not just the top-level slot). Not a claim of cross-device comparability.

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `predicate_chain` (~92 tokens)

Trace Predicate Chain

Trace the predicate ancestry of a 510(k) device, with each cited predicate's age (how many years old the predicate was when the child cleared). Reveals how AI/ML devices chain to older predicates.

Input parameters:

- `depth` (integer): Max ancestry depth (default 4)
- `k_number` (string, required): 510(k) or De Novo number, e.g. K252148 or DEN180001

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `evidence_cohort_stats` (~121 tokens)

Summarize Evidence Cohort

Reporting-rate stats across the parsed AI/ML corpus (optionally by panel). Each rate is a presence figure with its denominator — 'reported in X of Y audited devices' — never a pooled performance value. Excludes not-yet-parsed devices from every denominator and discloses the parse queue separately. Predicate age (median years between a clearance and its cited predicates) is included when decision-date coverage clears a 60% floor, and withheld otherwise.

Input parameters:

- `panel` (string): Advisory panel, e.g. Radiology; omit for all

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `device_postmarket_lookup` (~123 tokens)

Look Up Device Postmarket Signals

Post-clearance intelligence for one AI/ML device by 510(k) number: its product code's recalls, MAUDE adverse-event level and trend, warning-letter and 483 matches for the applicant, plus per-device drift signals (adverse-event inflection, re-clearances of the same device line, software-recall patterns, predicate-cohort recall activity). Descriptive observables with sources — never a safety judgment.

Input parameters:

- `k_number` (string, required): 510(k) or De Novo number, e.g. K252148 or DEN180001

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `postmarket_search` (~225 tokens)

Search Postmarket Signals

Find AI/ML devices by postmarket criteria — product code, panel, applicant, whether any drift signal exists, minimum recalls in 24 months, or a rising MAUDE trend. Returns per-device postmarket summaries with drift-signal counts.

Input parameters:

- `applicant` (string): Substring match on applicant/company name
- `has_drift_signal` (boolean)
- `limit` (integer)
- `maude_trend_up` (boolean): Code-level MAUDE trend above its own 3-year baseline
- `min_recalls_24mo` (integer): Product-code recalls in trailing 24 months
- `panel` (string): Advisory panel, e.g. Radiology
- `product_code` (string): FDA product code, e.g. QIH
- `signal_specificity` (string): Restrict the drift-signal filter to one tier: 'device' = attributable to this device (own line re-cleared, own applicant's recall, predicate neighbors) — the high-signal tier; 'product_code' = observ…

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `cohort_postmarket_stats` (~89 tokens)

Summarize Postmarket Cohort

Postmarket presence rates across the snapshotted AI/ML device cohort (optionally by panel): share with any recall in 24 months, with a rising MAUDE trend, with any drift signal, with a warning-letter match — every rate with its denominator inline, never pooled across devices.

Input parameters:

- `panel` (string): Advisory panel, e.g. Radiology; omit for all

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `reimbursement_lookup` (~184 tokens)

Look Up Reimbursement Pathways

Trace the clearance-to-payment pathway for an AI/ML device by FDA clearance number (K/DEN, e.g. DEN170073) OR bare CPT code (e.g. 75580). Returns every payment mechanism (NTAP add-on, Category I/III CPT + CMS rate, HCPCS, MAC LCD) with amounts, effective dates, and source links, plus any commercial/MAC payer coverage policies that reference the clearance or its codes. Answers 'who got paid, how much, through which mechanism, on what basis.' CPT codes are bare factual identifiers only — no procedure descriptors; follow the CMS source link for the official descriptor.

Input parameters:

- `cpt_code` (string): Bare CPT code, e.g. 75580 or 0932T
- `k_number` (string): FDA clearance number, e.g. DEN170073 or K252148

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `reimbursement_search` (~157 tokens)

Search Reimbursement Pathways

Find AI/ML device payment pathways by mechanism — e.g. 'devices that got NTAP', 'devices paid under a Category I CPT code', 'pathways with a known CMS dollar rate'. Filters: mechanism, CPT category, NTAP status, applicant. Returns pathways with amounts, effective dates, and sources. Use reimbursement_stats for the mechanism distribution (never a single pooled reimbursement rate).

Input parameters:

- `applicant` (string): Substring match on device maker / applicant name
- `cpt_category` (string): CPT category
- `has_cms_rate` (boolean): Only pathways with a known CMS dollar rate
- `limit` (integer)
- `mechanism` (string): Payment mechanism
- `ntap_status` (string)

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `reimbursement_stats` (~84 tokens)

Summarize Reimbursement Cohort

Distribution of payment mechanisms across the AI/ML reimbursement corpus — pathway and distinct-device counts per mechanism (NTAP, Cat I, Cat III/APC, …) with the min/median/max dollar amounts for each. Deliberately never a single pooled 'reimbursement rate': NTAP add-on amounts and CMS rates are different measurements and are reported separately with their own spreads.

Output parameters:

- `data`
- `message` (string)
- `status` (string)

### `vehicle_risk_lookup` (~85 tokens)

Look Up Vehicle Safety History

Look up NHTSA safety history for a vehicle by make, model, and model year. Returns recall campaigns and complaint statistics (crashes, fires, injuries, top components).

Input parameters:

- `make` (string, required): e.g. honda
- `model` (string, required): e.g. civic
- `year` (string, required): model year, e.g. 2020

Output parameters:

- `data`
- `message` (string)
- `status` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-healthai-radar/api-mcp#diagnostics

## Score history

- 2026-08-03: 70
- 2026-08-02: 70
- 2026-08-01: 65
- 2026-07-31: 64
- 2026-07-30: 66
- 2026-07-29: 61
- 2026-07-28: 60
- 2026-07-27: 59
- 2026-07-26: 59

## Links

- Remote endpoint: https://constat.dev/api/mcp
- Repository: https://github.com/healthai-hq/fda-risk-radar
- Website: https://constat.dev/connect
- Changelog RSS feed: https://verifymcp.io/servers/com-healthai-radar/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-healthai-radar/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-healthai-radar/api-mcp
