kustodyan-mcp
This server is an MCP interface for the Kustodyan data-protection API, enabling AI agents and applications to manage sensitive data through contextual transformations (encryption, tokenization, anonymization, masking) configured server-side based on roles and actions.
Protect data (
protect): Encrypt, tokenize, anonymize, or mask field values for a given role — the exact technique is determined by server-side configuration per(className, propertyName).Unprotect data (
unprotect): Reverse a protection to recover the original cleartext value for a permitted role — ⚠️ returns sensitive cleartext and should be handled with care.Search tokens (
search): Generate a search token for a value to match against stored protected data without exposing the raw value.Low-level transform (
transform): Send a fully-formed Engine transform payload for advanced use cases involving multiple contexts, dependency contexts, or custom rights.Validate transforms (
validate_transform): Statically validate a transform payload locally before sending it to the Engine, checking required fields, evidence shape, and context references.Identity/credential check (
whoami): Inspect non-sensitive JWT claims (client ID, scope, expiry) to confirm credentials and environment configuration.Health check (
health): Verify that the Identity and Engine APIs are reachable and functional.Discover the data model (
list_data_model): List all configured classes, properties, roles, and supported actions to understand what can be protected and how.Access guides & prompts: Retrieve best-practice guidance via MCP resources and follow the
protect_recordprompt for safe PII protection.Multiple transports: Operates via
stdiofor local use or streamable HTTP for hosted deployments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kustodyan-mcpprotect the PII fields in this record for role 'analyst'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kustodyan-mcp
A Model Context Protocol server for the Kustodyan data-protection API (powered by the RegData Protection Suite). It lets AI agents and applications protect, unprotect and search sensitive data through Kustodyan's contextual transform engine — so data is tokenized, encrypted, anonymized or masked according to who is asking (a role) and what operation is requested, with every call auditable.
It speaks two transports from one binary:
stdio (default) — for local use (
node dist/server.jsafter a build)streamable HTTP — for hosting behind a reverse proxy (set
KUSTODYAN_MCP_TRANSPORT=http)
What it does
The Kustodyan Engine exposes a single transform operation; behaviour is selected by
evidence you send — a Role (who) and an Action (Protect / Unprotect / Search)
— plus the (className, propertyName) of each value. The transformation technique
(encryption, tokenization, anonymization, masking) is configured server-side, never chosen
by the caller. This server wraps that model in ergonomic tools.
Tools
Tool | Purpose |
| Protect field values for a role (encrypt / tokenize / anonymize per config). |
| Reverse a protection to recover the original — returns cleartext, treat as sensitive. |
| Get a search token to match against a stored protected value. |
| Low-level escape hatch: send a full Engine transform payload. |
| Statically validate a transform payload before sending. |
| Confirm credentials and the configured environment (decoded token claims). |
| Check Identity + Engine reachability. |
| Discover the configured classes, properties, roles and actions. |
Resources & prompts
kustodyan://guide/contextualisation— how Role/Action evidence drives transforms.kustodyan://guide/best-practices— safe, effective use of protect/unprotect.kustodyan://data-model— the configured data-model manifest.Prompt
protect_record— guides an assistant to protect a record's PII safely.
Related MCP server: Shrike Security MCP Server
Configuration (environment)
Variable | Required | Description |
| yes | e.g. |
| yes | e.g. |
| yes | Engine API client id (from the CoreAdmin portal) |
| yes | Engine API client secret |
| no | Path to a data-model manifest JSON (classes/properties/roles) |
| no |
|
| no | HTTP bind (default |
Run locally (stdio)
npm install && npm run build
KUSTODYAN_IDENTITY_URL=https://<env>.kustodyan.io/api/identity \
KUSTODYAN_ENGINE_URL=https://<env>.kustodyan.io/api/engine \
KUSTODYAN_CLIENT_ID=... KUSTODYAN_CLIENT_SECRET=... \
node dist/server.jsMCP client config (stdio):
{
"mcpServers": {
"kustodyan": {
"command": "node",
"args": ["/path/to/kustodyan-mcp/dist/server.js"],
"env": {
"KUSTODYAN_IDENTITY_URL": "https://<env>.kustodyan.io/api/identity",
"KUSTODYAN_ENGINE_URL": "https://<env>.kustodyan.io/api/engine",
"KUSTODYAN_CLIENT_ID": "...",
"KUSTODYAN_CLIENT_SECRET": "..."
}
}
}
}Run hosted (HTTP, token-gated image)
The container serves streamable HTTP behind an nginx bearer-token gate.
docker run -d -p 8080:8080 \
-e MCP_BEARER_TOKEN=<a long random secret> \
-e KUSTODYAN_IDENTITY_URL=https://<env>.kustodyan.io/api/identity \
-e KUSTODYAN_ENGINE_URL=https://<env>.kustodyan.io/api/engine \
-e KUSTODYAN_CLIENT_ID=... -e KUSTODYAN_CLIENT_SECRET=... \
<image>Point your MCP client at https://<host>/mcp, sending Authorization: Bearer <MCP_BEARER_TOKEN>
(or ?token=<MCP_BEARER_TOKEN>). GET /healthz is unauthenticated for probes.
Build
npm install
npm run build # -> dist/
npm start # stdioSafety notes
unprotectreturns cleartext. Never log it, persist it, or call it for an unauthorised role. Prefer a masking role when a partial value suffices.Discover the data model (
list_data_model) instead of guessingpropertyNames.Transform calls can succeed (HTTP 200) while individual fields carry a per-field
error— always inspect per-field results.
Documentation
docs/rps-api-contract.md— the verified Identity + Engine API contract (auth,/transformshape, error model) this server is built on.docs/searchable-encryption.md— the searchable-encryption guide: the scheme/leakage ladder, and the PROPE search-band contract (dependencyContext {method,min,max}, case-insensitive collation).
License
MIT
Available Tools
8 toolshealthHealth check (identity + engine reachability)ARead-only
Verify the Identity API issues a token and the Engine API endpoint is reachable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint. Description adds specific checks (token issuance, engine reachability), giving more context than annotations alone. However, the phrase 'issues a token' could imply a side effect, creating mild ambiguity with readOnlyHint. Not a strong contradiction, so score is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, front-loaded with action verb 'Verify'. Every word contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the core functionality. Could mention expected behavior on failure (e.g., error responses), but not strictly necessary given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist and schema coverage is 100%. Description does not need to add parameter details. Baseline of 4 is appropriate as the description provides no extra parameter info, but none is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool verifies two specific endpoints (Identity API token issuance and Engine API reachability), which is a precise health check. Distinguishes from sibling tools (e.g., whoami checks user identity, not system health) by focusing on system-level connectivity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives mentioned. Usage is implied for checking system health before other operations, but no comparison to siblings or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_modelList configured classes / properties / rolesARead-only
Return the data-model manifest: which (className, propertyName) fields are protectable, the roles and their behaviour, and the Action vocabulary. Use this to discover what you can protect.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only (readOnlyHint: true), so the agent knows it's safe. The description adds detail on what data is returned (protectable fields, roles, etc.), which is useful context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and front-loaded. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no parameters and no output schema, the description covers the essential return content (protectable fields, roles, action vocabulary). It could hint at the return structure, but is sufficient for an agent to understand the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description appropriately includes no further parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'data-model manifest' specifying protectable fields, roles, and the Action vocabulary. This distinguishes it from siblings like 'protect' and 'unprotect' which perform actions, while this tool is purely informational.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to discover what you can protect,' providing clear context for when to use it—before protection actions. It doesn't explicitly list exclusions, but the sibling list and tool name imply it's for model discovery, not for other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protectProtect data (encrypt / tokenize / anonymize)A
Protect one or more field values for a given role. The exact technique (encryption, tokenization, anonymization, masking) is server-configured per (className, propertyName). Returns each field's protected value joined to its original. Protect data as early as possible.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Role evidence (who is asking), e.g. R_MANAGER. | R_MANAGER |
| fields | Yes | Field values to protect. | |
| evidences | No | Extra evidence key/value pairs beyond Role/Action. | |
| loggingAttributes | No | Optional audit-log attributes for this call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, openWorldHint=true. The description adds that the technique is server-configured and that results are joined to originals. This provides useful context beyond annotations, though it doesn't detail error handling or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states the action, second provides crucial context and best practice. No wasted words, all sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of data protection, the schema coverage is high, and annotations are present. The description adds important context about server-configuration and best practice (early protection). However, it lacks specifics on return format or error handling, but overall sufficient for a tool with good schema and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and includes clear descriptions for each parameter. The tool description adds that the exact technique is server-configured per (className, propertyName) and that the return joins protected to original values, which adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and title explicitly state 'protect' and 'encrypt/tokenize/anonymize'. The description clearly says 'Protect one or more field values for a given role' and distinguishes the technique as server-configured per class/property. This provides a specific verb and resource, and the sibling 'unprotect' clearly contrasts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for early protection and for a given role, but no explicit when-not-to-use or alternatives (e.g., when to use transform vs protect). The guidance is limited to 'as early as possible' without detailing when protection is appropriate or not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch token for a protected valueBRead-only
Run the Search operation for a value to obtain a search token you can compare against a stored protected column (availability and operators depend on the protection scheme).
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | R_MANAGER | |
| fields | Yes | ||
| evidences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true. Description adds that availability and operators depend on protection scheme, which is helpful context. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, straightforward sentence that is front-loaded and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the basic purpose but lacks detail on how the returned token is used with other tools (e.g., validate_transform) and the meaning of the output. No output schema to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description adds no parameter information. The input schema has some descriptions for fields inside 'fields', but not for 'role' or 'evidences'. The description does not compensate for this gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs the Search operation to obtain a search token for comparison against protected columns. It distinguishes from sibling tools like 'protect' and 'transform' but could be more explicit about the token's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description mentions dependence on protection scheme but does not state when-not or provide alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transformLow-level transform (full passthrough)B
Escape hatch: send a fully-formed Engine transform payload (rightsContexts, processingContexts, requests) for advanced cases (multiple contexts, dependency contexts). Prefer protect/unprotect/search.
| Name | Required | Description | Default |
|---|---|---|---|
| requests | Yes | ||
| loggingContext | No | ||
| rightsContexts | Yes | ||
| processingContexts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully describe behavioral traits. It only says 'low-level transform (full passthrough)' and 'escape hatch', but does not disclose side effects, authentication needs, rate limits, return value, or whether the payload is validated or executed immediately. This is insufficient for an agent to understand the consequences of invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with the most critical information (purpose and usage guidance) placed first. However, it sacrifices necessary detail for brevity, earning a 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, nested objects, no output schema, no annotations), the description is severely incomplete. It lacks information on parameter construction, default behavior, error handling, and the nature of the 'full passthrough'. Sibling tool descriptions may help, but the description itself falls short.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and no annotation, the description adds no meaning to the parameters. It mentions three top-level properties (rightsContexts, processingContexts, requests) but omits loggingContext and provides no explanation of their structure or usage. The agent cannot determine how to construct valid parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is an 'escape hatch' for sending a fully-formed Engine transform payload, explicitly distinguishing it from higher-level tools protect/unprotect/search. The verb 'send' and resource 'Engine transform payload' define its purpose precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: use for advanced cases like multiple contexts or dependency contexts, and recommends preferring protect/unprotect/search for simpler use. This clearly tells when and when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unprotectUnprotect data (reveal — SENSITIVE)A
Reverse a protection to recover the original value, for a role permitted to do so. ⚠️ Returns CLEARTEXT sensitive data — treat the result as confidential, never log it, and only call when the caller is authorised. Depending on the role the engine may instead return a masked value or the stored protected value.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Role evidence; must have unprotect rights, e.g. R_MANAGER. | R_MANAGER |
| fields | Yes | Protected field values to unprotect. | |
| evidences | No | ||
| loggingAttributes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds critical behavioral context beyond annotations: it returns cleartext sensitive data, warns against logging, and notes role-dependent output (masked or protected value). Annotations only indicate non-read-only, non-destructive, and open world, so the description fills gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences plus a warning emoji. Every sentence adds value: define the action, sensitivity warning, usage restriction, and role-dependent output. No unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description covers the core behavior and security implications but omits details on 'evidences' and 'loggingAttributes' parameters and does not describe the return structure. It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% with descriptions for 'role' and 'fields'. The description does not add extra meaning for parameters; 'evidences' and 'loggingAttributes' are undocumented beyond the schema. The tool description focuses on overall behavior rather than parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reverses protection to recover the original value, distinguishing it from the sibling tool 'protect'. It specifies the action, resource, and role requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use (recover protected data) and warns about sensitivity and authorization. It does not explicitly mention when not to use or alternatives, but the sibling 'protect' implies the opposite operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_transformValidate a transform payload (local)ARead-only
Statically validate a transform payload before sending it: required fields, evidence shape, and that each request's rightsContext/processingContext references a declared context guid.
| Name | Required | Description | Default |
|---|---|---|---|
| requests | No | ||
| rightsContexts | No | ||
| processingContexts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the description need not restate. It adds value by detailing the validation scope (required fields, evidence shape, cross-references), going beyond the annotation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the essential purpose and scope. No wasted words, and the key validation points are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description omits any information about return values (e.g., validation errors or success indicators). For a validation tool, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains the purpose of validation across the three parameters (requests, rightsContexts, processingContexts) and their cross-referencing. This adds meaning beyond raw schema, though individual parameter details are absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Statically validate a transform payload before sending it', specifying the verb (validate) and resource (transform payload). It distinguishes itself from the sibling tool 'transform' which assumes actual execution, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before sending it' implies use prior to the 'transform' tool, but no explicit guidance on when not to use or alternatives. For a validation tool, this is minimal but functional guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiIdentity / credential checkARead-only
Fetch an access token and report the (non-sensitive) JWT claims — client id, scope, expiry — to confirm credentials and which environment is configured.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint, and the description adds that it fetches an access token and reports non-sensitive claims. This provides useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words, efficiently conveying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully covers what the tool does and its return values. It is complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description does not need to explain parameters; baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches an access token and reports JWT claims (client id, scope, expiry) to confirm credentials and environment. It is specific and distinct from sibling tools like health or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the purpose ('to confirm credentials and which environment is configured'), making it clear when to use. However, it does not mention when not to use or alternatives, but given the tool's simplicity, this is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
health - First observed
list_data_model - First observed
protect - First observed
search - First observed
transform - First observed
unprotect - First observed
validate_transform - First observed
whoami
TDQS
Scored across 8 tools
Each tool targets a distinct operation: health checks connectivity, whoami retrieves JWT claims, list_data_model discovers schema, protect/unprotect field values, search for tokens, transform for advanced payloads, validate_transform for payload validation. No overlapping purposes.
Tools use lowercase with underscores, but naming patterns vary: some are single verbs (health, protect, search), others verb_noun (list_data_model, validate_transform), and 'whoami' breaks the pattern. Mostly consistent but with minor deviations.
8 tools are a reasonable scope for a data protection API: discovery, protection, unprotection, search, transform, validation, health, and identity checks. Not too many or too few.
Core protection lifecycle (protect, unprotect, search) is covered, along with discovery and validation. Missing tools for updating or deleting protections, and no admin tools for role/policy management, but these may be out of scope for the client.
Maintenance
Related MCP Connectors
- FullmaktOAuthai.fullmakt
Credential broker for AI agents: scoped, revocable API access with policy enforcement and audit.
Classify data safety before storing or sharing. GDPR, HIPAA, PCI-DSS, CCPA. AI-powered.
Connect AI agents to financial institution origination, analytics, and compliance workflows.
Sanctions screening, KYB, identifier validation, jurisdiction risk & secret scanning for AI agents
Related MCP Servers
- FlicenseCqualityDmaintenanceEnables high-precision detection, anonymization, encryption and decryption of personally identifiable information (PII) in text using GPT-4o-based detection and advanced cryptographic methods. Supports both deterministic encryption for searchable data and format-preserving encryption for structured identifiers.81-
- AlicenseAqualityBmaintenanceProtects AI agents from threats like prompt injection, jailbreaks, and SQL injection through a multi-layer scanning pipeline. It also enables PII redaction and rehydration to ensure data privacy during LLM interactions.1271 npm2Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI applications to protect and reveal sensitive data via Thales CipherTrust CRDP service, supporting bulk operations, versioning, and monitoring.3MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to redact PII from text, summarize redacted content, and manage custom redaction patterns across multiple languages.-