← Back to search

EU Audit Trail

jellewas Scanned 1h ago

Tamper-evident audit trail MCP server for EU AI Act & GDPR compliance.

B
76.3 / 100

Versions

0.1.1latest
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 10

log_event
annotations: none low

Record an audit event. PII in content is automatically detected and redacted before storage. Args: event_type: Category of event (e.g. 'user_query', 'document_ingest', 'error'). content: Free-text content to log. PII will be scanned and redacted. metadata: Arbitrary key-value metadata (purpose, source, etc.). session_id: Optional session identifier to group related events. Returns: event_id, timestamp, chain_hash, and list of PII types detected.

content string metadata string event_type str session_id string
log_inference
annotations: none low

Log an LLM inference call for audit purposes. Args: model: Model identifier (e.g. 'mistral-large'). tokens_in: Number of input tokens. tokens_out: Number of output tokens. data_residency: Where inference was processed (e.g. 'EU-SE'). cost_eur: Estimated cost in EUR. session_id: Optional session identifier. purpose: Processing purpose (recommended for GDPR Art. 30). Returns: event_id, timestamp, and chain_hash.

model str purpose string cost_eur float tokens_in int session_id string tokens_out int data_residency str
log_data_access
annotations: none low

Log a document or data access event for audit purposes. Args: source: Document or data source identifier. action: What was done (e.g. 'ingest', 'retrieve', 'delete'). chunks_retrieved: Number of chunks retrieved (for RAG queries). session_id: Optional session identifier. purpose: Processing purpose (recommended for GDPR Art. 30). Returns: event_id, timestamp, and chain_hash.

action str source str purpose string session_id string chunks_retrieved int
query_log
annotations: none low

Search the audit log with optional filters. Args: event_type: Filter by event type. session_id: Filter by session. since: ISO timestamp lower bound. until: ISO timestamp upper bound. limit: Max number of results (default 50, max 10000). Returns: List of matching audit events.

limit int since string until string event_type string session_id string
get_session_trace
annotations: none low

Get the full ordered trace of a specific session. Args: session_id: The session to trace. Returns: All events for that session in chronological order.

session_id str
get_stats
annotations: none low

Get summary statistics for the audit log. Args: since: ISO timestamp lower bound. until: ISO timestamp upper bound. Returns: Total events, breakdown by type, PII detection count, cost totals.

since string until string
compliance_check
annotations: none low

Run a technical compliance check against EU AI Act and GDPR. Checks: - EU AI Act Art. 12 — Record-keeping (event logging) https://artificialintelligenceact.eu/article/12/ - EU AI Act Art. 19 — Automatically generated logs (retention, integrity) https://artificialintelligenceact.eu/article/19/ - GDPR Art. 30 — Records of processing activities (purpose, PII categories) https://gdpr.eu/article-30-records-of-processing-activities/ Returns: Overall pass/fail and per-article check results with details and reference URLs. This is a technical checklist, not legal advice.

execute_erasure
annotations: none low

Execute a GDPR Article 17 right-to-erasure request. Legal basis: GDPR Art. 17 — Right to erasure ("right to be forgotten") https://gdpr.eu/article-17-right-to-be-forgotten/ Redacts event content and removes PII vault entries for the specified entity. The events themselves are kept (to preserve the hash chain for EU AI Act Art. 19 integrity) but their content is replaced with a redaction notice. The erasure itself is logged as a gdpr_erasure event. Args: entity_type: PII type to erase (e.g. 'PERSON', 'EMAIL_ADDRESS'). search_value: Placeholder pattern to match in the vault. Returns: Count of events redacted and vault entries removed.

entity_type str search_value str
get_pii_summary
annotations: none low

Get a summary of PII types detected across all logged events. Returns only counts per entity type, never actual PII values. Returns: Dictionary mapping PII entity types to their occurrence counts.

verify_chain
annotations: none low

Verify the HMAC-SHA256 hash chain integrity of the audit log. Returns: Whether the chain is intact, and if not, which event broke it.

Permissions 2

filesystem low
Server uses filesystem capabilities via: open(), os, pathlib, tempfile
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 67

low
Tool 'get_session_trace' has no annotations annotation_checker · 100%
low
Tool 'log_event' has no annotations annotation_checker · 100%
low
Tool 'log_inference' has no annotations annotation_checker · 100%
low
Tool 'log_data_access' has no annotations annotation_checker · 100%
low
Tool 'query_log' has no annotations annotation_checker · 100%
low
Tool 'get_stats' has no annotations annotation_checker · 100%
low
Tool 'compliance_check' has no annotations annotation_checker · 100%
low
Tool 'execute_erasure' has no annotations annotation_checker · 100%
low
Tool 'get_pii_summary' has no annotations annotation_checker · 100%
low
Tool 'verify_chain' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: mcp@1.0 (GHSA-3qhf-m339-9g5v) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (GHSA-9h52-p55h-vw2f) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (GHSA-j975-95f5-7wqh) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (GHSA-jpw9-pfvf-9f58) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (GHSA-vj7q-gjh5-988w) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (PYSEC-2026-1616) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (PYSEC-2026-1617) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (PYSEC-2026-1618) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (PYSEC-2026-3482) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.0 (PYSEC-2026-3483) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-5h2m-4q8j-pqpj) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-c2jp-c369-7pvx) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-m8x7-r2rg-vh5g) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-mxxr-jv3v-6pgc) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-rcfx-77hg-w2wv) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-rj5c-58rq-j5g5) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-rww4-4w9c-7733) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (GHSA-vv7q-7jx5-f767) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (PYSEC-2026-1364) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (PYSEC-2026-1365) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (PYSEC-2026-2474) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (PYSEC-2026-2475) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (PYSEC-2026-2476) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.2 (PYSEC-2026-338) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-537c-gmf6-5ccf) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-6vqw-3v5j-54x4) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-79v4-65xg-pq4g) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-9v9h-cgj8-h64p) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-h4gh-qq45-vh27) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-jwv3-5hgf-82ww) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-m959-cc7f-wv43) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (GHSA-r6ph-v2qm-q3c2) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (PYSEC-2024-225) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (PYSEC-2026-1284) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (PYSEC-2026-1285) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (PYSEC-2026-2141) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (PYSEC-2026-35) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (PYSEC-2026-3553) dependency_analyzer · 95%
medium
Vulnerable dependency: cryptography@42.0 (PYSEC-2026-3554) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: log_event manifest_parser · 90%
info
Tool: log_inference manifest_parser · 90%
info
Tool: log_data_access manifest_parser · 90%
info
Tool: query_log manifest_parser · 90%
info
Tool: get_session_trace manifest_parser · 90%
info
Tool: get_stats manifest_parser · 90%
info
Tool: compliance_check manifest_parser · 90%
info
Tool: execute_erasure manifest_parser · 90%
info
Tool: get_pii_summary manifest_parser · 90%
info
Tool: verify_chain manifest_parser · 90%
info
Required env vars (1) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Permission: filesystem access detected permission_analyzer · 80%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%