Skip to main content
Glama

eu-reg-mcp

CI License: MIT Python >=3.13

Let your AI assistant answer MiCAR and EU AI Act questions with citations instead of guesses — every finding flagged for human legal review.

Scope today: the ESMA interim MiCAR register (search, summary, change tracking), MiCAR white paper linting, and EU AI Act risk-tier classification. Other EU regulation is not covered.

Quick start

eu-reg-mcp is a Model Context Protocol server on PyPI and requires Python 3.13 or newer. With uv installed, add it to Claude Code:

claude mcp add eu-reg -- uvx eu-reg-mcp

The register tools need no API key. For all five tools, add the lint and classify extras; --python 3.13 makes uv use Python 3.13 even where an older one is the default:

claude mcp add eu-reg -- uvx --python 3.13 --from 'eu-reg-mcp[lint,classify]' eu-reg-mcp

Claude Desktop and other clients: docs/clients.md. pip: docs/tools.md.

Related MCP server: attestix

Tools

Tool

What it does

Needs

search_micar_register

Look up an entity by name or LEI in the ESMA interim MiCAR register

—

micar_register_summary

Register totals and white paper format coverage

—

micar_register_changes

New filings, changed entries, removals

—

lint_micar_whitepaper

Deterministic Annex I–III lint of a draft white paper

lint extra

classify_eu_ai_act_system

AI Act risk tier with pinpoint citations

classify extra

Register results are public-register facts with extraction artifacts possible; lint and classification outputs are candidate flags pending human legal review. Nothing here is legal advice. MIT licensed.

Available Tools

5 tools
classify_eu_ai_act_systemA
Read-onlyIdempotent

Classify an AI system's EU AI Act risk tier with pinpoint citations.

Pass a SystemProfile as JSON; pass an empty string to get the schema. Requires the optional classify extra; degrades to an install hint.

NameRequiredDescriptionDefault
profile_jsonNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), and the description adds genuinely new context: it depends on an optional `classify` extra and degrades to an install hint if absent. That dependency/failure-mode disclosure is exactly the kind of behavior annotations can't express.

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

Conciseness5/5

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

Three short lines with zero filler; the purpose leads, followed by invocation mechanics and the dependency caveat. Every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so return values need no explanation. The description covers purpose, input format, the schema-discovery trick, and the optional-dependency caveat — enough to call the tool correctly, with only the SystemProfile field structure left to a follow-up empty-string call.

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

Parameters3/5

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

Schema coverage is 0% and the single parameter has no description, so the description must compensate. It does explain the input is a JSON-encoded SystemProfile and that an empty string returns the schema, but it never says what fields the profile requires — the agent must make a discovery call to learn the shape.

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

Purpose5/5

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

States a specific verb and resource — 'Classify an AI system's EU AI Act risk tier' — plus a differentiator ('with pinpoint citations'). The sibling tools are all MiCAR-register related, so the EU AI Act framing alone cleanly separates this tool from every alternative.

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 explains how to invoke it ('Pass a SystemProfile as JSON; pass an empty string to get the schema') but never states when to use it versus the MiCAR siblings or what prerequisites must hold before calling. Usage is operational rather than selective, leaving selection to inference.

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

lint_micar_whitepaperA
Read-onlyIdempotent

Lint a draft MiCAR white paper (JSON) against Annex I-III rules.

Returns cited candidate findings pending human review. Requires the optional lint extra; degrades to an install hint when absent.

NameRequiredDescriptionDefault
whitepaper_jsonYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and a closed world, so the safety profile is covered. The description adds genuinely new behavior: the result is 'cited candidate findings pending human review' and the tool requires the optional `lint` extra, degrading to an install hint when absent — a real prerequisite/edge-case disclosure.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action, then output semantics, then the dependency caveat. No filler or repetition of the name.

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

Completeness5/5

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

An output schema exists, so return values need not be described. The description still covers the key operational facts an agent needs before calling: what it checks, that findings are candidates needing human review, and the optional-extra prerequisite with fallback behavior.

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?

Only one parameter with 0% schema description coverage, so the schema says nothing about `whitepaper_json`. The description partly compensates by marking the input as JSON ('draft MiCAR white paper (JSON)'), but it gives no shape, encoding, or required-fields guidance.

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

Purpose5/5

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

States a specific verb (lint) plus a specific resource (draft MiCAR white paper as JSON) and the rule set it checks against (Annex I-III). None of the siblings (register search/summary/changes, AI Act classification) overlap with linting, so the agent can route to it unambiguously.

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

Usage Guidelines3/5

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

Usage is implied by the resource: use it when you have a draft white paper to check. There is no explicit when-not guidance and no named alternative (e.g., why not just read the Annex rules manually), so it stops at implied context.

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

micar_register_changesB
Read-onlyIdempotent

Recent register movement: new filings, changed entries, removals.

change_type: all | added | changed | removed. Each record says whether the entry is still listed in the latest snapshot.

NameRequiredDescriptionDefault
limitNo
change_typeNoall

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one useful behavioral fact — that each record indicates whether the entry is still listed in the latest snapshot — but omits how far back 'recent' extends and any pagination/freshness behavior, so it adds only moderate value.

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

Conciseness4/5

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

Three short fragments with the core purpose front-loaded and no padding. The change_type line is slightly manual-like but still earns its place as a filter summary.

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

Completeness3/5

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

An output schema exists, so return values need not be spelled out, and the record-listing semantics are noted. However, with zero schema description coverage, the description should still clarify the limit/recency semantics; that omission leaves the definition only minimally complete for a delta-listing tool.

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

Parameters2/5

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

