Redact names, IDs, emails, phones and card numbers before they reach the model; restore them after.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your PII Shield workspace key, from the dashboard at https://piishield.ai/my (7-day free trial, no card).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Report what personal data appears in text (counts by type) without returning the raw values. Use to check whether text is safe to share. NOTE: detection is automated and is not a guarantee; a clean result does not prove the text is free of personal data.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http pii-shield https://piishield.ai/mcp \ --header 'Authorization: YOUR_CREDENTIALS'
Headers
Authorization (required): Your PII Shield workspace key, from the dashboard at https://piishield.ai/my (7-day free trial, no card).Report what personal data appears in text (counts by type) without returning the raw values. Use to check whether text is safe to share. NOTE: detection is automated and is not a guarantee; a clean result does not prove the text is free of personal data.
| Argument | Type | Description |
|---|---|---|
| text* | string |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
}
}
}Show your workspace's current PII coverage (which detectors are on, custom terms, custom patterns). Uses the workspace key from your MCP server URL.
| Argument | Type | Description |
|---|---|---|
| shield_key | string | optional — only if not already in the server URL |
{
"type": "object",
"properties": {
"shield_key": {
"type": "string",
"description": "optional — only if not already in the server URL"
}
}
}List the PII types this shield can mask, and confirm custom regex/terms are supported. Call this to see what coverage is available.
No arguments.
{
"type": "object",
"properties": {}
}Redact personal data (email, phone, cards, SA ID, SSN, IP, IBAN, names, custom terms) from text, replacing each value with a stable token like [EMAIL_1]. Call this before putting sensitive text into a prompt or context. NOTE: detection is automated and is not a guarantee; it can miss personal data. Review the output before relying on it.
| Argument | Type | Description |
|---|---|---|
| text* | string | The text to redact. |
| reject | array | Finding ids (from a preview) to leave unredacted — a human said 'not PII here'. |
| preview | boolean | Dry run: return what WOULD be redacted (type, confidence, rationale) without changing the text or consuming quota. |
| detectors | object | Optional map of detector→bool to override defaults. |
| customTerms | array | Extra literal terms to always mask (custom PII). |
| customPatterns | array | Custom PII as regexes, e.g. {type:'EMPID', pattern:'EMP-\\d{5}'}. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The text to redact."
},
"reject": {
"type": "array",
"items": {
"type": "string"
},
"description": "Finding ids (from a preview) to leave unredacted — a human said 'not PII here'."
},
"preview": {
"type": "boolean",
"description": "Dry run: return what WOULD be redacted (type, confidence, rationale) without changing the text or consuming quota."
},
"detectors": {
"type": "object",
"description": "Optional map of detector→bool to override defaults."
},
"customTerms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Extra literal terms to always mask (custom PII)."
},
"customPatterns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"flags": {
"type": "string"
},
"pattern": {
"type": "string"
}
}
},
"description": "Custom PII as regexes, e.g. {type:'EMPID', pattern:'EMP-\\\\d{5}'}."
}
}
}Redact PII from an uploaded file or document before sharing it with an AI. Works on PDFs, Word (.docx), Excel (.xlsx), and text-based files (txt, csv, json, code, transcripts, logs). Pass base64 file data with media_type/filename, OR raw text. Returns the redacted text and counts. Requires your workspace key (via the MCP server URL). NOTE: detection is automated and is not a guarantee; it can miss personal data. Review the file yourself before sharing it.
| Argument | Type | Description |
|---|---|---|
| text | string | or raw text instead of a file |
| base64 | string | base64-encoded file bytes |
| filename | string | |
| detectors | object | |
| media_type | string | e.g. application/pdf, text/csv |
| customTerms | array | |
| customPatterns | array |
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "or raw text instead of a file"
},
"base64": {
"type": "string",
"description": "base64-encoded file bytes"
},
"filename": {
"type": "string"
},
"detectors": {
"type": "object"
},
"media_type": {
"type": "string",
"description": "e.g. application/pdf, text/csv"
},
"customTerms": {
"type": "array",
"items": {
"type": "string"
}
},
"customPatterns": {
"type": "array",
"items": {
"type": "object"
}
}
}
}Change what this workspace masks, right from your chat. Turn detectors on/off (e.g. enable PERSON name masking), add always-mask terms, or add custom PII as regex (e.g. employee IDs 'EMP-\\d{5}'). Uses the workspace key from your MCP server URL.
| Argument | Type | Description |
|---|---|---|
| detectors | object | map of detector→bool, e.g. {"PERSON":true} |
| shield_key | string | optional — only if not already in the server URL |
| customTerms | array | literal terms to always mask |
| customPatterns | array | custom PII as regex |
{
"type": "object",
"properties": {
"detectors": {
"type": "object",
"description": "map of detector→bool, e.g. {\"PERSON\":true}"
},
"shield_key": {
"type": "string",
"description": "optional — only if not already in the server URL"
},
"customTerms": {
"type": "array",
"items": {
"type": "string"
},
"description": "literal terms to always mask"
},
"customPatterns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"flags": {
"type": "string"
},
"pattern": {
"type": "string"
}
}
},
"description": "custom PII as regex"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.