eu-ai-act-mcp
An MCP server that gives LLMs structured EU AI Act (Regulation (EU) 2024/1689, as amended by the Digital Omnibus) intelligence for classifying AI systems and finding the obligations, deadlines, penalties and source articles that apply.
Classify a system's risk level (
euaiact_classify_system): returns prohibited / high-risk / limited / minimal / insufficient_information from structured signals the agent derives itself, with matched signals, missing signals and follow-up questions.Assess a system in depth (
euaiact_assess_system): takes a normalized fact profile and returns separate legal-classification, impact and evidence-readiness blocks with fact-level provenance, decisive missing facts and recommended next calls; sparse inputs fail closed.Walk the Art. 6(3) exception (
euaiact_assess_art6_3_exception): tests the four 'no significant risk' conditions and flags the profiling block plus Art. 6(4) / Art. 49(2) duties.Get obligations by role and risk level (
euaiact_get_obligations): provider vs deployer duties for high-risk, limited, minimal or GPAI, with Annex III/Annex I source and Art. 111(3) legacy-model handling.Check deadlines (
euaiact_check_deadlines): milestones with days remaining,next_milestone, upcoming-only filter, and the enacted Digital Omnibus pack with per-item source status.Calculate penalties (
euaiact_calculate_penalty): maximum Art. 99 fines by violation type and turnover, with SME (Art. 99(6)) and SMC (Art. 99(6a)) reductions and a comparative non-SME block.Check GPAI systemic risk (
euaiact_check_gpai_systemic_risk): applies the 10^25 FLOPs presumption, Commission designation, and returns Art. 53 + Art. 55 obligations and the Art. 52 notification duty.Get Annex IV documentation (
euaiact_annex_iv_checklist): all nine technical-documentation items, optionally as a markdown checklist, with the Art. 11(1) SME-simplification note.Look up a specific article (
euaiact_get_article): operational summaries for 28 curated articles (Art. 3-113, incl. new Art. 4a) plus EUR-Lex URLs; not statutory text.Search the FAQ (
euaiact_answer_question): keyword search over 24 curated questions that echoes the query, names the matched entry, or abstains with a candidate for refinement.Resources:
euaiact://timeline,risk-levels,annex/iii,annex/iv, andomnibusfor direct reading.Prompts: guided
classify-my-system,compliance-checklist,penalty-risk-assessment, andground-citationworkflows.Access: hosted, no-auth MCP endpoint at
https://mcp.lexbeam.com/mcp(or one-click via Claude connectors / Smithery), or run locally over stdio/HTTP vianpx @lexbeam-software/eu-ai-act-mcp.
All tools are read-only, idempotent and closed-schema (unknown argument names are rejected). Output is structured information, not legal advice.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@eu-ai-act-mcpClassify my AI recruitment tool under the EU AI Act"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
EU AI Act MCP Server
Connect to Claude (Anthropic's connectors directory)
Smithery listing
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.domainnames 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_systemdescription 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-mcpClaude 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-actDirect 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 |
| 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. |
| Implementation milestones with days remaining, |
| Specific compliance obligations by role (provider/deployer) and risk level, including GPAI (Art. 51-56) and universal AI literacy (Art. 4). |
| 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. |
| 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. |
| 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. |
| Check whether a GPAI model crosses the 10²⁵ FLOPs threshold and return Art. 53 + Art. 55 obligations plus the Art. 52 notification duty. |
| Walk through the Art. 6(3) "no significant risk" exception with explicit profiling block and Art. 6(4) / Art. 49(2) reminders. |
| Return all nine Annex IV technical-documentation items, optionally as a markdown checklist. |
| 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 |
| Key implementation milestones of the EU AI Act. |
| Overview of the four risk categories. |
| Full Annex III high-risk AI categories (1-8) with descriptions, examples, and article references. |
| Full Annex IV technical-documentation items (1-9). |
| 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 usingeuaiact_classify_systemwith signal inferencecompliance-checklist- risk-level + role obligations checklist, including Annex IV for high-riskpenalty-risk-assessment- penalty calculation with SME comparativeground-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 serverPrivacy
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 toolseuaiact_annex_iv_checklistAnnex IV Technical Documentation ChecklistBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output shape: 'json' returns structured items; 'checklist' adds a markdown checklist string. | json |
| sme_simplified | No | Indicate whether SME-simplified preparation is being used (Art. 11(1) second subparagraph). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| sme_note | No | |
| total_items | Yes | |
| guidance_note | Yes | |
| relevant_articles | Yes | |
| checklist_markdown | No |
TDQS
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.
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.
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.
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.
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.
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 FAQARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | User question about the EU AI Act |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | Yes | |
| question | Yes | |
| confidence | Yes | |
| match_status | Yes | Whether a FAQ answer was accepted. A candidate below the threshold is not a match. |
| matched_question | No | |
| article_references | Yes | |
| candidate_question | No | Unaccepted closest candidate on abstention, for query refinement only. |
TDQS
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.
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.
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.
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.
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.
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' ExceptionARead-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)).
| Name | Required | Description | Default |
|---|---|---|---|
| annex_iii_number | No | Annex III category number (1-8). Provide if known - helps the response reference the right rules. | |
| preparatory_task | No | Art. 6(3)(d): intended to perform a preparatory task for an assessment relevant to an Annex III use case. | |
| performs_profiling | Yes | 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). | |
| documented_assessment | No | Has the provider documented the Art. 6(3) exception assessment? Required by Art. 6(4) regardless of which condition applies. | |
| narrow_procedural_task | No | Art. 6(3)(a): intended to perform a narrow procedural task (e.g. transform unstructured to structured data, classify documents, detect duplicates). | |
| improves_prior_human_activity | No | Art. 6(3)(b): intended to improve the result of a previously completed human activity (e.g. improve drafting style). | |
| detects_patterns_without_replacing_human_review | No | Art. 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_rights | No | 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). |
Output Schema
| Name | Required | Description |
|---|---|---|
| reasoning | Yes | |
| registration_duty | Yes | |
| relevant_articles | Yes | |
| exception_available | Yes | |
| conditions_evaluated | Yes | |
| documentation_reminder | Yes | |
| profiling_blocks_exception | Yes |
TDQS
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.
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.
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.
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.
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.
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 ActARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| gpai | No | ||
| annex_i | No | ||
| identity | No | ||
| annex_iii | No | ||
| free_text | No | ||
| geography | No | ||
| role_facts | No | ||
| intended_use | No | ||
| transparency | No | ||
| profile_version | Yes | ||
| decision_context | No | ||
| controls_and_evidence | No | ||
| article_5_prohibitions | No | ||
| biometric_and_practices | No | ||
| public_authority_and_fria | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| corpus | Yes | |
| impact | Yes | |
| status | Yes | |
| findings | Yes | |
| warnings | Yes | |
| facts_used | Yes | |
| assumptions | Yes | |
| missing_facts | Yes | |
| server_version | Yes | |
| contract_version | Yes | |
| runtime_metadata | No | |
| legal_classification | Yes | |
| recommended_next_calls | Yes | |
| implementation_readiness | Yes |
TDQS
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.
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.
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.
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.
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.
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 PenaltiesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| is_smc | No | 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 | |
| is_sme | No | Whether the entity is an SME or startup (eligible for lower fines under Art. 99(6), covering paragraphs 3, 4 and 5) | |
| violation_type | Yes | 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) | |
| annual_turnover_eur | Yes | Global annual turnover in EUR (a non-negative, finite number) |
Output Schema
| Name | Required | Description |
|---|---|---|
| is_smc | Yes | |
| is_sme | Yes | |
| max_fine | Yes | |
| comparative | No | |
| tier_details | Yes | |
| violation_type | Yes | |
| annual_turnover_eur | Yes |
TDQS
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.
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.
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.
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.
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.
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 DeadlinesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Optional filter by compliance area (e.g. 'GPAI', 'high-risk', 'prohibited') | |
| only_upcoming | No | If true, return only milestones that have not yet come into effect. | |
| include_pending_omnibus | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| milestones | Yes | |
| next_milestone | Yes | |
| digital_omnibus | Yes | |
| pending_omnibus | Yes |
TDQS
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.
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.
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.
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.
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.
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 ClassificationARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| model_name | No | Optional model name for traceability in the response. | |
| training_flops | No | 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. | |
| commission_designated | No | Whether the Commission has formally designated the model as GPAI with systemic risk under Art. 51(1)(b). |
Output Schema
| Name | Required | Description |
|---|---|---|
| model_name | Yes | |
| flops_threshold | Yes | |
| notification_duty | Yes | |
| relevant_articles | Yes | |
| crosses_flops_threshold | Yes | |
| systemic_risk_designation | Yes | |
| is_gpai_with_systemic_risk | Yes | |
| baseline_obligations_art_53 | Yes | |
| systemic_risk_obligations_art_55 | Yes |
TDQS
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.
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.
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.
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.
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.
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 ActARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | unknown | |
| signals | No | ||
| use_case | No | Specific context where the system is deployed | |
| description | No | Free-text description of the AI system and its functionalities |
Output Schema
| Name | Required | Description |
|---|---|---|
| basis | Yes | |
| caveat | Yes | |
| confidence | Yes | |
| next_questions | Yes | Suggested user questions for unresolved facts. May be empty when a route matches even though other signals were not supplied. |
| matched_signals | Yes | |
| missing_signals | Yes | Unprovided fields, including optional context. Not every entry is needed for the reported route; consult next_questions for follow-up guidance. |
| relevant_articles | Yes | |
| annex_iii_category | Yes | |
| role_determination | Yes | |
| obligations_summary | Yes | |
| risk_classification | Yes |
TDQS
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.
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.
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.
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.
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.
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 SummaryARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| article | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| article | Yes | |
| available | Yes | |
| eurlex_url | Yes |
TDQS
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.
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.
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.
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.
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.
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 LevelBRead-onlyIdempotent
Returns specific compliance obligations for providers or deployers based on AI system risk level.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Provider or deployer role | |
| risk_level | Yes | AI system risk level. Use 'gpai' for general-purpose AI model obligations (Art. 51-56). | |
| filter_keyword | No | Optional keyword filter for obligations | |
| annex_iii_point | No | If high_risk_source is annex_iii, the Annex III point number. Point 2 has special Art. 49/27 treatment. | |
| high_risk_source | No | For high-risk systems, whether classification comes from Annex III/Art. 6(2), Annex I/Art. 6(1), or is unknown | unknown |
| gpai_model_placed_on_market_before_2025_08_02 | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| role | Yes | |
| penalties | Yes | |
| risk_level | Yes | |
| obligations | Yes |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.7.0- Changed
euaiact_answer_question4 fields changed- added
Output schema / properties / candidate_questionAdded value: +{ + "description": "Unaccepted closest candidate on abstention, for query refinement only.", + "type": "string" +} - removed
Output schema / properties / lexbeam_urlRemoved value: -{ - "type": "string" -} - added
Output schema / properties / match_statusAdded value: +{ + "description": "Whether a FAQ answer was accepted. A candidate below the threshold is not a match.", + "enum": [ + "matched", + "no_match" + ], + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "question", - "answer", - "confidence", - "article_references" -]New value: +[ + "question", + "match_status", + "answer", + "confidence", + "article_references" +]
- Changed
euaiact_classify_system3 fields changed- removed
Output schema / properties / lexbeam_urlRemoved value: -{ - "type": "string" -} - added
Output schema / properties / missing_signals / descriptionAdded value: +"Unprovided fields, including optional context. Not every entry is needed for the reported route; consult next_questions for follow-up guidance." - added
Output schema / properties / next_questions / descriptionAdded value: +"Suggested user questions for unresolved facts. May be empty when a route matches even though other signals were not supplied."
- Changed
euaiact_get_article1 field changed- changed
Input schema / properties / article / descriptionPrevious 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."
- Changed
euaiact_get_obligations1 field changed- removed
Output schema / properties / lexbeam_urlRemoved value: -{ - "type": "string" -}
1 tool update
v1.6.0- Changed
euaiact_classify_system1 field changed- changed
Input schema / properties / signals / properties / domain / descriptionPrevious 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."
8 tool updates
v1.5.0- Changed
euaiact_annex_iv_checklist2 fields changed- added
Output schema / properties / guidance_noteAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "items", - "total_items", - "relevant_articles" -]New value: +[ + "items", + "guidance_note", + "total_items", + "relevant_articles" +]
- Changed
euaiact_answer_question1 field changed- added
Output schema / properties / matched_questionAdded value: +{ + "type": "string" +}
- Changed
euaiact_assess_art6_3_exception2 fields changed- changed
Input schema / properties / annex_iii_number / descriptionPrevious 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." - changed
Input schema / properties / performs_profiling / descriptionPrevious 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)."
- Added
euaiact_assess_system - Changed
euaiact_calculate_penalty6 fields changed- changed
Input schema / properties / annual_turnover_eur / descriptionPrevious value: -"Global annual turnover in EUR"New value: +"Global annual turnover in EUR (a non-negative, finite number)" - added
Input schema / properties / annual_turnover_eur / minimumAdded value: +0 - added
Input schema / properties / is_smcAdded 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" +} - changed
Input schema / properties / is_sme / descriptionPrevious 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)" - added
Output schema / properties / is_smcAdded value: +{ + "type": "boolean" +} - changed
Output schema / requiredPrevious 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" +]
- Changed
euaiact_check_deadlines2 fields changed- changed
Input schema / properties / include_pending_omnibus / descriptionPrevious 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." - changed
Output schema / properties / pending_omnibus / anyOfPrevious 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" + } +]
- Changed
euaiact_check_gpai_systemic_risk5 fields changed- changed
Input schema / properties / training_flops / descriptionPrevious 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." - added
Input schema / properties / training_flops / minimumAdded value: +0 - changed
Output schema / properties / crosses_flops_threshold / typePrevious value: -"boolean"New value: +[ + "boolean", + "null" +] - changed
Output schema / properties / is_gpai_with_systemic_risk / typePrevious value: -"boolean"New value: +[ + "boolean", + "null" +] - changed
Output schema / properties / systemic_risk_designation / enumPrevious value: -[ - "threshold_met", - "commission_designated", - "none" -]New value: +[ + "threshold_met", + "commission_designated", + "none", + "undetermined" +]
- Changed
euaiact_classify_system2 fields changed- added
Input schema / properties / signals / properties / social_scoring_unjustified_or_disproportionateAdded 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" +} - added
Input schema / properties / signals / properties / social_scoring_unrelated_contextAdded 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" +}
5 tool updates
v1.3.0- Changed
euaiact_assess_art6_3_exception1 field changed- added
Input schema / properties / no_significant_risk_to_health_safety_fundamental_rightsAdded 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" +}
- Changed
euaiact_calculate_penalty2 fields changed- changed
Input schema / properties / violation_type / descriptionPrevious 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)" - changed
Input schema / properties / violation_type / enumPrevious value: -[ - "prohibited", - "high_risk", - "false_info" -]New value: +[ + "prohibited", + "high_risk", + "gpai", + "false_info" +]
- Changed
euaiact_check_deadlines3 fields changed- added
Input schema / properties / include_pending_omnibusAdded 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" +} - added
Output schema / properties / pending_omnibusAdded 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" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "milestones", - "next_milestone", - "digital_omnibus" -]New value: +[ + "milestones", + "next_milestone", + "digital_omnibus", + "pending_omnibus" +]
- Changed
euaiact_classify_system6 fields changed- added
Input schema / properties / signals / properties / biometric_publicly_accessible_spaceAdded value: +{ + "description": "Real-time remote biometric identification takes place in publicly accessible spaces (Art. 5(1)(h))", + "type": "boolean" +} - added
Input schema / properties / signals / properties / biometric_remote_identificationAdded value: +{ + "description": "System performs remote biometric identification, not merely one-to-one biometric verification", + "type": "boolean" +} - added
Input schema / properties / signals / properties / biometric_sole_purpose_verificationAdded 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" +} - added
Input schema / properties / signals / properties / performs_social_scoringAdded 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" +} - changed
Input schema / properties / signals / properties / performs_social_scoring_by_public_authority / descriptionPrevious 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." - added
Input schema / properties / signals / properties / requires_third_party_conformity_assessmentAdded value: +{ + "description": "The product or AI system is required to undergo third-party conformity assessment under the applicable Annex I legislation", + "type": "boolean" +}
- Changed
euaiact_get_obligations3 fields changed- added
Input schema / properties / annex_iii_pointAdded 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" +} - added
Input schema / properties / gpai_model_placed_on_market_before_2025_08_02Added 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" +} - added
Input schema / properties / high_risk_sourceAdded 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" +}
9 tool updates
v1.1.5- First observed
euaiact_annex_iv_checklist - First observed
euaiact_answer_question - First observed
euaiact_assess_art6_3_exception - First observed
euaiact_calculate_penalty - First observed
euaiact_check_deadlines - First observed
euaiact_check_gpai_systemic_risk - First observed
euaiact_classify_system - First observed
euaiact_get_article - First observed
euaiact_get_obligations
TDQS
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
AI governance MCP server for EU AI Act compliance and jurisdiction verification
AI legal compliance: contract review, risk scoring, EU/CN AI act, watermark check. 8 MCP tools.
EU AI Act uyum MCP sunucusu — risk sınıflandırma (madde atıflı), rol bazlı yükümlülük listesi…
EU compliance corpus across 8 frameworks (NIS2, DORA, AI Act, ISO 27001 + more) via MCP.
Related MCP Servers
- AlicenseAqualityBmaintenanceEU AI Act Compliance - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npm174 PyPI1MIT
- AlicenseAqualityCmaintenanceAn MCP server for AI economy infrastructure with built-in EU AI Act compliance, supporting risk management, transparency, and bias detection.10MIT
- AlicenseAqualityDmaintenanceMCP server for EU AI Act compliance, providing risk classification of AI features and Article 50 transparency notices.231 PyPI1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceAn MCP server that provides tools for deterministic EU AI Act risk classification and documentation generation, enabling human-in-the-loop AI system assessments inside Claude Code.2MIT