Schema description coverage is 0% and both parameters are undocumented in the schema. The description restates the change_type enum values already present in the schema but never explains the 'limit' parameter or the meaning of 'recent', so it does not compensate for the coverage gap.

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

Purpose4/5

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

The description names a specific resource ('Recent register movement: new filings, changed entries, removals'), so an agent immediately knows this is a change/delta feed. It does not, however, contrast itself with close siblings like search_micar_register or micar_register_summary, leaving the agent to infer the distinction.

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

Usage Guidelines2/5

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

No guidance on when to choose this delta tool over search_micar_register or micar_register_summary, and no prerequisites or exclusions are stated. The enumeration of change_type values is parameter detail, not usage guidance.

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

micar_register_summaryB
Read-onlyIdempotent

Current totals per MiCAR register and white paper format coverage.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds almost nothing beyond that — it does not say whether data is live or cached, how registers are grouped, or what 'coverage' is measured against.

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 sentence with no filler and the core payload front-loaded. The phrasing is slightly telegraphic ('format coverage'), but it wastes no space.

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

Completeness3/5

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

With no parameters, an output schema covering the return values, and full annotation coverage, the description is nearly sufficient. The remaining gap is routing: an agent gets no signal about when to pick this over micar_register_changes or search_micar_register.

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?

There are zero input parameters and schema coverage is 100%, so the baseline is 4. Nothing further about parameters is needed or expected.

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

Purpose4/5

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

The description names the specific resource (MiCAR register, white paper formats) and the exact output shape (current totals and format coverage), which clearly separates it from search_micar_register and micar_register_changes. It lacks an explicit verb ('returns'/'lists'), but the meaning is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given, and no sibling is named. An agent must infer from the word 'summary' that this is the aggregate-overview tool rather than the search or change-history tools.

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

search_micar_registerA
Read-onlyIdempotent

Search the ESMA interim MiCAR register by entity name or LEI.

query: entity-name substring (case- and accent-insensitive) or an exact LEI. Each result carries its entry_id and the ESMA source file; the response states the snapshot date, data_age_days and a stale flag. register_slug: all | other-wp | emt-wp | art-wp | casps | ncasp. member_state: optional two-letter code (DE, IE, MT, ...). offset: skip this many matches (results come 25 at a time; see truncated).

NameRequiredDescriptionDefault
queryYes
offsetNo
member_stateNo
register_slugNoall

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/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, openWorld), so the bar is lower. The description goes beyond them with genuinely useful operational context: results come 25 at a time with a truncated flag, and responses carry entry_id, source file, snapshot date, data_age_days and a stale flag.

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

Conciseness4/5

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

Front-loaded with the core purpose in the first line, then one line per parameter with no filler. Slightly clunky line-wrapping that splits a sentence across lines, but nothing is wasted.

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?

Complete for a filtered search: an agent knows the key, the filters, the paging model and the freshness signals. Return-value detail beyond the output schema is a bonus rather than a gap.

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

Parameters5/5

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

With 0% schema description coverage the description must carry the full load, and it does: query is documented as case- and accent-insensitive substring or exact LEI, register_slug's enum values are listed with meaning, member_state is given as a two-letter code with examples, and offset is tied to the 25-per-page/truncated paging model.

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 with scope: 'Search the ESMA interim MiCAR register by entity name or LEI.' The name/LEI lookup key clearly separates it from sibling tools like micar_register_summary and micar_register_changes, though it never names those alternatives explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the query semantics (entity-name substring or exact LEI), but there is no statement of when to reach for this tool over micar_register_summary or micar_register_changes, and no exclusions or prerequisites.

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. 2 tool updatesv0.1.1
    • Changedmicar_register_changes1 field changed
      • addedInput schema / properties / change_type / enum
        Added value: +[
        +  "all",
        +  "added",
        +  "changed",
        +  "removed"
        +]
    • Changedsearch_micar_register2 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • addedInput schema / properties / register_slug / enum
        Added value: +[
        +  "all",
        +  "other-wp",
        +  "emt-wp",
        +  "art-wp",
        +  "casps",
        +  "ncasp"
        +]
  2. 5 tool updatesv0.1.0
    • First observedclassify_eu_ai_act_system
    • First observedlint_micar_whitepaper
    • First observedmicar_register_changes
    • First observedmicar_register_summary
    • First observedsearch_micar_register

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search the register, get a summary, see recent changes, lint a whitepaper, or classify an AI system. There is no overlap in functionality between tools.

Naming Consistency4/5

All names use snake_case consistently, but the pattern is mixed: some are verb_noun (search_micar_register, lint_micar_whitepaper, classify_eu_ai_act_system) while others are noun phrases (micar_register_summary, micar_register_changes). Token order also varies (search_micar_register vs. micar_register_summary), a minor deviation.

Tool Count5/5

Five tools is well-scoped for a focused regulatory data server; each tool earns its place by addressing a distinct need (search, summary, changes, lint, classify).

Completeness3/5

The search tool returns an entry_id but there is no companion tool to fetch full entry details, creating a dead end. AI Act coverage is limited to a single classification tool, leaving notable gaps for a server that otherwise covers MiCAR register operations.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for AI compliance auditing. Scores agent outputs for hallucination liability under the EU AI Act, issues verifiable compliance stamps, and tracks audit history by agent.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for compliance automation of AI agents, enabling EU AI Act compliance, verifiable credentials, and decentralized identity management with 47 tools across 9 modules.
    182 PyPI
    841
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for EU AI Act compliance, providing risk classification of AI features and Article 50 transparency notices.
    2
    32 PyPI
    1
    Apache 2.0