Skip to main content
Glama

Payments Law — EU payments legislation

Find EU payments requirements

search_legislation
Read-onlyIdempotent

Use this to find EU legislative provisions on payment-services questions: strong customer authentication (SCA), dynamic linking, open banking, safeguarding and payment liability. The held corpus includes PSD2, RTS-SCA, PSD3/PSR and DORA. For exact wording use get_provision; for defined-term wording use get_defined_term. This searches held legislation, not national law or regulator guidance. Full-text search across articles, annexes and recitals, ranked in that order of authority. Every hit carries the exact locator get_provision accepts, its cite anchor, the matched passage and why it matched. A citation-shaped query resolves through the citation grammar first; instrument acronyms become ranking hints; initialisms of the corpus's defined terms are expanded. Absence of a result is not evidence that no relevant law exists. The matched passage is a snippet of at most 320 characters, not the provision: open the hit with get_provision before citing it, and echo the cite it serves. topic narrows these hits rather than widening them: a topic-tagged provision whose words the query misses is never reached, so a page of hits is not a sweep. For coverage questions ('everything on X', 'which instruments deal with Y') pick the instruments with list_instruments by category, enumerate each with list_provisions filtered by topic, then open them with get_provision.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNoRestrict to one source type. Articles, annexes and recitals are all searched by default, ranked in that order of authority.
limitNo
queryYesEU legislative search terms, e.g. "strong customer authentication", "dynamic linking", "safeguarding" or "DORA ICT risk". Use words expected in the legal text, not an entire advice request. Quoted phrases are honoured; AND, OR and NOT are the only operators. A citation-shaped query ("Article 97(1) PSD2") is resolved through the citation grammar first.
topicNoKeep only provisions carrying this topic.
cursorNo
instrument_idNoRestrict to one instrument, e.g. "rts-sca".
in_force_on_dateNoISO date; keeps hits from instruments in force on that date, on the same semantics list_instruments uses.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
errorYes
coverageYes
warningsYes
paginationYes
provenanceYes
derivationsYes
corpus_releaseYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / cursor / anyOf
      Added value: +[
      +  {
      +    "maxLength": 512,
      +    "pattern": "^[A-Za-z0-9_-]+$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / cursor / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedInput schema / properties / in_force_on_date / anyOf
      Added value: +[
      +  {
      +    "maxLength": 32,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / in_force_on_date / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedInput schema / properties / instrument_id / anyOf
      Added value: +[
      +  {
      +    "maxLength": 64,
      +    "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / instrument_id / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedInput schema / properties / topic / anyOf
      Added value: +[
      +  {
      +    "maxLength": 64,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / topic / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
  2. Changed10 schema fields changed
    • removedInput schema / properties / cursor / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / cursor / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / in_force_on_date / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / in_force_on_date / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / instrument_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / instrument_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / topic / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / topic / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / data / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "citation_routed": {
      -        "type": "boolean"
      -      },
      -      "items": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "cite": {
      -              "type": "string"
      -            },
      -            "instrument_id": {
      -              "type": "string"
      -            },
      -            "locator": {
      -              "additionalProperties": {},
      -              "propertyNames": {
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            "matched_via": {
      -              "type": "string"
      -            },
      -            "score": {
      -              "anyOf": [
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "snippet": {
      -              "type": "string"
      -            },
      -            "source_type": {
      -              "type": "string"
      -            },
      -            "url": {
      -              "type": "string"
      -            },
      -            "why": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "instrument_id",
      -            "cite",
      -            "source_type",
      -            "locator",
      -            "url",
      -            "snippet",
      -            "score",
      -            "why",
      -            "matched_via"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "match_mode": {
      -        "type": "string"
      -      },
      -      "next_cursor": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "query_terms": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "total": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "query_terms",
      -      "match_mode",
      -      "citation_routed",
      -      "items",
      -      "next_cursor",
      -      "total"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "citation_routed": {
      +        "type": "boolean"
      +      },
      +      "items": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "cite": {
      +              "type": "string"
      +            },
      +            "instrument_id": {
      +              "type": "string"
      +            },
      +            "locator": {
      +              "additionalProperties": {},
      +              "propertyNames": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            "matched_via": {
      +              "type": "string"
      +            },
      +            "score": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "snippet": {
      +              "type": "string"
      +            },
      +            "source_type": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            },
      +            "why": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "instrument_id",
      +            "cite",
      +            "source_type",
      +            "locator",
      +            "url",
      +            "snippet",
      +            "score",
      +            "why",
      +            "matched_via"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "match_mode": {
      +        "type": "string"
      +      },
      +      "next_cursor": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "query_terms": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "total": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "query_terms",
      +      "match_mode",
      +      "citation_routed",
      +      "items",
      +      "next_cursor",
      +      "total"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / pagination / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "complete": {
      -        "type": "boolean"
      -      },
      -      "next_cursor": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "total": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "complete",
      -      "next_cursor"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "complete": {
      +        "type": "boolean"
      +      },
      +      "next_cursor": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "total": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "complete",
      +      "next_cursor"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"What to search for, in the words you expect in the legal text. Quoted phrases are honoured; AND, OR and NOT are the only operators. A citation-shaped query (\"Article 97(1) PSD2\") is resolved through the citation grammar first."New value: +"EU legislative search terms, e.g. \"strong customer authentication\", \"dynamic linking\", \"safeguarding\" or \"DORA ICT risk\". Use words expected in the legal text, not an entire advice request. Quoted phrases are honoured; AND, OR and NOT are the only operators. A citation-shaped query (\"Article 97(1) PSD2\") is resolved through the citation grammar first."
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, not open-world); the description adds substantive behavior beyond them: ranking order of articles/annexes/recitals, 320-character snippet limit, citation-grammar resolution first, acronym ranking hints, defined-term initialism expansion, and the caveat that absence of a result is not evidence of no law. It also warns the snippet is not the provision and must be opened before citing.

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 purpose, then alternatives, then behavioral caveats and a workflow — a sensible order for a long description. It is dense and runs long for a search tool, with minor repetition (authority ranking appears in both description and kind schema; the snippet length is restated), but nearly every sentence carries operational information.

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 needn't be spelled out, yet the description still tells the agent what each hit contains (locator, cite anchor, matched passage, match reason), which is what makes the follow-up get_provision call possible. Combined with sibling routing, coverage workflow and failure caveats, nothing an agent needs to call this correctly is missing.

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?

With 71% schema coverage the schema already documents query, kind, topic and in_force_on_date, yet the description adds real non-obvious meaning: topic narrows rather than widens (topic-tagged provisions the query misses are never reached), instrument acronyms become ranking hints, and a citation-shaped query resolves through the citation grammar first. limit and cursor remain unexplained, and the ranking-order sentence duplicates the kind schema text.

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+resource+scope ('find EU legislative provisions on payment-services questions') and enumerates the corpus (PSD2, RTS-SCA, PSD3/PSR, DORA). It explicitly distinguishes itself from get_provision, get_defined_term, list_instruments and list_provisions, so an agent can route without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit alternatives with conditions: get_provision for exact wording, get_defined_term for defined-term wording, and a step-by-step workflow (list_instruments → list_provisions → get_provision) for coverage questions. It also states the negative boundary — held legislation only, not national law or regulator guidance — which prevents misfires.

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.

Resources