Skip to main content
Glama

Track RIS Changes

ris_track_changes
Read-onlyIdempotent

Track every document added or changed in one RIS application within an exact date window (changed_from/changed_to), optionally including deletions (include_deleted) — the delta-sync and monitoring primitive for mirrors and watchers, and the only surface that reports removals. Unlike the search tools’ coarse, additive-only changed_since intervals, this is exact-dated and deletion-aware. application accepts every RIS application code listed by ris_list_reference topic applications, including BrKons, LrKons, Dsk, and BgblAuth. Each changed document comes back in a compact cross-class record — document_number (for ris_get_document), title, the section_label, law_id, and in-force window (in_force_from/in_force_until) of a consolidated-law row or the case_numbers and decision_date of a court decision, dates, binding_status, and rendition URLs — plus its last-changed date; removed documents come back as deleted records with a deletion timestamp. One application per call; page explicitly for large windows.

Input Schema

NameRequiredDescriptionDefault
pageNo1-based result page. Default 1.
page_sizeNoDocuments per page, 1–100 (default 20). Served as a page of 10 (1–10) or 20 (11–100), with a notice when that differs. For more results, keep the size and raise page.
changed_toNoInclude documents changed on/before this date (YYYY-MM-DD, AenderungenBis).
applicationYesRIS application whose change feed to read, e.g. BrKons, LrKons, Dsk, or BgblAuth. All supported codes: ris_list_reference topic applications.
changed_fromNoInclude documents changed on/after this date (YYYY-MM-DD, AenderungenVon). Exact date, not a coarse interval.
include_deletedNotrue also returns documents removed from RIS in the window, as deleted records — the only way to observe deletions.

Output Schema

