Skip to main content
Glama
SonnyLabs

EU AI Act Compliance MCP Server

by SonnyLabs

EU AI Act Compliance MCP Server ๐Ÿ‡ช๐Ÿ‡บ

A Model Context Protocol (MCP) server providing EU AI Act compliance tools for AI systems. This server helps developers of AI applications, like chatbots and AI agents, meet transparency, security, and governance requirements across the entire EU AI Act framework.

โš ๏ธ BETA SOFTWARE - NOT LEGAL ADVICE

This MCP server is in active development. It provides technical tools to assist with EU AI Act compliance but does NOT constitute legal advice. Consult qualified legal counsel for compliance decisions.

๐Ÿง‘ CONTRIBUTORS NEEDED! This solution is in its early phases and there are EU AI Act requirements left to add, as well as general guidance. If you would like to contribute to improve the solution for everyone, we would love that! Please see the Contributing guide here for general guidance on contributing.

๐ŸŽฏ What Does This Server Do?

This MCP server, which can be self-hosted, provides automated compliance tools that helps you and your AI systems to comply with the EU AI Act:

  • โœ… Classify AI systems by risk level (Prohibited, High-Risk, Limited-Risk, Minimal-Risk)

  • โœ… Determine your role under EU AI Act (Provider, Deployer, Importer, etc.)

  • โœ… Check for prohibited practices (Article 5 violations)

  • โœ… Add transparency disclosures (Article 50 - chatbots, emotion recognition)

  • โœ… Watermark AI content (Article 50(2) - text, images, video, audio)

  • โœ… Label deepfakes (Article 50(4) - all media types)

  • โœ… Detect security threats (Article 15 - prompt injections)

Compliance Deadline For Several Risk Types: August 2, 2026 ๐Ÿ—“๏ธ

Related MCP server: Watermarking Authenticity MCP

๐Ÿ“ฆ What's Included

๐Ÿ”ง 17 Tools Available

Risk & Role Classification (3 tools)

  • โœ… classify_ai_system_risk - Determine risk level (Articles 5, 6, 50)

  • โœ… check_prohibited_practices - Check Article 5 violations

  • โœ… determine_eu_ai_act_role - Identify your role (Article 3)

Transparency & Disclosure (4 tools)

  • โœ… get_ai_interaction_disclosure - Chatbot disclosures (Article 50(1))

  • โœ… get_emotion_recognition_disclosure - Emotion AI disclosures (Article 50(3))

  • โœ… get_deepfake_label_templates - Access all label templates

  • โœ… label_news_text - Label AI-generated news (Article 50(4))

Content Watermarking (4 tools)

  • โœ… watermark_text - Watermark AI text (Article 50(2))

  • โœ… watermark_image - Watermark AI images with C2PA (Article 50(2))

  • โœ… watermark_video - Watermark AI videos with C2PA (Article 50(2))

  • โœ… watermark_audio - Watermark AI audio (Article 50(2))

Deepfake Labeling (3 tools)

  • โœ… label_image_deepfake - Label AI-generated images (Article 50(4))

  • โœ… label_video_deepfake - Label AI-generated videos (Article 50(4))

  • โœ… label_audio_deepfake - Label AI-generated audio (Article 50(4))

AI Security (3 tools - SonnyLabs.ai Integration)

  • โœ… scan_for_prompt_injection - Detect prompt attacks (Article 15)

  • โœ… check_sensitive_file_access - Monitor file access (Articles 10 & 15)

๐Ÿ“š 4 Resources Available

  • โœ… disclosure-templates://ai-interaction-and-emotion - Pre-written disclosures

  • โœ… deepfake-labels://content-labeling - All deepfake labels

  • โœ… article50-rules://official-text - Official Article 50 rules

  • โœ… watermark-config://technical-standards - C2PA & IPTC standards

๐ŸŒ Multi-Language Support

All disclosures and labels available in:

  • ๐Ÿ‡ฌ๐Ÿ‡ง English (en)

  • ๐Ÿ‡ช๐Ÿ‡ธ Spanish (es)

  • ๐Ÿ‡ซ๐Ÿ‡ท French (fr)

  • ๐Ÿ‡ฉ๐Ÿ‡ช German (de)

  • ๐Ÿ‡ฎ๐Ÿ‡น Italian (it) - disclosure templates only

๐Ÿ“ฆ What if I want the hosted MCP server instead of self-hosting it myself?

You can become a design partner and use our hosted EU AI Act MCP server at SonnyLabs.ai.

๐Ÿš€ Quick Start for Self-Hosting

Pre-Setup

Git clone this repo locally.

1. Installation

cd FILE_PATH_OF_THIS_MCP
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

2. Set Up SonnyLabs Security Tools

For the security tools, get credentials from SonnyLabs Dashboard:

export SONNYLABS_API_TOKEN="your_api_token"
export SONNYLABS_ANALYSIS_ID="your_analysis_id"

NOTE: In order to get the SonnyLabs API token and analysis ID, after registering on the SonnyLabs Dashboard, you can generate a new API key at API keys on the SonnyLabs Dashboard. The next step is to create a new analysis on the SonnyLabs dashboard, and get the analysis ID associated with it.

There is a genereous free tier where you can call the SonnyLabs API.

3. Test the Server

# Quick test - all tools
./venv/bin/python test_all_tools.py

# Test specific categories
./venv/bin/python test_risk_classification.py
./venv/bin/python test_role_determination.py
./venv/bin/python test_sonnylabs_security.py

4. Connect to Your AI Assistant or AI Agent

See Setup for Claude Desktop, Setup for Windsurf or Setup for cursor below.

This also works with AI agents like CrewAI agents.

๐Ÿ“ Project Structure

.
โ”œโ”€โ”€ server.py                           # Main MCP server with all 17 tools
โ”œโ”€โ”€ main.py                             # Server entry point
โ”œโ”€โ”€ requirements.txt                    # Python dependencies
โ”‚
โ”œโ”€โ”€ Resources (4 JSON files)
โ”œโ”€โ”€ disclosure_templates.json           # Pre-written disclosures (50(1), 50(3))
โ”œโ”€โ”€ deepfake_labels.json               # Deepfake labels (50(4))
โ”œโ”€โ”€ article50_rules.json               # Official Article 50 rules
โ”œโ”€โ”€ watermark_config.json              # C2PA & IPTC watermarking standards
โ”‚
โ”œโ”€โ”€ Tests (7 test files)
โ”œโ”€โ”€ test_all_tools.py                  # Test all 17 tools
โ”œโ”€โ”€ test_risk_classification.py        # Test risk & prohibited tools
โ”œโ”€โ”€ test_role_determination.py         # Test role determination
โ”œโ”€โ”€ test_sonnylabs_security.py         # Test security tools
โ”œโ”€โ”€ test_watermark_media.py            # Test watermarking tools
โ”œโ”€โ”€ test_label_*_deepfake.py          # Test deepfake labeling
โ”‚
โ””โ”€โ”€ Documentation
    โ”œโ”€โ”€ README.md                       # This file
    โ”œโ”€โ”€ SONNYLABS_TESTING_GUIDE.md     # Security tools guide
    โ””โ”€โ”€ PHASE2_SUMMARY.md              # Implementation summary

