Skip to main content
Glama

EU AI Act MCP Server

License: MIT npm version Connect to Claude (Anthropic's connectors directory) Smithery listing Test

An open-source Model Context Protocol (MCP) server that gives LLMs structured intelligence about the EU AI Act (Regulation (EU) 2024/1689, as amended by the Digital Omnibus, Regulation (EU) 2026/1744).

Built by Lexbeam Software - an agentic AI implementation boutique for regulated workflows.

Listed use, not sector

Annex III regulates uses, not sectors. Set signals.domain to an Annex III area only when the system itself performs a use listed there; a system that merely operates in that sector gets "other". Two calls to euaiact_classify_system, both for systems in the employment sector:

In the sector, not a listed use. Returns limited (Art. 50(1) transparency).

{
  "description": "An HR chatbot answers employees' questions about the holiday policy and where to find the travel expense form.",
  "signals": { "domain": "other", "interacts_with_natural_persons": true }
}

A listed use. Returns high-risk (Annex III(4)).

{
  "description": "Our ATS screens incoming CVs against the job spec and auto-rejects anyone missing the right keywords before a recruiter looks.",
  "signals": { "domain": "employment" }
}

The classifier trusts the signal: the same chatbot sent with "domain": "employment" comes back high-risk. Leave domain out when the description does not tell you which it is.

Related MCP server: ai-economy-infrastructure

What's new in 1.6.0

Version 1.6.0 corrects what a calling agent is told, and measures what it then does.

  • Listed uses, not sectors: signals.domain names an Annex III area only when the system itself performs a use Annex III lists for it. Until now the field read as the sector a system operates in, and an agent that filled it faithfully got a school timetable, a payroll check and a court budgeting tool back as high-risk. Measured with one agent model on 358 descriptions: 46 of 106 non-regulated systems were wrongly regulated under the old tool definition and none under the new one, while recognition of regulated systems held (181 and 179 of 252). See evals/front-door.

  • Signals first: the tool description tells the agent to derive the structured signals from the user's description itself. Free text alone is only keyword-matched.

  • A callable assessment: the euaiact_assess_system description states the fact shape and a useful minimum profile.

  • Releases with two human steps and no token: a GitHub release stages the package on npm over trusted publishing, and it becomes public only when a maintainer approves it with 2FA. A weekly job checks every lexbeam.com link the server publishes, and a version bump no longer moves a pinned hash.

Full release history: CHANGELOG.md.

Quick Start

Claude, one click

The hosted server is listed in Anthropic's connectors directory as a community connector: claude.ai/directory/lexbeam-eu-ai-act. Open the listing and connect; it works in claude.ai, the Claude apps and Cowork. No account with Lexbeam and no API key are needed. The same server answers at https://mcp.lexbeam.com/mcp for any other MCP client (below).

npx (no install)

npx -y @lexbeam-software/eu-ai-act-mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "eu-ai-act": {
      "command": "npx",
      "args": ["-y", "@lexbeam-software/eu-ai-act-mcp"]
    }
  }
}

Smithery

npx -y @smithery/cli@latest mcp add lexbeam-software/eu-ai-act

Direct MCP endpoint: https://mcp.lexbeam.com/mcp (health check at /health). Open, no auth required. The front page at mcp.lexbeam.com has the tools and how to connect, and /llms.txt the same facts as plain text.

The Smithery-hosted endpoint https://eu-ai-act--lexbeam-software.run.tools requires Smithery authentication and returns 401 without it.

From source

git clone https://github.com/lexbeam-software/eu-ai-act-mcp.git
cd eu-ai-act-mcp
npm install
npm run build
npm start        # stdio transport
npm run start:http  # streamable HTTP (for Smithery/Railway)

First successful calls

For the hosted server, add https://mcp.lexbeam.com/mcp as a remote Streamable HTTP MCP server in your client. It requires no API key. The package also supports the local stdio command above. Send the negotiated MCP-Protocol-Version header on subsequent HTTP requests; browser clients can preflight that header.

Start with euaiact_get_article and {"article":"Artikel 4"} to retrieve the existing Article 4 summary and its official source link. 4, Art. 4, and Article 4 are equivalent whole-article lookups. Summaries are not statutory text.

euaiact_answer_question searches curated FAQs. For example, {"question":"Welche Pflichten zur KI-Kompetenz gelten nach Artikel 4?"} routes to the literacy FAQ. Answers remain in English. Check match_status: matched identifies the accepted matched_question; no_match contains guidance instead of a FAQ answer and may identify a rejected candidate_question. Confidence is match confidence, not a probability that a legal conclusion is correct.

For the structured assessment, use the complete, syntactically valid minimum profile as the arguments to euaiact_assess_system. It is synthetic and intentionally leaves unconfirmed facts out. Replace its assertions only with facts the user supplied; do not copy the example's answers into a real assessment. Read missing_facts, legal_classification.limitations, and recommended_next_calls, even when the status is determined. Ask the relevant questions, add fact objects with unique IDs, and call euaiact_assess_system again to update all three result blocks. A minimal profile is not a complete assessment.

For the simpler classifier, missing_signals includes unprovided optional context. It does not mean all listed fields must be collected before reporting a matched route. Use next_questions for follow-up guidance. A matched high-risk route does not establish that every prohibited-practice or other route was ruled out.

All tools reject unknown argument names, including nested objects, consistently with their advertised closed input schemas. Correct a misspelled field rather than retrying it silently. Omitted optional fields and documented defaults work as before.

Tools

Tool

Description

euaiact_classify_system

Classify an AI system's risk level (prohibited / high-risk / limited / minimal) from structured signals that the calling agent derives from the user's description; free text alone is a keyword fallback. Returns matched signals, missing signals, and follow-up questions.

euaiact_check_deadlines

Implementation milestones with days remaining, next_milestone shortcut, only_upcoming filter, and the enacted Digital Omnibus (Regulation (EU) 2026/1744) status.

euaiact_get_obligations

Specific compliance obligations by role (provider/deployer) and risk level, including GPAI (Art. 51-56) and universal AI literacy (Art. 4).

euaiact_answer_question

Keyword FAQ search (lexical matching with stopword filtering, tie handling and abstention) across 24 curated EU AI Act questions; echoes your question and names the matched entry.

euaiact_calculate_penalty

Calculate maximum fines by violation type, turnover, SME status (Art. 99(6)) and SMC status (Art. 99(6a), tiers 99(4)-(5) only), with a comparative non-SME vs SME block.

euaiact_get_article

Retrieve an operational summary and EUR-Lex URL for a specific article. Covers 28 curated articles between Art. 3 and Art. 113 (including the new Art. 4a), not the full act.

euaiact_check_gpai_systemic_risk

Check whether a GPAI model crosses the 10²⁵ FLOPs threshold and return Art. 53 + Art. 55 obligations plus the Art. 52 notification duty.

euaiact_assess_art6_3_exception

Walk through the Art. 6(3) "no significant risk" exception with explicit profiling block and Art. 6(4) / Art. 49(2) reminders.

euaiact_annex_iv_checklist

Return all nine Annex IV technical-documentation items, optionally as a markdown checklist.

euaiact_assess_system

Assess a normalized system profile with separate legal-classification, qualitative-impact, and evidence-readiness blocks. Sparse decisive facts fail closed; every finding carries fact IDs and official provenance.

Resources

URI

Description

euaiact://timeline

Key implementation milestones of the EU AI Act.

euaiact://risk-levels

Overview of the four risk categories.

euaiact://annex/iii

Full Annex III high-risk AI categories (1-8) with descriptions, examples, and article references.

euaiact://annex/iv

Full Annex IV technical-documentation items (1-9).

euaiact://omnibus

The Digital Omnibus on AI (Regulation (EU) 2026/1744) as enacted: amended dates, deltas, and source status per item.

Prompts

  • classify-my-system - guided classification using euaiact_classify_system with signal inference

  • compliance-checklist - risk-level + role obligations checklist, including Annex IV for high-risk

  • penalty-risk-assessment - penalty calculation with SME comparative

  • ground-citation - retrieve an operational summary + EUR-Lex URL, then verify definitive wording in the official source before quoting

