Skip to main content
Glama

EU AI Act workbench

Answers about the EU AI Act that you can check: which obligations apply to you and when, whether a document still states the law correctly, and a proof anyone can recompute.

Tests Live demo MCP License

Every result cites the provision, quotes it word for word from the text in force on your date, and says when it applies. Where the law requires a judgement, the tools say so instead of making it. Deterministic, no language model at runtime, runs in your browser or inside your AI assistant.

Status: v0.1.0 (October 2026), stable; see the changelog.


The problem

The AI Act (Regulation (EU) 2024/1689) was amended in July 2026 by the Digital Omnibus on AI (Regulation (EU) 2026/1744). Application dates moved, provisions were inserted, moved and removed. Policies, vendor answers, slide decks and language models still describe the 2024 version.

So "high-risk obligations under Annex III apply from 2 August 2026" is right for the 2024 text and wrong today: the date is 2 December 2027. In a pre-registered evaluation, three frontier models without tools gave the old answer on almost every question the amendment changed.

Related MCP server: mcp-eur-lex

Three workflows

1. Which obligations apply to us, and when? (Obligations navigator)

Describe your organisation and AI system in a few fields: role (provider, deployer, importer, …), Annex III area or Annex I product, general-purpose model, transparency cases, company size. You get the obligations that apply now and the ones coming, each with provision, verbatim quote, date and days left, plus open questions where the answer depends on facts or a legal judgement.

// aiact_obligations({ profile: { role: ["provider"], annex_iii_area: "4", annex_iii_art6_3_exception_concluded: false, enterprise_size: "sme" },
//                     as_of: "2026-10-05" })  ->  30 obligations, high-risk via Annex III
{ "id": "risk-management-system", "status": "upcoming", "applies_from": "2027-12-02", "days_until": 423,
  "provisions": ["Article 9"], "quote_verified": true, "changed_by_omnibus": true },
{ "id": "conformity-assessment-annex-iii-internal", "applies_from": "2027-12-02",
  "applies_from_literal": "2026-08-02",   // Art. 113 literally leaves Chapter III Section 5 at the general date
  "deadline_caveat": "Literally, the residual rule of Art. 113 second paragraph (2026-08-02) applies …" },
{ "id": "ai-literacy", "status": "applicable", "applies_from": "2025-02-02", "changed_by_omnibus": true }

The map behind it covers 95 obligations, reliefs and transitional rules for providers, deployers, importers, distributors and authorised representatives. All 106 quotations are checked against the corpus on every build. The classification (Article 6(1) and 6(2), the Article 6(3) exception and its profiling override, Annex I Section A vs. B, systemic-risk GPAI, open-source exemptions) is explicit, versioned data, not code.

2. Is this document still right? (Document checker)

Paste a policy, a vendor's answer, a slide or a chatbot answer. The checker finds references, dates and quotations and compares them with the text in force on your date.

Our hiring assistant is high-risk under Annex III; the obligations apply from 2 August 2026.
Under Article 10(5) we may process special categories of personal data to detect bias.

  error  outdated deadline   "2 August 2026"  -> 2 December 2027 (changed by Regulation (EU) 2026/1744)
  error  removed provision   "Article 10(5)"  -> the text moved to Article 4a(1)

It knows deadlines written into provisions (Article 57(1): sandboxes "operational by 2 August 2027") as well as application dates from Article 113, recognises EN and DE citation styles, skips other acts (GDPR, Data Act, …), and checks quotations word for word. 5,000 words take well under a second.

3. Can I prove what the text said? (Evidence records)

One check, packed into a link: the quotation, the version, the date and the result, hash-sealed and tied to a signed corpus release. The verify page recomputes it in the browser. No server, no account, no trust in the author required.

→ Open the example evidence record: a quote from Article 9(2), checked as of 1 September 2026. The wording is exact, but the provision does not apply yet.

Use it

  • In the browser: Obligations navigator · Document checker · Verify a record. Your text stays in your browser; the pages check the signature of the corpus release before using it.

  • From your AI assistant (MCP): six read-only tools, local over stdio, no network calls.

