Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

AnomalyArmor

PYPI · ARMOR-MCP · 2 COMPONENTS · SCANNED SEP 20

Data observability tools for engineering teams: alerts, freshness, schema drift, lineage, quality.

−1 this week 84 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 3 of 29 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability88
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 5788 tokens (~101/item across 57 items; 53 tools + 4 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 53 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 55 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the AnomalyArmor MCP server?

AnomalyArmor runs locally as a PyPI package, launched with uvx armor-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · armor-mcp

# add to Claude Code
claude mcp add ai-anomalyarmor-armor-mcp -- uvx armor-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "ai-anomalyarmor-armor-mcp": {
      "command": "uvx",
      "args": [
        "armor-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ai-anomalyarmor-armor-mcp": {
      "command": "uvx",
      "args": [
        "armor-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add ai-anomalyarmor-armor-mcp -- uvx armor-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-anomalyarmor-armor-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "armor-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ai-anomalyarmor-armor-mcp --command uvx --arg armor-mcp
# ~/.hermes/config.yaml
mcp_servers:
  ai-anomalyarmor-armor-mcp:
    command: "uvx"
    args: ["armor-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ai-anomalyarmor-armor-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "armor-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add ai-anomalyarmor-armor-mcp -t stdio -c uvx -a armor-mcp
// mcp.json
{
  "mcpServers": {
    "ai-anomalyarmor-armor-mcp": {
      "command": "uvx",
      "args": [
        "armor-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 0
    • Security disclosure: unverified → fail functional
  • 19 Sept 26 0
    • Security disclosure: fail → unverified functional
  • 18 Sept 26 −3
    • Stability: pass → 0.77 functional
  • 17 Sept 26 +1
    • Stability: 0.97 → pass security
  • 15 Sept 26 +1

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

  • 13 Sept 26 +1

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

  • 11 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 10 Sept 26 +1
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/armor-mcp@0.6.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 29 packages
Packages resolved 29
Stale 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 53 exposed · ~5,496 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
apply_tags ~130

Apply tags to database objects. Supports single or cross-asset bulk tagging. Use explore to find valid object paths before tagging.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
asset_idsApply tags across multiple assets (for bulk apply, overrides asset_id)
object_pathFull path to the object (e.g., "public.users.email")
object_typestringType of database object: "column", "table", or "schema"
tagsList of tag names to apply (e.g., ["pii", "revenue-critical"])

No output schema declared.

No examples provided.

ask_question ~108

Ask a natural language question about your data. Uses AI to analyze your schema, metadata, and monitoring data to answer.

NameTypeReqDescription
asset_idAsset UUID to scope the question (from list_assets). Omit for all assets.
include_lineagebooleanInclude lineage info in context (default False)
include_schemabooleanInclude schema info in context (default True)
questionstringyesNatural language question (e.g., "What tables contain customer PII?")

No output schema declared.

No examples provided.

cancel_job ~58

Cancel a running or pending background job. Use this when a long-running operation (intelligence generation, asset discovery) needs to be stopped.

NameTypeReqDescription
job_idstringyesJob UUID (from trigger_asset_discovery, generate_intelligence, etc.)

No output schema declared.

No examples provided.

check_freshness ~74

Check freshness status for all monitored tables in an asset. Shows which tables are fresh, stale, or unknown. Use setup_freshness to add monitoring for new tables.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
stale_onlybooleanOnly return stale tables (default False)

No output schema declared.

No examples provided.

create_alert_rule ~190

Create an alert rule to notify when data issues are detected. Routes to specified destinations (or default email). Use list_destinations to find destination IDs, list_assets for asset IDs.

NameTypeReqDescription
asset_idsUUIDs of assets to scope the rule to (from list_assets). Omit for all.
descriptionOptional description of the rule's purpose
destination_idsUUIDs of destinations to route alerts to (from list_destinations). Falls back to default email if omitted.
event_typesEvent types to monitor: "freshness_stale", "schema_drift", "metric_anomaly", "validity_failure", "custom_sql". Omit for all.
namestringyesHuman-readable name for the alert rule
severitiesSeverity levels to trigger on: "info", "warning", "critical". Omit for all.

No output schema declared.

No examples provided.

create_asset ~178

Connect a new data source to AnomalyArmor. After creating, use trigger_asset_discovery to discover tables and columns.

NameTypeReqDescription
connection_configobjectyesConnection details (varies by source_type). Examples: PostgreSQL: {"host": "...", "port": 5432, "database": "...", "username": "...", "password": "..."} Snowflake…
descriptionOptional description of the data source
namestringyesDisplay name for the asset (e.g., "Production PostgreSQL")
source_typestringyesDatabase type: "postgresql", "snowflake", "bigquery", "redshift", "mysql", "databricks"

No output schema declared.

No examples provided.

create_metric ~120

Create a data quality metric for a table. Use explore to find table paths and column names.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
column_nameColumn to monitor (required for column-level metrics like null_rate, mean, etc.)
metric_typestringyesType of metric: "row_count", "null_rate", "unique_rate", "min", "max", "mean", "stddev"
table_pathstringyesFull table path (e.g., "public.orders")

No output schema declared.

No examples provided.

create_referential_check ~161

Create a referential integrity check between two columns. Detects orphaned foreign key references. Use explore to find table and column names.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
nameHuman-readable name (auto-generated if omitted)
severitystringAlert severity: "warning" (default), "error", "critical"
source_columnstringyesForeign key column (e.g., "customer_id")
source_tablestringyesTable containing the foreign key (e.g., "public.orders")
target_columnstringyesReferenced column (e.g., "id")
target_tablestringyesReferenced table (e.g., "public.customers")

No output schema declared.

No examples provided.

create_schema_baseline ~53

Capture current schema as baseline for drift detection. Required before enable_schema_monitoring can detect changes.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
descriptionOptional description for the baseline

No output schema declared.

No examples provided.

create_tag ~84

Create a new tag for labeling database objects. After creating, use apply_tags to attach it to tables or columns.

NameTypeReqDescription
colorOptional hex color code (e.g., "#FF5733")
descriptionOptional description of the tag's purpose
namestringyesTag name (e.g., "pii", "revenue-critical", "deprecated")

No output schema declared.

No examples provided.

create_validity_rule ~209

Create a data validity rule for a specific column. Checks column values against defined constraints. Use explore to find table and column names.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
column_namestringyesColumn to validate
nameHuman-readable rule name (auto-generated if omitted)
rule_configobjectyesConfig for the rule type. Examples: {"pattern": "^[A-Z]"} for regex_match, {"values": ["a","b"]} for allowed_values, {"min": 0, "max": 100} for range_bounds
rule_typestringyesType of check: "regex_match", "allowed_values", "range_bounds", "format", "length_bounds"
severitystringAlert severity when rule fails: "error" (default), "warning", "critical"
table_pathstringyesFull table path (e.g., "public.users")

No output schema declared.

No examples provided.

disable_schema_monitoring ~39

Disable schema drift monitoring for an asset. Keeps baseline for re-enabling.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)

No output schema declared.

No examples provided.

dry_run_schema ~78

Preview schema drift detection without persisting. Compares current schema against baseline to show what changes would be detected. Use this to test before enabling monitoring.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
schedule_typestringSchedule for alert estimation: "1h", "1d", "1w"

No output schema declared.

No examples provided.

enable_schema_monitoring ~111

Enable schema drift monitoring for an asset. Detects column additions, removals, type changes, and other schema modifications. Use list_schema_changes to view detected changes.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
auto_create_baselinebooleanCreate baseline if none exists (default True)
schedule_typestringHow often to check for drift: "5m", "1h", "6h", "1d", "1w"

No output schema declared.

No examples provided.

generate_intelligence ~73

Generate AI analysis for an asset. Analyzes schema, data patterns, and metadata to generate insights. Results are cached. Runs as a background job with progress reporting.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
force_refreshbooleanForce regeneration even if cached (default False)

No output schema declared.

No examples provided.

get_alert_history ~57

Get status change history for a specific alert. Shows the full lifecycle: when it was triggered, acknowledged, resolved, etc., with notes and who made each change.

NameTypeReqDescription
alert_idstringyesAlert UUID (from list_alerts)

No output schema declared.

No examples provided.

get_alert_trends ~61

Get aggregate alert trend data across all assets. Shows alert volume and patterns over time for trend analysis.

NameTypeReqDescription
periodstringTime period: "24h", "7d", "30d", "90d" (default "7d")

No output schema declared.

No examples provided.

get_alerts_summary ~39

Get alert overview with counts by status and severity. Quick snapshot of triggered, acknowledged, and resolved alerts. For individual alerts use list_alerts.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_api_key_info ~91

View API key information (read-only). Cannot create or revoke keys.

NameTypeReqDescription
key_idAPI key UUID (required for view="detail")
viewstringWhat to show: "list" - list all API keys with names and last-used dates "detail" - get details of a specific key (requires key_id) "usage" - show API usage statistics

No output schema declared.

No examples provided.

get_coverage ~89

Get monitoring coverage score and tier information. Shows how well your data assets are monitored with scores, tiers, and per-feature breakdowns.

NameTypeReqDescription
asset_idAsset UUID (required when scope="asset")
scopestringCoverage scope: "company" - company-wide rollup across all assets "asset" - per-asset score with feature breakdown (requires asset_id)

No output schema declared.

No examples provided.

get_freshness_summary ~45

Get freshness monitoring summary with counts of fresh, stale, and unknown tables. For a quick overview use health_summary. For per-table details use check_freshness.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_lineage ~115

Get data lineage for an asset showing upstream sources and downstream consumers. Requires a dbt manifest to be uploaded via the UI or API.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
depthintegerHow many hops to traverse (default 2)
directionstringLineage direction: "upstream", "downstream", or "both" (default "both")
list_allbooleanList all lineage entries for the asset instead of graph view (default False)

No output schema declared.

No examples provided.

get_metrics_summary ~46

Get metrics monitoring summary for an asset. Shows total metrics, active count, anomaly count, and per-type breakdown.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)

No output schema declared.

No examples provided.

get_schema_monitoring ~49

Get schema monitoring configuration for an asset. Shows whether monitoring is enabled, schedule type, baseline info, and last check timestamp.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)

No output schema declared.

No examples provided.

get_schema_summary ~35

Get schema drift summary with total changes, unacknowledged count, and severity breakdown. For individual changes use list_schema_changes.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_todays_briefing ~51

Get today's data health briefing with key events and recommendations. Provides a daily summary of alerts fired, freshness issues, schema changes, and suggested actions. Good starting point for a morning check-in.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_validity_summary ~47

Get validity rules summary for an asset. Shows total rules, active count, failing count, and per-type breakdown.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)

No output schema declared.

No examples provided.

health_summary ~50

Start here for a quick overview of data health. Returns aggregated status across alerts, freshness, schema drift, metrics, and validity. For per-table details, use check_freshness or list_schema_changes.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

job_status ~95

Check status of an async job (discovery, intelligence generation, etc.). Returns a user_status field with simplified status: "in_progress", "completed", "failed", or "cancelled". Internal states like "pending" and "claimed" are mapped to "in_progress" so consumers don't need to handle them.

NameTypeReqDescription
job_idstringyesJob UUID (from trigger_asset_discovery, generate_intelligence, etc.)

No output schema declared.

No examples provided.

list_alert_rules ~72

List configured alert rules showing which events and severities each rule monitors. Use create_alert_rule to add new rules, list_destinations to find destination IDs for routing.

NameTypeReqDescription
active_onlybooleanOnly return active rules (default True)
asset_idFilter by asset UUID (from list_assets)

No output schema declared.

No examples provided.

list_alerts ~160

List recent alerts with severity, status, and asset info. Use update_alert to acknowledge, resolve, dismiss, or snooze alerts.

NameTypeReqDescription
asset_idFilter by asset UUID (from list_assets)
from_dateStart of date range (ISO 8601, e.g., "2026-01-29T00:00:00Z")
limitintegerMaximum results (default 25, max 100)
severityFilter by severity ("info", "warning", "critical")
statusFilter by status ("triggered", "acknowledged", "resolved", "dismissed", "snoozed")
to_dateEnd of date range (ISO 8601)

No output schema declared.

No examples provided.

list_assets ~86

List all connected data assets (databases, warehouses). Returns asset IDs needed by most other tools. Start here to find asset UUIDs for use with check_freshness, list_metrics, explore, etc.

NameTypeReqDescription
asset_typeFilter by type ("postgresql", "snowflake", "bigquery", etc.)
limitintegerMaximum results (default 25)

No output schema declared.

No examples provided.

list_destinations ~122

List configured alert destinations (Slack, email, webhook). Returns ALL destinations by default, including disabled ones. Check the is_active field to see if a destination is enabled or disabled. Prefer re-enabling existing destinations over creating new ones. Returns destination IDs needed for create_alert_rule. Use setup_destination to create new destinations, or manage_destination to re-enable an inactive one.

NameTypeReqDescription
active_onlybooleanOnly return active destinations (default False, shows all)
destination_typeFilter by type: "slack", "webhook", "email"

No output schema declared.

No examples provided.

list_freshness_schedules ~59

List freshness monitoring schedules showing check intervals and status. Use setup_freshness to add new schedules.

NameTypeReqDescription
asset_idFilter by asset UUID (from list_assets)
limitintegerMaximum results (default 25)

No output schema declared.

No examples provided.

list_inbox_alerts ~82

List unresolved alerts in inbox view (triggered + acknowledged only). Focused view for triaging active alerts. Use update_alert to take action.

NameTypeReqDescription
asset_idFilter by asset UUID (from list_assets)
limitintegerMaximum results (default 25)
severityFilter by severity ("info", "warning", "critical")

No output schema declared.

No examples provided.

list_metrics ~64

List data quality metrics configured for an asset. Shows metric type, table, column, and active status. Use create_metric to add new metrics.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
limitintegerMaximum results (default 25)

No output schema declared.

No examples provided.

list_schema_changes ~106

List recent schema changes showing change type, severity, and acknowledgment status. For summary counts use get_schema_summary. To enable monitoring use enable_schema_monitoring.

NameTypeReqDescription
asset_idFilter by asset UUID (from list_assets)
limitintegerMaximum results (default 25)
severityFilter by severity: "critical", "warning", "info"
unacknowledged_onlybooleanOnly return unacknowledged changes (default false)

No output schema declared.

No examples provided.

list_tags ~61

List tags applied to database objects within an asset. Use explore to find valid object paths.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
object_pathFilter to tags on a specific object (e.g., "public.users.email")

No output schema declared.

No examples provided.

list_validity_rules ~68

List data validity rules configured for an asset. Shows rule type, table, column, and active status. Use create_validity_rule to add new rules.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
limitintegerMaximum results (default 25)

No output schema declared.

No examples provided.

manage_alert_rule ~123

Manage an existing alert rule: get details, update, or delete. Use list_alert_rules to find rule IDs.

NameTypeReqDescription
actionstringyesOperation: "get", "update", or "delete"
descriptionNew description (for update)
event_typesNew event types (for update)
is_activeEnable/disable rule (for update)
nameNew name (for update)
rule_idstringyesAlert rule UUID (from list_alert_rules)
severitiesNew severity levels (for update)

No output schema declared.

No examples provided.

manage_asset ~69

Get asset details or test its connection.

NameTypeReqDescription
actionstringyesOperation to perform: "get" - get full asset details including schema, table count, etc. "test" - test the database connection is working
asset_idstringyesAsset UUID (from list_assets)

No output schema declared.

No examples provided.

manage_coverage ~146

Analyze coverage gaps or apply monitoring recommendations in batch. Use get_coverage to see current scores first.

NameTypeReqDescription
actionstringyesOperation to perform: "gaps" - list unmonitored tables ranked by importance "apply" - apply recommended monitoring in batch
asset_idstringyesAsset UUID (from list_assets)
limitintegerMaximum gap recommendations (for gaps action, default 20)
table_pathsLimit to specific tables (for apply action, omit for all)
typesMonitoring types to apply: "freshness", "metrics", "schema_drift" (for apply action, omit for all)

No output schema declared.

No examples provided.

manage_destination ~114

Manage an existing alert destination: get details, update, delete, or test. Use list_destinations to find destination IDs.

NameTypeReqDescription
actionstringyesOperation: "get", "update", "delete", or "test"
configNew config dict (for update, e.g., {"webhook_url": "..."})
destination_idstringyesDestination UUID (from list_destinations)
is_activeEnable/disable (for update)
nameNew display name (for update)

No output schema declared.

No examples provided.

manage_freshness_schedule ~138

Update or delete a freshness monitoring schedule. Use list_freshness_schedules to find schedule IDs.

NameTypeReqDescription
actionstringyesOperation: "update" or "delete"
check_intervalNew check interval (for update)
expected_interval_hoursNew staleness threshold (for update)
freshness_columnNew column to check (for update)
is_activeEnable/disable schedule (for update)
monitoring_modeNew mode: "auto_learn" or "explicit" (for update)
schedule_idstringyesSchedule UUID (from list_freshness_schedules)

No output schema declared.

No examples provided.

manage_metric ~187

Manage an existing metric: get details, update, delete, trigger capture, or view snapshots. Use list_metrics to find metric IDs.

NameTypeReqDescription
actionstringyesOperation: "get" - get metric details and current value "update" - update metric settings "delete" - delete the metric "capture" - trigger an immediate metric capture "snapshots"…
asset_idstringyesAsset UUID (from list_assets)
capture_intervalNew capture interval (for update)
is_activeEnable/disable metric (for update)
limitintegerMax snapshots to return (for snapshots action, default 100)
metric_idstringyesMetric UUID (from list_metrics)
sensitivityAnomaly detection sensitivity 0.0-1.0 (for update)

No output schema declared.

No examples provided.

manage_referential ~231

Manage referential integrity checks: view, update, delete, execute, or get results. Use create_referential_check to create new checks.

NameTypeReqDescription
actionstringyesOperation to perform: "summary" - get overview of all checks for the asset "list" - list all checks for the asset "get" - get details of a specific check (requires check_id) "update"…
asset_idstringyesAsset UUID (from list_assets)
check_idCheck UUID (required for get/update/delete/execute/results)
is_activeEnable/disable (for update action)
limitintegerMax results (for list/results actions, default 25)
nameNew name (for update action)
severityNew severity (for update action)

No output schema declared.

No examples provided.

manage_rule_destinations ~116

Manage which destinations an alert rule routes to.

NameTypeReqDescription
actionstringyesOperation: "list" - list destinations linked to this rule "link" - link destinations to the rule (requires destination_ids) "unlink" - unlink a destination from the rule (requires destina…
destination_idSingle destination UUID to unlink (for unlink action)
destination_idsDestination UUIDs to link (for link action)
rule_idstringyesAlert rule UUID (from list_alert_rules)

No output schema declared.

No examples provided.

manage_validity_rule ~190

Manage an existing validity rule: get details, update, delete, check, or view results. Use list_validity_rules to find rule IDs.

NameTypeReqDescription
actionstringyesOperation: "get" - get rule details "update" - update rule settings "delete" - delete the rule "check" - run the validity check now "results" - view recent check results
asset_idstringyesAsset UUID (from list_assets)
is_activeEnable/disable (for update)
limitintegerMax results to return (for results action, default 25)
nameNew name (for update)
rule_configNew rule config (for update)
rule_idstringyesValidity rule UUID (from list_validity_rules)
severityNew severity (for update)

No output schema declared.

No examples provided.

recommend ~208

Get AI-driven monitoring recommendations for an asset. Analyzes historical patterns, schema, and alert data to suggest monitoring improvements.

NameTypeReqDescription
asset_idstringyesAsset UUID (from list_assets)
daysintegerHistorical window in days (for thresholds, default 30)
include_monitoredbooleanInclude already-monitored tables (for freshness, default False)
limitintegerMaximum recommendations (default 20)
min_confidencenumberMinimum confidence threshold 0.0-1.0 (for freshness/metrics, default 0.5)
recommendation_typestringyesType of recommendation: "freshness" - suggest tables and thresholds for freshness monitoring "metrics" - suggest quality metrics based on column analysis "coverage" - identify unmonitored…
table_pathFilter to specific table (for metrics)

No output schema declared.

No examples provided.

setup_destination ~135

Create an alert destination with auto-discovery. For Slack: provide channel_name (auto-discovers OAuth connection). For webhook: provide webhook_url. For email: provide email address. After creating, use create_alert_rule to route alerts to the destination.

NameTypeReqDescription
channel_nameSlack channel name without # (required for Slack)
destination_typestringyesType of destination: "slack", "webhook", or "email"
emailEmail address (required for email)
nameDisplay name for the destination (auto-generated if omitted)
webhook_urlFull webhook URL (required for webhook)

No output schema declared.

No examples provided.

Common questions

What is the AnomalyArmor MCP server?

AnomalyArmor is an MCP server listed in the public MCP registry as ai.anomalyarmor/armor-mcp. Data observability tools for engineering teams: alerts, freshness, schema drift, lineage, quality. This page covers its PyPI package (armor-mcp).

Is the AnomalyArmor MCP server safe to use?

AnomalyArmor scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the AnomalyArmor MCP server expose?

AnomalyArmor exposes 53 tools: get_alerts_summary, list_alerts, list_inbox_alerts, update_alert, list_alert_rules, and 48 more. Their descriptions and schemas cost roughly 5,496 tokens of context every time the server is loaded.

Is the AnomalyArmor MCP server still maintained?

AnomalyArmor is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the AnomalyArmor MCP server under?

AnomalyArmor declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.