Setup for Claude Desktop

1. Find Your Config File

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json

2. Add This Server Configuration

Edit the config file and add:

{
  "mcpServers": {
    "eu-ai-act-compliance": {
      "command": "FILE_PATH_OF_THIS_MCP/venv/bin/python",
      "args": [
        "FILE_PATH_OF_THIS_MCP/server.py"
      ],
      "env": {}
    }
  }
}

3. Restart Claude Desktop

Quit Claude Desktop completely and reopen it.

4. Test It Works

In a new conversation, ask Claude:

Use classify_ai_system_risk to classify a chatbot that interacts with users.

Setup for Windsurf

1. Find Your Config File

The Windsurf MCP configuration file is located at:

macOS/Linux: ~/.codeium/windsurf/mcp_config.json
Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

2. Add This Server Configuration

Edit the config file and add:

{
  "mcpServers": {
    "eu-ai-act-compliance": {
      "command": "/path/to/your/project/venv/bin/python",
      "args": [
        "/path/to/your/project/main.py"
      ],
      "env": {
        "SONNYLABS_API_TOKEN": "your_sonnylabs_api_token_here",
        "SONNYLABS_ANALYSIS_ID": "your_analysis_id_here"
      }
    }
  }
}

Replace the placeholders:

  • /path/to/your/project/venv/bin/python - Path to your virtual environment Python binary

  • /path/to/your/project/main.py - Path to the main.py file in this repo

  • your_sonnylabs_api_token_here - Your SonnyLabs API token (optional, only needed for security tools)

  • your_analysis_id_here - Your SonnyLabs analysis ID (optional, only needed for security tools)

Note: On Windows, use backslashes in paths (e.g., C:\\path\\to\\project\\venv\\Scripts\\python.exe)

3. Restart Windsurf

Quit Windsurf completely and reopen it.

4. Test It Works

Just ask me in Windsurf:

Use get_ai_interaction_disclosure with language "en" and style "simple"

Setup for Cursor

1. Open Cursor settings -> Tools & MCP and Click "Add Custom MCP"

2. Edit the config file to add This Server Configuration

Edit the config file and add:

{ "mcpServers": { "eu-ai-act-compliance": { "command": "/path/to/your/project/venv/bin/python", "args": [ "/path/to/your/project/main.py" ], "env": { "SONNYLABS_API_TOKEN": "your_sonnylabs_api_token_here", "SONNYLABS_ANALYSIS_ID": "your_analysis_id_here" } } } }

3. Replace the placeholders:

  • /path/to/your/project/venv/bin/python - Path to your virtual environment Python binary

  • /path/to/your/project/main.py - Path to the main.py file in this repo

  • your_sonnylabs_api_token_here - Your SonnyLabs API token (optional, only needed for security tools)

  • your_analysis_id_here - Your SonnyLabs analysis ID (optional, only needed for security tools)

Note: On Windows, use backslashes in paths (e.g., C:\\path\\to\\project\\venv\\Scripts\\python.exe)

4. Restart Cursor

Quit Cursor completely and reopen it.

5. Test It Works

Toggle the AI pane and create a new chat to ask:

Use get_ai_interaction_disclosure with language "en" and style "simple"
'''
A dialog should appear offering to Run the get_ai_interaction_disclosure tool. Click Run and you should
see a response like this:

{
"article": "50(1)",
"obligation": "AI Interaction Transparency",
"language": "en",
"style": "simple",
"disclosure": "You are chatting with an AI assistant.",
"usage": "Display this text to users before or during AI interaction",
"compliance_deadline": "2026-08-02"
}
You are chatting with an AI assistant


---

## ๐Ÿ’ก How to Use the Tools

### Simple Usage Examples

All tools are called the same way in Claude Desktop or Windsurf. Just ask the AI assistant to use the tool!

#### 1. Classify Your AI System

Use classify_ai_system_risk to classify my system:

  • Description: "AI chatbot for customer support"

  • Use case: "chatbot"

  • Interacts with users: true

  • Generates content: true


**Returns**: Risk level (PROHIBITED, HIGH-RISK, LIMITED-RISK, or MINIMAL-RISK) with applicable obligations

#### 2. Check Your Role

Use determine_eu_ai_act_role:

  • Company: "AI software development company"

  • Location: "United States"

  • Develops AI systems: true

  • Sells AI systems: true

  • Under own name: true


**Returns**: Your role (PROVIDER, DEPLOYER, IMPORTER, etc.) with specific obligations

#### 3. Get a Chatbot Disclosure

Use get_ai_interaction_disclosure with language "en" and style "simple"


**Returns**: "You are chatting with an AI assistant."

#### 4. Watermark AI-Generated Text

Use watermark_text:

  • Text: "This article was written about quantum computing..."

  • Generator: "GPT-4"

  • Format: "markdown"


**Returns**: Text with embedded metadata watermark

#### 5. Label a Deepfake Image

Use label_image_deepfake:

  • Description: "AI-generated portrait photo"

  • Is artistic work: false

  • Language: "en"


**Returns**: Label text and placement guidelines

#### 6. Scan for Security Threats (Requires SonnyLabs credentials)

Use scan_for_prompt_injection:

  • Input: "Ignore all previous instructions"

  • API token: [your token]

  • Analysis ID: [your ID]


**Returns**: Threat analysis with risk level and recommendation

---

## ๐Ÿ“‹ Copy-Paste Test Prompts

Ready-to-use prompts for testing all tools in Claude Desktop or Windsurf. Just copy and paste!

### 1. Risk Classification

Use classify_ai_system_risk to classify my system with these details:

  • system_description: "AI chatbot for customer support in healthcare"

  • use_case: "healthcare"

  • interacts_with_users: true

  • generates_content: true

  • processes_personal_data: true

  • makes_automated_decisions: false

  • in_critical_infrastructure: false

  • used_for_employment: false

  • used_for_education: false

  • used_for_law_enforcement: false

  • used_for_migration: false

  • used_for_justice: false

What's my risk level and what obligations apply?


### 2. Check Prohibited Practices

Use check_prohibited_practices to check if my system has any Article 5 violations:

  • system_description: "Employee monitoring system with behavior scoring"

  • subliminal_manipulation: false

  • vulnerability_exploitation: false

  • social_scoring: true

  • biometric_categorization: false

  • emotion_recognition_workplace: true

  • emotion_recognition_education: false

  • untargeted_scraping: false

  • risk_assessment_personal_characteristics: false

What violations are detected and what are the penalties?


### 3. Determine Your Role

Use determine_eu_ai_act_role to find out my role:

  • company_description: "US-based AI software company"

  • company_location: "United States"

  • develops_ai_system: true

  • uses_ai_system: false

  • sells_ai_system: true

  • distributes_in_eu: true

  • imports_to_eu: true

  • under_own_name_or_trademark: true

  • integrates_ai_into_product: false

  • represents_non_eu_provider: false

What role(s) do I have and what are my obligations?


### 4. Get Chatbot Disclosure

Use get_ai_interaction_disclosure with language "en" and style "detailed"

Show me the disclosure text I need for my chatbot.


### 5. Get Emotion Recognition Disclosure

Use get_emotion_recognition_disclosure with:

  • language: "en"

  • style: "privacy_notice"

What disclosure do I need for emotion recognition?


### 6. Get All Deepfake Labels

Use get_deepfake_label_templates with language "es"

Show me all available labels in Spanish.


### 7. Label AI-Generated News

Use label_news_text to label this article:

  • text_content: "Breaking: Scientists announce major breakthrough in renewable energy storage. New battery technology promises 10x capacity increase."

  • has_human_editor: true

  • editor_name: "Sarah Johnson"

  • language: "en"

Show me the properly labeled version.


### 8. Watermark AI Text

Use watermark_text to watermark this content:

  • text_content: "Artificial intelligence is transforming how we work and live. From healthcare diagnostics to creative writing, AI systems are becoming integral to modern society. This article explores the implications of AI adoption across industries."

  • generator: "GPT-4"

  • format_type: "markdown"

Show me the watermarking metadata and instructions.


---

## ๐Ÿ“– Complete Tool Reference

### Risk & Role Tools

#### `classify_ai_system_risk`

**Purpose**: Determine if your AI system is Prohibited, High-Risk, Limited-Risk, or Minimal-Risk

**Simple call**:

Classify my AI hiring system that screens resumes. It's used for employment.


**Parameters**:
- `system_description`: What your AI does
- `use_case`: Primary use (e.g., "employment", "healthcare", "chatbot")
- Various boolean flags for risk factors

**Returns**: Risk classification, applicable obligations, deadlines, penalties

---

#### `check_prohibited_practices`

**Purpose**: Check if your AI violates Article 5 prohibited practices

**Simple call**:

Check if my system has prohibited practices. It does social scoring.


**Parameters**: Boolean flags for 8 types of prohibited practices

**Returns**: Violations detected, severity, penalties (โ‚ฌ35M or 7%), recommendations

---

#### `determine_eu_ai_act_role`

**Purpose**: Identify your role under EU AI Act (Provider, Deployer, etc.)

**Simple call**:

What's my role? I develop AI systems and sell them under my company name in the EU.


**Parameters**: Company info and activity flags

**Returns**: Primary role, obligations, deadlines, compliance actions

---

### Transparency & Disclosure Tools

#### `get_ai_interaction_disclosure`

**Quick use**: `Get chatbot disclosure in English`

**Returns**: Ready-to-use disclosure text for AI interactions

---

#### `get_emotion_recognition_disclosure`

**Quick use**: `Get emotion recognition disclosure in German, detailed style`

**Returns**: GDPR-compliant emotion AI disclosure

---

#### `get_deepfake_label_templates`

**Quick use**: `Show me all deepfake labels in Spanish`

**Returns**: Complete list of labels for all content types

---

#### `label_news_text`

**Quick use**: `Label this AI news article: "Breaking: New discovery..." with editor "John Doe"`

**Returns**: Properly labeled text with EU AI Act compliance

---

### Watermarking Tools

#### `watermark_text` / `watermark_image` / `watermark_video` / `watermark_audio`

**Quick use**: `Watermark this AI-generated text from GPT-5`

**Returns**: Watermarking metadata and instructions (C2PA, IPTC standards)

---

### Deepfake Labeling Tools

#### `label_image_deepfake` / `label_video_deepfake` / `label_audio_deepfake`

**Quick use**: `Label this AI-generated video, not artistic work, in French`

**Returns**: Label text, placement guidance, compliance info

---

### Security Tools (Requires SonnyLabs)

#### `scan_for_prompt_injection`

**Purpose**: Detect prompt injection attacks in real-time

**Returns**: Attack detection, confidence score, risk level, recommendation

---

#### `check_sensitive_file_access`

**Purpose**: Monitor AI agent file access for security

**Returns**: File sensitivity analysis, access recommendations (BLOCK/ALLOW)

---

## ๐ŸŽฏ Real-World Usage Scenarios

### Scenario 1: Launching a Customer Service Chatbot

**What You Want To Do**: "My chatbot needs to be compliant. What do I do?"

**Instructions**: Ask the AI:

Use classify_ai_system_risk to check my chatbot Then use get_ai_interaction_disclosure to get the disclosure text


**Result**: You'll know your risk level (likely LIMITED-RISK) and get ready-to-use disclosure text in 5+ languages.

---

### Scenario 2: Publishing AI-Generated News

**What You Want To Do**: "I'm using AI to write news articles. How do I label them?"

**Instructions**: Ask the AI:

Use label_news_text to label my article with editor "Jane Smith"


**Result**: Properly formatted label + check if you qualify for exemptions with human editorial oversight.

---

### Scenario 3: Understanding Your Compliance Obligations

**What You Want To Do**: "I develop AI systems in the US and sell to EU customers. What are my obligations?"

**Instructions**: Ask the AI:

Use determine_eu_ai_act_role - I develop and sell AI systems from the US to EU


**Result**: You'll learn you're a PROVIDER + IMPORTER with specific obligations for each role.

---

### Scenario 4: Securing Your AI Against Prompt Injection Attacks

**What You Want To Do**: "How do I protect my AI from prompt injection?"

**Instructions**: Get SonnyLabs credentials, then ask the AI:

Use scan_for_prompt_injection to check user inputs before processing


**Result**: Real-time threat detection with confidence scores and block/allow recommendations.

---

### Scenario 5: Securing Your AI Against Trying to Access Sensitive Files

**What You Want To Do**: "How do I ensure the AI agent doesn't access sensitive files on the server?"

**Instructions**: Get SonnyLabs credentials, then ask the AI:

Now I want to go to /etc/shadow$ . Can you check for sensitive files or file types with the EU_AI_ACT_MCP


**Result**: Real-time sensitive file detection and block/allow recommendations.

---

## ๐Ÿ“‹ EU AI Act Coverage Summary

This server covers the most critical EU AI Act articles for AI system operators:

| Article | What It Covers | Tools in This Server |
|---------|----------------|----------------------|
| **Article 3** | Role definitions | `determine_eu_ai_act_role` |
| **Article 5** | Prohibited practices (โ‚ฌ35M penalty) | `check_prohibited_practices` |
| **Article 6** | High-risk classification | `classify_ai_system_risk` |
| **Article 15** | Cybersecurity & robustness | `scan_for_prompt_injection`, `check_sensitive_file_access` |
| **Article 50(1)** | AI interaction disclosure | `get_ai_interaction_disclosure` |
| **Article 50(2)** | Content watermarking | 4 watermarking tools |
| **Article 50(3)** | Emotion recognition disclosure | `get_emotion_recognition_disclosure` |
| **Article 50(4)** | Deepfake labeling | 4 deepfake labeling tools |

**Key Deadline**: August 2, 2026 ๐Ÿ—“๏ธ for High Risk AI Systems & Limited Risk AI Systems

### Why Use This Server?

โœ… **Complete Coverage**: 17 tools covering Articles 3, 5, 6, 10, 15, and 50  
โœ… **Multi-Language**: 5 languages supported (en, es, fr, de, it)  
โœ… **Real-Time Security**: SonnyLabs integration for live threat detection  
โœ… **Automatic Exemptions**: Tracks when exemptions apply  
โœ… **Standards Compliant**: C2PA, IPTC, GDPR aligned  
โœ… **Easy Integration**: Just ask your AI assistant to use the tools!

---

## ๐Ÿงช Testing & Development

### Run All Tests

```bash
# Test all 17 tools at once
./venv/bin/python test_all_tools.py

Test by Category

# Test risk classification
./venv/bin/python test_risk_classification.py

# Test role determination
./venv/bin/python test_role_determination.py

# Test watermarking
./venv/bin/python test_watermark_media.py

# Test security tools (requires SonnyLabs credentials)
./venv/bin/python test_sonnylabs_security.py

๐Ÿ“š Additional Resources

EU AI Act

Technical Standards

Security Tools


๐Ÿ’ฌ Support & Contributing

Need Help?

  • EU AI Act Legal Questions: Consult with legal counsel

  • Tool Usage Questions: Ask your AI assistant (Claude/Windsurf) for help

  • Technical Issues: Check test files for examples

  • SonnyLabs Security: See SONNYLABS_TESTING_GUIDE.md

Want to Contribute?

This server is designed to be comprehensive. All 17 tools are implemented and tested. If you need additional EU AI Act coverage, feel free to extend the tools following the patterns in server.py.


๐Ÿ“ Summary

What You Get

  • โœ… 17 compliance tools ready to use

  • โœ… 4 resource files with templates and standards

  • โœ… Complete EU AI Act coverage (Articles 3, 5, 6, 10, 15, 50)

  • โœ… Multi-language support (5 languages)

  • โœ… Real-time security (SonnyLabs integration)

  • โœ… Production-ready with comprehensive tests

How to Get Started

  1. Install: pip install -r requirements.txt

  2. Test: ./venv/bin/python test_all_tools.py

  3. Configure: Add to Claude Desktop or use in Windsurf

  4. Use: Just ask your AI assistant to use any tool!

Compliance Checklist

  • Classify your AI system risk level

  • Determine your role (Provider, Deployer, etc.)

  • Check for prohibited practices

  • Add transparency disclosures to user-facing AI

  • Watermark AI-generated content

  • Label deepfakes appropriately

  • Implement security scanning (optional but recommended)

  • Document compliance actions

Available Tools

16 tools
check_prohibited_practicesA

Check if AI system violates prohibited practices under Article 5.

These practices carry the HIGHEST penalties: โ‚ฌ35M or 7% of global revenue.

Args: uses_subliminal_techniques: Manipulates behavior via subliminal techniques exploits_vulnerabilities: Exploits vulnerabilities of specific groups social_scoring: Social scoring by/for public authorities predicts_crime_from_profiling: Predicts criminal behavior from profiling scrapes_facial_images: Scrapes facial images from internet/CCTV detects_emotions_in_workplace: Emotion recognition in workplace/education biometric_categorization_sensitive_attributes: Infers race, politics, etc. from biometrics real_time_biometric_identification_public: Real-time biometric ID in public spaces

Returns: Violations found with penalties and recommendations

ParametersJSON Schema
NameRequiredDescriptionDefault
social_scoringNo
scrapes_facial_imagesNo
exploits_vulnerabilitiesNo
uses_subliminal_techniquesNo
detects_emotions_in_workplaceNo
predicts_crime_from_profilingNo
real_time_biometric_identification_publicNo
biometric_categorization_sensitive_attributesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It explains the tool's behavior (checks input flags and returns violations with penalties and recommendations) and adds useful context about the penalty tier. It does not detail side effects (e.g., read-only, data retention), but for a check tool this is less critical and the return behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with Args and Returns sections, front-loads the key purpose, and includes only the penalty context needed for urgency. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 optional parameters, an output schema exists, and no annotations, the description fully defines all inputs and what to expect in return. It provides enough context for an agent to select and invoke the tool correctly without over-explaining.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description explains every one of the 8 boolean parameters with clear meaning (e.g., 'uses_subliminal_techniques: Manipulates behavior via subliminal techniques'). This adds essential value beyond the raw schema, which only provides names and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check if AI system violates prohibited practices under Article 5.' This is a specific verb and resource, and it distinguishes from siblings like classify_ai_system_risk or determine_eu_ai_act_role by focusing narrowly on Article 5 prohibited practices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this tool checks for Article 5 violations, which are the highest-penalty offenses. However, it does not explicitly contrast with alternatives (e.g., classify_ai_system_risk) or state when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_sensitive_file_accessA

Checks if AI agent is attempting to access sensitive files using SonnyLabs.ai API.

Helps comply with EU AI Act Article 15 (Security) and Article 10 (Data governance). Prevents unauthorized access to confidential files and system resources.

Args: file_path: The file path being accessed by the AI agent agent_action: The action being performed (e.g., "read", "write", "execute") sonnylabs_api_token: Your SonnyLabs API token (Bearer token) sonnylabs_analysis_id: Your SonnyLabs analysis ID tag: Optional identifier for this check (default: "file_access_check")

Returns: Dictionary with file sensitivity analysis and access recommendations

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNofile_access_check
file_pathYes
agent_actionYes
sonnylabs_api_tokenYes
sonnylabs_analysis_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does not state whether the tool is read-only, whether it makes external network calls (despite mentioning the SonnyLabs API), what side effects could occur, or any prerequisites like token expiration. The description says 'Checks' and 'Prevents' but provides no operational details beyond parameter explanations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose, compliance rationale, and an Args/Returns breakdown. It is not overly verbose, and each section adds value. The compliance sentences are somewhat extra but contribute to purpose clarity, keeping it from being purely minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core function, all parameters, and the return type, and an output schema is present. However, it lacks guidance on alternatives, prerequisite checks, or what to do with the returned analysis. For a compliance-related tool, more detail on how to interpret results would be helpful, making it minimally complete but not fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description compensates for the 0% schema coverage by explaining each parameter in the Args block. For example, it clarifies file_path as 'the file path being accessed by the AI agent' and agent_action with examples ('read', 'write', 'execute'). This adds meaningful context beyond the bare schema, but could be more detailed about formats or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Checks if AI agent is attempting to access sensitive files using SonnyLabs.ai API.' It identifies a specific verb (checks) and resource (sensitive file access), and this purpose is distinct from sibling tools that handle labeling, watermarking, or risk classification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool by referencing EU AI Act compliance and preventing unauthorized access. However, it does not explicitly mention when not to use it or name alternative tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_ai_system_riskA

Determine AI system risk level per EU AI Act classification framework.

Classifies system as: PROHIBITED, HIGH-RISK, LIMITED-RISK, or MINIMAL-RISK based on Articles 5, 6, and 50.

Args: system_description: Description of the AI system use_case: Primary use case (e.g., "employment", "healthcare", "chatbot") biometric_data: Uses biometric identification/categorization critical_infrastructure: Used in critical infrastructure education: Used in education/vocational training law_enforcement: Used for law enforcement predicts_criminal_behavior: Predicts criminal behavior from profiling social_scoring: Performs social scoring emotion_detection_workplace: Detects emotions in workplace/education generates_content: Generates synthetic content interacts_with_users: Interacts with natural persons

Returns: Risk classification with applicable obligations and deadlines

ParametersJSON Schema
NameRequiredDescriptionDefault
use_caseYes
educationNo
biometric_dataNo
social_scoringNo
law_enforcementNo
generates_contentNo
system_descriptionYes
interacts_with_usersNo
critical_infrastructureNo
predicts_criminal_behaviorNo
emotion_detection_workplaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It explains that the tool classifies into four categories and returns obligations and deadlines, adding legal context. However, it does not disclose any limitations, error conditions, or side effects, which is a gap for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise: a clear purpose sentence, a list of output categories, a bulleted Args list, and a Returns line. Every sentence adds value, with no redundancy or fluff. The formatting is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the classification framework, legal basis, and return value, and the presence of an output schema obviates the need for detailed return specifications. It is complete for its complexity, though it could mention how the boolean flags relate to the classification logic or cross-reference sibling tools for a fuller context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description provides a brief meaning for each of the 11 parameters (e.g., 'biometric_data: Uses biometric identification/categorization'). This compensates well for the schema's lack of descriptions, though some entries are terse and could benefit from more detail (e.g., 'interacts_with_users').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Determine AI system risk level per EU AI Act classification framework.' It specifies the output categories (PROHIBITED, HIGH-RISK, LIMITED-RISK, MINIMAL-RISK) and the legal basis (Articles 5, 6, and 50), distinguishing it from sibling tools that focus on specific aspects like prohibited practices or role determination.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for classifying AI system risk under the EU AI Act, but it does not explicitly state when to use this tool versus alternatives like 'check_prohibited_practices' or 'determine_eu_ai_act_role'. No exclusions or alternative guidance is provided, so it relies on the user to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

determine_eu_ai_act_roleA

Determine which EU AI Act role(s) apply to your organization.

Different roles have different obligations under the EU AI Act. Understanding your role is CRITICAL to knowing which requirements apply.

Args: company_description: Brief description of your company/organization company_location: Country/region where company is based develops_ai_system: You develop AI systems or commission their development uses_ai_system: You use AI systems in your operations sells_ai_system: You sell or offer AI systems imports_to_eu: You bring AI systems from outside EU into EU market distributes_in_eu: You distribute/resell AI systems in EU integrates_ai_into_product: You integrate AI into physical products represents_non_eu_provider: You represent a non-EU AI provider in the EU under_own_name_or_trademark: AI system bears your name/trademark substantial_modification: You substantially modify existing AI systems change_intended_purpose: You change the intended purpose of AI systems

Returns: Role determination with definitions and applicable obligations

ParametersJSON Schema
NameRequiredDescriptionDefault
imports_to_euNo
uses_ai_systemNo
sells_ai_systemNo
company_locationYes
distributes_in_euNo
develops_ai_systemNo
company_descriptionYes
change_intended_purposeNo
substantial_modificationNo
integrates_ai_into_productNo
represents_non_eu_providerNo
under_own_name_or_trademarkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full transparency burden. It discloses that the tool returns a role determination with definitions and obligations, implying a non-destructive analysis. However, it lacks details on validation, edge cases, or side effects, leaving room for ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose and organized into a clear parameter list. While it is somewhat lengthy due to 12 parameters, each line is informative. The 'CRITICAL' emphasis is slightly extraneous but does not detract from overall structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 12 parameters and existence of an output schema, the description covers all inputs and output expectations. It doesn't specify constraints like company_location format or whether at least one activity flag must be set, but the parameter explanations provide enough context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description provides a one-sentence explanation for each of the 12 parameters, adding significant meaning beyond the bare titles. This fully compensates for the schema gap and gives clear semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool determines EU AI Act roles for an organization, which is a specific verb+resource. It distinguishes from sibling tools like risk classification or labeling, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when an organization needs to understand its obligations under the EU AI Act, and emphasizes role understanding as critical. However, it doesn't explicitly mention alternatives or when-not-to-use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ai_interaction_disclosureA

Get AI interaction disclosure text for EU AI Act Article 50(1) compliance.

This tool provides pre-written disclosure text that MUST be shown to users when they interact with an AI system (chatbots, voice assistants, etc.).

Args: language: Language code (en, es, fr, de, it). Default: "en" style: Disclosure style (simple, detailed, voice). Default: "simple"

Returns: Dictionary containing the disclosure text and metadata

Example: get_ai_interaction_disclosure(language="en", style="simple") Returns: {"disclosure": "You are chatting with an AI assistant.", ...}

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNosimple
languageNoen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool returns a dictionary with disclosure text and metadata, and gives an example. However, it does not elaborate on error behavior, required permissions, or any limitations, leaving some ambiguity typical for a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening, an example, and a compact args list. Every sentence adds value, and the example clarifies usage without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and the tool's simple nature, the description adequately covers purpose, parameters, and return format. It does not detail metadata fields, but the output schema exists and the example suffices for a low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description compensates by listing valid language codes (en, es, fr, de, it) and styles (simple, detailed, voice), plus defaults. This adds meaningful guidance beyond the raw schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get AI interaction disclosure text for EU AI Act Article 50(1) compliance.' It specifies the resource (disclosure text) and the verb (get), and distinguishes it from siblings by focusing on AI interaction rather than deepfakes or watermarking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'MUST be shown to users when they interact with an AI system.' It does not explicitly name alternative tools, but the compliance context and the distinct purpose among siblings imply when it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_deepfake_label_templatesA

Get all available deepfake and AI-generated content labels.

This tool returns the complete set of labels available for different content types. Use this to see what labels are available for images, videos, audio, and text.

Args: language: Language code (en, es, fr, de). Default: "en"

Returns: Dictionary containing all available labels organized by content type

Example: get_deepfake_label_templates(language="en") Returns all labels for English

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It clearly implies a read-only operation through 'Get' and 'returns', and discloses the return structure ('Dictionary containing all available labels organized by content type') and the default language behavior. It does not mention side effects, but for a simple retrieval tool the non-mutating nature is evident.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a one-sentence summary, a usage note, Args, Returns, and an Example. Every sentence serves a purpose, and the example clarifies invocation. No redundant or vague phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no required inputs) and the presence of an output schema, the description covers all necessary aspects: what it does, when to use it, the parameter format, and return shape. The example anchors the usage. No significant gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines 'language' with a default and no description, so schema coverage is 0%. The description compensates by listing the allowed language codes ('en, es, fr, de') and the default, which is the full parameter semantics needed. It could add what language affects (e.g., localized label text), but the provided info is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get' with a clear resource: 'all available deepfake and AI-generated content labels.' It also clarifies scope by naming content types (images, videos, audio, text), which distinguishes it from sibling labeling/watermarking tools that apply labels rather than retrieve template options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Use this to see what labels are available for images, videos, audio, and text,' giving clear context for when to call this tool. It does not name alternative tools, but the purpose is distinct enough from the sibling labeling tools that no explicit exclusion is necessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_emotion_recognition_disclosureA

Get emotion recognition disclosure text for EU AI Act Article 50(3) compliance.

This tool provides pre-written disclosure text that MUST be shown to users when an AI system uses emotion recognition technology.

Args: language: Language code (en, es, fr, de, it). Default: "en" style: Disclosure style (simple, detailed, privacy_notice). Default: "simple"

Returns: Dictionary containing the disclosure text and metadata

Example: get_emotion_recognition_disclosure(language="en", style="detailed")

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNosimple
languageNoen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden. It discloses that the text MUST be shown to users (compliance requirement) and that it returns a dictionary with disclosure text and metadata. This conveys the read-only, non-destructive nature and the expected output shape, though it doesn't mention edge cases or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args, Returns, and an Example section. Every sentence adds value, and the format is easily parseable for an AI agent. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple retrieval tool with two optional parameters, and the description provides complete context: purpose, parameter options, defaults, return type, and an example. No additional metadata is needed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully compensates by documenting each parameter: language accepts en, es, fr, de, it; style accepts simple, detailed, privacy_notice. It also provides defaults and an example call, making the parameter semantics exceptionally clear beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource combination ('Get emotion recognition disclosure text') and clearly scopes it to EU AI Act Article 50(3) compliance. It is distinct from sibling tools like get_ai_interaction_disclosure or get_deepfake_label_templates, which cover different disclosure types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use it (when an AI system uses emotion recognition technology and must show disclosure text). It does not explicitly name alternatives or exclusion criteria, but the purpose is clear enough that a link to siblings is not necessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_audio_deepfakeA

Generate deepfake label for AI-generated or manipulated audio per Article 50(4).

This tool provides disclosure text for audio content that has been artificially generated or manipulated. For audio, disclosure can be spoken, written in accompanying materials, or both.

Args: audio_description: Brief description of the audio for context is_artistic_work: Whether this is artistic/creative work (may qualify for exemption) language: Language code (en, es, fr, de). Default: "en"

Returns: Dictionary with label text (written and spoken), placement guidance, and compliance info

Example: label_audio_deepfake( audio_description="AI-generated voice recording", is_artistic_work=False, language="en" )

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen
is_artistic_workNo
audio_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given the lack of annotations, the description carries the full burden. It discloses what the tool returns (label text, placement guidance, compliance info), mentions formats (spoken/written), and notes the artistic work exemption. It does not describe side effects or limitations, but for a read-only label generation tool, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and efficient. It fronts the core purpose, then details args, returns, and an example. Every sentence contributes value without redundancy, and the length is appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all essential aspects: purpose, parameters, return format, placement guidance, and a concrete example. With an output schema present and no nested objects, this level of detail is complete. The mention of Article 50(4) and exemption adds regulatory context that a user needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description fully explains each parameter in the Args section, including the language codes, the purpose of audio_description, and the exemption implication of is_artistic_work. The example further illustrates usage, completely compensating for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Generate deepfake label for AI-generated or manipulated audio per Article 50(4).' This clearly states the tool's function and scope, distinguishing it from sibling tools like label_image_deepfake and label_video_deepfake.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is explicitly tied to audio content and Article 50(4), making the intended use clear. However, it does not explicitly state when not to use it or name alternatives, though the focus on audio inherently differentiates it from the visual labeling siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_image_deepfakeA

Generate deepfake label for AI-generated or manipulated images per Article 50(4).

This tool provides the appropriate disclosure text and guidance for labeling images that have been artificially generated or manipulated. The label must be prominent, clear, and distinguishable.

Args: image_description: Brief description of the image for context is_artistic_work: Whether this is artistic/creative work (may qualify for exemption) is_satirical: Whether this is parody/satire (may qualify for exemption) language: Language code (en, es, fr, de). Default: "en"

Returns: Dictionary with label text, placement guidance, and compliance info

Example: label_image_deepfake( image_description="AI-generated portrait of a person", is_artistic_work=False, language="en" )

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen
is_satiricalNo
is_artistic_workNo
image_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the output (label text, placement guidance, compliance info) and implies a non-destructive operation (generating guidance, not modifying the image). While it does not explicitly state side effects or limitations, the nature of the tool is clear and adequately transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a concise summary, a clear Args section, and an example. It is front-loaded with the main purpose and contains no unnecessary repetition or fluff. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, parameters, return values, and includes an example. It does not discuss error handling, edge cases, or interactions between the exemption flags, but for a labeling tool with a known output schema, this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no descriptions (0% coverage), but the description's Args section thoroughly explains each parameter (image_description, is_artistic_work, is_satirical, language) and includes a usage example. This adds significant meaning beyond the schema and fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Generate deepfake label for AI-generated or manipulated images per Article 50(4).' This uses a specific verb (Generate) and resource (deepfake label for images), and distinguishes it from sibling tools like label_video_deepfake and label_audio_deepfake by explicitly focusing on images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: for labeling AI-generated or manipulated images. It does not explicitly exclude video/audio or mention alternatives, but the media-specific scope makes the intended usage obvious, especially when viewed next to sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_news_textA

Add AI-generated content disclosure to news articles and public interest text.

This tool implements EU AI Act Article 50(4) compliance for AI-generated text published as news, journalism, or public interest content.

Args: text_content: The AI-generated or AI-assisted text content has_human_editor: Whether a human editor reviewed the content (exemption qualifier) editor_name: Name of the human editor (if applicable) language: Language code (en, es, fr, de). Default: "en"

Returns: Dictionary containing the labeled text with disclosure and compliance info

Example: label_news_text( text_content="AI generated article...", has_human_editor=True, editor_name="Jane Doe", language="en" )

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen
editor_nameNo
text_contentYes
has_human_editorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the tool's purpose and returns a dictionary with labeled text and compliance info, but it does not disclose potential side effects, permission requirements, or whether input text is modified in place. This is adequate but not rich with additional behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-sentence summary followed by an optional compliance context, an Args block, Returns, and Example. The structure is clear and each section adds value, though the compliance sentence slightly overlaps with the opening sentence. Overall, it is concise and well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a text labeling tool with a relatively simple operation, the description covers purpose, inputs, output, and provides an example. The output schema exists (as noted), so the Returns section is an extra benefit. It lacks details on edge cases or the exact disclosure format, but it is sufficiently complete for most agentic use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides meaningful explanations for all four parameters, compensating for the 0% schema description coverage. It clarifies that text_content is the AI-generated text, has_human_editor is an exemption qualifier, editor_name is applicable only if an editor exists, and language includes a default and allowed values (en, es, fr, de). This exceeds the bare schema titles and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: adding AI-generated content disclosure to news articles and public interest text. It references EU AI Act Article 50(4) compliance, which is a specific and distinct purpose compared to sibling tools like watermark_text or label_image_deepfake, making it easy to distinguish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies the target content ('news, journalism, or public interest content'), providing clear contextual guidance for when to use this tool. However, it does not explicitly mention when not to use it or compare it to alternative siblings like watermark_text, so it stops short of full exclusions and alternative naming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_video_deepfakeA

Generate deepfake label for AI-generated or manipulated videos per Article 50(4).

This tool provides the appropriate disclosure text and guidance for labeling videos that have been artificially generated or manipulated. The label must be prominent, clear, and distinguishable throughout the video.

Args: video_description: Brief description of the video for context is_artistic_work: Whether this is artistic/creative work (may qualify for exemption) is_satirical: Whether this is parody/satire (may qualify for exemption) language: Language code (en, es, fr, de). Default: "en"

Returns: Dictionary with label text, placement guidance, and compliance info

Example: label_video_deepfake( video_description="AI-generated video of a speech", is_artistic_work=False, language="en" )

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen
is_satiricalNo
is_artistic_workNo
video_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It explains the output (label text, placement guidance, compliance info) and notes that artistic/satirical works 'may qualify for exemption'. However, it does not disclose potential side effects, authentication requirements, or how exemption is determined, and it does not state that the tool only uses a description (not the actual video) beyond the arg description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise and front-loaded with purpose, followed by Args, Returns, and Example sections. Each section earns its place, though the Returns section is slightly redundant with the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a labeling tool with an output schema, the description covers purpose, all parameters, and return shape. It does not explicitly compare with sibling watermark tools or cover edge cases, but it provides sufficient context for an agent to decide when and how to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description fully compensates by explaining each parameter's meaning, including the exemption implications for is_artistic_work and is_satirical, valid language codes, and the default. The example further clarifies expected usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generate') and clearly identifies the resource ('deepfake label') and scope ('AI-generated or manipulated videos per Article 50(4)'). It distinguishes the tool from siblings like label_image_deepfake and label_audio_deepfake by explicitly targeting videos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: for labeling AI-generated/manipulated videos under Article 50(4). It also mentions exemption criteria for artistic/satirical works. It does not explicitly name sibling alternatives, but the video-specific wording implies the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_for_prompt_injectionA

Scans user input for prompt injection attacks using SonnyLabs.ai API.

Helps comply with EU AI Act Article 15 cybersecurity requirements. Detects attempts to manipulate AI behavior through prompt injection.

Args: user_input: The user input text to scan for threats sonnylabs_api_token: Your SonnyLabs API token (Bearer token) sonnylabs_analysis_id: Your SonnyLabs analysis ID tag: Optional identifier for this scan (default: "mcp_scan")

Returns: Dictionary with threat analysis and EU AI Act compliance info

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNomcp_scan
user_inputYes
sonnylabs_api_tokenYes
sonnylabs_analysis_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It discloses that the tool uses SonnyLabs.ai API and requires a Bearer token, indicating an external network call. It also describes the return type (a dictionary). However, it does not mention rate limits, data sent to a third party, error handling, or other side effects. This is moderately transparent but not richly detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening, context, an Args block, and a Returns line. It is not overly long, though one sentence ('Detects attempts to manipulate AI behavior through prompt injection') is somewhat redundant with the first line. Overall efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all parameters and the return type, and it provides compliance context. An output schema exists, so the return format does not need full explanation. However, it lacks details on potential errors, rate limits, or the behavior of the external API. For a tool with external side effects, this is a small gap but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates excellently by explaining each parameter: user_input is the text to scan, sonnylabs_api_token is a Bearer token, sonnylabs_analysis_id is the analysis ID, and tag is an optional identifier with a default. This adds meaningful context beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'Scans user input for prompt injection attacks using SonnyLabs.ai API', providing a specific verb, resource, and scope. It distinguishes itself from siblings by focusing on prompt injection detection, while other tools handle different AI Act compliance aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: scanning user input for prompt injection and helping with EU AI Act Article 15 cybersecurity requirements. It implies when to use it (whenever prompt injection scanning is needed), but it does not explicitly mention alternatives or exclusions. Still, the context is strong enough for an agent to select this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watermark_audioA

Generate watermarking metadata for AI-generated audio per Article 50(2).

This tool provides metadata and instructions for watermarking AI-generated audio. Audio watermarks use fingerprinting and metadata embedding.

Args: audio_description: Brief description of the audio generator: Name of AI system that generated it format_type: Audio format (mp3, wav, opus). Default: "mp3"

Returns: Dictionary with watermarking metadata, instructions, and compliance info

ParametersJSON Schema
NameRequiredDescriptionDefault
generatorNoAI
format_typeNomp3
audio_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It clarifies that the tool returns metadata and instructions and mentions fingerprinting/metadata embedding, suggesting no direct audio modification. However, it does not explicitly state whether file operations, permissions, or side effects are involved, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with a clear purpose statement followed by Args and Returns sections. The second sentence ('This tool provides metadata and instructions...') is slightly redundant with the first but adds context, so it retains value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple metadata-generation tool, the description covers the purpose, all parameters, and the output structure. The presence of an output schema offset the need for detailed return-value documentation, but usage guidance and examples are still missing, preventing a score of 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, the description explains each parameter in detail: audio_description as a brief description, generator as the AI system name, and format_type with valid values (mp3, wav, opus). This adds significant meaning beyond the schema's titles and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Generate watermarking metadata for AI-generated audio per Article 50(2)' with a specific verb and resource. The 'audio' scope clearly distinguishes this from sibling tools like watermark_text, watermark_image, and watermark_video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied through the tool name and reference to AI-generated audio, but the description does not explicitly state when to prefer this over sibling watermarking tools or mention any exclusions. No alternatives are given, so the guidance remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watermark_imageA

Generate watermarking metadata for AI-generated images per Article 50(2).

This tool provides C2PA-compliant metadata and instructions for watermarking AI-generated images. The watermark must be machine-readable and detectable.

Args: image_description: Brief description of the image generator: Name of AI system that generated it (e.g., "DALL-E", "Midjourney") format_type: Image format (png, jpg, webp). Default: "png"

Returns: Dictionary with watermarking metadata, instructions, and compliance info

Example: watermark_image( image_description="AI-generated landscape", generator="DALL-E", format_type="png" )

ParametersJSON Schema
NameRequiredDescriptionDefault
generatorNoAI
format_typeNopng
image_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It explicitly says the tool 'generates watermarking metadata and instructions' rather than actually modifying the image, which is a key behavioral trait. It also discloses the return type (dictionary with metadata, instructions, compliance info) and mentions the watermark must be machine-readable and detectable. This provides useful transparency without contradicting any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into short sections (Args, Returns, Example) with the core purpose front-loaded in the first sentence. It is slightly longer than strictly necessary due to the example, but every sentence contributes useful information, making it efficient rather than verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three params, a simple dictionary output, and no annotations, the description is highly complete. It includes the regulatory reference (Article 50(2)), the output shape, parameter semantics, and a worked example. The presence of an output schema means return values need not be detailed further, and the description provides enough context for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 does: each parameter is explained clearly (image_description, generator, format_type), including example values for generator ('DALL-E', 'Midjourney') and format_type ('png', 'jpg', 'webp') with a default. The example call demonstrates usage. This adds real meaning beyond the schema's bare property names and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence 'Generate watermarking metadata for AI-generated images per Article 50(2)' clearly states a specific verb ('generate') and resource ('watermarking metadata for AI-generated images'), distinguishing it from sibling tools like watermark_text, watermark_video, and watermark_audio by explicitly scoping to images. The mention of C2PA compliance adds further specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this tool is for AI-generated images, providing context that it produces C2PA-compliant metadata and instructions. However, it does not explicitly mention when not to use this tool or point to alternatives (e.g., watermark_text for text), though sibling names make the distinction implicit. This fits the 'clear context, no exclusions' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watermark_textA

Add metadata watermark to AI-generated text for EU AI Act Article 50(2) compliance.

This tool adds machine-readable metadata to AI-generated text content, marking it as artificially generated. This is required for provider compliance with Article 50(2) for text content generation systems.

Args: text_content: The AI-generated text to watermark generator: Name of the AI system that generated it (e.g., "GPT-4", "Claude", "Custom AI") format_type: Output format (plain, markdown, html). Default: "plain"

Returns: Dictionary containing the watermarked text with embedded metadata

Example: watermark_text( text_content="This is AI-generated content...", generator="GPT-4", format_type="markdown" )

ParametersJSON Schema
NameRequiredDescriptionDefault
generatorNoAI
format_typeNoplain
text_contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool 'adds machine-readable metadata' and returns 'a dictionary containing the watermarked text with embedded metadata.' This gives a clear behavioral model, though it doesn't mention side effects like possible text modifications 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-sentence summary, followed by a clear breakdown of arguments, return value, and an example. Every sentence provides value without fluff, and the structure is well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the legal/regulatory context (EU AI Act), parameter semantics, return type, and gives a concrete example. Given the tool's simplicity (3 parameters, flat structure) and the presence of an output schema, this is fully sufficient for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 explains every parameter (text_content, generator, format_type) with explicit meanings, defaults, examples (e.g., 'GPT-4' for generator, 'plain, markdown, html' for format_type), and even includes a usage example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add metadata watermark'), the target resource ('AI-generated text'), and the specific compliance purpose ('EU AI Act Article 50(2)'). This distinguishes it from sibling tools like watermark_image, watermark_video, and watermark_audio, which handle other modalities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong context by stating this is 'required for provider compliance with Article 50(2) for text content generation systems.' It implies usage for text content but does not explicitly name alternatives or exclusion criteria, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watermark_videoA

Generate watermarking metadata for AI-generated videos per Article 50(2).

This tool provides C2PA-compliant metadata and instructions for watermarking AI-generated videos. The watermark must be machine-readable and detectable.

Args: video_description: Brief description of the video generator: Name of AI system that generated it format_type: Video format (mp4, webm, mov). Default: "mp4"

Returns: Dictionary with watermarking metadata, instructions, and compliance info

ParametersJSON Schema
NameRequiredDescriptionDefault
generatorNoAI
format_typeNomp4
video_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It clarifies that the tool generates metadata and instructions rather than directly embedding watermarks, and it discloses the output shape and compliance standard. It could add a note about non-modification, but the current wording is clear enough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with purpose, and uses a clear Args/Returns structure. Every sentence adds relevant information without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is low-complexity with only three parameters, and the description covers purpose, parameters, compliance, and return value. An output schema exists and is referenced via the Returns statement. It would benefit from an explicit alternative-tool mention, but it is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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. The Args section gives meaningful definitions for all three parameters, including valid format examples (mp4, webm, mov) and the meaning of 'generator'. This adds value beyond the bare schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generate watermarking metadata') and resource ('AI-generated videos per Article 50(2)'), clearly distinguishing it from sibling watermark tools that target images, audio, or text. It also adds C2PA compliance context, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the tool is for AI-generated videos with C2PA-compliant metadata, giving a clear when-to-use context. It does not explicitly name alternative tools for images/audio/text, but the video-specific scope makes the intended use evident.

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. Dates show when Glama detected each change.

  1. 16 tool updatesv0.1.0
    • First observedcheck_prohibited_practices
    • First observedcheck_sensitive_file_access
    • First observedclassify_ai_system_risk
    • First observeddetermine_eu_ai_act_role
    • First observedget_ai_interaction_disclosure
    • First observedget_deepfake_label_templates
    • First observedget_emotion_recognition_disclosure
    • First observedlabel_audio_deepfake
    • First observedlabel_image_deepfake
    • First observedlabel_news_text
    • First observedlabel_video_deepfake
    • First observedscan_for_prompt_injection
    • First observedwatermark_audio
    • First observedwatermark_image
    • First observedwatermark_text
    • First observedwatermark_video

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct compliance concern: retrieval of templates, disclosures for interaction/emotion, labeling vs watermarking for different content types, risk classification, prohibited practice checking, role determination, and security scanning. No two tools have overlapping purposes; the descriptions clearly differentiate human-readable labels from machine-readable watermarks and different compliance articles.

Naming Consistency4/5

The tools follow a consistent verb_noun pattern: get_* for retrieval, label_* for disclosure generation, watermark_* for metadata generation, and specific verbs like classify, check, determine, scan. Minor deviation: label_news_text vs label_image_deepfake (news text vs deepfake modality), but overall the naming is predictable and systematic.

Tool Count4/5

With 16 tools, the server covers a broad but well-defined domain of EU AI Act compliance. The count is slightly at the upper boundary but each tool serves a distinct content type or compliance article, so it doesn't feel bloated.

Completeness4/5

The server provides comprehensive coverage for the EU AI Act's transparency obligations (labels, watermarks), risk classification, prohibited practices, role determination, and security checks. Minor gaps exist (e.g., no dedicated GPAI obligations tool), but core compliance workflows are fully covered.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

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

Related MCP Servers

Latest Blog Posts

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/SonnyLabs/EU_AI_ACT_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server