Skip to main content
Glama

csrd-scope

Is this undertaking in scope of the EU Corporate Sustainability Reporting Directive (CSRD), and from which financial year? A rules engine, as a command line tool and an MCP server, that cites the article behind every step.

Why it exists

The scope rules changed three times in three years:

  • Directive (EU) 2022/2464 (the CSRD, December 2022) phased reporting in from financial year 2024 (FY2024).

  • Directive (EU) 2025/794 ("stop-the-clock", in force 17 April 2025) moved the second and third sets of undertakings to FY2027 and FY2028.

  • Directive (EU) 2026/470 (the Omnibus I content amendment, OJ L 2026/470 of 26.2.2026, in force 18 March 2026) replaced the scope with two cumulative tests, net turnover above EUR 450 000 000 and more than 1 000 employees on average, removed listed SMEs, limited the first set to FY2024-FY2026, and lets Member States exempt members of that set that do not exceed the new thresholds for FY2025-FY2026. Member States have until 19 March 2027 to transpose its reporting and audit articles (Articles 1 to 3; the due-diligence article by 26 July 2028).

Several answers depend on national law. The Commission's own interpretative Notice (C/2024/6792, FAQ 1-3) says that the year that decides the size category, the two-consecutive-years rule and the way employees are averaged follow the national measures, and that "Union legislation does not regulate the calculation of the average number of employees".

Scope answers are published today as consultancy guidance and web scope checkers, for example csrd-tools.com: "Find out whether the CSRD still applies to you after the Omnibus, in a few clicks, with your first-report year" (checked 2026-09-24). csrd-scope gives its answer as a chain of rules, each with the provision it applies and that provision's text, answers "depends" with the question to put to counsel where national law or judgement decides, and runs offline.

Related MCP server: acquis-mcp

Example

Three fictional undertakings. Real output of csrd-scope 0.1.0 on 2026-09-24.

A German GmbH, not listed, not designated a public-interest entity, above both new thresholds (examples/fictional-eu-manufacturer.json):

{
  "name": "Nordhafen Maschinenbau GmbH (fictional)",
  "currency": "EUR",
  "eu_undertaking": true,
  "member_state": "DE",
  "legal_form_in_annex_i_or_ii": true,
  "designated_pie": false,
  "financial_years": [
    {
      "year": 2025,
      "net_turnover_eur": 505000000,
      "average_employees": 1320,
      "balance_sheet_total_eur": 410000000
    },
    {
      "year": 2026,
      "net_turnover_eur": 520000000,
      "average_employees": 1450,
      "balance_sheet_total_eur": 430000000
    }
  ]
}
$ csrd-scope check --input examples/fictional-eu-manufacturer.json
Nordhafen Maschinenbau GmbH (fictional)
By financial year: FY2024-FY2026: no; FY2027-FY2028: yes. First reporting financial year: FY2027 (starts 2027-01-01).

Financial year  Starts      In scope  Figures
FY2024          2024-01-01  no        not supplied
FY2025          2025-01-01  no        supplied
FY2026          2026-01-01  no        supplied
FY2027          2027-01-01  yes       projected from FY2026 (assume_latest_figures_continue)
FY2028          2028-01-01  yes       projected from FY2026 (assume_latest_figures_continue)

