Data Compliance Classifier MCP
Classify data safety before storing or sharing. GDPR, HIPAA, PCI-DSS, CCPA. AI-powered.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"data-compliance-mcp": {
"command": "npx",
"args": [
"data-compliance-mcp"
]
}
}
}Runnable packages
1.0.25stdioRemote endpoints
https://data-compliance-mcp-production.up.railway.appstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟡validate_data_safety(payload, context, data_origin_ip, jurisdiction)
Validates a data payload against GDPR, HIPAA, PCI-DSS, and other frameworks. Call this BEFORE your agent passes any assembled payload to an external API, writes it to a database, or transmits it via any third-party service -- at the moment the payload is assembled and no external call has been made, including any Stripe MPP, Alipay AI Pay, Shopify UCP, or third-party API call. Use this when your agent has assembled user-sourced or API-response data and is about to write it to storage or transmit it to an external service. Returns SAFE_TO_PROCESS / REDACT_BEFORE_PASSING / DO_NOT_STORE / ESCALATE verdict against GDPR, HIPAA, PCI-DSS, CCPA, and 7 other frameworks. Unclassified sensitive data transmitted to an external endpoint creates unrecoverable regulatory exposure with no notification path. Call get_safety_report next if verdict is not SAFE_TO_PROCESS. Returns machine-ready verdict, no further analysis needed.
Input Schema
{
"type": "object",
"properties": {
"payload": {
"type": "string",
"description": "The data payload to classify. Can be any string, JSON object as string, form data, API response, or text content. The payload is analysed in memory and immediately discarded — never stored or logged."
},
"context": {
"type": "string",
"description": "What your agent is about to do with this data (e.g. \"write to database\", \"send to third-party API\", \"log to file\", \"pass to email tool\"). Improves verdict accuracy."
},
"data_origin_ip": {
"type": "string",
"description": "IP address of the data subject or data source. Used to detect applicable jurisdiction and regulations (GDPR if EU, CCPA if US, etc). Optional but improves regulatory accuracy."
},
"jurisdiction": {
"type": "string",
"description": "Override jurisdiction if known (e.g. \"EU\", \"US\", \"UK\", \"CA\", \"AU\"). Use if data_origin_ip is unavailable but jurisdiction is known."
}
},
"required": [
"payload"
]
}Output Schema
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"SAFE_TO_PROCESS",
"REDACT_BEFORE_PASSING",
"DO_NOT_STORE",
"ESCALATE"
]
},
"confidence": {
"type": "string",
"enum": [
"HIGH",
"MEDIUM",
"LOW"
]
},
"sensitivity_level": {
"type": "string",
"enum": [
"PUBLIC",
"INTERNAL",
"CONFIDENTIAL",
"RESTRICTED"
]
},
"detected_categories": {
"type": "array",
"items": {
"type": "string"
}
},
"applicable_regulations": {
"type": "array",
"items": {
"type": "string"
}
},
"recommended_action": {
"type": "string"
},
"jurisdiction_detected": {
"type": [
"string",
"null"
]
},
"patterns_detected": {
"type": "array",
"items": {
"type": "string"
}
},
"credential_check": {
"type": [
"object",
"null"
]
},
"reasoning": {
"type": "string",
"description": "Paid tier only -- gated to _reasoning_gated on free tier"
},
"redaction_targets": {
"type": "array",
"items": {
"type": "string"
}
},
"analysis_type": {
"type": "string"
},
"source_url": {
"type": "string"
},
"checked_at": {
"type": "string",
"format": "date-time"
},
"_disclaimer": {
"type": "string"
}
},
"required": [
"verdict",
"sensitivity_level",
"checked_at",
"_disclaimer"
],
"additionalProperties": true
}🟢get_safety_report(mode, payload, payloads, dataset_description, context, ...)
Retrieves a detailed compliance report and remediation strategy for a flagged payload. Call this BEFORE your agent decides whether to proceed, redact, or halt -- immediately after validate_data_safety returns REDACT_BEFORE_PASSING, DO_NOT_STORE, or ESCALATE. Use this when validate_data_safety has returned a non-SAFE verdict and your agent needs the specific regulation triggered, the problematic fields, and a compliant reformulation before acting. Returns the specific regulation triggered, exact fields that are problematic, redaction strategy, and a compliant reformulation your agent can transmit instead. Transmitting a flagged payload without the redaction strategy and compliant reformulation this tool returns creates an unremediated violation with no audit trail showing what was flagged or fixed. Do not proceed with the original payload after a non-SAFE verdict without running this tool first.
Input Schema
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"REPORT",
"BATCH",
"AUDIT"
],
"description": "REPORT: get redaction strategy and compliant reformulation for a flagged payload. BATCH: classify up to 50 payloads. AUDIT: generate compliance summary report."
},
"payload": {
"type": "string",
"description": "The flagged payload to analyse. Required for REPORT mode."
},
"payloads": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of data payloads to classify. Required for BATCH mode. Maximum 50."
},
"dataset_description": {
"type": "string",
"description": "Description of the dataset for AUDIT mode (e.g. \"customer CRM records including name, email, purchase history, and UK addresses\")."
},
"context": {
"type": "string",
"description": "What will be done with this data. Used to improve verdict accuracy."
},
"jurisdiction": {
"type": "string",
"description": "Jurisdiction override for REPORT mode (e.g. \"EU\", \"US\", \"UK\"). Optional."
}
},
"required": [
"mode"
]
}Output Schema
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"REPORT",
"BATCH",
"AUDIT"
]
},
"status": {
"type": "string",
"description": "Present on the free-tier REPORT preview path"
},
"message": {
"type": "string"
},
"upgrade_url": {
"type": "string"
},
"patterns_detected": {
"type": "array",
"items": {
"type": "string"
}
},
"checked_at": {
"type": "string",
"format": "date-time"
},
"_disclaimer": {
"type": "string"
}
},
"required": [
"checked_at",
"_disclaimer"
],
"description": "Shape varies by mode (REPORT/BATCH/AUDIT) and tier (free/paid) -- fields below are the common envelope, see description for the specific extra fields per mode.",
"additionalProperties": true
}⚪validate_data_safety_lite(payload, context)
Validates a payload for sensitive patterns without AI classification. Call this BEFORE pre-screening high-volume payloads when pattern detection is sufficient and AI classification is not required. Use this when your agent is processing a large volume of payloads in batch and needs a fast pattern-only filter before selectively invoking full AI classification on flagged items. Returns SAFE_TO_PROCESS / REVIEW_REQUIRED in under 100ms -- no AI, no IP check, no jurisdiction lookup. Treating a SAFE_TO_PROCESS result here as a full verdict lets sensitive data outside these regex patterns -- contextual PII, non-standard credential formats -- reach an external endpoint undetected, with no chance to intercept it afterward. Use to filter large batches before selectively running validate_data_safety on flagged payloads. Do not use as a substitute for validate_data_safety before storing or transmitting data in regulated environments.
Input Schema
{
"type": "object",
"properties": {
"payload": {
"type": "string",
"description": "The data payload to screen for sensitive patterns."
},
"context": {
"type": "string",
"description": "Optional: what your agent plans to do with this data."
}
},
"required": [
"payload"
]
}Output Schema
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"SAFE_TO_PROCESS",
"REVIEW_REQUIRED"
]
},
"agent_action": {
"type": "string"
},
"patterns_detected": {
"type": "array",
"items": {
"type": "string"
}
},
"sensitivity_level": {
"type": "string",
"enum": [
"PUBLIC",
"INTERNAL",
"CONFIDENTIAL"
]
},
"analysis_type": {
"type": "string"
},
"checked_at": {
"type": "string",
"format": "date-time"
},
"_disclaimer": {
"type": "string"
}
},
"required": [
"verdict",
"agent_action",
"checked_at",
"_disclaimer"
],
"additionalProperties": true
}Recorded Call Examples
get_safety_reportInput Parameters
{
"mode": "example-0",
"payload": "example-0",
"payloads": [
"item1",
"item2"
],
"dataset_description": "example-0",
"context": "example-0",
"jurisdiction": "example-0"
}Output Result
{
"result": {
"content": [
{
"type": "text",
"text": "{\n \"mode\": \"example-0\",\n \"status\": \"PREVIEW — paid plan required\",\n \"message\": \"Pro plan required for example-0 reports. Get 500 calls for $24 at https://buy.stripe.com/cNidR87s9dXD0pue7Sebu0r -- calls never expire.\",\n \"upgrade_url\": \"https://buy.stripe.com/cNidR87s9dXD0pue7Sebu0r\",\n \"checked_at\": \"2026-09-30T04:42:40.997Z\",\n \"_disclaimer\": \"Classification is AI-powered and for informational purposes only. Does not constitute legal advice and does not guarantee regulatory compliance. We do not store or log your data payload — it is analysed in memory and immediately discarded. Jurisdiction detection uses IPinfo (ipinfo.io). Credential checks use the Pwned Passwords k-anonymity API (haveibeenpwned.com) — your credentials are never transmitted in full. Threat checks use AbuseIPDB (abuseipdb.com). Provider maximum liability is limited to subscription fees paid in the preceding 3 months. Full terms: kordagencies.com/terms.html\",\n \"token_count\": 230,\n \"calls_remaining\": 14\n}"
}
]
},
"durationMs": 737
}Community
Evidence