Knowledge Base

Curated, structured data covering:

  • 8 Annex III high-risk categories with keyword matching and examples

  • 10 prohibited AI practices: Art. 5(1)(a)-(h), plus (ba) and (bb) applying from 2 December 2026

  • Art. 6(3) exception conditions with the profiling block rule

  • Art. 50 transparency triggers (chatbots, deepfakes, emotion recognition, machine-readable marking)

  • 8 implementation milestones with dynamic days-remaining calculation

  • Digital Omnibus (enacted) status and impact assessment

  • Provider obligations (13 for high-risk, 8 for GPAI including Art. 53 + Art. 55)

  • Deployer obligations (9 for high-risk)

  • Limited-risk transparency obligations (4 under Art. 50)

  • Universal AI literacy (Art. 4)

  • Penalty framework with SME protection logic (Art. 99)

  • 25 FAQ entries with article references

  • 28 article summaries with EUR-Lex URLs to the consolidated text

  • Annex IV (9 documentation items) (new in 1.1.0)

Load-bearing dates, thresholds, amounts and exceptions are checked on every build by a claim matrix (test-claims.mjs) against a pinned, hash-verified copy of the consolidated act (law/). Coverage is the matrix, not a blanket claim.

Regulatory Accuracy

This server tracks the current state of the EU AI Act (Regulation 2024/1689) as amended by the Digital Omnibus on AI, Regulation (EU) 2026/1744, published in the Official Journal on 24 July 2026 and in force from 27 July 2026. The amended application dates are served as operative law. Article-level wording was verified against the enacted OJ text on 26 and 27 July 2026, delta by delta against the 43 numbered amendments in Article 1 of the amending act. No Omnibus delta was left unresolved in that reconciliation. The Art. 49 registration duty for self-assessed not-high-risk systems, previously carried as unresolved, SURVIVES: the enacted act does not amend Art. 49 and deletes only Annex VIII Section B points 7 and 9.

Operative dates as amended:

  • 2 Feb 2025 - Prohibited practices (Art. 5) + AI literacy (Art. 4), in effect

  • 2 Aug 2025 - GPAI model obligations, in effect

  • 2 Aug 2026 - Art. 50 transparency, and Commission GPAI enforcement powers and fines. Not deferred

  • 2 Dec 2026 - The two new Art. 5 prohibitions (non-consensual intimate material, CSAM), and the Art. 111(4) deadline for synthetic-content systems already on the market to meet Art. 50(2)

  • 2 Aug 2027 - Legacy GPAI models (Art. 111(3)), unchanged

  • 2 Dec 2027 - High-risk Annex III obligations. Deferred from 2 Aug 2026

  • 2 Aug 2028 - High-risk Annex I regulated products. Deferred from 2 Aug 2027

Development

npm install
npm run build        # typescript -> dist/
node test.mjs         # full suite incl. ten agent journeys
node test-claims.mjs  # 124-check matrix: pinned law corpus vs served facts
node test-schemas.mjs # post-serialization output-schema gate
node law/fetch.mjs verify # verify all 4 pinned legal documents
npm --prefix compiler test # deterministic compiler: 6 tests
node evals/front-door/score.mjs evals/front-door/agent-args-1.6.0.json # the front door, measured
npm run dev          # stdio dev server
npm run dev:http     # HTTP dev server

Privacy

The hosted endpoint https://mcp.lexbeam.com/mcp runs statelessly: it receives the tool arguments your assistant sends and the request data (IP address, time, URL, user agent), stores no tool arguments or results, sets no cookies and runs no analytics. It is hosted by Railway. Run the server locally from npm and nothing reaches Lexbeam. Full policy: PRIVACY.md.

Disclaimer

This MCP server is a structured information tool that returns references to and summaries of Regulation (EU) 2024/1689. It provides general information only and does not constitute legal advice. Whether a service falls within a national regulated legal-services regime must be verified against current official sources and, where necessary, with qualified local counsel. This tool cannot replace that review, and its use does not establish a lawyer-client relationship. For implementation support, visit lexbeam.com/kontakt.

License

MIT. See LICENSE. Regulation text summarised in src/knowledge/articles.ts and src/knowledge/annex-iv.ts is derived from Regulation (EU) 2024/1689 as amended; EUR-Lex content is reused under the conditions of Commission Decision 2011/833/EU (preserve attribution, do not distort the meaning of the source).

About Lexbeam

Lexbeam Software builds agentic AI for compliance, legal operations, internal audit, and risk workflows.

Give us one ugly, regulation-heavy workflow. We'll turn it into a working AI system fast.

Available Tools

10 tools
euaiact_annex_iv_checklistAnnex IV Technical Documentation ChecklistB
Read-onlyIdempotent

The nine titles and descriptions summarise Annex IV. sub_items are non-binding implementation prompts, are not verbatim Annex IV text, and do not create additional legal requirements. Under Article 11(1), SMEs, including start-ups, and SMCs may provide the Annex IV elements in a simplified manner only by using the Commission form referred to in that paragraph.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput shape: 'json' returns structured items; 'checklist' adds a markdown checklist string.json
sme_simplifiedNoIndicate whether SME-simplified preparation is being used (Art. 11(1) second subparagraph).

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
sme_noteNo
total_itemsYes
guidance_noteYes
relevant_articlesYes
checklist_markdownNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description adds real value beyond them: it discloses that sub_items are non-binding implementation prompts, are not verbatim Annex IV text, and create no additional legal requirements. That is exactly the kind of content caveat an agent needs to avoid overstating legal authority, though it says nothing about output size or formatting behavior.

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

Conciseness3/5

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

Three sentences, no fluff, but the structure is inverted for a tool definition: it opens with a caveat about output contents rather than stating what the tool does or returns. Every sentence earns its place on legal accuracy, yet the most important information for selection (the core action) is absent, so front-loading is poor.

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?

With an output schema present, return values need not be described, and both parameters are fully documented in the schema, so nothing an agent needs to invoke it is missing. However, the description never states the core action or when to prefer it over sibling tools, leaving the selection decision weaker than it should be for a nine-sibling tool family.

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 100%, so the baseline is 3, but the description adds legal meaning to sme_simplified by grounding it in Article 11(1) second subparagraph and the requirement to use the Commission form — context the schema's one-line description does not carry. The 'json' vs 'checklist' format parameter gets no added commentary, keeping it just above baseline.

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

Purpose3/5

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

The description implies this returns the Annex IV checklist by referencing 'the nine titles and descriptions' and 'sub_items', but it never states a verb+resource action such as 'returns the Annex IV technical documentation checklist'. It also gives no differentiation from siblings like euaiact_get_article or euaiact_get_obligations, which an agent could plausibly confuse it with for the same legal content.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: nothing says to call this when preparing technical documentation under Article 11 or when auditing Annex IV coverage. The Article 11(1) SME sentence is a legal caveat about the domain, not a usage condition selecting this tool over an alternative.

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

euaiact_answer_questionEU AI Act FAQA
Read-onlyIdempotent

Search frequently asked questions about the EU AI Act and get best-match answers with article references. Covers classification, deadlines, roles, governance, documentation, risk assessment, penalties, GPAI systemic risk, FRIA, transparency, and sector-specific guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesUser question about the EU AI Act

Output Schema

ParametersJSON Schema
NameRequiredDescription
answerYes
questionYes
confidenceYes
match_statusYesWhether a FAQ answer was accepted. A candidate below the threshold is not a match.
matched_questionNo
article_referencesYes
candidate_questionNoUnaccepted closest candidate on abstention, for query refinement only.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so safety and determinism are covered. The description adds that responses are best-match with article references, which is mild but useful output-shaped context. It doesn't disclose matching behavior, ranking, or what happens with unmatched questions.

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?

Two sentences, with the core action front-loaded before the topic list. The coverage enumeration is long but earns its place by signalling routing scope. Slightly list-heavy but no wasted framing.

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?