NameRequiredDescriptionDefault
pageNo1-based page number RIS served.
errorNoPresent when the call failed. Absent on success.
noticeNoThe served page size when it differs from page_size, then zero-hit guidance — the likely cause and the concrete next call.
resultsNoChange-feed entries for the requested page. Totals, paging, and the applied window in enrichment.
pageSizeNoPage size RIS applied.
changedToNoThe changed_to bound the server applied (echo), when set.
truncatedNoPresent and true when more pages exist beyond this one — raise page to continue.
totalCountNoTotal change-feed entries across all pages.
applicationNoThe application whose change feed was read.
changedFromNoThe changed_from bound the server applied (echo), when set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedInput schema / properties / page_size / description
      Previous value: -"Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page."New value: +"Documents per page, 1–100 (default 20). Served as a page of 10 (1–10) or 20 (11–100), with a notice when that differs. For more results, keep the size and raise page."
    • removedInput schema / properties / page_size / enum
      Removed value: -[
      -  10,
      -  20
      -]
    • addedInput schema / properties / page_size / maximum
      Added value: +100
    • addedInput schema / properties / page_size / minimum
      Added value: +1
    • changedInput schema / properties / page_size / type
      Previous value: -"number"New value: +"integer"
    • changedOutput schema / properties / notice / description
      Previous value: -"Zero-hit guidance — names the likely cause and the concrete next call."New value: +"The served page size when it differs from page_size, then zero-hit guidance — the likely cause and the concrete next call."
    • addedOutput schema / properties / results / items / properties / in_force_from
      Added value: +{
      +  "description": "First day this version is in force (Inkrafttretensdatum), relayed as RIS writes it — consolidated-law rows only. RIS writes 9000-01-01 for a start still awaiting an event. The version is in force on date D when in_force_from ≤ D and in_force_until is absent or ≥ D.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / in_force_until
      Added value: +{
      +  "description": "Last day this version is in force (Ausserkrafttretensdatum), relayed as RIS writes it — consolidated-law rows only. Absent when RIS records no end date, which does not mean the version is in force now: it can start in the future. RIS writes 9000-01-01 for an end still awaiting an event, the day the version after it starts. The version is in force on date D when in_force_from ≤ D and in_force_until is absent or ≥ D.",
      +  "type": "string"
      +}
  2. Changed4 schema fields changed
    • addedOutput schema / properties / results / items / properties / case_numbers
      Added value: +{
      +  "description": "Case numbers (Geschäftszahl), one per element in upstream order — a headnote row lists every decision it covers, the leading decision first. Court-decision rows only, which carry no title.",
      +  "items": {
      +    "description": "One case number (Geschäftszahl).",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / results / items / properties / decision_date
      Added value: +{
      +  "description": "Decision date (Entscheidungsdatum) — court-decision rows only.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / law_id
      Added value: +{
      +  "description": "RIS law number (Gesetzesnummer) the section belongs to — consolidated-law rows only. Group a feed by law with it, or pass it to ris_search_legislation law_id for the law’s versions.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / section_label
      Added value: +{
      +  "description": "Section, article, or annex the changed document holds (ArtikelParagraphAnlage, e.g. \"§ 16\", \"Anl. 1\"; \"§ 0\" is the law’s heading document) — consolidated-law rows (BrKons, LrKons) only.",
      +  "type": "string"
      +}
  3. Changed4 schema fields changed
    • removedInput schema / properties / page_size / anyOf
      Removed value: -[
      -  {
      -    "const": 10,
      -    "type": "number"
      -  },
      -  {
      -    "const": 20,
      -    "type": "number"
      -  },
      -  {
      -    "const": 50,
      -    "type": "number"
      -  },
      -  {
      -    "const": 100,
      -    "type": "number"
      -  }
      -]
    • changedInput schema / properties / page_size / description
      Previous value: -"Documents per page — RIS accepts 10, 20, 50, or 100. Default 20."New value: +"Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page."
    • addedInput schema / properties / page_size / enum
      Added value: +[
      +  10,
      +  20
      +]
    • addedInput schema / properties / page_size / type
      Added value: +"number"
  4. Changed7 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / application / description
      Previous value: -"RIS application whose change feed to read (standard code, e.g. BrKons, LrKons, Dsk, BgblAuth). History’s four aliased names are mapped internally. Codes: ris_list_reference topic applications."New value: +"RIS application whose change feed to read, e.g. BrKons, LrKons, Dsk, or BgblAuth. All supported codes: ris_list_reference topic applications."
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "results",
      +      "totalCount",
      +      "page",
      +      "pageSize",
      +      "application"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_query`: RIS rejected a parameter value in-band — its Client error message is passed through verbatim and names the offending element (e.g. a page past the last page of the change window). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the change feed within the request deadline. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "invalid_query",
      +            "upstream_error",
      +            "upstream_timeout"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "results",
      -  "totalCount",
      -  "page",
      -  "pageSize",
      -  "application"
      -]
  5. Changed2 schema fields changed
    • changedInput schema / properties / changed_from / pattern
      Previous value: -"^\\d{4}-\\d{2}-\\d{2}$"New value: +"^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$"
    • changedInput schema / properties / changed_to / pattern
      Previous value: -"^\\d{4}-\\d{2}-\\d{2}$"New value: +"^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$"
  6. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds behavior the annotations cannot: exact-dated rather than interval semantics, that deletions are only observable here, and that removed documents return as deleted records with a deletion timestamp. It does not mention auth or rate-limit behavior, keeping it short of a 5.

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?

Purpose and sibling differentiation are front-loaded in the first two sentences, followed by parameter and return-shape detail. It is a single dense paragraph with some redundancy, notably restating the application codes that the enum already lists and describing return fields despite an output schema existing.

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?

Given six parameters, one required, an output schema, and rich annotations, nothing an agent needs to invoke this correctly is missing: date-window semantics, deletion handling, single-application constraint, and pagination advice are all present. The return-shape sentence is redundant against the output schema but does not leave any gap.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it ties the application enum to ris_list_reference topic applications and names representative codes, and clarifies changed_from is an exact date, not a coarse interval. include_deleted is framed as 'the only way to observe deletions', which goes beyond the schema's wording.

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 and resource ('track every document added or changed in one RIS application within an exact date window') and explicitly contrasts itself with the search tools' additive-only changed_since intervals. It also claims a unique capability ('the only surface that reports removals'), so an agent can distinguish it from all eight siblings without opening a 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?

Frames the tool as the 'delta-sync and monitoring primitive for mirrors and watchers' and names the excluded alternative (search tools' coarse changed_since). It adds operational guidance not in the schema: one application per call, and page explicitly for large windows.

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.