VITNA – Containment for rogue AI agents
by costrinity.xyz · remote · local (npm) · no sign-in to list tools · v0.5.6 · published by xyz.costrinity
Guard wraps stdio MCP servers: risky calls wait for a person; no answer, no run. Remote: cooperative
23 tools: 16 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things16Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http vitna-compliance-preflight https://vitna.costrinity.xyz/api/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
23 tools
Changes things 16Claude Code: ask
aadhaar_maskMask + Verhoeff-validate an Aadhaar number.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Mask + Verhoeff-validate an Aadhaar number. Returns masked form, validity, and an owner-scoped reference token. No persistence of the raw value. Stateless validator: records no decision and leaves no dashboard timeline trace.
ai_act_classifyBefore you build or ship an AI feature, check where it lands under the EU AI Act (Regulation 2024/1689).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Before you build or ship an AI feature, check where it lands under the EU AI Act (Regulation 2024/1689). Describe the use case (with biometric / remote-identification / automated-decision / social-scoring / GPAI flags) and VITNA returns the risk tier (prohibited / high-risk / limited-risk / minimal-risk), GPAI obligations, and the per-tier obligations you would have to meet. A classification for you to act on: VITNA evaluates and records, it does not gate the build.
breach_classifyAfter a security incident, check whether it is legally reportable before you decide how to respond.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it After a security incident, check whether it is legally reportable before you decide how to respond. Give the incident facts (affected count, data categories, sensitivity, recovery state) and VITNA returns reportability + reasoning + the notification deadline + who to notify, across DPDP §8, GDPR Art 33, CPRA §1798.82, LGPD Art 48, PDPA §26B, and US-FED sectoral. This makes the full incident decision from the facts; for a quick per-US-state deadline/recipient/threshold table without incident facts, use us_state_breach_deadline. VITNA evaluates and records; acting on the result is up to you.
consent_checkBefore you process someone's personal data, ask VITNA whether an active consent actually permits it for this purpose.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Before you process someone's personal data, ask VITNA whether an active consent actually permits it for this purpose. Give the data principal + purpose (and optional category); returns { allowed, reason, matching_consent_id, principal_id }, a determination you must honour yourself since VITNA evaluates and records but does not enforce. Use this for personal-data processing legality; for a dangerous technical action (shell / file / DB / network) use vitna_preflight instead.
dpia_threshold_checkBefore you start a new processing activity, check whether the law requires a DPIA first (GDPR Art 35 / DPDP §10 / LGPD Art 38).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Before you start a new processing activity, check whether the law requires a DPIA first (GDPR Art 35 / DPDP §10 / LGPD Art 38). Give the purpose + data categories (and scale / systematic-monitoring / automated-decision / cross-border / vulnerable-subjects flags); returns dpia_required + the 9-criterion WP29 analysis + jurisdiction guidance, so you know whether to pause and assess before proceeding.
global_compliance_mapMaster catalogue of every privacy/security/sectoral regime VITNA has fabric for (28 entries covering 24 named statutes).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Master catalogue of every privacy/security/sectoral regime VITNA has fabric for (28 entries covering 24 named statutes). Stateless lookup: records no decision and leaves no dashboard timeline trace.
india_regulators_directoryStatic reference directory of Indian data and sector regulators (DPB, RBI, SEBI, IRDAI, TRAI, DoT, PFRDA, MeitY, MCA), optionally filtered by sector: a lookup of who exists and wha…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Static reference directory of Indian data and sector regulators (DPB, RBI, SEBI, IRDAI, TRAI, DoT, PFRDA, MeitY, MCA), optionally filtered by sector: a lookup of who exists and what they cover. To instead work out which of them apply to a specific processing activity, use india_sectoral_check. Stateless lookup: records no decision and leaves no dashboard timeline trace.
india_sectoral_checkBefore you process personal data under Indian law, find out which sectoral regulators actually bind your specific activity (RBI / SEBI / IRDAI / TRAI / DoT / PFRDA) from its proces…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Before you process personal data under Indian law, find out which sectoral regulators actually bind your specific activity (RBI / SEBI / IRDAI / TRAI / DoT / PFRDA) from its processing profile, so you know whose rules apply before you act. This analyses your processing to say what applies; for a plain directory of every Indian regulator regardless of your activity, use india_regulators_directory.
pan_classifyClassify a PAN entity type from the 4th character (P=Person, C=Company, H=HUF, F=Firm, ...).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Classify a PAN entity type from the 4th character (P=Person, C=Company, H=HUF, F=Firm, ...). Stateless validator: records no decision and leaves no dashboard timeline trace.
pii_testDry-run VITNA's PII / threat detection on a sample event before you send real data, to preview what would be tagged, how it would be redacted, and whether severity would escalate.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Dry-run VITNA's PII / threat detection on a sample event before you send real data, to preview what would be tagged, how it would be redacted, and whether severity would escalate. Nothing is persisted and nothing is filtered: a safe rehearsal you act on, not an enforced gate — it records no decision and leaves no dashboard timeline trace.
privacy_notice_getGenerate the operator's jurisdiction-templated privacy notice.No findings
Why it is in this group
- The name "privacy_notice_get" says "get": a word for reading.
- The description's first verb is "generate": a word for a change.
Description, as the server wrote it Generate the operator's jurisdiction-templated privacy notice. Returns markdown or JSON. Called with an API key, the operator's name and contact details appear as placeholders; the signed-in owner gets the real values. Stateless generator: records no decision and leaves no dashboard timeline trace.
us_sectoral_checkBefore you process personal data under US law, find out which US federal sectoral regimes bind you (HIPAA, GLBA, COPPA, FERPA, FCRA, SOX) for a given processing profile, so you can…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Before you process personal data under US law, find out which US federal sectoral regimes bind you (HIPAA, GLBA, COPPA, FERPA, FCRA, SOX) for a given processing profile, so you can factor them in before you act. US-scoped; for Indian sectoral regulators use india_sectoral_check.
us_state_breach_deadlineQuick reference lookup of a single US state's breach-notification window, AG recipient and resident threshold (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Quick reference lookup of a single US state's breach-notification window, AG recipient and resident threshold (e.g. 'CA' gives 500 residents, CA AG, without unreasonable delay). This is a static table, not an incident ruling. When you have the actual incident facts and need a reportable / not-reportable decision with reasoning, use breach_classify instead. Stateless lookup: records no decision and leaves no dashboard timeline trace.
vitna_claimAsk whether this VITNA account has been claimed by a real person yet.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Ask whether this VITNA account has been claimed by a real person yet. Call this when the user asks about their VITNA account or when you are told evidence is not being kept. Returns { claimed, claim_url: null, claim_note, what_claiming_gets_you }. You are never given the claim link, and you must not look for it: only a person may claim the account that oversees you. If claimed is false, tell the user that the account's evidence is NOT being durably recorded and that they can claim it with the claim link VITNA showed them when the trial started (the stdio server prints it in its MCP server log).
vitna_helpWhat is VITNA and how do I use it to keep myself in check?No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it What is VITNA and how do I use it to keep myself in check? Call this FIRST after connecting to learn the safety and oversight checks available: how to check risky actions BEFORE running them, what a deny / hold decision means, trial vs claimed mode, and how the user can monitor and audit what you do. Runs entirely locally: no account, no API call, and no dashboard timeline trace.
vitna_preflightSAFETY / OVERSIGHT CHECK before a dangerous or destructive action (shell command, file deletion, DB statement, network call).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it SAFETY / OVERSIGHT CHECK before a dangerous or destructive action (shell command, file deletion, DB statement, network call). Call this to have VITNA check the action BEFORE you run it: it flags dangerous shell / SQL / secret-exfil / prompt-injection / suspicious-network patterns and returns { decision: allowed|blocked|flagged }. RESPONSE SHAPE DEPENDS ON THE KEY: an unclaimed trial key gets the decision label only, because the pattern detail is what makes the classifier worth stealing. A claimed key additionally gets threat_category, severity, reason (the rule names that matched, never the matched text), a threats[] array and a redacted echo of what was scanned, plus a signed audit record the user can review. VITNA evaluates and records; it does NOT enforce, so treat blocked / flagged as a stop and get human approval. This is how a user keeps you in check. Heuristic pattern match, not a sandbox: novel or obfuscated payloads can pass.
Only reads 7Claude Code: allow
cpf_validateValidate a Brazilian CPF (mod-11 check digits, rejects all-same).No findings
Why it is in this group
- The name "cpf_validate" says "validate": a word for reading.
Description, as the server wrote it Validate a Brazilian CPF (mod-11 check digits, rejects all-same). Stateless validator: records no decision and leaves no dashboard timeline trace.
gstin_validateValidate a GSTIN format + mod-36 check digit; returns state code lookup.No findings
Why it is in this group
- The name "gstin_validate" says "validate": a word for reading.
Description, as the server wrote it Validate a GSTIN format + mod-36 check digit; returns state code lookup. Stateless validator: records no decision and leaves no dashboard timeline trace.
iban_validateValidate an IBAN format + ISO 7064 mod-97 check digit; supports 71 countries.No findings
Why it is in this group
- The name "iban_validate" says "validate": a word for reading.
Description, as the server wrote it Validate an IBAN format + ISO 7064 mod-97 check digit; supports 71 countries. Stateless validator: records no decision and leaves no dashboard timeline trace.
india_cross_border_statusBefore you transfer personal data out of India, check the destination country's DPDP §16 status (permitted / restricted / sectoral_restricted) plus any RBI / SEBI / IRDAI caveats.No findings
Why it is in this group
- The name "india_cross_border_status" says "status": a word for reading.
Description, as the server wrote it Before you transfer personal data out of India, check the destination country's DPDP §16 status (permitted / restricted / sectoral_restricted) plus any RBI / SEBI / IRDAI caveats. Pass the ISO-3166 alpha-2 country code (e.g. US). Stateless lookup: records no decision and leaves no dashboard timeline trace.
japan_cross_border_statusBefore you transfer personal data out of Japan, check the destination country's APPI Art 28 status (adequacy / standard basis / high scrutiny).No findings
Why it is in this group
- The name "japan_cross_border_status" says "status": a word for reading.
Description, as the server wrote it Before you transfer personal data out of Japan, check the destination country's APPI Art 28 status (adequacy / standard basis / high scrutiny). Pass the ISO-3166 alpha-2 country code. Stateless lookup: records no decision and leaves no dashboard timeline trace.
sin_validateValidate a Canadian SIN (Luhn checksum); returns series region + masked form.No findings
Why it is in this group
- The name "sin_validate" says "validate": a word for reading.
Description, as the server wrote it Validate a Canadian SIN (Luhn checksum); returns series region + masked form. Stateless validator: records no decision and leaves no dashboard timeline trace.
sub_processors_registerReturn the public sub-processor register (Supabase, Vercel, Resend, etc.).No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it Return the public sub-processor register (Supabase, Vercel, Resend, etc.). Stateless lookup: records no decision and leaves no dashboard timeline trace.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.5.6. Values in angle brackets are yours to fill in.
claude mcp add --transport http vitna-compliance-preflight https://vitna.costrinity.xyz/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__vitna-compliance-preflight__india_cross_border_status",
"mcp__vitna-compliance-preflight__japan_cross_border_status",
"mcp__vitna-compliance-preflight__gstin_validate",
"mcp__vitna-compliance-preflight__cpf_validate",
"mcp__vitna-compliance-preflight__sin_validate",
"mcp__vitna-compliance-preflight__iban_validate",
"mcp__vitna-compliance-preflight__sub_processors_register"
],
"ask": [
"mcp__vitna-compliance-preflight__vitna_help",
"mcp__vitna-compliance-preflight__vitna_claim",
"mcp__vitna-compliance-preflight__consent_check",
"mcp__vitna-compliance-preflight__breach_classify",
"mcp__vitna-compliance-preflight__ai_act_classify",
"mcp__vitna-compliance-preflight__dpia_threshold_check",
"mcp__vitna-compliance-preflight__us_sectoral_check",
"mcp__vitna-compliance-preflight__india_sectoral_check",
"mcp__vitna-compliance-preflight__us_state_breach_deadline",
"mcp__vitna-compliance-preflight__aadhaar_mask",
"mcp__vitna-compliance-preflight__pan_classify",
"mcp__vitna-compliance-preflight__pii_test",
"mcp__vitna-compliance-preflight__privacy_notice_get",
"mcp__vitna-compliance-preflight__global_compliance_map",
"mcp__vitna-compliance-preflight__india_regulators_directory",
"mcp__vitna-compliance-preflight__vitna_preflight"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as vitna-compliance-preflight. Review it before you use it.