ActTrace
Click on "Install 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., "@ActTraceclassify my customer support chatbot under EU AI Act"
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.
ActTrace
A developer-facing EU AI Act compliance API for non-financial SaaS and technology companies. ActTrace gives an engineering team three things, self-serve, over an API or via MCP:
A deterministic risk classification of an AI feature under the EU AI Act.
A ready-to-ship Article 50 transparency notice.
A free diagnostic as the public entry point.
Not legal advice. ActTrace provides operational compliance workflow support and documentation drafts. It does not provide legal advice, does not certify compliance, and does not replace review by qualified counsel. Every response carries this disclaimer.
ActTrace is scoped for non-financial companies. Financial-services use
cases (banking, trading, portfolio/investment advice, credit scoring, …) are
deliberately classified out_of_scope_financial_services.
Install — Claude Code plugin / MCP server
ActTrace ships as a Claude Code plugin: an acttrace skill plus a local MCP
server. The MCP server runs via uvx — a deterministic rules engine, offline,
no API key.
/plugin marketplace add goww7/acttrace
/plugin install acttrace@acttraceThen ask Claude "Is my chatbot EU AI Act compliant?" or "Write an Article 50
notice for our support assistant." The MCP server also runs standalone with
any MCP client: uvx acttrace-mcp.
Related MCP server: employment-ai
Quickstart
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/uvicorn acttrace.app:app --reload --port 8080# 1. Free diagnostic — no key needed
curl -s localhost:8080/api/acttrace/diagnostics/free -H 'content-type: application/json' -d '{
"feature_name": "AI reply assistant",
"description": "Drafts suggested customer support replies for agents.",
"user_facing": true, "model_provider": "OpenAI", "use_case": "support_assist"
}'
# 2. Mint an API key
KEY=$(curl -s -XPOST localhost:8080/api/keys/generate | python3 -c 'import sys,json;print(json.load(sys.stdin)["api_key"])')
# 3. Classify (15 tokens)
curl -s localhost:8080/api/acttrace/classify -H "X-API-Key: $KEY" -H 'content-type: application/json' -d '{
"feature_name": "AI reply assistant",
"description": "Drafts customer support replies shown to agents.",
"use_case": "support_assist", "user_facing": true, "model_provider": "OpenAI"
}'
# 4. Generate an Article 50 notice (10 tokens)
curl -s localhost:8080/api/acttrace/notices -H "X-API-Key: $KEY" -H 'content-type: application/json' -d '{
"ai_system_name": "Support Copilot", "notice_type": "chatbot", "tone": "plain"
}'Endpoints
Method & path | Auth | Tokens | Purpose |
| none | 0 | Public risk diagnostic |
| key | 15 | Documented risk classification |
| key | 10 | Article 50 transparency notice |
| none | 0 | Issue a free-plan key |
| none | 0 | Liveness |
Auth is X-API-Key. Responses carry X-Request-ID, X-Plan,
X-Tokens-Charged, X-Tokens-Remaining, X-RateLimit-*. Errors are
structured {"code","message","detail"} (401/403/429).
MCP
python -m acttrace.mcp_server --sse --port 8002 exposes two tools —
acttrace_classify and acttrace_generate_transparency_notice — authenticated
with the same X-API-Key. A Claude Code skill is in skill/acttrace/.
Tests
.venv/bin/python -m pytest -q54 tests: classification engine (7 acceptance fixtures), conflict guard, notice generator, and HTTP API contract.
Deploy
docker-compose.yml builds a standalone two-container stack (API + MCP) on
ports 8080 / 8002 with its own volume — isolated from FinanceData2. To go live,
append caddy-acttrace.snippet to the shared Caddyfile (replace the
placeholder domain). See BLUEPRINT.md for the full build contract.
Layout
acttrace/
app.py config.py dependencies.py
middleware/ api_key_auth.py
routers/ acttrace.py keys.py
services/ acttrace_service.py acttrace_classification_service.py
acttrace_notice_service.py acttrace_constants.py
api_key_service.py
repositories/ acttrace_repository.py api_key_repository.py
schemas/ acttrace.py
mcp_server/ server.py __main__.py context.py tools/acttrace.py
skill/acttrace/ SKILL.md README.md
tests/Available Tools
2 toolsacttrace_classifyA
Classify an AI feature's EU AI Act risk category.
Runs ActTrace's deterministic classification engine and returns a
risk category (prohibited, possible_high_risk,
limited_risk_transparency, minimal_risk, unknown, or
out_of_scope_financial_services) with confidence, rationale,
triggering facts, missing information, obligations, and source
references.
Use this when asked "Is this AI feature EU AI Act compliant?", "What risk tier does my AI feature fall into?", or for a general AI Act risk classification.
ActTrace is for non-financial SaaS / technology products. Financial
use cases are reported as out_of_scope_financial_services unless
financial_override is set. The result is informational and is
NOT legal advice.
Args:
feature_name: Short name of the AI feature (e.g. "support chatbot").
description: What the feature does. Strongly recommended — an
empty description yields an unknown verdict.
use_case: Short use-case label (e.g. "support_assist").
user_facing: True if end users interact with the feature.
eu_available: True if the feature is available to EU users.
internal_only: True if the feature is for internal staff only.
model_provider: Underlying model provider (e.g. "OpenAI"). Required
for a confident verdict when the feature is user-facing.
human_review_level: One of "none", "optional",
"required_before_action", "required_after_action".
automated_decision: True if the feature makes automated decisions.
high_risk_domain: True if the feature operates in a high-risk
domain (hiring, education, biometrics, etc.).
sensitive_data: True if the feature processes sensitive data.
financial_override: Set True to bypass the financial-services
out-of-scope guard for a borderline non-financial feature.
| Name | Required | Description | Default |
|---|---|---|---|
| feature_name | Yes | ||
| description | No | ||
| use_case | No | ||
| user_facing | No | ||
| eu_available | No | ||
| internal_only | No | ||
| model_provider | No | ||
| human_review_level | No | ||
| automated_decision | No | ||
| high_risk_domain | No | ||
| sensitive_data | No | ||
| financial_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: runs deterministic classification engine, returns detailed fields, states limitations (empty description yields unknown), and clarifies the tool is informational, not legal advice. No hidden side effects.
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 front-loaded with the essential purpose and then provides structured details. It is somewhat lengthy but well-organized, with each sentence serving a purpose. Could be slightly trimmed, but overall efficient given the complexity.
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 (12 parameters, regulatory sensitivity) and the presence of an output schema, the description is exceptionally complete. It covers purpose, usage, parameter details, output fields, scope restrictions, and a legal disclaimer. No gaps remain.
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%, so the description carries the full burden. The 'Args:' section provides thorough explanations for all 12 parameters, including allowed values for human_review_level and guidance on when fields are required (e.g., model_provider for user-facing features). This adds critical meaning beyond the bare 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 description clearly states the tool's purpose: 'Classify an AI feature's EU AI Act risk category.' It lists possible risk categories and specifies the scope (non-financial SaaS/technology products), distinguishing it from the sibling tool for generating transparency notices.
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?
Explicitly tells when to use: 'Use this when asked "Is this AI feature EU AI Act compliant?", "What risk tier does my AI feature fall into?", or for a general AI Act risk classification.' Also explains when not to use (financial services without override) and notes the result is not legal advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acttrace_generate_transparency_noticeA
Generate an EU AI Act Article 50 transparency notice.
Produces user-facing copy that discloses AI use, plus a suggested placement, caveats, and a human-review recommendation.
Use this when asked for an "AI transparency notice", "Article 50 notice", "AI disclosure copy", or "chatbot AI disclaimer".
ActTrace is for non-financial SaaS / technology products. The generated notice is a starting draft and is NOT legal advice.
Args: ai_system_name: Name of the AI system / product the notice is for. notice_type: One of "chatbot", "ai_generated_content", "support_assist", "summarization", "synthetic_media", "internal_ai", "other". feature_name: Optional short name of the specific feature. tone: One of "plain", "formal", "developer_docs", "policy", "ui_microcopy". Defaults to "plain". language: Notice language. English ("en") only for the MVP. human_review_level: One of "none", "optional", "required_before_action", "required_after_action". When set to "required_before_action" the notice will not recommend extra human review. risk_category: Optional risk category from a prior classification to tailor the notice.
| Name | Required | Description | Default |
|---|---|---|---|
| ai_system_name | Yes | ||
| notice_type | Yes | ||
| feature_name | No | ||
| tone | No | plain | |
| language | No | en | |
| human_review_level | No | ||
| risk_category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It explains the output (user-facing copy, placement, caveats, human-review recommendation) and notes the notice is a draft, not legal advice. However, it does not explicitly state that the tool is read-only or describe any side effects, permissions needed, or rate limits, leaving some transparency 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 and well-structured: it starts with the main purpose, then outlines output details, usage guidance, and parameter descriptions in a logical order. Every sentence adds value without redundancy, making it easy to scan for key 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?
Given 7 parameters, 2 required, and an output schema, the description covers all aspects: input details, output content, usage context (domain, non-legal status), and constraints (language limitation for MVP). It provides enough information for an agent to invoke the tool correctly without relying on external documentation.
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%, so the description must compensate. It fully describes each parameter, including allowed values (e.g., notice_type options), defaults (tone, language), and optionality (feature_name, human_review_level, risk_category). This adds significant meaning beyond the raw schema, enabling correct parameter selection.
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's purpose: generating an EU AI Act Article 50 transparency notice. It specifies the verb 'Generate' and the resource 'transparency notice', and distinguishes from the sibling tool 'acttrace_classify' by detailing the output content such as user-facing copy and placement.
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 usage examples ('AI transparency notice', 'Article 50 notice') and clarifies the tool's domain (non-financial SaaS/technology products) and limitations (not legal advice). It lacks explicit exclusions or alternative tool recommendations, but the context is clear enough for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: one classifies risk categories, the other generates transparency notices. There is no overlap or ambiguity between them.
Both tools use the 'acttrace_' prefix and snake_case. However, one uses a single verb 'classify' while the other uses a compound verb 'generate_transparency_notice', introducing minor inconsistency.
With only 2 tools, the surface is minimal. While the domain is narrow, the count is borderline thin and may require more tools for a complete compliance workflow.
The tools cover classification and transparency notice generation, which are core needs. Missing are tools for reclassification, updating features, or more detailed obligation queries, leaving minor gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI governance MCP server for EU AI Act compliance and jurisdiction verification
EU AI Act uyum MCP sunucusu — risk sınıflandırma (madde atıflı), rol bazlı yükümlülük listesi…
AI legal compliance: contract review, risk scoring, EU/CN AI act, watermark check. 8 MCP tools.
EU compliance corpus across 8 frameworks (NIS2, DORA, AI Act, ISO 27001 + more) via MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceEU AI Act Compliance - MCP server providing AI-powered tools and automation by MEOK AI Labs1112MIT
- AlicenseAqualityDmaintenanceMCP server for EU AI Act compliance in employment AI, featuring built-in risk management, bias detection, transparency, and FRIA support.2MIT
- AlicenseAqualityDmaintenanceAn MCP server for AI economy infrastructure with built-in EU AI Act compliance, supporting risk management, transparency, and bias detection.10MIT
- AlicenseAqualityAmaintenanceAn MCP server providing structured intelligence about the EU AI Act, including risk classification, deadline tracking, obligations, penalties, and article lookups.103593MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/goww7/acttrace'
If you have feedback or need assistance with the MCP directory API, please join our Discord server