Tool

Answers

aiact_obligations

Obligations for a profile on a date, with quotes, dates, caveats and open questions

aiact_audit_text

Outdated deadlines, moved or unknown provisions, wrong quotations in a text

aiact_search

Provisions by keyword in the version in force on a date (EN/DE)

aiact_get_provision

A provision in the version in force on a date, with applicability and neighbouring provisions

aiact_verify_citation

Does a quotation exist, where, in which version, and does it apply on that date

aiact_diff

What the 2026 amendment changed in a provision

How it works

flowchart LR
    A[EUR-Lex / CELLAR<br/>XHTML, EN + DE] --> B[Parser<br/>provision tree]
    B --> C[Corpus<br/>2024 + 2026]
    C --> D[Diff + deadline table<br/>Art. 113]
    C --> E[Tools: navigator · checker<br/>search · get · diff · verify]
    O[Obligations map<br/>95 entries, quotes checked] --> E
    D --> E
    C --> F[Release<br/>manifest + Ed25519]
    E --> G[Evidence record<br/>record_hash]
    F --> H[Verify page<br/>recomputes in browser]
    G --> H

A verification gives three separate answers, never one combined "verified":

  • V0, wording: exact, fuzzy, found at another provision, found only in the other version or language, or not found. Numbers, dates and negations must match exactly.

  • V1, applicability: applicable on the given date, not yet applicable until a date, superseded or inserted by the 2026 amendment. Based on a deadline table written from Article 113 of each version.

  • V2, language: does the quote match the requested language.

Key numbers

Provisions

1,437 operative provisions and 180 recitals (2024), 1,587 provisions (2026), per language

Operative provisions traceable from 2024 to 2026

98.7 % (EN), 98.6 % (DE)

EN/DE structural parity

100 %

Application-date rules (2026 version)

7, each linked to its source sentence in Art. 113

Obligations map

95 entries, 106 verbatim quotations, all checked against the corpus

Tests

981, including golden tests written before the implementation

Verify page

52 KB, no framework, no external requests

Does it matter? A pre-registered evaluation

45 questions on deadlines and versions of the AI Act after the 2026 amendment, asked to three frontier models with and without this project's tools. Errors per question:

Model

No tools

With these MCP tools

Claude Opus 5.5

24/45

3/30 (v1) · 2/15 (v2)

GPT-6 Astra

26/45

2/30 (v1) · 1/15 (v2)

Gemini 3.1 Pro

25/42

5/27 (v1) · 2/12 (v2)

Without tools the models were right on what the amendment left unchanged and wrong on almost everything it changed. Opus with web search: 6/45. The pre-registered rule for that arm (at least 5 % errors, lower 95 % bound) is formally met, but not robustly: it depends on one case with a known answer-key erratum, which we report up front. Each run also exposed tool weaknesses that were then fixed (date-aware version selection; showing inserted provisions such as Article 99(6a) next to the one asked for); the fixes after v2 are not yet measured. Cases, pre-registrations, raw answers and limitations: eval/results/.

Quick start

Requires Node 20+.

Option A, no clone:

claude mcp add eu-ai-act -- npx -y github:altanziya/eu-ai-act-mcp

For other MCP clients, use command npx with arguments -y github:altanziya/eu-ai-act-mcp. The first start builds the package (about a minute); after that the server runs locally over stdio and makes no network calls.

Option B, from a clone:

git clone https://github.com/altanziya/eu-ai-act-mcp.git
cd eu-ai-act-mcp
npm ci    # also builds dist/server.js
claude mcp add eu-ai-act -- node "$(pwd)/dist/server.js"

Development:

npm test
npm run mcp    # the server from the sources, via tsx

Then ask, for example: "We sell an AI tool that ranks job applicants. Which AI Act obligations apply to us and when? Use the eu-ai-act tools." or "Check this vendor answer against the current AI Act: …"

Create your own evidence record:

npm run record -- --quote "..." --ref "Article 9(2)" --as-of 2026-09-01 --lang en \
  --release aiact-corpus-2026-10-05

Trust model

A record with a valid signature shows that the quoted passages read as stated in the signed corpus release, and that the check was recomputed on the page. It does not show who created the record, whether a legal claim is right, or that any system is compliant.

  • Signing key 71fa6df7215bb8b9, published at keys/index.json. The private key never touches the repository or CI.

  • The record hash is plain SHA-256 over canonical JSON and can be recomputed in three lines of Python (reference).

  • The consolidated text from EUR-Lex is not legally authentic. Only the Official Journal is binding. Not legal advice.

Known limitations

  • Articles 105 to 108 (amendments to other acts) are not fully structured.

  • A provision that was both moved and reworded shows as removed plus added.

  • Transitional rules for systems already on the market (Art. 111) are in the obligations map, not in the deadline table.

  • The obligations map covers duties of operators, not of authorities, the Commission or notified bodies, and covers sector-specific reliefs only for financial institutions.

  • The document checker reads citations, dates and quotations; it does not judge legal arguments. Relative deadlines ("two years after entry into force") are not resolved.

  • No lawyer has reviewed the deadline table or the obligations map yet. Two independent model reviews found and fixed errors; every entry cites its source so it can be checked.

  • Exactly two versions of the Act are built in: the Official Journal text and the consolidated text after the Digital Omnibus. A further amendment needs code changes, not only new data.

  • English and German only.

  • Releases are signed with a single key. A key can be revoked through the key list; there is no key rotation yet.

  • In German mode the obligations navigator quotes the English text.

Details in the technical reference.

Roadmap

  • Parser, diff and provision IDs for both versions, EN + DE

  • MCP tools with three-level verification

  • Signed releases, evidence records, browser verify page

  • Evaluation: pre-registered run with three frontier models, with and without these tools, extended to 45 cases (results)

  • Obligations navigator, document checker and search, as MCP tools and browser pages

  • Re-run the evaluation with the current tools, including the navigator and checker

  • Legal review of the obligations map

  • Hosted MCP endpoint

  • Further acts: GDPR, Data Act, Cyber Resilience Act

How this was built

This project was built with AI coding agents under my direction. I set the goal and the scope, decided at each gate what to build, what counts as done and what to publish, reviewed the results and am responsible for the errors. The agents wrote the research drafts, the specification, the tests and the code:

  • Each build step had a written contract and an acceptance script. The expected results (golden tests) were fixed by the orchestrating agent before the implementing agent started, and the implementing agent could not change them.

  • Every merge passed the acceptance script and two independent reviews in a fresh context. The reviews found real defects, such as a silently redefined metric and an incomplete verdict on the verify page, which were fixed before merge.

  • The legal content (deadline table, obligations map) was checked by two independent model reviews, not yet by a lawyer; every entry cites its source so it can be checked.

Repository layout

Path

Content

src/

Parser, diff, tools (navigator, checker, search, verify), MCP server, release, record, browser pages

data/

Raw XHTML, parsed corpus, diffs, deadline table, obligations map

release/

Signed corpus releases

site/

Landing page, obligations navigator, document checker, verify page (GitHub Pages)

tests/

Unit and golden tests

docs/reference.md

Full technical reference

License

  • Code: Apache-2.0 (LICENSE)

  • Legal texts: © European Union, eur-lex.europa.eu, reuse under Commission Decision 2011/833/EU

  • Own data (IDs, hashes, diffs, measurements): CC BY 4.0

See NOTICE.


Built by Altan Kömek.

Available Tools

6 tools
aiact_audit_textAudit textA
Read-onlyIdempotent