With an output schema present, the description need not explain return values, and it correctly restricts itself to scope. Topic coverage plus the FAQ-vs-article distinction is enough for an agent to call it correctly; only explicit sibling routing is missing.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage ('User question about the EU AI Act'), so the schema carries the semantics. The description adds nothing about phrasing, length, or language of the question. Baseline 3 is appropriate when the schema fully documents the lone parameter.

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?

States a specific verb and resource ('Search frequently asked questions about the EU AI Act') plus the return shape ('best-match answers with article references'). The FAQ-search scope cleanly separates it from siblings like euaiact_get_article or euaiact_assess_system, which retrieve article text or run assessments rather than answering questions.

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 topic enumeration (classification, deadlines, documentation, penalties, GPAI, FRIA, etc.) implicitly tells the agent when this tool applies, but no explicit when-to-use rule or alternative is named. It does not say, e.g., to prefer this over get_article for quick answers. Usage is implied rather than directed.

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

euaiact_assess_art6_3_exceptionAssess Art. 6(3) 'No Significant Risk' ExceptionA
Read-onlyIdempotent

Walk through the Art. 6(3) exception for Annex III high-risk AI systems. An Annex III system is NOT high-risk only if the provider affirmatively assesses no significant risk to health, safety, or fundamental rights, AND the system falls under one of the four conditions: (a) narrow procedural task, (b) improves prior human activity, (c) detects patterns without replacing human assessment, (d) preparatory task. Set no_significant_risk_to_health_safety_fundamental_rights=true only when that threshold has been assessed. CRITICAL: The exception does NOT apply if the system performs profiling of natural persons (Art. 6(3), third subparagraph). Providers invoking the exception must document the assessment (Art. 6(4)) and still register in the EU database (Art. 49(2)).

ParametersJSON Schema
NameRequiredDescriptionDefault
annex_iii_numberNoAnnex III category number (1-8). Provide if known - helps the response reference the right rules.
preparatory_taskNoArt. 6(3)(d): intended to perform a preparatory task for an assessment relevant to an Annex III use case.
performs_profilingYesDoes the system perform profiling of natural persons? If true, Art. 6(3) exception is UNAVAILABLE regardless of other conditions (Art. 6(3), third subparagraph).
documented_assessmentNoHas the provider documented the Art. 6(3) exception assessment? Required by Art. 6(4) regardless of which condition applies.
narrow_procedural_taskNoArt. 6(3)(a): intended to perform a narrow procedural task (e.g. transform unstructured to structured data, classify documents, detect duplicates).
improves_prior_human_activityNoArt. 6(3)(b): intended to improve the result of a previously completed human activity (e.g. improve drafting style).
detects_patterns_without_replacing_human_reviewNoArt. 6(3)(c): intended to detect decision-making patterns or deviations, not replace/influence human assessment without proper review.
no_significant_risk_to_health_safety_fundamental_rightsNoHas the provider affirmatively assessed that the system does not pose a significant risk of harm to health, safety, or fundamental rights, including by not materially influencing decision-making outcomes? Required for Art. 6(3).

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasoningYes
registration_dutyYes
relevant_articlesYes
exception_availableYes
conditions_evaluatedYes
documentation_reminderYes
profiling_blocks_exceptionYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-open-world behaviour, and the description adds real substance beyond them: the hard profiling exclusion, the documentation duty, and the registration duty that survive a successful exception. It stops short of describing how the assessment is returned, but the output schema carries that.

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?

Dense but front-loaded: the walkthrough, the four conditions, the CRITICAL exclusion, and the collateral duties appear in logical order with no filler sentences. Length is justified by regulatory complexity.

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?

Covers the exception's logic, its disqualifier, and the provider's follow-on duties, which is what an agent needs for a read-only assessment tool with a rich output schema. The only gap is the absence of guidance on prerequisite or alternative sibling tools.

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 coverage is 100%, so the baseline is 3, but the description goes further by explaining when to set no_significant_risk_to_health_safety_fundamental_rights=true and by flagging performs_profiling as an overriding gate. That is meaningful semantic guidance beyond the schema text.

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

Purpose4/5

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

States a specific verb (assess) tied to a precise regulatory provision (Art. 6(3) exception) and enumerates the four conditions (a)-(d), so the scope is unambiguous. It is distinguishable by article number from most siblings, though it never explicitly contrasts itself with close neighbours like euaiact_classify_system or euaiact_assess_system.

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?

Provides clear conditions for invoking the exception and an explicit disqualifier (profiling under the third subparagraph), plus downstream obligations (Art. 6(4) documentation, Art. 49(2) registration). It does not state when to reach for this tool versus the classification/assessment siblings, so routing is left to inference.

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

euaiact_assess_systemAssess an AI System Under the EU AI ActA
Read-onlyIdempotent

Assess one normalized EU AI Act system profile against the pinned sealed corpus. Returns separate legal-classification, impact, and implementation-readiness blocks with field-level facts, decisive missing facts, complete finding provenance, warnings, and recommended atomic follow-up calls. Sparse inputs fail closed. Impact never changes legal classification, and classification never implies implementation readiness. HOW TO BUILD THE PROFILE: every fact is an object {fact_id, value, origin, verification, evidence_reference_ids}. For a fact the user told you, use origin "explicit_structured_input", verification "caller_asserted", evidence_reference_ids [] and any unique lowercase fact_id such as "identity.system_name". A useful minimum is identity.system_name, intended_use.intended_purpose (intended_use also needs reasonably_foreseeable_uses, which may be []), role_facts.roles, geography with jurisdictions, affected_person_groups and one of used_in_eu, placed_on_eu_market or output_used_in_eu, and decision_context.decision_consequence. Set annex_iii.domain and annex_iii.annex_iii_point only when the system itself performs a use Annex III lists for that area, never because it operates in that sector. Supply only facts you were given: a missing decisive fact comes back in missing_facts with the question to ask.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpaiNo
annex_iNo
identityNo
annex_iiiNo
free_textNo
geographyNo
role_factsNo
intended_useNo
transparencyNo
profile_versionYes
decision_contextNo
controls_and_evidenceNo
article_5_prohibitionsNo
biometric_and_practicesNo
public_authority_and_friaNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
corpusYes
impactYes
statusYes
findingsYes
warningsYes
facts_usedYes
assumptionsYes
missing_factsYes
server_versionYes
contract_versionYes
runtime_metadataNo
legal_classificationYes
recommended_next_callsYes
implementation_readinessYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/closed-world, and the description layers on real behavioral disclosure: what each returned block contains (field-level facts, decisive missing facts, finding provenance, warnings, recommended follow-up calls), the fail-closed behavior on sparse inputs, and the invariant that impact never changes classification. This is context an agent cannot get from the structured fields.

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?

Long but front-loaded: purpose and return-shape first, then the invariant sentences, then a clearly delimited HOW TO BUILD THE PROFILE block. Nearly every sentence carries information, though the profile-construction paragraph is dense enough that it could be tightened without loss.

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 an output schema exists, the description need not explain return values, and it still characterizes the returned blocks and their invariants. For a 15-parameter, deeply nested, closed-world assessment tool, an agent has enough to build a valid profile and interpret a fail-closed result.

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 carry the load, and it does: it fully specifies the fact object shape {fact_id, value, origin, verification, evidence_reference_ids}, the origin/verification values for caller-stated facts, and a concrete minimum fact set. It does not document every top-level section (annex_i, gpai, transparency, controls_and_evidence), so it falls short of complete compensation.

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

Purpose4/5

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

States a specific verb and resource: assess one normalized EU AI Act system profile against a pinned sealed corpus, and enumerates what it returns (legal-classification, impact, implementation-readiness blocks). It carves out its own niche versus euaiact_classify_system by insisting classification never implies readiness, but it never names the sibling tool or explicitly routes to it.

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?

Rich operational guidance: when to set annex_iii.domain/point ('only when the system itself performs a use Annex III lists... never because it operates in that sector'), 'supply only facts you were given', and the fail-closed behavior. It lacks explicit when-to-use-this-vs-sibling routing, but the input-construction rules are unusually actionable.

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

