Skip to main content
Glama

Payments Law — EU payments legislation

Compare PSR or PSD3 article versions

compare_versions
Read-onlyIdempotent

Use this to compare an article between the Commission proposal and the Council compromise text of PSR or PSD3, within the same instrument. Serves the word-level comparison the build published: a pair is servable if and only if a diff artefact exists for it — the PSR and PSD3 proposal↔compromise pairs and nothing else. Every other pair is refused, including any with a text published in the Official Journal; for every consolidated instrument's pinned as-adopted text the refusal carries the URL where that text is published. This service never recomputes a comparison. Pairs match in either direction, and a reversed request is the same artefact with the ops inverted. changes reads that artefact structurally — paragraphs added or deleted, figures and durations moved, a heading rewritten — for a caller that needs what KIND of change this was without parsing the word-level ops. It is scoped to the article, not to the page of ops, and locates each entry no more precisely than the served text allows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
to_locatorNoThe article on the to side.
from_locatorNoThe article on the from side. Alignment is identity on the article number, so naming either side names both.
instrument_idYesRegistry id of the instrument, e.g. "psr".
to_version_idYesVersion id the other side.
from_version_idYesVersion id one side of the pair.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
errorYes
coverageYes
warningsYes
paginationYes
provenanceYes
derivationsYes
corpus_releaseYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / data / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "article": {
      -        "type": "string"
      -      },
      -      "changes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "type": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "type"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What KIND of change this comparison evidences, read off the same artefact as pairs[]. Types: paragraph_added, paragraph_deleted, paragraph_amended (with words_changed, counting both sides of a substitution), figure_changed (with from/to quoting the served text), heading_changed, the article_* counterparts of the first three for an article's text outside any numbered paragraph, and none_detected where nothing was found — never an empty list. An entry carries `paragraph` and, where the served text settles it, `point` and `subpoint`, in the §7 locator model's own field names; an article_* entry carries none of them. Those components are a CITATION, not a promise of retrieval: a sub-point is often not a block get_provision serves, so open an entry at the enclosing point, and then the paragraph, which does serve the text the entry quotes. A roman sub-point is always qualified by its letter point (PSR Art 97(2)(a)(ii), never (ii) alone), and a list the text does not settle is left unlocated. ARTICLE-SCOPED, not page-scoped: the whole inventory travels with every page of pairs[], so a client paging through must not concatenate it. Repeated identical entries are repeated occurrences in one paragraph, not duplicates. Null means this release predates the inventory, which is not the same as none_detected."
      -      },
      -      "cite": {
      -        "type": "string"
      -      },
      -      "classification_note": {
      -        "type": "string"
      -      },
      -      "direction": {
      -        "type": "string"
      -      },
      -      "editorial_review_state": {
      -        "type": "string"
      -      },
      -      "from": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "version_id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "version_id"
      -        ],
      -        "type": "object"
      -      },
      -      "instrument_id": {
      -        "type": "string"
      -      },
      -      "pairs": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "ops": {
      -              "items": {
      -                "items": false,
      -                "maxItems": 2,
      -                "minItems": 2,
      -                "prefixItems": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "type": "array"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "required": [
      -            "ops"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "status": {
      -        "type": "string"
      -      },
      -      "to": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "version_id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "version_id"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "instrument_id",
      -      "article",
      -      "cite",
      -      "from",
      -      "to",
      -      "status",
      -      "direction",
      -      "editorial_review_state",
      -      "classification_note",
      -      "changes",
      -      "pairs"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "article": {
      +        "type": "string"
      +      },
      +      "changes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "type": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "type"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What KIND of change this comparison evidences, read off the same artefact as pairs[]. Types: paragraph_added, paragraph_deleted, paragraph_amended (with words_changed, counting both sides of a substitution), figure_changed (with from/to quoting the served text), heading_changed, the article_* counterparts of the first three for an article's text outside any numbered paragraph, and none_detected where nothing was found — never an empty list. An entry carries `paragraph` and, where the served text settles it, `point` and `subpoint`, in the §7 locator model's own field names; an article_* entry carries none of them. Those components are a CITATION, not a promise of retrieval: a sub-point is often not a block get_provision serves, so open an entry at the enclosing point, and then the paragraph, which does serve the text the entry quotes. A roman sub-point is always qualified by its letter point (PSR Art 97(2)(a)(ii), never (ii) alone), and a list the text does not settle is left unlocated. ARTICLE-SCOPED, not page-scoped: the whole inventory travels with every page of pairs[], so a client paging through must not concatenate it. Repeated identical entries are repeated occurrences in one paragraph, not duplicates. Null means this release predates the inventory, which is not the same as none_detected."
      +      },
      +      "cite": {
      +        "type": "string"
      +      },
      +      "classification_note": {
      +        "type": "string"
      +      },
      +      "comparison_url": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "direction": {
      +        "type": "string"
      +      },
      +      "editorial_review_state": {
      +        "type": "string"
      +      },
      +      "from": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "version_id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "version_id"
      +        ],
      +        "type": "object"
      +      },
      +      "instrument_id": {
      +        "type": "string"
      +      },
      +      "pairs": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "ops": {
      +              "items": {
      +                "items": false,
      +                "maxItems": 2,
      +                "minItems": 2,
      +                "prefixItems": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "type": "array"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "ops"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "to": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "version_id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "version_id"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "instrument_id",
      +      "article",
      +      "cite",
      +      "from",
      +      "to",
      +      "status",
      +      "direction",
      +      "editorial_review_state",
      +      "classification_note",
      +      "comparison_url",
      +      "changes",
      +      "pairs"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed10 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"
      -]
    • changedInput schema / properties / from_locator / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "annex": {
      -        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "article": {
      -        "description": "Article number as printed: \"97\", \"45a\", \"69-a\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "kind": {
      -        "description": "Which kind of provision the locator names.",
      -        "enum": [
      -          "article",
      -          "annex",
      -          "recital"
      -        ],
      -        "type": "string"
      -      },
      -      "paragraph": {
      -        "description": "Numbered paragraph within the article, e.g. \"2\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "point": {
      -        "description": "Lettered point within the paragraph, e.g. \"b\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "recital": {
      -        "description": "Recital number, e.g. \"95\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "subpoint": {
      -        "description": "Sub-point within the point.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "annex": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered."
      +      },
      +      "article": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Article number as printed: \"97\", \"45a\", \"69-a\"."
      +      },
      +      "kind": {
      +        "description": "Which kind of provision the locator names.",
      +        "enum": [
      +          "article",
      +          "annex",
      +          "recital"
      +        ],
      +        "type": "string"
      +      },
      +      "paragraph": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Numbered paragraph within the article, e.g. \"2\"."
      +      },
      +      "point": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Lettered point within the paragraph, e.g. \"b\"."
      +      },
      +      "recital": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Recital number, e.g. \"95\"."
      +      },
      +      "subpoint": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Sub-point within the point."
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / from_version_id / maxLength
      Added value: +64
    • addedInput schema / properties / from_version_id / pattern
      Added value: +"^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$"
    • addedInput schema / properties / instrument_id / maxLength
      Added value: +64
    • addedInput schema / properties / instrument_id / pattern
      Added value: +"^[a-z0-9]+(?:-[a-z0-9]+)*$"
    • changedInput schema / properties / to_locator / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "annex": {
      -        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "article": {
      -        "description": "Article number as printed: \"97\", \"45a\", \"69-a\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "kind": {
      -        "description": "Which kind of provision the locator names.",
      -        "enum": [
      -          "article",
      -          "annex",
      -          "recital"
      -        ],
      -        "type": "string"
      -      },
      -      "paragraph": {
      -        "description": "Numbered paragraph within the article, e.g. \"2\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "point": {
      -        "description": "Lettered point within the paragraph, e.g. \"b\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "recital": {
      -        "description": "Recital number, e.g. \"95\".",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "subpoint": {
      -        "description": "Sub-point within the point.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "annex": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered."
      +      },
      +      "article": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Article number as printed: \"97\", \"45a\", \"69-a\"."
      +      },
      +      "kind": {
      +        "description": "Which kind of provision the locator names.",
      +        "enum": [
      +          "article",
      +          "annex",
      +          "recital"
      +        ],
      +        "type": "string"
      +      },
      +      "paragraph": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Numbered paragraph within the article, e.g. \"2\"."
      +      },
      +      "point": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Lettered point within the paragraph, e.g. \"b\"."
      +      },
      +      "recital": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Recital number, e.g. \"95\"."
      +      },
      +      "subpoint": {
      +        "anyOf": [
      +          {
      +            "maxLength": 32,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Sub-point within the point."
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / to_version_id / maxLength
      Added value: +64
    • addedInput schema / properties / to_version_id / pattern
      Added value: +"^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$"
  3. Changed6 schema fields changed
    • removedInput schema / properties / cursor / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / cursor / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedInput schema / properties / from_locator / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "annex": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered."
      -      },
      -      "article": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Article number as printed: \"97\", \"45a\", \"69-a\"."
      -      },
      -      "kind": {
      -        "description": "Which kind of provision the locator names.",
      -        "enum": [
      -          "article",
      -          "annex",
      -          "recital"
      -        ],
      -        "type": "string"
      -      },
      -      "paragraph": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Numbered paragraph within the article, e.g. \"2\"."
      -      },
      -      "point": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Lettered point within the paragraph, e.g. \"b\"."
      -      },
      -      "recital": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Recital number, e.g. \"95\"."
      -      },
      -      "subpoint": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Sub-point within the point."
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "annex": {
      +        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "article": {
      +        "description": "Article number as printed: \"97\", \"45a\", \"69-a\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "kind": {
      +        "description": "Which kind of provision the locator names.",
      +        "enum": [
      +          "article",
      +          "annex",
      +          "recital"
      +        ],
      +        "type": "string"
      +      },
      +      "paragraph": {
      +        "description": "Numbered paragraph within the article, e.g. \"2\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "point": {
      +        "description": "Lettered point within the paragraph, e.g. \"b\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "recital": {
      +        "description": "Recital number, e.g. \"95\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "subpoint": {
      +        "description": "Sub-point within the point.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / to_locator / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "annex": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered."
      -      },
      -      "article": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Article number as printed: \"97\", \"45a\", \"69-a\"."
      -      },
      -      "kind": {
      -        "description": "Which kind of provision the locator names.",
      -        "enum": [
      -          "article",
      -          "annex",
      -          "recital"
      -        ],
      -        "type": "string"
      -      },
      -      "paragraph": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Numbered paragraph within the article, e.g. \"2\"."
      -      },
      -      "point": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Lettered point within the paragraph, e.g. \"b\"."
      -      },
      -      "recital": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Recital number, e.g. \"95\"."
      -      },
      -      "subpoint": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Sub-point within the point."
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "annex": {
      +        "description": "Annex number, roman or arabic (\"I\", \"1\"); omit for an instrument whose single annex is unnumbered.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "article": {
      +        "description": "Article number as printed: \"97\", \"45a\", \"69-a\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "kind": {
      +        "description": "Which kind of provision the locator names.",
      +        "enum": [
      +          "article",
      +          "annex",
      +          "recital"
      +        ],
      +        "type": "string"
      +      },
      +      "paragraph": {
      +        "description": "Numbered paragraph within the article, e.g. \"2\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "point": {
      +        "description": "Lettered point within the paragraph, e.g. \"b\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "recital": {
      +        "description": "Recital number, e.g. \"95\".",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "subpoint": {
      +        "description": "Sub-point within the point.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / data / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "article": {
      -        "type": "string"
      -      },
      -      "changes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "type": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "type"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What KIND of change this comparison evidences, read off the same artefact as pairs[]. Types: paragraph_added, paragraph_deleted, paragraph_amended (with words_changed, counting both sides of a substitution), figure_changed (with from/to quoting the served text), heading_changed, the article_* counterparts of the first three for an article's text outside any numbered paragraph, and none_detected where nothing was found — never an empty list. An entry carries `paragraph` and, where the served text settles it, `point` and `subpoint`, in the §7 locator model's own field names; an article_* entry carries none of them. Those components are a CITATION, not a promise of retrieval: a sub-point is often not a block get_provision serves, so open an entry at the enclosing point, and then the paragraph, which does serve the text the entry quotes. A roman sub-point is always qualified by its letter point (PSR Art 97(2)(a)(ii), never (ii) alone), and a list the text does not settle is left unlocated. ARTICLE-SCOPED, not page-scoped: the whole inventory travels with every page of pairs[], so a client paging through must not concatenate it. Repeated identical entries are repeated occurrences in one paragraph, not duplicates. Null means this release predates the inventory, which is not the same as none_detected."
      -      },
      -      "cite": {
      -        "type": "string"
      -      },
      -      "classification_note": {
      -        "type": "string"
      -      },
      -      "direction": {
      -        "type": "string"
      -      },
      -      "editorial_review_state": {
      -        "type": "string"
      -      },
      -      "from": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "version_id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "version_id"
      -        ],
      -        "type": "object"
      -      },
      -      "instrument_id": {
      -        "type": "string"
      -      },
      -      "pairs": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "ops": {
      -              "items": {
      -                "prefixItems": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "type": "array"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "required": [
      -            "ops"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "status": {
      -        "type": "string"
      -      },
      -      "to": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "version_id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "version_id"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "instrument_id",
      -      "article",
      -      "cite",
      -      "from",
      -      "to",
      -      "status",
      -      "direction",
      -      "editorial_review_state",
      -      "classification_note",
      -      "changes",
      -      "pairs"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "article": {
      +        "type": "string"
      +      },
      +      "changes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "type": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "type"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What KIND of change this comparison evidences, read off the same artefact as pairs[]. Types: paragraph_added, paragraph_deleted, paragraph_amended (with words_changed, counting both sides of a substitution), figure_changed (with from/to quoting the served text), heading_changed, the article_* counterparts of the first three for an article's text outside any numbered paragraph, and none_detected where nothing was found — never an empty list. An entry carries `paragraph` and, where the served text settles it, `point` and `subpoint`, in the §7 locator model's own field names; an article_* entry carries none of them. Those components are a CITATION, not a promise of retrieval: a sub-point is often not a block get_provision serves, so open an entry at the enclosing point, and then the paragraph, which does serve the text the entry quotes. A roman sub-point is always qualified by its letter point (PSR Art 97(2)(a)(ii), never (ii) alone), and a list the text does not settle is left unlocated. ARTICLE-SCOPED, not page-scoped: the whole inventory travels with every page of pairs[], so a client paging through must not concatenate it. Repeated identical entries are repeated occurrences in one paragraph, not duplicates. Null means this release predates the inventory, which is not the same as none_detected."
      +      },
      +      "cite": {
      +        "type": "string"
      +      },
      +      "classification_note": {
      +        "type": "string"
      +      },
      +      "direction": {
      +        "type": "string"
      +      },
      +      "editorial_review_state": {
      +        "type": "string"
      +      },
      +      "from": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "version_id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "version_id"
      +        ],
      +        "type": "object"
      +      },
      +      "instrument_id": {
      +        "type": "string"
      +      },
      +      "pairs": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "ops": {
      +              "items": {
      +                "items": false,
      +                "maxItems": 2,
      +                "minItems": 2,
      +                "prefixItems": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "type": "array"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "ops"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "to": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "version_id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "version_id"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "instrument_id",
      +      "article",
      +      "cite",
      +      "from",
      +      "to",
      +      "status",
      +      "direction",
      +      "editorial_review_state",
      +      "classification_note",
      +      "changes",
      +      "pairs"
      +    ],
      +    "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"
      +  }
      +]
  4. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources