Skip to main content
Glama
CSOAI-ORG

EU AI Act Compliance MCP

deadline_check

Check all EU AI Act enforcement deadlines and see days remaining for each. Ensure compliance readiness with up-to-date deadline tracking.

Instructions

All EU AI Act enforcement deadlines with days remaining. No parameters needed.

Behavior: This tool is read-only and stateless — it produces analysis output without modifying any external systems, databases, or files. Safe to call repeatedly with identical inputs (idempotent). Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need to assess, audit, or verify compliance requirements. Ideal for gap analysis, readiness checks, and generating compliance documentation.

When NOT to use: Do not use as a substitute for qualified legal counsel. This tool provides technical compliance guidance, not legal advice. Behavioral Transparency: - Side Effects: This tool is read-only and produces no side effects. It does not modify any external state, databases, or files. All output is computed in-memory and returned directly to the caller. - Authentication: No authentication required for basic usage. Pro/Enterprise tiers require a valid MEOK API key passed via the MEOK_API_KEY environment variable. - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are included in responses (X-RateLimit-Remaining, X-RateLimit-Reset). - Error Handling: Returns structured error objects with 'error' key on failure. Never raises unhandled exceptions. Invalid inputs return descriptive validation errors. - Idempotency: Fully idempotent — calling with the same inputs always produces the same output. Safe to retry on timeout or transient failure. - Data Privacy: No input data is stored, logged, or transmitted to external services. All processing happens locally within the MCP server process.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The deadline_check() function is the core handler — a FastMCP tool decorated with @mcp.tool(). It takes zero parameters, iterates over the EU_AI_ACT_TIMELINE data, computes days remaining for each deadline, categorizes urgency (past/critical/high/normal), and returns a structured response with next_deadline, all deadlines, and a key_message.
    @mcp.tool()
    def deadline_check() -> dict:
        """All EU AI Act enforcement deadlines with days remaining. No parameters needed.
    
        Behavior:
            This tool is read-only and stateless — it produces analysis output
            without modifying any external systems, databases, or files.
            Safe to call repeatedly with identical inputs (idempotent).
            Free tier: 10/day rate limit. Pro tier: unlimited.
            No authentication required for basic usage.
    
        When to use:
            Use this tool when you need to assess, audit, or verify compliance
            requirements. Ideal for gap analysis, readiness checks, and generating
            compliance documentation.
    
        When NOT to use:
            Do not use as a substitute for qualified legal counsel. This tool
            provides technical compliance guidance, not legal advice.
        Behavioral Transparency:
            - Side Effects: This tool is read-only and produces no side effects. It does not modify
              any external state, databases, or files. All output is computed in-memory and returned
              directly to the caller.
            - Authentication: No authentication required for basic usage. Pro/Enterprise tiers
              require a valid MEOK API key passed via the MEOK_API_KEY environment variable.
            - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are
              included in responses (X-RateLimit-Remaining, X-RateLimit-Reset).
            - Error Handling: Returns structured error objects with 'error' key on failure.
              Never raises unhandled exceptions. Invalid inputs return descriptive validation errors.
            - Idempotency: Fully idempotent — calling with the same inputs always produces the
              same output. Safe to retry on timeout or transient failure.
            - Data Privacy: No input data is stored, logged, or transmitted to external services.
              All processing happens locally within the MCP server process.
        """
        today = datetime.now().date()
        deadlines = []
        next_upcoming = None
    
        for entry in EU_AI_ACT_TIMELINE:
            deadline_date = datetime.strptime(entry["date"], "%Y-%m-%d").date()
            days_remaining = (deadline_date - today).days
    
            if days_remaining < 0:
                status = "IN EFFECT"
                urgency = "past"
            elif days_remaining == 0:
                status = "EFFECTIVE TODAY"
                urgency = "critical"
            elif days_remaining <= 90:
                status = "IMMINENT"
                urgency = "critical"
            elif days_remaining <= 365:
                status = "APPROACHING"
                urgency = "high"
            else:
                status = "UPCOMING"
                urgency = "normal"
    
            deadline_entry = {
                "date": entry["date"],
                "event": entry["event"],
                "article": entry["article"],
                "days_remaining": days_remaining,
                "status": status,
                "urgency": urgency,
            }
            deadlines.append(deadline_entry)
    
            if days_remaining > 0 and next_upcoming is None:
                next_upcoming = deadline_entry
    
        return {
            "assessment_date": today.isoformat(),
            "next_deadline": next_upcoming,
            "deadlines": deadlines,
            "regulation": "Regulation (EU) 2024/1689",
            "key_message": (
                f"Next deadline: {next_upcoming['date']} — {next_upcoming['event']} "
                f"({next_upcoming['days_remaining']} days remaining)"
            ) if next_upcoming else "All EU AI Act deadlines have passed — full enforcement is in effect.",
            "meok_labs": "https://meok.ai",
        }
  • The EU_AI_ACT_TIMELINE data is the knowledge base / schema defining 6 key milestone dates (from entry into force Aug 2024 through full compliance Aug 2030) with their event descriptions and article references. This data drives the deadline_check handler.
    # Key Timeline Dates
    EU_AI_ACT_TIMELINE = [
        {"date": "2024-08-01", "event": "EU AI Act entered into force (Regulation (EU) 2024/1689 published in Official Journal)", "article": "Article 113"},
        {"date": "2025-02-02", "event": "Prohibited AI practices (Article 5) become enforceable; AI literacy obligations (Article 4) apply", "article": "Articles 4, 5"},
        {"date": "2025-08-02", "event": "Rules for General-Purpose AI (GPAI) models apply (Chapter V); notified bodies designated; governance framework operational", "article": "Articles 51-56, Chapter VII"},
        {"date": "2026-08-02", "event": "Full enforcement of all provisions for high-risk AI systems (including Annex III); obligations on providers, deployers, importers, distributors", "article": "Articles 6-49, Annex III"},
        {"date": "2027-08-02", "event": "Obligations for high-risk AI systems that are safety components of products under Union harmonisation legislation (Annex I)", "article": "Annex I, Article 6(1)"},
        {"date": "2030-08-02", "event": "Existing high-risk AI systems used by public authorities must comply (transitional provision)", "article": "Article 111(2)"},
    ]
  • server.py:429-432 (registration)
    The FastMCP server instance 'mcp' is created with instructions mentioning deadline_check. The @mcp.tool() decorator on line 569 registers deadline_check as an MCP tool. The instructions (line 431) explicitly tell users to start with deadline_check (zero parameters).
    mcp = FastMCP(
        "EU AI Act Compliance",
        instructions="By MEOK AI Labs — EU AI Act compliance automation. Start with quick_scan (one sentence, instant result) or deadline_check (zero parameters). Full tools: risk classification, 42-point audit, Annex IV documentation, penalty calculator, multi-jurisdiction mapping. No API key needed for free tier (10 calls/day)."
    )
  • The _check_rate_limit helper function is used implicitly — though deadline_check does not call it directly (unlike other tools), it's a supporting utility available in the server for rate limiting across tools.
    def _check_rate_limit(caller: str = "anonymous", tier: str = "free") -> Optional[str]:
        """Returns error string if rate-limited, else None. No API key required for free tier."""
        if tier == "pro":
            return None
        now = datetime.now()
        cutoff = now - timedelta(days=1)
        _usage[caller] = [t for t in _usage[caller] if t > cutoff]
        if len(_usage[caller]) >= FREE_DAILY_LIMIT:
            return (
                f"Free tier limit reached ({FREE_DAILY_LIMIT}/day). "
                "Upgrade to MEOK AI Labs Pro for unlimited access at $29/mo: "
                "https://meok.ai/mcp/eu-ai-act/pro"
            )
        _usage[caller].append(now)
        return None
Behavior5/5

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

With no annotations provided, the description carries full burden and excels: it details read-only/stateless nature, idempotency, authentication needs, rate limits, error handling, and data privacy. This is comprehensive and goes beyond typical descriptions.

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 clear sections and front-loaded purpose. While slightly verbose, every sentence adds value and it avoids redundancy.

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 many aspects (behavior, when to use, rate limits, etc.) but lacks explicit mention of the success output format (e.g., list of deadlines with dates and days remaining). Given no output schema, this omission leaves the return value ambiguous.

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?

No parameters exist, so schema coverage is 100% trivially. Baseline for 0 parameters is 4, and the description adds value by explicitly stating 'No parameters needed,' reinforcing the zero-parameter design.

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 'All EU AI Act enforcement deadlines with days remaining,' specifying a concrete verb (check or retrieve) and resource (deadlines). It effectively distinguishes from sibling tools like assess_penalties or audit_report by focusing on deadlines and days remaining.

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 includes explicit 'When to use' and 'When NOT to use' sections, advising use for compliance assessment and cautioning against substituting legal counsel. However, it does not directly contrast with sibling tools (e.g., quick_scan, check_compliance) to guide selection among them.

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

Install Server

Other Tools

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/CSOAI-ORG/eu-ai-act-compliance-mcp'

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