euaiact_calculate_penaltyCalculate EU AI Act PenaltiesA
Read-onlyIdempotent

Calculates the maximum possible fine for an EU AI Act violation based on violation type, global annual turnover, SME status and SMC (small mid-cap) status. Implements the Art. 99 penalty framework including the SME/startup lower-of rule (Art. 99(6), tiers 99(3)-(5)) and the narrower SMC rule (Art. 99(6a), tiers 99(4)-(5) only; no SMC cap on Art. 5 fines and none under Art. 101). Returns a comparative block so the agent can show the SME reduction to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
is_smcNoWhether the entity is a small mid-cap (SMC): Art. 99(6a) applies the lower-of rule ONLY to the Art. 99(4) and 99(5) tiers, not to Art. 99(3) prohibited-practice fines and not to Art. 101
is_smeNoWhether the entity is an SME or startup (eligible for lower fines under Art. 99(6), covering paragraphs 3, 4 and 5)
violation_typeYesType of AI Act violation: 'prohibited' (Art. 5), 'high_risk' (Art. 99(4) operator/notified-body/transparency obligations), 'gpai' (Art. 101 general-purpose AI model provider infringements), or 'false_info' (Art. 99(5) misleading notified bodies or national competent authorities; GPAI-provider false information falls under Art. 101)
annual_turnover_eurYesGlobal annual turnover in EUR (a non-negative, finite number)

Output Schema

ParametersJSON Schema
NameRequiredDescription
is_smcYes
is_smeYes
max_fineYes
comparativeNo
tier_detailsYes
violation_typeYes
annual_turnover_eurYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, not openWorld). The description adds substantial domain behavior: which articles govern which tiers, that SMC relief applies only to 99(4)-(5) and not to Art. 5 or Art. 101, and that output includes a comparative block. This is well beyond what the annotations convey.

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?

Three sentences, front-loaded with the core action before the legal detail. Dense EU-legalese, but every clause maps to behavior the agent needs; nothing is redundant filler.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. What remains — the governing legal tiers, the SME/SMC lower-of logic, and the comparative output — is all supplied, so nothing an agent needs to call this correctly is missing.

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 100%, so the per-field meaning is already documented, making 3 the baseline. The description nevertheless adds semantic value by explaining how the parameters interact — that SME status spans tiers 3-5 while SMC status is narrower — which clarifies the rule engine behind the enum and booleans.

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 precise verb+resource ('Calculates the maximum possible fine for an EU AI Act violation') and enumerates the inputs it depends on (violation type, turnover, SME/SMC status). No sibling tool performs penalty calculation, so it is trivially distinguished from the classify/obligations/deadlines tools.

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?

Usage is clear from the statement that it implements the Art. 99 framework and returns a comparative block for showing the SME reduction. There are no competing siblings for penalty math, but the description never explicitly states when to reach for this tool versus answering via euaiact_answer_question or euaiact_get_article.

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

euaiact_check_deadlinesCheck EU AI Act Implementation DeadlinesA
Read-onlyIdempotent

Returns key implementation milestones and deadlines for the EU AI Act with days remaining, a next_milestone shortcut, and a summary of the Digital Omnibus. The milestone timeline always reflects the operative law. Set include_pending_omnibus: true to also receive the structured Digital Omnibus pack (each item source-status labelled; its status and enacted fields carry the current legislative state). Use only_upcoming: true to drop past milestones.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNoOptional filter by compliance area (e.g. 'GPAI', 'high-risk', 'prohibited')
only_upcomingNoIf true, return only milestones that have not yet come into effect.
include_pending_omnibusNoIf true, also return the structured Digital Omnibus pack with per-item source-status labels. OFF by default: the milestone timeline always reflects the operative law only. Check the pack's `status` and `enacted` fields for its current legislative state; non-enacted content must not be treated as current law.

Output Schema

ParametersJSON Schema
NameRequiredDescription
milestonesYes
next_milestoneYes
digital_omnibusYes
pending_omnibusYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds real behavioral value beyond that: the milestone timeline 'always reflects the operative law', and the omnibus pack items are source-status labelled with `status`/`enacted` carrying legislative state. It does not discuss pagination or result volume, but read-only status is well established.

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?

Front-loaded with the return payload in the first sentence, then behavior and option semantics. Four sentences, each carrying information, though the omnibus caveat is repeated in the schema and could be tighter. No filler.

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?

With an output schema present, the description needn't explain return values, and annotations cover the safety profile; the remaining burden (operative-law semantics, pending omnibus labelling, option effects) is addressed. Only the `area` filter's behavior is left entirely to the schema, a minor gap for a fully documented read tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents area, only_upcoming, and include_pending_omnibus, and the schema's own include_pending_omnibus text already states the operative-law default. The description largely restates this, adding marginal semantics, so the baseline of 3 is appropriate.

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 states a precise verb and resource ('Returns key implementation milestones and deadlines for the EU AI Act') and enumerates the payload contents (days remaining, `next_milestone`, Digital Omnibus summary). This clearly distinguishes it from siblings like euaiact_get_obligations or euaiact_calculate_penalty, which serve different intents.

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?

It gives clear conditional guidance for the options ('Set `include_pending_omnibus: true` to also receive...', 'Use `only_upcoming: true` to drop past milestones'), which is effectively when-to-use guidance. It stops short of naming alternatives or when-not to use this tool, but given the sibling set covers unrelated tasks the routing is unambiguous.

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

euaiact_check_gpai_systemic_riskCheck GPAI Model Systemic Risk ClassificationA
Read-onlyIdempotent

Determine whether a general-purpose AI model qualifies as a GPAI model with systemic risk under Art. 51. This tool uses an adjudicated conservative boundary at or above 10^25 cumulative training FLOPs for the Art. 51(2) presumption. The Commission may also designate models with equivalent capabilities or impact under Art. 51(1)(b). Returns baseline GPAI obligations under Art. 53 plus systemic-risk-only obligations under Art. 55, and the Art. 52 notification duty.

ParametersJSON Schema
NameRequiredDescriptionDefault
model_nameNoOptional model name for traceability in the response.
training_flopsNoCumulative training compute in FLOPs (e.g. 2e25). The adjudicated product boundary triggers the Art. 51(2) presumption at or above 1e25. Omit if unknown; the tool then abstains instead of answering.
commission_designatedNoWhether the Commission has formally designated the model as GPAI with systemic risk under Art. 51(1)(b).

Output Schema

ParametersJSON Schema
NameRequiredDescription
model_nameYes
flops_thresholdYes
notification_dutyYes
relevant_articlesYes
crosses_flops_thresholdYes
systemic_risk_designationYes
is_gpai_with_systemic_riskYes
baseline_obligations_art_53Yes
systemic_risk_obligations_art_55Yes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety is covered. The description adds meaningful behavior beyond them: the tool abstains when training_flops is omitted rather than guessing, and it returns three distinct obligation sets (Art. 53 baseline, Art. 55 systemic-risk-only, Art. 52 notification duty).

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?

Three sentences, each earning its place: the decision, the threshold rule, and the returned obligations are front-loaded in that order. Slightly dense with statutory citations, but no filler or 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?

With an output schema present, the description need not detail return shapes, and it still summarizes the three obligation sets it produces. Combined with the threshold rule, the designation route, and the abstention case, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents the 1e25 boundary, the meaning of commission_designated, and the abstention-on-omission behavior. The description's Art. 51(2)/51(1)(b) framing adds legal context but no operational detail the schema lacks, so the baseline 3 applies.

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 names a specific verb ('Determine whether') and a precise legal resource ('GPAI model with systemic risk under Art. 51'), anchoring the tool to a citation an agent can match against its intent. It is clearly distinguishable from siblings like euaiact_assess_system or euaiact_get_obligations.

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?

It establishes the decision context: the 10^25 cumulative-FLOPs boundary triggers the Art. 51(2) presumption, and Art. 51(1)(b) designation is a separate route. It also implies the abstention case (omit FLOPs if unknown), though it never explicitly contrasts when to prefer this tool over euaiact_get_obligations or euaiact_answer_question.

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