Rules applied:
 1. Governed by the law of an EU Member State: Directive 2013/34/EU applies to the types of undertaking in Annexes I and II, and Art. 1(3) adds credit institutions and insurance undertakings of any legal form.  [AD-1-1, AD-1-3]
    - legal form covered
 2. Public-interest entity (Art. 2(1)): securities on an EU regulated market, credit institution, insurance undertaking, or designated by the Member State. Matters only for financial years starting in 2024-2026.  [AD-2-1]
    - no
 3. individual sustainability reporting (Art. 19a Directive 2013/34/EU)  [AD-19a-1, AD-2-1, AD-3-10, AD-3-4, CSRD-5-2-a, CSRD-5-2-b]
    - FY2024: no - Not in the set reporting for financial years starting in 2024-2026 (Art. 5(2) first subparagraph point (a)(i) Directive (EU) 2022/2464): not a public-interest entity (Art. 2(1)).
    - FY2025: no - Not in the set reporting for financial years starting in 2024-2026 (Art. 5(2) first subparagraph point (a)(i) Directive (EU) 2022/2464): not a public-interest entity (Art. 2(1)).
    - FY2026: no - Not in the set reporting for financial years starting in 2024-2026 (Art. 5(2) first subparagraph point (a)(i) Directive (EU) 2022/2464): not a public-interest entity (Art. 2(1)).
    - FY2027: yes - net turnover EUR 520 000 000 (threshold EUR 450 000 000), average employees 1 450 (threshold 1 000): both exceeded (Art. 19a(1); applies from financial years starting on or after 1 January 2027, Art. 5(2) first subparagraph point (b)(i)).
    - FY2028: yes - net turnover EUR 520 000 000 (threshold EUR 450 000 000), average employees 1 450 (threshold 1 000): both exceeded (Art. 19a(1); applies from financial years starting on or after 1 January 2027, Art. 5(2) first subparagraph point (b)(i)).

Questions for counsel:
 - Which national provisions transpose Articles 1 to 3 of Directive (EU) 2026/470 (deadline 19 March 2027) and Directive (EU) 2025/794 (deadline 31 December 2025) for this undertaking, and from which financial year do they apply?  [OMNI-5-1, STC-3]
 - Is the average number of employees computed as national law requires (full-time equivalents or headcount, part-time and temporary staff)? Union law does not regulate the calculation.  [NOTICE-FAQ3, OMNI-rec-7]
Note: Figures for FY2027 to FY2028 repeat the FY2026 figures (assume_latest_figures_continue=true); other figures can give another answer.

National measures notified for Germany (EUR-Lex/CELLAR, as of 2026-09-24):
 - 32022L2464: 0 measure(s), latest notified -
 - 32025L0794: 0 measure(s), latest notified -
 - 32026L0470: 0 measure(s), latest notified -
   EUR-Lex (CELLAR) lists the national measures a Member State notified to the Commission. A listed measure does not show that transposition is complete or correct, and an empty list does not show that none exists: check national law.

