emendrix
by emendrix.eu · remote · no sign-in to list tools · v0.1.0 · published by eu.emendrix
Verified changes to watched EU acts, read-only, with each fact's source.
8 tools: 1 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http emendrix https://emendrix.eu/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
8 tools
Changes things 1Claude Code: ask
provision_historyEvery recorded change to one top-level provision, newest first, with the window the record covers for the act.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Every recorded change to one top-level provision, newest first, with the window the record covers for the act. An empty list means no recorded change to that provision in the window, and the result says so in words. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
Only reads 7Claude Code: allow
changes_sinceList recorded changes whose `basis` date is on or after `since`, newest first, with each row's event and provision pages: `updated_on` (the event or its latest repair), `detected_o…No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it List recorded changes whose `basis` date is on or after `since`, newest first, with each row's event and provision pages: `updated_on` (the event or its latest repair), `detected_on` (when the run saw the event) or `in_force` (the change's in-force date; rows without one are left out). `omitted` counts rows past `limit`. An empty list means no recorded change in the window has that date. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
find_provisionsFind touched provisions of one act whose canonical location string or stored heading contains `query`, each with its newest row.No findings
Why it is in this group
- The name "find_provisions" says "find": a word for reading.
Description, as the server wrote it Find touched provisions of one act whose canonical location string or stored heading contains `query`, each with its newest row. It never reads law text; an empty list means no touched provision of the act has that name in the window. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
find_substanceFind the entries that print a CAS or EC number, given with or without hyphens, in the newest version of each act the record holds, and every recorded change to them, each with its …No findings
Why it is in this group
- The name "find_substance" says "find": a word for reading.
Description, as the server wrote it Find the entries that print a CAS or EC number, given with or without hyphens, in the newest version of each act the record holds, and every recorded change to them, each with its date, the amending act the change names and the file it was read from. It reports where a number appears and decides nothing about legal status; many entries name a group and print no number. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
get_changeOne change in full: the verbatim text before and after, each side cut at `max_chars` (1 to 50000) with a marker '[… N characters omitted, continue with offset=M]' and paged by `off…No findings
Why it is in this group
- The name "get_change" says "get": a word for reading.
Description, as the server wrote it One change in full: the verbatim text before and after, each side cut at `max_chars` (1 to 50000) with a marker '[… N characters omitted, continue with offset=M]' and paged by `offset`; the cited sentences with their URLs; `changed_within`; the three signals with their detail; `dispute_reason` and its sentence; `in_force`; `applies_from` with its reason; amending acts; the gate outcome or why it is unexplained. `occurrence` counts repeats of one location in one event from 1. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
get_eventOne event of one act: its counts, repairs and stored corroboration (each signal's units, the pairwise agreements and disagreements), the units only the metadata or only the instruc…No findings
Why it is in this group
- The name "get_event" says "get": a word for reading.
Description, as the server wrote it One event of one act: its counts, repairs and stored corroboration (each signal's units, the pairwise agreements and disagreements), the units only the metadata or only the instruction parse names, and every row of the event. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
list_actsList the acts the record holds, with each act's label, aliases and sector from the site catalogue, its newest version, `updated_on` and the counts its index carries.No findings
Why it is in this group
- The name "list_acts" says "list": a word for reading.
Description, as the server wrote it List the acts the record holds, with each act's label, aliases and sector from the site catalogue, its newest version, `updated_on` and the counts its index carries. `query` matches names case-insensitively; `domain` matches the catalogue's sector. An empty list means no held act matches. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
list_disputedDisputed rows grouped by their stored `dispute_reason`, each group with the sentence the site prints for that code.No findings
Why it is in this group
- The name "list_disputed" says "list": a word for reading.
Description, as the server wrote it Disputed rows grouped by their stored `dispute_reason`, each group with the sentence the site prints for that code. `omitted` counts rows past `limit`. An empty list means no recorded change in the window is disputed for that filter. Every list is complete for the watch window the record covers, from the oldest version an act was watched from to its newest, and says nothing about anything outside it. `disputed` means one of three independent signals (the text comparison, the EU's own amendment metadata, the amending act's instructions) disagreed; `dispute_reason` says which and how, and a dispute is a reading of the sources, not a judgement about the law. `applies_from: unknown` means no application date could be read deterministically, never that no date applies. Units named by only one signal are listed by name on their event (`metadata_only_units`, `instruction_only_units`), never as changes. Not legal advice: this output is machine-computed from published texts, carries no lawyer's review, and is engineering assistance only.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http emendrix https://emendrix.eu/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__emendrix__list_acts",
"mcp__emendrix__find_provisions",
"mcp__emendrix__changes_since",
"mcp__emendrix__get_change",
"mcp__emendrix__get_event",
"mcp__emendrix__list_disputed",
"mcp__emendrix__find_substance"
],
"ask": [
"mcp__emendrix__provision_history"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as emendrix. Review it before you use it.