euaiact_classify_systemClassify AI System Under EU AI ActA
Read-onlyIdempotent

Classify an AI system's risk level under the EU AI Act (Regulation 2024/1689). HOW TO CALL: derive the structured signals from the user's description yourself and pass them together with description. The result is decided deterministically on the signals; free text alone is only matched against keywords and often returns insufficient_information. Set a signal only when the description supports it and leave it out otherwise; never guess, and never infer signals.domain from the sector a system operates in (read that field's description). missing_signals lists unprovided fields, including optional context; it is not a checklist of facts required for the reported result. Relay next_questions where present, then call again with the answers. A matched route does not establish that every other route has been ruled out. Returns risk classification, applicable Annex III category, relevant articles, provider/deployer determination, matched signals, and follow-up questions the agent should relay. Note: Art. 6(3) exceptions require documented justification and cannot be auto-applied; use euaiact_assess_art6_3_exception.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNounknown
signalsNo
use_caseNoSpecific context where the system is deployed
descriptionNoFree-text description of the AI system and its functionalities

Output Schema

ParametersJSON Schema
NameRequiredDescription
basisYes
caveatYes
confidenceYes
next_questionsYesSuggested user questions for unresolved facts. May be empty when a route matches even though other signals were not supplied.
matched_signalsYes
missing_signalsYesUnprovided fields, including optional context. Not every entry is needed for the reported route; consult next_questions for follow-up guidance.
relevant_articlesYes
annex_iii_categoryYes
role_determinationYes
obligations_summaryYes
risk_classificationYes

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, not open-world), but the description adds substantial non-obvious behavior: results are decided deterministically on signals, free text alone is keyword-matched and often yields 'insufficient_information', and a matched route does not rule out other routes. It also warns that Art. 6(3) exceptions cannot be auto-applied, which is exactly the kind of guardrail annotations cannot express.

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 paragraph is dense but front-loaded: purpose first, then a labeled 'HOW TO CALL' block, then return contents, then the related-tool note. Nearly every sentence earns its place (determinism, missing_signals semantics, next_questions loop). It is a single wall of text rather than segmented, which slightly hurts scannability.

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 high-complexity tool with a nested signals object, 4 parameters, and an output schema, the description covers what an agent needs: how to populate signals, the iterative next_questions loop, and the Art. 6(3) handoff. Return values are described even though an output schema exists, so nothing critical is missing; only the overlap with euaiact_assess_system is unaddressed.

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 only 50%, so the description must compensate, and it does: it explains how `signals` should be derived, that unset signals should be omitted rather than guessed, and clarifies that `missing_signals` (returned) is not a checklist. The `domain` caution is reinforced by the schema's own long enum description rather than fully restated, which keeps it at a 4 rather than 5.

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

Purpose4/5

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

The opening sentence names a specific verb, resource, and legal instrument ("Classify an AI system's risk level under the EU AI Act (Regulation 2024/1689)"), which is far more specific than a tautology. It also carves out the Art. 6(3) exception work to a named sibling. However, it never distinguishes itself from the closest sibling, 'euaiact_assess_system', leaving the agent to guess which of the two classification entry points to use.

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 'HOW TO CALL' block gives explicit operational guidance: derive `signals` yourself and pass them with `description`, set a signal only when the description supports it, never guess, and never infer `signals.domain` from a sector. It routes Art. 6(3) work to euaiact_assess_art6_3_exception. It lacks an explicit when/when-not contrast against the similarly named euaiact_assess_system sibling.

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

euaiact_get_articleGet EU AI Act Article SummaryA
Read-onlyIdempotent

Retrieve an operational summary of a specific article of the EU AI Act (Regulation 2024/1689), plus a stable EUR-Lex URL to the canonical text. Supports a subset of the most-cited articles (Art. 3, 4, 5, 6, 9-17, 26, 27, 43, 47, 49, 50, 51, 53, 55, 72, 73, 99, 100, 113). For articles outside this subset the tool returns the EUR-Lex base URL. The summary is not statutory text: follow the URL and verify the official provision before quoting it.

ParametersJSON Schema
NameRequiredDescriptionDefault
articleYesArticle number (e.g. '5', '4a', 'Art. 99', 'Article 4', 'Artikel 4'). Case-insensitive; prefix optional. Returns the whole article summary, not an individual paragraph.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
articleYes
availableYes
eurlex_urlYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent and closed-world, and the description adds genuinely new context: the supported subset, the explicit fallback to the base URL for uncovered articles, and the warning that the summary is not statutory text and must be verified against the URL before quoting. That fidelity caveat is exactly the kind of non-obvious behavior an agent needs.

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?

Three tight sentences: what it returns, what it supports/falls back to, and the verification caveat. Scope and fallback are front-loaded and nothing is redundant.

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?

With an output schema present, return structure needs no explanation; the description still covers coverage limits, fallback behavior, and content-fidelity caveats. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents accepted formats ('5', 'Art. 99', 'Artikel 4'), case-insensitivity, optional prefix, and whole-article granularity. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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?

States a specific verb and resource ('Retrieve an operational summary of a specific article of the EU AI Act') and pins the exact regulation (2024/1689). The enumerated article subset and the EUR-Lex URL return value make it clearly distinguishable from siblings like euaiact_get_obligations or euaiact_answer_question.

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?

It defines the usable scope precisely (which articles are covered) and the behavior outside that scope (base URL fallback), which tells the agent when the tool will and won't be productive. It does not, however, route the agent to a sibling when an article falls outside the subset or when a narrative answer is wanted.

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

euaiact_get_obligationsGet Obligations by Role and Risk LevelB
Read-onlyIdempotent

Returns specific compliance obligations for providers or deployers based on AI system risk level.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesProvider or deployer role
risk_levelYesAI system risk level. Use 'gpai' for general-purpose AI model obligations (Art. 51-56).
filter_keywordNoOptional keyword filter for obligations
annex_iii_pointNoIf high_risk_source is annex_iii, the Annex III point number. Point 2 has special Art. 49/27 treatment.
high_risk_sourceNoFor high-risk systems, whether classification comes from Annex III/Art. 6(2), Annex I/Art. 6(1), or is unknownunknown
gpai_model_placed_on_market_before_2025_08_02NoFor GPAI providers, whether the model was placed on the market before 2 August 2025, triggering the Art. 111(3) transition to 2 August 2027.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roleYes
penaltiesYes
risk_levelYes
obligationsYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that — it doesn't mention that GPAI/transitional logic or Annex III special cases are handled, though those nuances live in the schema.

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?

A single front-loaded sentence with no filler or repetition. It is efficient, though arguably too terse for a domain tool with 6 parameters and non-trivial legal branching.

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?

An output schema exists and the input schema is fully documented, so return values and parameter formats need not be explained. The description is adequate for calling the tool correctly, leaving only the when-to-use routing gap.

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

Parameters3/5

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

Schema description coverage is 100%, including enum meanings and the Annex III point / GPAI transition semantics, so the schema carries the full burden. The description names only role and risk level and adds no meaning beyond what the schema documents.

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

Purpose4/5

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

