Skip to main content
Glama

Open Legal Data (Germany)

List courts

list_courts
Read-onlyIdempotent

Browse and filter German courts.

    Returns a list of courts matching the given filters. Use this to
    discover which courts are available before searching for cases.

    Args:
        court_type: Filter by court type code (e.g. "AG", "LG", "OLG",
            "BGH", "VG", "OVG", "BVerwG", "ArbG", "LAG", "BAG").
        state: Filter by state name or slug (e.g. "Berlin", "bayern").
        jurisdiction: Filter by jurisdiction. Accepts the English
            shortcuts "ordinary", "administrative", "labor", "social",
            "fiscal", "constitutional" or the stored German values
            ("Arbeitsgerichtsbarkeit", …). The Bundespatentgericht
            (BPatG) belongs to ``ordinary``; there is no separate
            patent-jurisdiction category — filter on
            ``court_type="BPatG"`` if you specifically want patent
            cases.
        level_of_appeal: Filter by court level. Accepts the English
            shortcuts "local", "regional", "high", "federal" or the
            stored German values ("Amtsgericht", …).
        search: Search court names and aliases.
        limit: Maximum results to return (default 50, max 100). Values
            above 100 are clamped; the response then includes
            ``limit_clamped: true`` and the original ``requested_limit``.
    

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_courts"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNo
stateNo
searchNo
court_typeNo
jurisdictionNo
level_of_appealNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered structurally. The description adds genuinely useful behavior beyond that: limit is clamped above 100 and the response then includes limit_clamped and requested_limit. It does not describe the shape of the returned court records or pagination, so it adds moderate rather than rich context.

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 is front-loaded in the first two lines, then structured Args entries that each carry distinct information. The one weak sentence is 'Returns a list of courts matching the given filters,' which largely restates the opening line, and the docstring formatting is slightly verbose.

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

Completeness4/5

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

With 0% schema coverage and no output schema, the description does most of the work well: filters, defaults, clamping, and a real edge case are all covered. The remaining gap is what a court record contains and whether results beyond limit can be paged, which an agent listing courts might reasonably want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry all parameter meaning, and it does — every one of the six parameters is documented with examples and accepted value sets. It goes further than the schema could, explaining that jurisdiction and level_of_appeal accept English shortcuts or stored German values, and it flags the BPatG edge case and the limit-clamping contract.

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

Purpose4/5

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

The description opens with a specific verb and resource ('Browse and filter German courts') and confirms it returns a list of matching courts, which cleanly separates it from singular-lookup siblings like get_court. It does not explicitly name a sibling or state what it is not, so it stops short of a 5.

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

Usage Guidelines4/5

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

It gives a concrete workflow cue: 'Use this to discover which courts are available before searching for cases.' That is clear when-to-use guidance with the downstream tool implied (search_cases). There are no explicit when-not-to-use conditions or named alternatives, so a 4 rather than a 5.

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.