Checks a text (policy, provider answer, slides, AI-generated answer) against the AI Act in the version in force on as_of: outdated application dates, citations of provisions that were removed or do not exist (with the place a removed provision moved to), and quotations that differ from the wording in force. Returns findings with severity, span in the text, expected and found values and sources. Deterministic, no language model. Orientation only, not legal advice; it never certifies compliance.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the text and of the messages; en (default) or de
textYesThe text to check (any length; citations like Article 6(2), Annex III, Artikel 9 Absatz 2, dates, and quotations of six or more words next to a citation are checked)
as_ofNoReference date YYYY-MM-DD; default today. Selects the version checked.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value beyond that: it is deterministic with no language model, returns findings carrying severity, span, expected/found values and sources, and explicitly disclaims certification of compliance. It does not mention rate limits or text-size limits, but it is a batch read with nothing destructive to disclose.

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 core operation and scope are front-loaded in the first clause, followed by the output shape and the legal caveat. The prose is dense and every clause carries information, though the long parenthetical enumerations make single sentences heavier than necessary.

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 no output schema, the description carries the return-value burden and does so: it names the finding fields (severity, span, expected, found, sources). Combined with the deterministic/no-LLM note, the disclaimer, and the parameter semantics already in the schema, an agent has everything needed to call and interpret it.

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. The description still adds meaning by explaining that as_of selects the version of the Act in force and that the text may be any length, framing what the checker actually inspects. It adds marginal rather than decisive detail over the schema, so it sits just above baseline.

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 (checks a text against the AI Act) and enumerates the three concrete check classes: outdated application dates, citations to removed/nonexistent provisions, and altered quotations. It is clear enough to separate from siblings by scope (whole document vs. a single citation), but it never names a sibling such as aiact_verify_citation to make the boundary explicit.

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

Usage Guidelines3/5

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

The description implies usage by listing accepted inputs (policy, provider answer, slides, AI-generated answer) and adds a clear caveat that results are orientation only and never certify compliance. However, it gives no explicit when-to-use or when-to-prefer-an-alternative guidance relative to aiact_verify_citation or aiact_obligations, leaving routing to inference.

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

aiact_diffDiff provisionA
Read-onlyIdempotent

What happened to a provision between 32024R1689 and 02024R1689-20260727 (Omnibus, amending act 32026R1744): unchanged, changed (with word diff), added, removed, moved.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNode id or citation
langNoen (default) or de

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds genuinely useful behavior detail the annotations cannot: the exact baseline and target versions being compared, the role of the Omnibus amending act, and that changes are reported as a word-level diff.

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 dense sentence with the compared-version identifiers front-loaded and the result taxonomy trailing after the colon. Every clause carries information, though the parenthetical version identifiers make it heavier than strictly necessary.

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 no output schema, the description usefully names the possible return categories and flags the word-diff modality. It does not describe the shape of the diff payload or how 'moved' is represented, but for a read-only two-parameter tool this is largely sufficient.

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 'id' (node id or citation) and the en/de 'lang' enum are already documented in the schema. The description adds no syntax, format, or defaulting detail beyond what the schema provides, 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 states a specific verb (diff/what happened), a specific resource (a provision), and pins the two compared versions by their exact identifiers (32024R1689 vs 02024R1689-20260727) plus the amending act. It also enumerates the outcome space (unchanged, changed with word diff, added, removed, moved), which cleanly separates it from aiact_get_provision.

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 comparison intent strongly implies when to use it (to see version-to-version changes rather than fetch content), but there is no explicit when-to-use/when-not statement and no sibling is named as an alternative. The guidance is inferable rather than stated.

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

aiact_get_provisionGet provisionA
Read-onlyIdempotent

Returns one provision of Regulation (EU) 2024/1689 by id or citation (e.g. "art_50.par_1" or "Article 50(1)"), with all descendants. as_of: reference date; without version the text in force on that date is returned (before 2026-07-27 the Official Journal version 32024R1689, after it the consolidated version 02024R1689-20260727); default today. version: 32024R1689 (Official Journal) or 02024R1689-20260727 (consolidated after the Omnibus); an explicit version wins over as_of. Recitals exist only in 32024R1689; asking for one in 02024R1689-20260727 returns found=false with a fallback. The result carries applicability: whether the provision applies on as_of (from the deadline table). The response lists neighbouring provisions (including ones inserted by the 2026 amendment, such as paragraph 6a); check them before concluding that the Act says nothing more.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNode id (art_50.par_1.a, anx_3.pt_1, rec_12, cpt_3.sct_2) or citation (Article 50(1)(a), Anhang III Nummer 1)
langNoen (default) or de
as_ofNoReference date YYYY-MM-DD; default today. Selects the version (before 2026-07-27 the Official Journal version, after it the consolidated version) unless version is given.
versionNoCorpus version; default: the version in force on as_of
include_childrenNoInclude all descendants (default true)

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare a safe read-only, idempotent profile, and the description adds genuinely new behavior: the version-selection rule tied to as_of, the recitals-only-in-OJ limitation and the found=false fallback, plus an applicability flag derived from the deadline table. This is well beyond what the annotations and schema 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?

Front-loads the core purpose in the first clause and keeps every subsequent sentence informational, with no filler. It is a dense, semicolon-chained paragraph though, and the parameter mechanics could be split from the return-value notes for easier scanning.

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 no output schema, the description carries the return-value burden and does so: the applicability field, the neighbouring-provisions list (including amendment-inserted items like paragraph 6a), and the found=false case. An agent knows both what it gets back and how to interpret it.

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 the interaction between as_of and version (explicit version wins over as_of), the date that flips the default corpus, and the consequence of requesting a recital under the consolidated version. It adds real semantics on top of the schema text it partially echoes.

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: returns exactly one provision by id or citation, with all descendants, and gives concrete id/citation examples. The singular, identifier-driven retrieval is naturally distinct from aiact_search, but no sibling is named, so the differentiation is implicit rather than explicit.

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?

Offers useful in-tool guidance (when to pass version vs as_of, precedence rules, and the warning to inspect neighbouring provisions before concluding nothing more exists), but never says when to reach for this tool instead of aiact_search, aiact_verify_citation, or aiact_diff. Usage relative to alternatives must be inferred.

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

aiact_obligationsObligations navigatorA
Read-onlyIdempotent

For a company profile, returns the applicable and upcoming obligations of the AI Act with citation, verbatim quotation, application date on as_of and notes where a legal assessment is needed. Dates follow Article 113 and the classification route (Annex III / Annex I); where the literal rule differs the entry carries applies_from_literal and a caveat. Covers the consolidated text from 2026-07-27. Deterministic, no language model. Orientation only, not legal advice; it flags legal assessments, it does not make them.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the citations; en (default) or de (quotations stay in English)
as_ofNoReference date YYYY-MM-DD, not before 2026-07-27; default today
detailNocompact (default): without summary, omnibus_note and profile_echo, quotations cut to 300 characters; full: everything
profileYesCompany profile; `role` (array of provider|deployer|importer|distributor|authorised_representative|product_manufacturer) is required, missing flags count as false (uses_or_provides_ai_system: true), other missing fields as unknown

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent safety, and the description adds substantial non-obvious behavior: deterministic with 'no language model,' coverage of the consolidated text from 2026-07-27, dates derived from Article 113 plus the Annex I/III classification route, the applies_from_literal caveat when the literal rule diverges, and an explicit boundary that it flags but does not perform legal assessments.

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 definition is front-loaded with the core behavior in sentence one, and each subsequent sentence earns its place (classification route, caveat handling, coverage date, determinism, legal boundary). It is dense with legal/technical terms but appropriately sized with 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?

Given a 4-parameter tool with a deeply nested profile object and no output schema, the description helpfully enumerates what the response carries (citation, verbatim quotation, application date on as_of, legal-assessment notes) and the conditional applies_from_literal field. It stops short of describing response structure or error/edge behavior in detail, but is largely complete for correct invocation.

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 parameters and every nested profile field are already documented in the schema, establishing the baseline of 3. The description adds only light framing ('application date on as_of', the classification route affecting dates) and does not deepen the enumerated profile flags.

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+input: 'For a company profile, returns the applicable and upcoming obligations of the AI Act with citation, verbatim quotation, application date.' This is clearly distinguishable from siblings like aiact_get_provision or aiact_search, which do not take a company profile and map it to obligations.

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?

'For a company profile' implies the usage context, but the description never states when to prefer this over siblings such as aiact_get_provision or aiact_search, nor any when-not conditions. The 'Orientation only, not legal advice' line is a scope disclaimer rather than routing guidance, leaving alternatives to inference.

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

aiact_verify_citationVerify citationA
Read-onlyIdempotent

Checks that a quotation exists in the AI Act text (V0, with pinpoint), whether it applies on as_of (V1, from a deadline table), and its language (V2). It never checks that the text supports a claim (support_checked is always false) and never certifies compliance.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the quote; en (default) or de
as_ofNoReference date YYYY-MM-DD; default today. Before 2026-07-27 the Official Journal version is checked, after it the consolidated version.
quoteYesThe quoted wording (at least 6 words; [...] marks omissions)
claimed_refNoWhere the quote is claimed to be, e.g. Article 50(1) or art_50.par_1

TDQS

A4.4/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, non-destructive, closed-world), so the description's added value is the semantic limit disclosure: support_checked is always false and compliance is never certified. That is genuinely useful guardrail context a caller must not assume, though auth, rate limits, and the exact result shape remain undisclosed.

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?

Two dense sentences, front-loaded with the core action, and the negative guarantees are packed into a single clause with no filler. Every clause carries information.

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 no output schema, the description is responsible for return context, and it partially delivers by naming the V0/V1/V2 check layers and one always-false response field (support_checked). It still leaves the overall response structure (found/applicable results, per-layer outcomes) to inference, which is the main remaining gap for a verification tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description maps the parameters to check tiers — as_of drives applicability (V1), lang drives the language check (V2), and the pinpoint (claimed_ref) participation in the V0 text match. That mapping is interpretive value the schema alone does not provide.

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 and resource ('Checks that a quotation exists in the AI Act text') and decomposes it into three precise sub-checks (verbatim presence with pinpoint, applicability at a reference date, language). This is clearly distinguishable from retrieval/search/diff siblings, which do not verify quotations.

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 states what the tool does NOT do ('never checks that the text supports a claim... never certifies compliance'), which is meaningful when-not guidance for a verification tool. It does not, however, point to a sibling for the adjacent task (finding a quote via aiact_search) or give a positive 'use this when' trigger.

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. 6 tool updatesv0.1.0
    • First observedaiact_audit_text
    • First observedaiact_diff
    • First observedaiact_get_provision
    • First observedaiact_obligations
    • First observedaiact_search
    • First observedaiact_verify_citation

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a distinct action: get, search, diff, verify, audit, obligations. The main overlap is between aiact_verify_citation (single quotation existence check) and aiact_audit_text (whole-text scan for bad citations/quotations/dates), but the descriptions explicitly bound each (verify never checks support, audit is broader). Boundaries are clear enough that misselection is unlikely.

Naming Consistency4/5

All tools share the aiact_ prefix and read as verb or verb_noun (aiact_get_provision, aiact_verify_citation, aiact_audit_text), which is predictable. Minor deviation: aiact_diff and aiact_obligations are bare verb/noun without an explicit object, slightly breaking the verb_noun pattern but still readable and consistent in style.

Tool Count5/5

Six tools is well-scoped for a domain-specific legal reference server. Each tool earns its place covering a distinct capability (retrieve, search, version-diff, cite-verify, text-audit, obligations) with no redundancy.

Completeness4/5

The surface covers retrieval, search, versioning/diff, verification, auditing, and company obligations, which is strong lifecycle coverage. Minor gaps: no explicit listing/table-of-contents or enumeration tool and no structured 'classification for a system' beyond the profile-based obligations, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Acquis gives your assistant exact, verifiable access to EU digital regulation. Instead of paraphrasing from training data, it returns the verbatim provision of the current consolidated version — with the full citation (act, article, paragraph, point), its in-force status, the consolidation date, and a deep link to EUR-Lex so every claim can be checked. The legal text is rendered from the signed c
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables revision-bound source audits with exact article fingerprinting, claim-to-source mapping, quotation verification, and immutable JSON evidence reports for prepublication review.
    9
    MIT