Legal basis: 02013L0034-20260318, 02022L2464-20260318, 32026L0470, 32025L0794, 32023L2775; checked 2026-09-24. EUR-Lex, on its consolidated texts: "This text is meant purely as a documentation tool and has no legal effect."
Source: EUR-Lex / CELLAR (Publications Office of the European Union), © European Union. Reuse: EUR-Lex legal notice (https://eur-lex.europa.eu/content/legal-notice/legal-notice.html): Official Journal texts may be re-used for commercial or non-commercial purposes (Commission Decision 2011/833/EU, Arts 4 and 6); consolidated texts are licensed CC BY 4.0. Legal texts 32013L0034 (consolidated 02013L0034-20260318), 32022L2464 (consolidated 02022L2464-20260318), 32026L0470, 32025L0794, 32023L2775, 32004L0109, 32019R2088, 52024XC06792; retrieved 2026-09-24. Derived: csrd-scope's encoding of the provisions cited, not the text itself.
Not legal advice. The answer is at EU-directive level; the obligation applies through the national law of the Member State concerned. Not covered: the content of the reports (European Sustainability Reporting Standards, Commission Delegated Regulation (EU) 2023/2772 and later delegated acts under Art. 29b), assurance (Art. 34 Directive 2013/34/EU, Directive 2006/43/EC), due diligence (Directive (EU) 2024/1760, CSDDD), and EU Taxonomy disclosures (Art. 8 Regulation (EU) 2020/852, Delegated Regulation (EU) 2021/2178).

A listed Dutch NV in the first set, below the new thresholds (excerpt of csrd-scope check --input examples/fictional-listed-wave1.json). FY2027 is open because Directive (EU) 2026/470 need only be in national law by 19 March 2027, after that financial year starts:

Brightwater Components NV (fictional)
By financial year: FY2024: yes; FY2025-FY2027: depends; FY2028: no. First reporting financial year: FY2024 (starts 2024-01-01).

Financial year  Starts      In scope  Figures
FY2024          2024-01-01  yes       supplied
FY2025          2025-01-01  depends   supplied
FY2026          2026-01-01  depends   projected from FY2025 (assume_latest_figures_continue)
FY2027          2027-01-01  depends   projected from FY2025 (assume_latest_figures_continue)
FY2028          2028-01-01  no        projected from FY2025 (assume_latest_figures_continue)
...
    - FY2025: depends - In the 2024-2026 set (public-interest entity: yes; large undertaking (Art. 3(4)): yes; average employees 845 > 500: yes); the Member State may exempt it for FY2025 (Art. 5(2) fifth subparagraph): check national law.
    - FY2027: depends - net turnover EUR 322 000 000 (threshold EUR 450 000 000), average employees 845 (threshold 1 000): not both exceeded. It is a large undertaking (Art. 3(4)) under the text before Directive (EU) 2026/470, which national law may still apply to a financial year starting before the transposition deadline of 19 March 2027.
    - FY2028: no - net turnover EUR 322 000 000 (threshold EUR 450 000 000), average employees 845 (threshold 1 000): not both exceeded.
...
 - Has the Member State used the option to exempt undertakings or issuers from reporting for the financial years starting in 2025 and 2026, and does it reach this one? The text ('do not exceed a net turnover of EUR 450 000 000 or an average number of 1 000 employees') can be read as 'below at least one threshold' (recital 31: those outside the new scope) or as 'below both'.  [CSRD-5-2-derogation, OMNI-rec-31]
 - Articles 1 to 3 of Directive (EU) 2026/470 must be in national law by 19 March 2027, after this financial year starts. Under the earlier text (Art. 5(2)(b) Directive (EU) 2022/2464 as amended by Directive (EU) 2025/794), large undertakings, parents of large groups and issuers of that size report from financial years starting on or after 1 January 2027. Which text does national law apply to this financial year?  [CSRD2025-5-2-b, CSRD2025-5-2-sub3-b, OMNI-5-1]

A US group without EU listing, with an EU subsidiary (excerpt of csrd-scope check --input examples/fictional-non-eu-group.json):

Cascade Robotics Inc. (fictional)
By financial year: FY2024-FY2027: no; FY2028: yes. First reporting financial year: FY2028 (starts 2028-01-01).

Financial year  Starts      In scope  Figures
FY2024          2024-01-01  no        not supplied
FY2025          2025-01-01  no        not supplied
FY2026          2026-01-01  no        supplied
FY2027          2027-01-01  no        supplied
FY2028          2028-01-01  yes       projected from FY2027 (assume_latest_figures_continue)
...
    - FY2028: yes - EU net turnover of the third-country undertaking (FY2026 EUR 480 000 000, FY2027 EUR 515 000 000, FY2028 EUR 515 000 000) must exceed EUR 450 000 000 in each of the last two consecutive financial years; EU subsidiaries above EUR 200 000 000 in FY2027: Cascade Robotics GmbH; EU branches above it: none.
...
 - Is any EU subsidiary itself above the Art. 19a(1) or Art. 29a(1) thresholds? An Art. 40a report does not exempt it; until 6 January 2030 one EU subsidiary may report for all of them (Art. 48i). Assess each one separately with eu_undertaking=true.  [NOTICE-FAQ48, AD-48i-1]

--json gives the same answer as one object: in_scope (for the latest financial year assessed, named in in_scope_applies_to), first_reporting_financial_year (with where the report is published), by_financial_year, rules_applied, questions_for_counsel, facts_needed, national_law, legal_basis_version, provisions (the quoted text of every provision cited), what_this_is_not and attribution.

Install

uvx csrd-scope check --input undertaking.json      # or: pipx run csrd-scope check --input undertaking.json
uvx csrd-scope thresholds
claude mcp add csrd-scope -- uvx --from csrd-scope csrd-scope-mcp

Python 3.9 or later, standard library only. The quoted provisions it needs ship inside the package.

Commands and MCP tools

CLI

MCP tool

Returns

csrd-scope check --input FILE (or flags, below)

csrd_scope

yes / no / depends, first reporting financial year, one result per financial year from FY2024, rules applied with citations, questions for counsel, facts needed, legal-basis version

csrd-scope thresholds

thresholds

the thresholds in force, with articles and quoted text

csrd-scope timeline

timeline

who reports for which financial year, how the dates changed, transposition deadlines

csrd-scope sources [--member-state DE]

sources

acts, CELEX numbers, consolidated versions, amendments and corrigenda since 2024, licence; for a Member State its notified national measures and the legal forms of Annexes I and II

csrd-scope verify-sources

compares live CELLAR metadata with the bundled snapshot: exit 0 unchanged, 1 changed (rules need review), 2 could not check

csrd-scope refresh [--out DIR]

rebuilds data/ from CELLAR

Add --json to any command for machine-readable output. Flags instead of a file: csrd-scope check --eu --legal-form yes --member-state FR --fy 2026,net_turnover_eur=480000000,average_employees=1200 --fy 2027,net_turnover_eur=480000000,average_employees=1200; third-country groups: --non-eu --fy 2027,eu_net_turnover_eur=600000000 --eu-subsidiary "2027:Beta GmbH=300000000".

Input

Field

Meaning

currency

Required, must be "EUR". Amounts are never converted: state the EUR figures.

eu_undertaking

Required. true if governed by the law of an EU Member State.

financial_years

Required. One object per financial year: year (the calendar year in which it starts), net_turnover_eur, average_employees, balance_sheet_total_eur; parents add group_net_turnover_eur, group_average_employees, group_balance_sheet_total_eur; third-country undertakings give eu_net_turnover_eur, eu_subsidiaries and eu_branches (lists of {name, net_turnover_eur}). Give the year before the first year of interest too: Art. 3(10) compares two years.

legal_form_in_annex_i_or_ii

EU undertakings: true, false or null. csrd-scope sources --member-state XX lists the forms.

entity_type

other (default), credit_institution, insurance_undertaking (any legal form, Art. 1(3)), aif_or_ucits (excluded, Art. 1(4)).

listed_on_eu_regulated_market, only_debt_securities_min_denomination_eur_100000, designated_pie, parent_undertaking, financial_holding_undertaking, covered_by_parent_consolidated_sustainability_report, member_state_exemption_2025_2026

The facts the scope rules turn on. designated_pie, the debt-only flag and the Member State's 2025-2026 option default to unknown, which gives "depends" where they matter.

member_state, financial_year_starts_on (MM-DD), assume_latest_figures_continue (default true: later years repeat the latest figures, and the output says so), name

Optional.

Unknown fields, numbers given as strings, negative or non-finite numbers, and currencies other than EUR are refused with a message.

How it decides

Financial years

Rule

Provisions

starting 2024-2026

public-interest entity, large undertaking (two of: balance sheet EUR 25 000 000, net turnover EUR 50 000 000, 250 employees) and more than 500 employees; or a PIE parent of a large group with more than 500 employees (consolidated); issuers on the same size tests. Where the size category changes between two years, Art. 3(10)'s two-year rule and the year's own figures can differ: "depends"

Art. 5(2) first and third subpara. point (a) Dir. (EU) 2022/2464; Arts. 2(1), 3(4), 3(7), 3(10) Dir. 2013/34/EU; Del. Dir. (EU) 2023/2775

starting 2025-2026

Member States may exempt undertakings or issuers that "do not exceed" EUR 450 000 000 or 1 000 employees: "depends" unless member_state_exemption_2025_2026 is given (the option reads either as "below at least one threshold" or "below both")

Art. 5(2) fifth subpara. Dir. (EU) 2022/2464

starting on or after 1 January 2027

net turnover > EUR 450 000 000 and more than 1 000 employees (individual), or the same on a consolidated basis for parents; credit institutions and insurers in any legal form; AIFs and UCITS excluded. A financial year starting before 19 March 2027 is "depends" for large undertakings below these tests, because national law may still apply the earlier text

Arts. 1(3), 1(4), 19a(1), 29a(1) Dir. 2013/34/EU; Art. 5(2) point (b) Dir. (EU) 2022/2464, before and after Dir. (EU) 2026/470

starting on or after 1 January 2028

third-country undertaking with EU net turnover > EUR 450 000 000 in each of the last two consecutive years (which two years is open where it matters), through an EU subsidiary above EUR 200 000 000, or an EU branch above EUR 200 000 000 where there is no "subsidiary undertaking as referred to in the first subparagraph" (any EU subsidiary, or only one above EUR 200 000 000: open where it matters)

Art. 40a(1) Dir. 2013/34/EU; Art. 5(2) second subpara. Dir. (EU) 2022/2464

any

subsidiary exemption, financial-holding option, issuers of large-denomination debt only

Arts. 19a(9)-(10), 29a(7a)-(9), 40a(1) last subpara.; Art. 8(1)(b) Dir. 2004/109/EC

"Depends" means one of: a Member State option or national transposition decides; a provision needs legal judgement (for example Art. 40 against Art. 3(4), or the two readings of "the last two consecutive financial years"); or a fact is missing. The output names which, and lists the question or the fact. Financial years are named by the calendar year in which they start (FY2027 starts in 2027).

Act

CELEX

Version used

Directive 2013/34/EU (Accounting Directive)

32013L0034

consolidated 02013L0034-20260318

Directive (EU) 2022/2464 (CSRD)

32022L2464

consolidated 02022L2464-20260318; for the FY2027 transition also 02022L2464-20250417

Directive (EU) 2026/470 (Omnibus I content amendment), OJ L 2026/470, 26.2.2026

32026L0470

OJ text; in force 18 March 2026; Articles 1-3 transposed by 19 March 2027, Article 4 by 26 July 2028

Directive (EU) 2025/794 (stop-the-clock), OJ L 2025/794, 16.4.2025

32025L0794

OJ text; in force 17 April 2025; transposition by 31 December 2025

Commission Delegated Directive (EU) 2023/2775 (size criteria)

32023L2775

OJ text; financial years from 1 January 2024

Directive 2004/109/EC (Transparency Directive)

32004L0109

consolidated 02004L0109-20240109

Regulation (EU) 2019/2088, Art. 2(12)

32019R2088

consolidated 02019R2088-20260702

Commission Notice C/2024/6792 (interpretation, not binding, predates 2026/470)

52024XC06792

OJ text

CELLAR also lists a consolidated version dated in the future, 02013L0034-20270130; compared with the version used, it differs only in its list of amending acts. Consolidated texts can lag behind later acts, so every act relied on was checked for amendments, corrigenda and consolidations since 2024: no amendment after 18 March 2026 and no corrigendum to the English text (the corrigenda found concern other language versions). data/SOURCES.md has the table, the SHA-256 of every document quoted and the queries; csrd-scope verify-sources repeats the check.

National transposition: the answer is at EU-directive level. For a Member State, csrd-scope lists the national measures it notified for Directives 2022/2464, 2025/794 and 2026/470 as recorded in EUR-Lex (CELLAR) on 2026-09-24. A notified measure does not show that transposition is complete or correct, and csrd-scope does not claim either: check national law.

Data source, licence and attribution

  • Source: CELLAR, the Publications Office repository behind EUR-Lex (SPARQL endpoint https://publications.europa.eu/webapi/rdf/sparql and https://publications.europa.eu/resource/celex/<CELEX>).

  • Reuse of the acts as published in the Official Journal: the EUR-Lex legal notice (https://eur-lex.europa.eu/content/legal-notice/legal-notice.html, read 2026-09-24 from its archived copy of 2026-09-22): "Unless otherwise specified, you can re-use the legal documents published in EUR-Lex for commercial or non-commercial purposes." The policy rests on Commission Decision 2011/833/EU, Article 4 ("All documents shall be available for reuse: (a) for commercial or non-commercial purposes under the conditions laid down in Article 6"), whose Article 6(2) conditions are to acknowledge the source and not to distort the original meaning or message.

  • Reuse of the consolidated texts: the same notice licenses "the editorial content of this website, the summaries of EU legislation and the consolidated texts" under CC BY 4.0: "you can re-use the content provided you acknowledge the source and indicate any changes you have made." The quotations and dates are in data/SOURCES.md.

  • Every answer carries the attribution line, and says "derived": the rules are csrd-scope's encoding of the provisions.

  • Bundled in data/: identifiers, dates, titles, short quotations of the provisions the rules encode, the legal forms of Annexes I and II, the EU-27 list (EU Vocabularies country table) and national-measure metadata. No personal data.

  • The code is MIT-licensed; the bundled legal material remains © European Union, reused under the EUR-Lex legal notice (Official Journal texts) and CC BY 4.0 (consolidated texts).

What it reads, what it sends

  • check, thresholds, timeline, sources and the MCP server read only the bundled snapshot. They send nothing.

  • refresh and verify-sources send the fixed SPARQL queries and CELEX identifiers in csrd_scope_cellar.py to publications.europa.eu. Nothing you type is sent anywhere.

  • Names you give are echoed back only after credential-like strings are masked and the text is bounded; national measure titles (third-party text) are bounded and marked as remote text.

Tests

python3 -m unittest discover -s tests -t .

Offline: the Directive's logic as a table of cases, each naming the provision it tests (thresholds exactly at the limit, the two-consecutive-years rule, listed SMEs, credit institutions, insurers, funds, financial holding undertakings, subsidiaries, third-country groups and issuers), strict input validation, the MCP protocol over stdio, and CELLAR failures (network down, 404, 429, timeouts, broken connections, empty, null, non-UTF-8 and malformed answers) from recorded, trimmed real responses.

What this is not

Not legal advice. csrd-scope applies the EU directives as consolidated on 18 March 2026; the obligation itself applies through national law, which may differ in timing, thresholds in national currency, options taken and definitions such as the average number of employees. It does not cover the content of the report (European Sustainability Reporting Standards: Commission Delegated Regulation (EU) 2023/2772 and later delegated acts under Art. 29b), assurance (Art. 34 of Directive 2013/34/EU, Directive 2006/43/EC), corporate sustainability due diligence (Directive (EU) 2024/1760, CSDDD), or EU Taxonomy disclosures (Art. 8 of Regulation (EU) 2020/852 and Delegated Regulation (EU) 2021/2178).

Available Tools

4 tools
csrd_scopeA

Applies the EU-directive scope rules of CSRD sustainability reporting to the facts given and reports, per financial year, whether the rules reach the undertaking: Directive 2013/34/EU (Arts. 1, 2, 3, 19a, 29a, 40a) as amended by Directive (EU) 2026/470 and the application dates of Art. 5(2) Directive (EU) 2022/2464 as amended by Directives (EU) 2025/794 and 2026/470 (consolidated versions of 18 March 2026). Amounts in EUR only (never converted); employees are the average number during the financial year. Returns in_scope (yes/no/depends for the latest financial year assessed), first_reporting_financial_year (with where the report is published), one result per financial year from FY2024, the rules applied with article citations and quoted provisions, questions_for_counsel where national law or legal judgement decides, facts_needed, notified national measures for member_state, and legal_basis_version (CELEX, consolidated version dates, date checked). EU-directive level only, not legal advice; no network access. Later figures repeat the latest year unless assume_latest_figures_continue is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
currencyYesMust be EUR: convert other currencies yourself and state the EUR figures.
entity_typeNoCredit institutions and insurance undertakings are covered in any legal form; AIFs and UCITS are excluded.
member_stateNoTwo-letter code of the EU Member State (e.g. DE, FR, EL); used for notified national measures and Annex I/II legal forms.
designated_pieNoDesignated a public-interest entity by its Member State (Art. 2(1)(d)).
eu_undertakingYesTrue if governed by the law of an EU Member State; false for a third-country undertaking.
financial_yearsYesOne entry per financial year. Give the year before the first year of interest too: Art. 3(10) compares two years.
parent_undertakingNoParent of a group; give group_* figures.
financial_year_starts_onNoMM-DD, default 01-01.
legal_form_in_annex_i_or_iiNoEU undertakings: true if the legal form is listed in Annex I or II (e.g. AG, GmbH, SA, SARL, BV, NV, S.p.A.); null if unknown (call sources with member_state to see the list).
financial_holding_undertakingNo
listed_on_eu_regulated_marketNoTransferable securities admitted to trading on an EU regulated market.
assume_latest_figures_continueNoDefault true.
member_state_exemption_2025_2026NoThe Member State used the option of Art. 5(2) fifth subparagraph Directive (EU) 2022/2464 for this undertaking (FY2025-FY2026); null if unknown.
only_debt_securities_min_denomination_eur_100000No
covered_by_parent_consolidated_sustainability_reportNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does so well: EUR-only with no conversion, employees as financial-year average, the 'later figures repeat the latest year unless assume_latest_figures_continue is false' rule, questions_for_counsel escalation, and no network access. It stops short of describing error handling or the full response shape, so 4 rather than 5.

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

Conciseness3/5

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

It is front-loaded with the purpose, which is good, but the remainder is a single dense paragraph stuffed with statutory citations and parentheticals that are not needed for tool selection. Every element is arguably relevant to a legal-audit tool, but the lack of structure hurts readability.

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

Completeness4/5

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

For a 16-parameter legal tool with no output schema, the description compensates by enumerating the return fields (in_scope, first_reporting_financial_year, per-year results, rules applied with citations, questions_for_counsel, facts_needed, legal_basis_version). It is close to complete, missing only a fuller description of edge-case outputs.

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 75%, so the schema already explains most inputs (entity_type, member_state, financial_years, etc.). The description only restates a couple of those semantics (EUR-only, average employees) and adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a precise verb+resource: it applies CSRD EU-directive scope rules to given facts and reports, per financial year, whether the rules reach the undertaking. It names the governing directives and even points to a sibling (call sources with member_state), so an agent can tell what it does and where to go for the legal-form list.

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?

It conveys scope boundaries (EU-directive level only, not legal advice, no network access) and a default behavior for repeated figures, but gives no explicit when-to-use vs the siblings timeline, thresholds, or sources. 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.

sourcesA

The legal basis used: acts, CELEX numbers, consolidated versions, amendments and corrigenda since 2024, the date checked, licence and attribution. With member_state: the national measures that Member State notified (EUR-Lex/CELLAR; not proof of complete transposition) and its legal forms in Annexes I and II.

ParametersJSON Schema
NameRequiredDescriptionDefault
member_stateNoTwo-letter code of an EU Member State.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and mostly succeeds: it lists exactly what data is returned (acts, CELEX, amendments since 2024, date checked, licence, attribution) and adds a critical caveat that member-state measures are 'not proof of complete transposition.' It stops short of stating explicitly that this is a side-effect-free read, which would be the final behavioral detail.

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

Conciseness4/5

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

The description is compact and front-loads the default output before the conditional member_state behavior. The colon-separated lists are dense but each item is meaningful; no wasted sentences.

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

Completeness4/5

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

For a one-parameter lookup with no output schema and no annotations, the description supplies the essential return content for both default and member_state cases, plus a scope limit (since 2024) and caveat. It is nearly complete, missing only an explicit statement of the operation's read-only nature.

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%, but the description adds real semantic value beyond the schema's 'Two-letter code' by explaining what providing member_state changes: it returns national notification measures and their legal forms in Annexes I and II, with a caveat about completeness.

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 states the resource clearly: it returns the legal basis (acts, CELEX numbers, consolidated versions, amendments, etc.) and, with member_state, national measures. No verb is present, but an agent can infer a retrieval operation. It does not mention any sibling tool, so it loses the differentiation point.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus timeline, csrd_scope, or thresholds. The only conditional described is parameter behavior (with member_state), not tool-selection context.

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

thresholdsA

The CSRD scope thresholds in force (EUR amounts, employee counts, the financial years they apply to), each with the article and quoted provision, plus exclusions. No input.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden, and it does so reasonably: it discloses the exact shape of the returned payload (amounts, counts, years, article citations, quoted provisions, exclusions) and confirms the tool takes no input. It does not state whether the data is a static snapshot, its effective date, or jurisdiction coverage, which are the remaining gaps.

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 no filler, and the resource (CSRD thresholds) is front-loaded before the enumerated contents. It is slightly long, but each clause adds verifiable content rather than restating the tool name.

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

Completeness4/5

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

For a no-parameter reference tool with no output schema, the description supplies what an agent needs to know what comes back, which is the main risk here. It stops short of noting data vintage or scope of coverage, a minor but real gap for a regulatory reference.

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 parameters and the schema is a bare object with additionalProperties false, so there is nothing to document. The description correctly reinforces this with 'No input.', matching the schema rather than contradicting it.

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 (CSRD scope thresholds in force) and enumerates its contents (EUR amounts, employee counts, applicable financial years, articles, quoted provisions, exclusions). It clearly tells an agent this is reference data, but it does not explicitly contrast itself with the sibling csrd_scope, so an agent must infer the split.

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 closing 'No input.' conveys that this is a parameterless lookup, which implies usage as a reference fetch. However, it gives no guidance on when to prefer this over csrd_scope (raw thresholds vs. scope determination) or timeline/sources, leaving the routing decision to inference.

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

timelineA

Who reports for which financial year (2024-2026 set, the 2025-2026 Member State option, FY2027 thresholds, FY2028 third-country rules), how the dates changed (Directives 2022/2464, 2025/794, 2026/470) and the transposition deadlines, with citations. No input.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries full behavioral burden. It usefully discloses that the tool takes no input and returns citations, implying a static read-only lookup with no side effects. Beyond that, it says nothing about return format or how comprehensive the response is.

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?

Single dense sentence that front-loads the covered topics (financial years, directive changes, transposition deadlines) before the details. Effective, though the parenthetical lists make it slightly heavy for a no-arg lookup.

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

Completeness4/5

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

For a zero-parameter informational tool with no output schema, the description enumerates the covered content areas (2024-2026 set, Member State option, FY2027 thresholds, FY2028 third-country rules, directives, deadlines), which is sufficient for an agent to know what it will receive.

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?

The tool takes zero parameters, so there are no parameter semantics to explain; baseline 4 applies. 'No input' correctly confirms the empty schema.

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 states a specific resource: the CSRD reporting timeline covering which entities report for which financial years, how the dates changed via named directives, and transposition deadlines. It is reasonably distinguishable from siblings (sources, csrd_scope, thresholds) by centering on the date dimension. The vague name 'timeline' alone would not convey this, but the description carries the meaning.

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 only implied: an agent infers it should call this when it needs reporting-timeline/date information. There is no explicit when-to-use vs alternatives guidance and no exclusion telling the agent to use 'thresholds' or 'csrd_scope' instead for those specific concerns, despite topical overlap (FY2027 thresholds, citations).

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedcsrd_scope
    • First observedsources
    • First observedthresholds
    • First observedtimeline

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: timeline provides reporting schedule, sources retrieves legal basis, csrd_scope applies rules to facts, and thresholds lists scope thresholds. There is no overlap; an agent can easily choose the right tool.

Naming Consistency4/5

Three tools use clear noun names (timeline, sources, thresholds) while one uses a verb-like noun (csrd_scope). The style is mostly consistent with minor deviation in verb form, but all are snake_case and readable.

Tool Count5/5

With 4 tools, the set is well-scoped for a legal reference server covering CSRD scope. Each tool earns its place by covering a distinct aspect: timing, sources, application, and thresholds.

Completeness4/5

For the CSRD domain, tools cover key aspects: timelines, legal sources, scope application, and thresholds. However, there is no tool for retrieving definitions of key terms (e.g., 'large undertaking') or for querying specific articles, which could be minor gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables EU AI Act compliance assessment by classifying AI systems, listing obligations, computing deadlines, and scanning repos for required documentation, all running locally.
    4
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    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
    Not graded
    quality
    B
    maintenance
    Provides deterministic cross-border tax analysis by compiling law into machine-evaluable conditions, enabling assessments of permanent establishment, transfer pricing, and verification of tax research.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables EU Cyber Resilience Act compliance assessments, including classifying product obligations, auditing pipelines for gaps, generating hash-chained attestations, and cross-referencing NIS2.
    30 PyPI
    MIT