States a specific verb (Returns) and resource (compliance obligations) with scoping dimensions (providers/deployers, risk level). It is clear what the tool does, though it doesn't explicitly differentiate itself from siblings like euaiact_assess_system or euaiact_classify_system.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus the nine sibling tools — notably assess_system, classify_system, or answer_question, which could plausibly overlap. No prerequisites or exclusions are stated.

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.

  1. 4 tool updatesv1.7.0
    • Changedeuaiact_answer_question4 fields changed
      • addedOutput schema / properties / candidate_question
        Added value: +{
        +  "description": "Unaccepted closest candidate on abstention, for query refinement only.",
        +  "type": "string"
        +}
      • removedOutput schema / properties / lexbeam_url
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / match_status
        Added value: +{
        +  "description": "Whether a FAQ answer was accepted. A candidate below the threshold is not a match.",
        +  "enum": [
        +    "matched",
        +    "no_match"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "question",
        -  "answer",
        -  "confidence",
        -  "article_references"
        -]New value: +[
        +  "question",
        +  "match_status",
        +  "answer",
        +  "confidence",
        +  "article_references"
        +]
    • Changedeuaiact_classify_system3 fields changed
      • removedOutput schema / properties / lexbeam_url
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / missing_signals / description
        Added value: +"Unprovided fields, including optional context. Not every entry is needed for the reported route; consult next_questions for follow-up guidance."
      • addedOutput schema / properties / next_questions / description
        Added value: +"Suggested user questions for unresolved facts. May be empty when a route matches even though other signals were not supplied."
    • Changedeuaiact_get_article1 field changed
      • changedInput schema / properties / article / description
        Previous value: -"Article number (e.g. '5', '6', '50', 'Art. 99'). Case-insensitive; 'Art.' prefix optional."New value: +"Article number (e.g. '5', '4a', 'Art. 99', 'Article 4', 'Artikel 4'). Case-insensitive; prefix optional. Returns the whole article summary, not an individual paragraph."
    • Changedeuaiact_get_obligations1 field changed
      • removedOutput schema / properties / lexbeam_url
        Removed value: -{
        -  "type": "string"
        -}
  2. 1 tool updatev1.6.0
    • Changedeuaiact_classify_system1 field changed
      • changedInput schema / properties / signals / properties / domain / description
        Previous value: -"Primary sector where the system operates"New value: +"The Annex III area whose LISTED use the system itself performs. Annex III regulates specific uses, never a sector: choose an area only when the system does one of the uses listed for it below, and choose `other` when it merely operates in that sector (a utility's billing chatbot, a school timetable, a payroll check, fleet maintenance for the police, appointment booking at an immigration office, a court-room scheduler, legal research for a law firm). Leave it out when the description does not let you tell. Listed uses: biometrics: for remote biometric identification, biometric categorisation according to sensitive or protected attributes, or emotion recognition of natural persons, in so far as their use is permitted under Union or national law. Sole-purpose biometric verification to confirm that a specific natural person is who they claim to be is excluded from Annex III(1)(a). | critical_infrastructure: as safety components in the management and operation of critical digital infrastructure, road traffic, or the supply of water, gas, heating, and electricity. | education: to determine access to or admission to educational and vocational training institutions, to evaluate learning outcomes, to assess the appropriate level of education, or to monitor and detect prohibited behaviour during tests. | employment: for recruitment, selection, job advertising targeting, application filtering, candidate evaluation, promotion and termination decisions, task allocation, and monitoring or evaluation of work performance and behaviour. | essential_services: for the specific essential-service use cases listed in Annex III(5): public-authority eligibility decisions for essential public assistance benefits and services, creditworthiness or credit scoring of natural persons (with the exception of AI systems used for the purpose of detecting financial fraud, Annex III(5)(b)), risk assessment and pricing for life and health insurance, and emergency-call classification, dispatch, prioritisation, or emergency healthcare triage. | law_enforcement: by or on behalf of law enforcement authorities for victim risk assessment, polygraphs and similar tools, evaluation of evidence reliability, assessing the risk of a natural person offending or re-offending, assessment of personality traits or past criminal behaviour of natural persons or groups, or profiling natural persons in criminal detection, investigation, or prosecution. | migration: by competent public authorities in migration, asylum, and border control as polygraphs or similar tools, for assessing risks posed by natural persons entering a Member State, for examining applications for asylum, visa, and residence permits, and for detecting, recognising, or identifying natural persons in border control. Verification of travel documents is excluded from Annex III(7)(d). | justice: to assist judicial authorities in researching and interpreting facts and law and in applying the law to concrete facts, or to be used to influence the outcome of elections or referendums or the voting behaviour of natural persons. Campaign administration or logistics tools are excluded where natural persons are not directly exposed to the output. | health, gpai, product_safety: not Annex III areas; use them for a health context, a general-purpose AI model, or a safety component of a product under Annex I."
  3. 8 tool updatesv1.5.0
    • Changedeuaiact_annex_iv_checklist2 fields changed
      • addedOutput schema / properties / guidance_note
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "items",
        -  "total_items",
        -  "relevant_articles"
        -]New value: +[
        +  "items",
        +  "guidance_note",
        +  "total_items",
        +  "relevant_articles"
        +]
    • Changedeuaiact_answer_question1 field changed
      • addedOutput schema / properties / matched_question
        Added value: +{
        +  "type": "string"
        +}
    • Changedeuaiact_assess_art6_3_exception2 fields changed
      • changedInput schema / properties / annex_iii_number / description
        Previous value: -"Annex III category number (1-8). Provide if known — helps the response reference the right rules."New value: +"Annex III category number (1-8). Provide if known - helps the response reference the right rules."
      • changedInput schema / properties / performs_profiling / description
        Previous value: -"Does the system perform profiling of natural persons? If true, Art. 6(3) exception is UNAVAILABLE regardless of other conditions (Art. 6(3) second subparagraph)."New value: +"Does the system perform profiling of natural persons? If true, Art. 6(3) exception is UNAVAILABLE regardless of other conditions (Art. 6(3), third subparagraph)."
    • Addedeuaiact_assess_system
    • Changedeuaiact_calculate_penalty6 fields changed
      • changedInput schema / properties / annual_turnover_eur / description
        Previous value: -"Global annual turnover in EUR"New value: +"Global annual turnover in EUR (a non-negative, finite number)"
      • addedInput schema / properties / annual_turnover_eur / minimum
        Added value: +0
      • addedInput schema / properties / is_smc
        Added value: +{
        +  "default": false,
        +  "description": "Whether the entity is a small mid-cap (SMC): Art. 99(6a) applies the lower-of rule ONLY to the Art. 99(4) and 99(5) tiers, not to Art. 99(3) prohibited-practice fines and not to Art. 101",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / is_sme / description
        Previous value: -"Whether the entity is an SME or startup (eligible for lower fines under Art. 99(6))"New value: +"Whether the entity is an SME or startup (eligible for lower fines under Art. 99(6), covering paragraphs 3, 4 and 5)"
      • addedOutput schema / properties / is_smc
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "violation_type",
        -  "is_sme",
        -  "annual_turnover_eur",
        -  "max_fine",
        -  "tier_details"
        -]New value: +[
        +  "violation_type",
        +  "is_sme",
        +  "is_smc",
        +  "annual_turnover_eur",
        +  "max_fine",
        +  "tier_details"
        +]
    • Changedeuaiact_check_deadlines2 fields changed
      • changedInput schema / properties / include_pending_omnibus / description
        Previous value: -"If true, also return the structured Digital Omnibus pack (proposal + political agreement). OFF by default: the milestone timeline always reflects current OJ law only. The pending pack is NOT enacted law and is labelled with its source status."New value: +"If true, also return the structured Digital Omnibus pack with per-item source-status labels. OFF by default: the milestone timeline always reflects the operative law only. Check the pack's `status` and `enacted` fields for its current legislative state; non-enacted content must not be treated as current law."
      • changedOutput schema / properties / pending_omnibus / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage_note": {
        -        "type": "string"
        -      },
        -      "deltas": {
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "article": {
        -              "type": "string"
        -            },
        -            "change": {
        -              "type": "string"
        -            },
        -            "effective_date": {
        -              "type": "string"
        -            },
        -            "note": {
        -              "type": "string"
        -            },
        -            "source_id": {
        -              "type": "string"
        -            },
        -            "source_status": {
        -              "$ref": "#/properties/pending_omnibus/anyOf/0/properties/high_risk_timeline/properties/mechanism_source_status"
        -            }
        -          },
        -          "required": [
        -            "article",
        -            "change",
        -            "source_status",
        -            "source_id"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "enacted": {
        -        "const": false,
        -        "type": "boolean"
        -      },
        -      "high_risk_timeline": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "backstop": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "annex_i_art_6_1": {
        -                "type": "string"
        -              },
        -              "annex_iii_art_6_2": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "annex_iii_art_6_2",
        -              "annex_i_art_6_1"
        -            ],
        -            "type": "object"
        -          },
        -          "backstop_source_status": {
        -            "$ref": "#/properties/pending_omnibus/anyOf/0/properties/high_risk_timeline/properties/mechanism_source_status"
        -          },
        -          "current_law": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "annex_i_art_6_1": {
        -                "type": "string"
        -              },
        -              "annex_iii_art_6_2": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "annex_iii_art_6_2",
        -              "annex_i_art_6_1"
        -            ],
        -            "type": "object"
        -          },
        -          "mechanism": {
        -            "type": "string"
        -          },
        -          "mechanism_source_status": {
        -            "enum": [
        -              "enacted_oj",
        -              "commission_proposal",
        -              "political_agreement",
        -              "commission_guideline_draft",
        -              "commission_guideline_final",
        -              "commission_study",
        -              "code_under_assessment",
        -              "code_adequate_voluntary_tool"
        -            ],
        -            "type": "string"
        -          },
        -          "note": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "mechanism",
        -          "mechanism_source_status",
        -          "backstop",
        -          "backstop_source_status",
        -          "current_law",
        -          "note"
        -        ],
        -        "type": "object"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "political_agreement": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "date": {
        -            "type": "string"
        -          },
        -          "source_id": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "date",
        -          "source_id"
        -        ],
        -        "type": "object"
        -      },
        -      "proposal": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "celex": {
        -            "type": "string"
        -          },
        -          "com": {
        -            "type": "string"
        -          },
        -          "date": {
        -            "type": "string"
        -          },
        -          "procedure": {
        -            "type": "string"
        -          },
        -          "source_id": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "com",
        -          "celex",
        -          "date",
        -          "procedure",
        -          "source_id"
        -        ],
        -        "type": "object"
        -      },
        -      "warning": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "name",
        -      "enacted",
        -      "proposal",
        -      "political_agreement",
        -      "high_risk_timeline",
        -      "deltas",
        -      "coverage_note",
        -      "warning"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage_note": {
        +        "type": "string"
        +      },
        +      "deltas": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "article": {
        +              "type": "string"
        +            },
        +            "change": {
        +              "type": "string"
        +            },
        +            "effective_date": {
        +              "type": "string"
        +            },
        +            "note": {
        +              "type": "string"
        +            },
        +            "source_id": {
        +              "type": "string"
        +            },
        +            "source_status": {
        +              "$ref": "#/properties/pending_omnibus/anyOf/0/properties/status"
        +            }
        +          },
        +          "required": [
        +            "article",
        +            "change",
        +            "source_status",
        +            "source_id"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "enacted": {
        +        "type": "boolean"
        +      },
        +      "enactment": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "celex": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "council_adoption": {
        +            "type": "string"
        +          },
        +          "entry_into_force": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "ep_endorsement": {
        +            "type": "string"
        +          },
        +          "oj_publication_date": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "$ref": "#/properties/pending_omnibus/anyOf/0/properties/status"
        +          }
        +        },
        +        "required": [
        +          "status",
        +          "ep_endorsement",
        +          "council_adoption",
        +          "celex",
        +          "oj_publication_date",
        +          "entry_into_force"
        +        ],
        +        "type": "object"
        +      },
        +      "high_risk_timeline": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "application_dates": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "annex_i_art_6_1": {
        +                "type": "string"
        +              },
        +              "annex_iii_art_6_2": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "annex_iii_art_6_2",
        +              "annex_i_art_6_1"
        +            ],
        +            "type": "object"
        +          },
        +          "application_dates_source_status": {
        +            "$ref": "#/properties/pending_omnibus/anyOf/0/properties/status"
        +          },
        +          "current_law": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "annex_i_art_6_1": {
        +                "type": "string"
        +              },
        +              "annex_iii_art_6_2": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "annex_iii_art_6_2",
        +              "annex_i_art_6_1"
        +            ],
        +            "type": "object"
        +          },
        +          "note": {
        +            "type": "string"
        +          },
        +          "superseded_proposal_mechanism": {
        +            "type": "string"
        +          },
        +          "superseded_proposal_mechanism_source_status": {
        +            "$ref": "#/properties/pending_omnibus/anyOf/0/properties/status"
        +          }
        +        },
        +        "required": [
        +          "superseded_proposal_mechanism",
        +          "superseded_proposal_mechanism_source_status",
        +          "application_dates",
        +          "application_dates_source_status",
        +          "current_law",
        +          "note"
        +        ],
        +        "type": "object"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "political_agreement": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "date": {
        +            "type": "string"
        +          },
        +          "source_id": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "date",
        +          "source_id"
        +        ],
        +        "type": "object"
        +      },
        +      "proposal": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "celex": {
        +            "type": "string"
        +          },
        +          "com": {
        +            "type": "string"
        +          },
        +          "date": {
        +            "type": "string"
        +          },
        +          "procedure": {
        +            "type": "string"
        +          },
        +          "source_id": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "com",
        +          "celex",
        +          "date",
        +          "procedure",
        +          "source_id"
        +        ],
        +        "type": "object"
        +      },
        +      "status": {
        +        "enum": [
        +          "enacted_oj",
        +          "official_consolidated_snapshot_non_authentic",
        +          "commission_proposal",
        +          "political_agreement",
        +          "adopted_pending_publication",
        +          "commission_guideline_draft",
        +          "commission_guideline_final",
        +          "commission_study",
        +          "code_under_assessment",
        +          "code_adequate_voluntary_tool"
        +        ],
        +        "type": "string"
        +      },
        +      "warning": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "enacted",
        +      "status",
        +      "enactment",
        +      "proposal",
        +      "political_agreement",
        +      "high_risk_timeline",
        +      "deltas",
        +      "coverage_note",
        +      "warning"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedeuaiact_check_gpai_systemic_risk5 fields changed
      • changedInput schema / properties / training_flops / description
        Previous value: -"Cumulative training compute in FLOPs (e.g. 2e25). Art. 51(2) presumes systemic risk when > 1e25."New value: +"Cumulative training compute in FLOPs (e.g. 2e25). The adjudicated product boundary triggers the Art. 51(2) presumption at or above 1e25. Omit if unknown; the tool then abstains instead of answering."
      • addedInput schema / properties / training_flops / minimum
        Added value: +0
      • changedOutput schema / properties / crosses_flops_threshold / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / is_gpai_with_systemic_risk / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / systemic_risk_designation / enum
        Previous value: -[
        -  "threshold_met",
        -  "commission_designated",
        -  "none"
        -]New value: +[
        +  "threshold_met",
        +  "commission_designated",
        +  "none",
        +  "undetermined"
        +]
    • Changedeuaiact_classify_system2 fields changed
      • addedInput schema / properties / signals / properties / social_scoring_unjustified_or_disproportionate
        Added value: +{
        +  "description": "Social scoring leads to detrimental or unfavourable treatment that is unjustified or disproportionate to the social behaviour or its gravity (Art. 5(1)(c)(ii))",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / signals / properties / social_scoring_unrelated_context
        Added value: +{
        +  "description": "Social scoring leads to detrimental or unfavourable treatment in social contexts unrelated to the contexts in which the data was originally generated or collected (Art. 5(1)(c)(i))",
        +  "type": "boolean"
        +}
  4. 5 tool updatesv1.3.0
    • Changedeuaiact_assess_art6_3_exception1 field changed
      • addedInput schema / properties / no_significant_risk_to_health_safety_fundamental_rights
        Added value: +{
        +  "description": "Has the provider affirmatively assessed that the system does not pose a significant risk of harm to health, safety, or fundamental rights, including by not materially influencing decision-making outcomes? Required for Art. 6(3).",
        +  "type": "boolean"
        +}
    • Changedeuaiact_calculate_penalty2 fields changed
      • changedInput schema / properties / violation_type / description
        Previous value: -"Type of AI Act violation: 'prohibited' (Art. 5), 'high_risk' (Annex III obligations), or 'false_info' (misleading regulators)"New value: +"Type of AI Act violation: 'prohibited' (Art. 5), 'high_risk' (Art. 99(4) operator/notified-body/transparency obligations), 'gpai' (Art. 101 general-purpose AI model provider infringements), or 'false_info' (Art. 99(5) misleading notified bodies or national competent authorities; GPAI-provider false information falls under Art. 101)"
      • changedInput schema / properties / violation_type / enum
        Previous value: -[
        -  "prohibited",
        -  "high_risk",
        -  "false_info"
        -]New value: +[
        +  "prohibited",
        +  "high_risk",
        +  "gpai",
        +  "false_info"
        +]
    • Changedeuaiact_check_deadlines3 fields changed
      • addedInput schema / properties / include_pending_omnibus
        Added value: +{
        +  "description": "If true, also return the structured Digital Omnibus pack (proposal + political agreement). OFF by default: the milestone timeline always reflects current OJ law only. The pending pack is NOT enacted law and is labelled with its source status.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / pending_omnibus
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "coverage_note": {
        +          "type": "string"
        +        },
        +        "deltas": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "article": {
        +                "type": "string"
        +              },
        +              "change": {
        +                "type": "string"
        +              },
        +              "effective_date": {
        +                "type": "string"
        +              },
        +              "note": {
        +                "type": "string"
        +              },
        +              "source_id": {
        +                "type": "string"
        +              },
        +              "source_status": {
        +                "$ref": "#/properties/pending_omnibus/anyOf/0/properties/high_risk_timeline/properties/mechanism_source_status"
        +              }
        +            },
        +            "required": [
        +              "article",
        +              "change",
        +              "source_status",
        +              "source_id"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "enacted": {
        +          "const": false,
        +          "type": "boolean"
        +        },
        +        "high_risk_timeline": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "backstop": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "annex_i_art_6_1": {
        +                  "type": "string"
        +                },
        +                "annex_iii_art_6_2": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "annex_iii_art_6_2",
        +                "annex_i_art_6_1"
        +              ],
        +              "type": "object"
        +            },
        +            "backstop_source_status": {
        +              "$ref": "#/properties/pending_omnibus/anyOf/0/properties/high_risk_timeline/properties/mechanism_source_status"
        +            },
        +            "current_law": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "annex_i_art_6_1": {
        +                  "type": "string"
        +                },
        +                "annex_iii_art_6_2": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "annex_iii_art_6_2",
        +                "annex_i_art_6_1"
        +              ],
        +              "type": "object"
        +            },
        +            "mechanism": {
        +              "type": "string"
        +            },
        +            "mechanism_source_status": {
        +              "enum": [
        +                "enacted_oj",
        +                "commission_proposal",
        +                "political_agreement",
        +                "commission_guideline_draft",
        +                "commission_guideline_final",
        +                "commission_study",
        +                "code_under_assessment",
        +                "code_adequate_voluntary_tool"
        +              ],
        +              "type": "string"
        +            },
        +            "note": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "mechanism",
        +            "mechanism_source_status",
        +            "backstop",
        +            "backstop_source_status",
        +            "current_law",
        +            "note"
        +          ],
        +          "type": "object"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "political_agreement": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "date": {
        +              "type": "string"
        +            },
        +            "source_id": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "date",
        +            "source_id"
        +          ],
        +          "type": "object"
        +        },
        +        "proposal": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "celex": {
        +              "type": "string"
        +            },
        +            "com": {
        +              "type": "string"
        +            },
        +            "date": {
        +              "type": "string"
        +            },
        +            "procedure": {
        +              "type": "string"
        +            },
        +            "source_id": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "com",
        +            "celex",
        +            "date",
        +            "procedure",
        +            "source_id"
        +          ],
        +          "type": "object"
        +        },
        +        "warning": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "enacted",
        +        "proposal",
        +        "political_agreement",
        +        "high_risk_timeline",
        +        "deltas",
        +        "coverage_note",
        +        "warning"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "milestones",
        -  "next_milestone",
        -  "digital_omnibus"
        -]New value: +[
        +  "milestones",
        +  "next_milestone",
        +  "digital_omnibus",
        +  "pending_omnibus"
        +]
    • Changedeuaiact_classify_system6 fields changed
      • addedInput schema / properties / signals / properties / biometric_publicly_accessible_space
        Added value: +{
        +  "description": "Real-time remote biometric identification takes place in publicly accessible spaces (Art. 5(1)(h))",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / signals / properties / biometric_remote_identification
        Added value: +{
        +  "description": "System performs remote biometric identification, not merely one-to-one biometric verification",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / signals / properties / biometric_sole_purpose_verification
        Added value: +{
        +  "description": "Biometric use is solely to verify that a specific natural person is the person they claim to be, which is excluded from Annex III(1)(a)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / signals / properties / performs_social_scoring
        Added value: +{
        +  "description": "System evaluates or classifies natural persons or groups over time based on social behaviour or personal/personality characteristics, leading to detrimental treatment (Art. 5(1)(c))",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / signals / properties / performs_social_scoring_by_public_authority / description
        Previous value: -"System is used by or on behalf of a public authority to score natural persons (Art. 5(1)(c))"New value: +"Legacy alias: public-authority social scoring. Art. 5(1)(c) is not limited to public authorities."
      • addedInput schema / properties / signals / properties / requires_third_party_conformity_assessment
        Added value: +{
        +  "description": "The product or AI system is required to undergo third-party conformity assessment under the applicable Annex I legislation",
        +  "type": "boolean"
        +}
    • Changedeuaiact_get_obligations3 fields changed
      • addedInput schema / properties / annex_iii_point
        Added value: +{
        +  "description": "If high_risk_source is annex_iii, the Annex III point number. Point 2 has special Art. 49/27 treatment.",
        +  "maximum": 8,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / gpai_model_placed_on_market_before_2025_08_02
        Added value: +{
        +  "description": "For GPAI providers, whether the model was placed on the market before 2 August 2025, triggering the Art. 111(3) transition to 2 August 2027.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / high_risk_source
        Added value: +{
        +  "default": "unknown",
        +  "description": "For high-risk systems, whether classification comes from Annex III/Art. 6(2), Annex I/Art. 6(1), or is unknown",
        +  "enum": [
        +    "annex_iii",
        +    "annex_i",
        +    "unknown"
        +  ],
        +  "type": "string"
        +}
  5. 9 tool updatesv1.1.5
    • First observedeuaiact_annex_iv_checklist
    • First observedeuaiact_answer_question
    • First observedeuaiact_assess_art6_3_exception
    • First observedeuaiact_calculate_penalty
    • First observedeuaiact_check_deadlines
    • First observedeuaiact_check_gpai_systemic_risk
    • First observedeuaiact_classify_system
    • First observedeuaiact_get_article
    • First observedeuaiact_get_obligations

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation4/5

Most tools map to distinct activities (deadlines, obligations, penalties, article lookup, FAQ, GPAI risk, Annex IV checklist). However, euaiact_classify_system and euaiact_assess_system both perform legal classification with overlapping outputs, and euaiact_assess_art6_3_exception and euaiact_check_gpai_systemic_risk further touch classification boundaries, so boundary selection is not always obvious.

Naming Consistency4/5

All names share the euaiact_ prefix and follow a mostly predictable verb_noun pattern (classify_system, get_obligations, calculate_penalty, get_article, check_deadlines). The one deviation is euaiact_annex_iv_checklist, which uses a noun phrase with no leading verb, breaking the otherwise consistent convention.

Tool Count5/5

Ten tools is well-scoped for a regulatory reference/advisory server, with each tool covering a meaningful slice of the EU AI Act surface (classification, obligations, deadlines, penalties, articles, GPAI, Art 6(3), Annex IV). No obvious filler or redundancy beyond the classification overlap.

Completeness4/5

The set covers the core compliance lifecycle: classification, obligations, deadlines, penalty calculation, article retrieval, GPAI systemic risk, Art 6(3) exception, Annex IV documentation, and general Q&A. Minor gaps exist around EU database registration, conformity assessment workflow, and post-market monitoring, but the FAQ/article tools partially bridge these.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers