diff
The article-level difference between the states of a Luxembourg act on two dates.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | ||
| language | No | ||
| date_from | Yes | ||
| identifier | Yes |
The article-level difference between the states of a Luxembourg act on two dates.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | ||
| language | No | ||
| date_from | Yes | ||
| identifier | Yes |
Changes observed during successful MCP inspections.
Input schema / properties / anchorRemoved value: -{
- "description": "optional held provision anchor returned by search, e.g. art_92",
- "maxLength": 512,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / date_fromAdded value: +{
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
+ "type": "string"
+}Input schema / properties / date_toAdded value: +{
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
+ "type": "string"
+}Input schema / properties / from_dateRemoved value: -{
- "description": "ISO date",
- "maxLength": 10,
- "minLength": 1,
- "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$",
- "type": "string"
-}Input schema / properties / from_version_keyRemoved value: -{
- "description": "optional opaque key returned by timeline or an ambiguous_version choice",
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / identifierAdded value: +{
+ "minLength": 1,
+ "pattern": "\\S",
+ "type": "string"
+}Input schema / properties / language / descriptionRemoved value: -"language code"Input schema / properties / language / maxLengthRemoved value: -16Input schema / properties / language / patternAdded value: +"\\S"Input schema / properties / publisherRemoved value: -{
- "description": "publisher id; required when work is not publisher-qualified",
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / to_dateRemoved value: -{
- "description": "ISO date",
- "maxLength": 10,
- "minLength": 1,
- "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$",
- "type": "string"
-}Input schema / properties / to_version_keyRemoved value: -{
- "description": "optional opaque key returned by timeline or an ambiguous_version choice",
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / workRemoved value: -{
- "description": "Work-level lex_id (publisher:workkey), version-level lex_id (version segment ignored), or verbatim publisher identifier with publisher supplied. Unknown document -> call search first.",
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
-}Input schema / requiredPrevious value: -[
- "work",
- "from_date",
- "to_date"
-]New value: +[
+ "identifier",
+ "date_from",
+ "date_to"
+]Input schema / properties / from_date / patternPrevious value: -"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"New value: +"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$"Input schema / properties / from_version_keyAdded value: +{
+ "description": "optional opaque key returned by timeline or an ambiguous_version choice",
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+}Input schema / properties / to_date / patternPrevious value: -"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"New value: +"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$"Input schema / properties / to_version_keyAdded value: +{
+ "description": "optional opaque key returned by timeline or an ambiguous_version choice",
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+}Input schema / additionalPropertiesAdded value: +falseInput schema / properties / anchor / maxLengthAdded value: +512Input schema / properties / anchor / minLengthAdded value: +1Input schema / properties / from_date / maxLengthAdded value: +10Input schema / properties / from_date / minLengthAdded value: +1Input schema / properties / from_date / patternAdded value: +"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"Input schema / properties / language / maxLengthAdded value: +16Input schema / properties / language / minLengthAdded value: +1Input schema / properties / publisherAdded value: +{
+ "description": "publisher id; required when work is not publisher-qualified",
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+}Input schema / properties / to_date / maxLengthAdded value: +10Input schema / properties / to_date / minLengthAdded value: +1Input schema / properties / to_date / patternAdded value: +"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"Input schema / properties / work / descriptionPrevious value: -"Work-level lex_id (publisher:workkey), version-level lex_id (version segment ignored), or verbatim publisher identifier. Unknown document -> call search first."New value: +"Work-level lex_id (publisher:workkey), version-level lex_id (version segment ignored), or verbatim publisher identifier with publisher supplied. Unknown document -> call search first."Input schema / properties / work / maxLengthAdded value: +1000Input schema / properties / work / minLengthAdded value: +1Input schema / properties / anchorAdded value: +{
+ "description": "optional held provision anchor returned by search, e.g. art_92",
+ "type": "string"
+}Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, yet it discloses almost nothing beyond the headline operation. It does not say whether the result is a structured diff, how unchanged/repealed articles are represented, what errors occur for unknown identifiers or unsupported dates, or whether the act version must exist on both dates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the key qualifier ('article-level') appears early. Its brevity is efficient, though it borders on under-specification given the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and four undocumented parameters, the description is not complete enough for correctly invoking the tool. It leaves open the identifier format, the role of 'language', and the shape of the returned difference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — the properties only carry regex patterns, with no semantic text at all. The description clarifies that date_from/date_to are the two comparison dates and implies identifier refers to a Luxembourg act, but it never mentions the 'language' parameter and never specifies the expected identifier form (e.g., ELI or work URI).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (article-level difference between states of a Luxembourg act) and a specific operation (diff over two dates), which is clearly distinct from a general listing tool. It stops short of naming how it differs from near-siblings such as article_history or changes_in_period.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. The phrase 'on two dates' implies a comparison scenario, but with 23 siblings including article_history, changes_in_period, as_of and as_observed, an agent gets no help deciding which to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.