Skip to main content
Glama

Lex — Temporal Luxembourg and EU Law

search

With no work named, first read the query as an exact reference (an ELI, a CELEX, an EU act's name, a Memorial citation, a historical identifier, a permalink, or a citation of an article of an act at a date) and answer the address its act opens at, the acts it may name, or a typed refusal; otherwise search the held Luxembourg article text its rights admit (text they withhold is not matched), strict or relaxed, with the quotes that answer; for one EU work named by identifier, its held wording.

Input Schema

NameRequiredDescriptionDefault
dateNo
modeNo
afterNo
limitNo
queryYes
languageYes
identifierNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed28 schema fields changed
    • removedInput schema / allOf
      Removed value: -[
      -  {
      -    "if": {
      -      "properties": {
      -        "time_scope": {
      -          "const": "as_of"
      -        }
      -      },
      -      "required": [
      -        "time_scope"
      -      ]
      -    },
      -    "then": {
      -      "required": [
      -        "as_of"
      -      ]
      -    }
      -  }
      -]
    • removedInput schema / properties / act_form
      Removed value: -{
      -  "description": "optional legal act form",
      -  "maxLength": 1000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • addedInput schema / properties / after
      Added value: +{
      +  "minLength": 1,
      +  "pattern": "\\S",
      +  "type": "string"
      +}
    • removedInput schema / properties / as_of
      Removed value: -{
      -  "description": "ISO date required when time_scope=as_of",
      -  "maxLength": 10,
      -  "minLength": 1,
      -  "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$",
      -  "type": "string"
      -}
    • removedInput schema / properties / binding_status
      Removed value: -{
      -  "description": "optional binding status",
      -  "maxLength": 1000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • addedInput schema / properties / date
      Added value: +{
      +  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
      +  "type": "string"
      +}
    • removedInput schema / properties / document_type
      Removed value: -{
      -  "description": "backward-compatible document type filter",
      -  "maxLength": 1000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / domain
      Removed value: -{
      -  "description": "legacy domain id filter; current v4 indexes leave it empty; use publisher_metadata_identifier for official classifications",
      -  "maxLength": 1000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / fuzzy
      Removed value: -{
      -  "description": "auto or off; visible fallback only",
      -  "enum": [
      -    "auto",
      -    "off"
      -  ],
      -  "maxLength": 64,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / hierarchy
      Removed value: -{
      -  "description": "optional normalized legal hierarchy",
      -  "maxLength": 1000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • addedInput schema / properties / identifier
      Added value: +{
      +  "minLength": 1,
      +  "pattern": "\\S",
      +  "type": "string"
      +}
    • removedInput schema / properties / jurisdiction
      Removed value: -{
      -  "description": "optional jurisdiction code from index metadata, e.g. LU or EU",
      -  "maxLength": 64,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / language / description
      Removed value: -"optional language code"
    • removedInput schema / properties / language / maxLength
      Removed value: -16
    • addedInput schema / properties / language / pattern
      Added value: +"\\S"
    • removedInput schema / properties / limit / description
      Removed value: -"default 10; minimum 1, maximum 50"
    • changedInput schema / properties / limit / maximum
      Previous value: -50New value: +200
    • addedInput schema / properties / mode
      Added value: +{
      +  "minLength": 1,
      +  "pattern": "\\S",
      +  "type": "string"
      +}
    • removedInput schema / properties / publisher
      Removed value: -{
      -  "description": "optional publisher id",
      -  "maxLength": 64,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / publisher_metadata_identifier
      Removed value: -{
      -  "description": "optional exact official publisher-metadata URI returned by a search hit",
      -  "maxLength": 2048,
      -  "minLength": 1,
      -  "pattern": "^https?://",
      -  "type": "string"
      -}
    • removedInput schema / properties / query / description
      Removed value: -"search terms"
    • changedInput schema / properties / query / maxLength
      Previous value: -1000New value: +512
    • addedInput schema / properties / query / pattern
      Added value: +"\\S"
    • removedInput schema / properties / retrieval_mode
      Removed value: -{
      -  "description": "keyword or hybrid; default keyword until activation",
      -  "enum": [
      -    "keyword",
      -    "hybrid"
      -  ],
      -  "maxLength": 64,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / source_class
      Removed value: -{
      -  "description": "optional source document class",
      -  "maxLength": 1000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / time_scope
      Removed value: -{
      -  "description": "all_versions or as_of",
      -  "enum": [
      -    "all_versions",
      -    "as_of"
      -  ],
      -  "maxLength": 64,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / works
      Removed value: -{
      -  "description": "optional comma-separated work ids: restrict search to these works",
      -  "maxLength": 1000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "query"
      -]New value: +[
      +  "query",
      +  "language"
      +]
  2. Changed4 schema fields changed
    • addedInput schema / allOf
      Added value: +[
      +  {
      +    "if": {
      +      "properties": {
      +        "time_scope": {
      +          "const": "as_of"
      +        }
      +      },
      +      "required": [
      +        "time_scope"
      +      ]
      +    },
      +    "then": {
      +      "required": [
      +        "as_of"
      +      ]
      +    }
      +  }
      +]
    • changedInput schema / properties / as_of / pattern
      Previous 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])$"
    • changedInput schema / properties / domain / description
      Previous value: -"optional reviewed legal domain id"New value: +"legacy domain id filter; current v4 indexes leave it empty; use publisher_metadata_identifier for official classifications"
    • addedInput schema / properties / publisher_metadata_identifier
      Added value: +{
      +  "description": "optional exact official publisher-metadata URI returned by a search hit",
      +  "maxLength": 2048,
      +  "minLength": 1,
      +  "pattern": "^https?://",
      +  "type": "string"
      +}
  3. Changed35 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / act_form / maxLength
      Added value: +1000
    • addedInput schema / properties / act_form / minLength
      Added value: +1
    • addedInput schema / properties / as_of / maxLength
      Added value: +10
    • addedInput schema / properties / as_of / minLength
      Added value: +1
    • addedInput schema / properties / as_of / pattern
      Added value: +"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
    • addedInput schema / properties / binding_status / maxLength
      Added value: +1000
    • addedInput schema / properties / binding_status / minLength
      Added value: +1
    • addedInput schema / properties / document_type / maxLength
      Added value: +1000
    • addedInput schema / properties / document_type / minLength
      Added value: +1
    • addedInput schema / properties / domain / maxLength
      Added value: +1000
    • addedInput schema / properties / domain / minLength
      Added value: +1
    • addedInput schema / properties / fuzzy / enum
      Added value: +[
      +  "auto",
      +  "off"
      +]
    • addedInput schema / properties / fuzzy / maxLength
      Added value: +64
    • addedInput schema / properties / fuzzy / minLength
      Added value: +1
    • addedInput schema / properties / hierarchy / maxLength
      Added value: +1000
    • addedInput schema / properties / hierarchy / minLength
      Added value: +1
    • addedInput schema / properties / jurisdiction / maxLength
      Added value: +64
    • addedInput schema / properties / jurisdiction / minLength
      Added value: +1
    • addedInput schema / properties / language / maxLength
      Added value: +16
    • addedInput schema / properties / language / minLength
      Added value: +1
    • addedInput schema / properties / publisher / maxLength
      Added value: +64
    • addedInput schema / properties / publisher / minLength
      Added value: +1
    • addedInput schema / properties / query / maxLength
      Added value: +1000
    • addedInput schema / properties / query / minLength
      Added value: +1
    • addedInput schema / properties / retrieval_mode / enum
      Added value: +[
      +  "keyword",
      +  "hybrid"
      +]
    • addedInput schema / properties / retrieval_mode / maxLength
      Added value: +64
    • addedInput schema / properties / retrieval_mode / minLength
      Added value: +1
    • addedInput schema / properties / source_class / maxLength
      Added value: +1000
    • addedInput schema / properties / source_class / minLength
      Added value: +1
    • addedInput schema / properties / time_scope / enum
      Added value: +[
      +  "all_versions",
      +  "as_of"
      +]
    • addedInput schema / properties / time_scope / maxLength
      Added value: +64
    • addedInput schema / properties / time_scope / minLength
      Added value: +1
    • addedInput schema / properties / works / maxLength
      Added value: +1000
    • addedInput schema / properties / works / minLength
      Added value: +1
  4. Changed3 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"default 10"New value: +"default 10; minimum 1, maximum 50"
    • addedInput schema / properties / limit / maximum
      Added value: +50
    • addedInput schema / properties / limit / minimum
      Added value: +1
  5. Changed1 schema field changed
    • changedInput schema / properties / domain / description
      Previous value: -"optional reviewed EU domain id"New value: +"optional reviewed legal domain id"
  6. Changed1 schema field changed
    • changedInput schema / properties / jurisdiction / description
      Previous value: -"optional lu or eu"New value: +"optional jurisdiction code from index metadata, e.g. LU or EU"
  7. First observed

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description does add some behavioral context: results are constrained by rights ('text they withhold is not matched'), a 'typed refusal' is possible, and search can be 'strict or relaxed'. It omits return shape, ordering, pagination behavior, and any permission model beyond the vague 'rights' reference.

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

Conciseness2/5

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

The entire definition is a single dense run-on sentence joined by semicolons, with the core action buried mid-sentence after a long conditional clause. It is hard to parse and not front-loaded.

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

Completeness2/5

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

For a seven-parameter tool with no annotations, no output schema, and 0% schema coverage, the description leaves too much unspecified: most parameters, the return format, and clear distinction from the many sibling lookup tools are absent.

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% for seven parameters, so the description must compensate. It only indirectly touches 'query', 'mode' ('strict or relaxed'), 'identifier' ('one EU work named by identifier'), and possibly 'date'; 'after', 'limit', and 'language' are never explained, and no formats or constraints are given.

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

Purpose3/5

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

The description does indicate two functions — resolving an exact reference and searching 'held Luxembourg article text' — but the phrasing is so idiosyncratic ('the address its act opens at', 'its held wording') that an agent cannot quickly state what the tool does. It never names or contrasts with siblings like resolve, citation, browse, or ask.

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?

Conditional routing is present: 'with no work named' leads to exact-reference resolution, 'otherwise' leads to article-text search, and 'for one EU work named by identifier' leads to wording retrieval. However, no alternatives or exclusions are named, so the agent must infer when to prefer sibling tools such as resolve or citation.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.