Skip to main content
Glama
PawelHaracz

polish-caselaw-mcp

by PawelHaracz

Polish Case Law MCP (polish-caselaw-mcp)

An MCP server exposing Polish court case law (orzecznictwo) live from the SAOS API. It has no local database — every tool call queries SAOS at request time.

The response envelope and the artNNNparN article-reference scheme mirror polish-law-mcp (Polish statutes from ISAP), so a client can compose both servers and follow a judgment straight to the provision it cites. This is an independent implementation that shares those conventions for interoperability; it is not derived from that server's code.

Tools

  • search_case_law — search judgments (query, court type, dates, sort, limit)

  • get_judgment — full judgment by SAOS id (text, judges, referenced regulations as ELI ids + article refs)

  • find_judgments_for_provision — judgments citing a statute provision (pl-du-YYYY-NNN), verified against referenced regulations

  • check_constitutional_status — Constitutional Tribunal (TK) judgments citing a provision (does NOT assert the provision was struck down — read the operative part)

  • list_courts — court types for filtering

  • caselaw_about / caselaw_list_sources — provenance and legal basis (prefixed to avoid name clashes with sibling MCP servers in a gateway)

All tools return { results, _metadata } (ToolResponse). get_judgment exposes referenced_regulations[].articles_refs for cross-server linking.

Related MCP server: swiss-courts-mcp

Run

npm install
npm run build
npm start            # stdio MCP server

HTTP (obraz publikowany pod tagiem -http)

npm run build
npm run start:http          # nasłuchuje na PORT (domyślnie 3000)

curl http://localhost:3000/health

Endpointy: POST /mcp (Streamable HTTP), GET /health (probes). Obraz :latest uruchamia transport stdio (Docker MCP Gateway). Wariant HTTP publikowany jest pod tagiem :latest-http — używa go agent łączący się po sieci. Lokalnie: docker build -f Dockerfile -t caselaw-http .

Install

This section covers stdio clients (see ## Run above for the HTTP variant). Pick whichever setup matches your client.

Docker MCP Gateway

mcp-gateway-server.yaml already points at the published image, so no build is needed:

docker mcp profile server add default --server file://"$PWD/mcp-gateway-server.yaml"

To run your own build instead, set image: in that file to a local tag and build it first:

docker build -f Dockerfile.stdio -t polish-caselaw-mcp:local .

The gateway's --block-network flag cuts SAOS off; tools then return a clear network error rather than hanging.

Standalone — Docker

Any MCP client that launches a stdio command can run the image directly. --rm -i matters: the server talks over stdin/stdout and should not outlive the client.

{
  "mcpServers": {
    "polish-caselaw": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "ghcr.io/pawelharacz/polish-caselaw-mcp:latest"]
    }
  }
}

Pass configuration through with -e:

"args": ["run", "--rm", "-i", "-e", "SAOS_TIMEOUT_MS=60000",
         "ghcr.io/pawelharacz/polish-caselaw-mcp:latest"]

Standalone — Node

Without Docker, point the client at the built entrypoint:

{
  "mcpServers": {
    "polish-caselaw": {
      "command": "node",
      "args": ["/absolute/path/to/polish-caselaw-mcp/dist/index.js"],
      "env": { "SAOS_TIMEOUT_MS": "60000" }
    }
  }
}

Run npm install && npm run build first — dist/ is not committed.

Claude Code

claude mcp add polish-caselaw -- docker run --rm -i ghcr.io/pawelharacz/polish-caselaw-mcp:latest

Verify with /mcp, then call caselaw_about — it returns provenance without touching SAOS, so it confirms the server is wired up even if the API is slow.

Configuration

Variable

Default

Purpose

SAOS_TIMEOUT_MS

45000

HTTP timeout per SAOS request. /search/judgments regularly takes 20–35s under load, so short timeouts abort requests that would have succeeded.

SAOS_RETRY_BACKOFF_MS

500

Delay before the single retry, so a slow upstream is not hit again immediately.

Court decisions are not statutes. See sources.yml for the legal basis. Research tool, not legal advice — verify against official court portals.

License

Apache-2.0

Available Tools

7 tools
caselaw_aboutA

Case-law server metadata, provenance, and freshness (live SAOS). Call to understand coverage and basis before relying on results.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that this is a metadata query (not a data mutation) and notes it's 'live SAOS,' which signals freshness of the data source, but doesn't describe caching behavior, latency expectations, or what 'SAOS' stands for. The 'live' qualifier adds some transparency value.

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?

Two concise sentences that front-load the purpose and then add usage guidance. 'Live SAOS' is a bit cryptic/technical without expansion, but the overall text is tight with no wasted words.

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?

For a 0-parameter metadata tool with no output schema, the description adequately conveys what information is returned (coverage, provenance, freshness) and when to call it. It would benefit from listing what specific data structures or fields are returned, but given the tool's simplicity, it's reasonably complete.

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?

The tool has 0 parameters, so the schema (which is empty) provides nothing. Per the rubric, 0 params earns a baseline of 4. The description doesn't need to explain parameters since none exist, and it appropriately focuses on the tool's behavior instead.

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 has a specific verb+resource (returns metadata, provenance, and freshness of case-law server) and clearly states it covers quality attributes rather than search results. It distinguishes from siblings like search_case_law and get_judgment which operate on content, though it doesn't explicitly name them.

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?

The description gives clear context: 'Call to understand coverage and basis before relying on results.' This implies usage as a precondition/prerequisite before other case-law operations, which is useful guidance. It doesn't explicitly list when NOT to use it or name alternatives, but the 'before relying on results' framing clearly scopes its purpose.

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

caselaw_list_sourcesA

Provenance and legal-basis metadata for the case-law source (SAOS). Call FIRST to understand what this case-law server covers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. Being a metadata/provenance tool, it's reasonably likely to be non-destructive and read-only, which is implied by 'Provenance and legal-basis metadata.' However, it does not disclose the return format, whether it performs network requests, authentication needs, or data freshness characteristics. The description gives enough to infer a safe, informative call but doesn't add depth beyond the obvious metadata purpose.

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

Conciseness5/5

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

Two short sentences deliver both purpose and usage guidance with zero wasted words. The 'Call FIRST' instruction is front-loaded and actionable. This is exemplary conciseness—every word earns its place.

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?

For a zero-parameter metadata/discovery tool with no output schema, the description is appropriately complete. It establishes the tool's role (provenance and legal-basis), identifies the source (SAOS), and prescribes when to call it (FIRST). It could optionally hint at what downstream decisions this metadata informs, but given the tool's simplicity and the lack of output schema, this is sufficient. The main gap is that it doesn't describe what the returned metadata looks like, but no output schema exists to supplement this.

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?

The tool has zero parameters, and the description provides contextual semantic value beyond the empty schema. It tells the agent what metadata categories are returned (provenance, legal-basis, SAOS coverage), which would not be inferable from the schema alone. With 0 params, the baseline is 4, and since the description meaningfully adds conceptual context about the tool's informational scope, it earns that baseline.

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 clearly states this tool provides provenance and legal-basis metadata for the case-law source (SAOS), using a specific noun (provenance/legal-basis) plus resource (case-law source). It indicates this is a metadata/provenance tool rather than a search or retrieval tool, which helps distinguish it from siblings like search_case_law and get_judgment. However, the purpose lacks a verb—it describes what it contains rather than what action it performs, and differentiates only weakly from the similar caselaw_about sibling.

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?

The description gives explicit usage instruction: 'Call FIRST to understand what this case-law server covers.' This provides clear when-to-use guidance, positioning it as a discovery/prerequisite step before other tools like search_case_law or get_judgment. It does not explicitly state when NOT to use it or name alternatives, so it misses the full guidance credit, but the 'Call FIRST' directive is strong actionable context.

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

check_constitutional_statusA

Find Polish Constitutional Tribunal (TK) judgments that cite a given statutory provision. Provide document_id (pl-du-YYYY-NNN) or journal_year + journal_entry, optionally an article and title_hint. Returns TK judgments with confirmed_reference (verified via referenced regulations). IMPORTANT: a citing TK judgment does NOT by itself mean the provision was struck down — read the operative part. Live from SAOS; not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, 1-10 (default 10).
articleNoOptional article, e.g. "art. 267".
title_hintNoOptional act title to sharpen search.
document_idNoELI id pl-du-YYYY-NNN.
journal_yearNoDziennik Ustaw year.
journal_entryNoDziennik Ustaw entry (pozycja).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It reveals that results include 'confirmed_reference (verified via referenced regulations),' notes it is 'Live from SAOS; not legal advice,' and warns against misinterpreting citations as invalidations. It implies a read-only operation. It lacks details like pagination or error handling, but covers key nuances for a legal search tool.

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?

The description is compact, with a clear opening statement, a brief input instruction, and a warning. It front-loads the core purpose and avoids redundancy. The IMPORTANT note adds necessary caution without being verbose, though it makes the description slightly longer than ideal.

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?

Given no output schema and no annotations, the description covers the essential input requirements and hints at the return value ('Returns TK judgments with confirmed_reference'). It also includes a legal disclaimer and a caution about interpretation. It does not fully explain the return structure, but for a search tool with well-described parameters, it is sufficiently complete.

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. The description adds value by grouping parameters into alternatives ('document_id or journal_year + journal_entry') and clarifying optionality ('optionally an article and title_hint'). It also mentions the output concept 'confirmed_reference,' which enhances understanding of how parameters affect results.

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?

The description clearly states the tool's function: 'Find Polish Constitutional Tribunal (TK) judgments that cite a given statutory provision.' It specifies the resource (TK judgments), the action (find/cite), and the input method (document_id or journal_year + journal_entry). This distinguishes it from general case law search tools and aligns with the sibling 'find_judgments_for_provision' while adding a specific court focus.

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?

The description provides usage context by explaining the required identifiers ('Provide document_id or journal_year + journal_entry') and optional parameters ('optionally an article and title_hint'). It also includes an important caveat about interpreting results ('does NOT by itself mean the provision was struck down'). However, it does not explicitly mention alternatives or when not to use this tool, so it falls short of a 5.

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

find_judgments_for_provisionA

Find Polish judgments that cite a given statutory provision. Provide either document_id (pl-du-YYYY-NNN, e.g. pl-du-1997-553 for the Criminal Code) or journal_year + journal_entry, optionally an article (e.g. "art. 267") and title_hint to sharpen the text search. Each result has confirmed_reference=true when the full judgment actually cites the provision (verified via referenced regulations), false when it is only a text match. Live from SAOS; not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, 1-10 (default 10).
articleNoOptional article, e.g. "art. 267".
title_hintNoOptional act title to sharpen search, e.g. "Kodeks karny".
document_idNoELI id pl-du-YYYY-NNN.
journal_yearNoDziennik Ustaw year.
journal_entryNoDziennik Ustaw entry (pozycja).

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does well: it explains the confirmed_reference semantics (true=verified via referenced regulations, false=only text match), states 'Live from SAOS', and includes a 'not legal advice' disclaimer. The main gap is not disclosing behavior for edge cases like zero results or ambiguous IDs.

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?

The description is two sentences, front-loaded with the core purpose and identifier formats, followed by the confirmed_reference explanation and pragmatics. Efficient and well-organized, though the confirmed_reference detail could arguably be more prominent given its importance for interpreting results.

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?

This is a moderately complex search tool with 6 parameters, no output schema, and no annotations. The description covers purpose, identifier requirements, optional refinements, result semantics (confirmed_reference), and sourcing (SAOS). It's reasonably complete for the complexity, though it could add a sentence about expected return format since there's no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter already has documentation. The description adds modest value by giving concrete examples ('art. 267', 'Kodeks karny', 'pl-du-1997-553') and clarifying the either/or relationship between document_id and journal_year+journal_entry. This enriches the schema but doesn't substantially exceed the baseline.

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?

The description uses a specific verb+resource: 'Find Polish judgments that cite a given statutory provision.' It clearly distinguishes itself from sibling tools like search_case_law by focusing on provision-citation lookup rather than general case law search, and explains the identifier formats (document_id, journal_year + journal_entry).

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?

The description gives explicit usage patterns: 'Provide either document_id or journal_year + journal_entry, optionally an article and title_hint.' It notes these are optional refinements to sharpen search. However, it doesn't explicitly contrast with sibling tools or state when NOT to use this tool versus search_case_law, leaving a small gap.

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

get_judgmentA

Fetch the full text and metadata of a single Polish court judgment by its SAOS id (use the id returned by search_case_law). Includes full text, judges, decision, summary, legal bases, and referenced_regulations mapped to ELI ids (pl-du-YYYY-NNN) plus articles_refs in the artNNNparN scheme. Live from SAOS; not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSAOS judgment id.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It discloses the tool is 'Live from SAOS' (network dependency) and 'not legal advice' (user-facing caveat). But it doesn't disclose behavioral traits like response size, pagination, error handling for invalid ids, or rate limits despite being a live fetch.

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 core purpose in the first clause, then efficiently enumerates return fields. The field enumeration is slightly verbose but useful. Second sentence adds context. Approaching appropriately compact given the informational payload.

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?

For a single-param fetch tool, the description covers purpose, id provenance, return fields, and caveats. No output schema exists, so the description's enumeration of return content (judges, decision, summary, legal bases, referenced_regulations) compensates well. Slight gap on error/not-found behavior but adequate.

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% for the single param 'id' with description 'SAOS judgment id.' The description adds the crucial context that this id comes from search_case_law and is a SAOS identifier, enriching the schema meaning. For a single well-documented param, this is solid.

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?

Specific verb 'Fetch' + clear resource 'single Polish court judgment' identified by SAOS id. Clearly distinguishes from siblings by explicitly referencing search_case_law as the source of the id, and lists detailed return content. Purpose is unambiguous.

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?

Tells the agent the id comes from search_case_law, establishing usage context. Notes it's 'Live from SAOS' and 'not legal advice'. However, doesn't explicitly contrast against siblings like find_judgments_for_provision or caselaw_about, nor give when-not-to-use guidance.

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

list_courtsA

List the Polish court types available for the court_type filter in search_case_law.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. For a read-only list tool this is low-risk, but the description doesn't disclose return format, ordering, or whether the list is exhaustive. It does clarify the data scope (Polish court types only), which adds some value.

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

Conciseness5/5

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

A single, tightly-worded sentence that says exactly what the tool does and why it exists. Zero wasted words — ideal conciseness.

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?

This is a simple dependency-support tool (feeds a filter in another tool). The description fully covers its role. It doesn't describe the return structure, but no output schema exists and for a simple list tool this is acceptable. Minor gap: doesn't state whether results are ordered or localized.

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?

The tool has 0 parameters and the schema is empty (100% coverage trivially). With no parameters to document, the description's clarification of what the output represents is all that's needed. Baseline 4 for a no-param tool is appropriate.

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?

Clear verb+resource: 'List the Polish court types' with specific purpose (for the court_type filter in search_case_law). It distinguishes itself from siblings by referencing a specific filter in another tool, though it doesn't explicitly contrast with all sibling tools.

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?

It states the purpose contextually — that the output is for use as a filter in search_case_law — which implies when to use it. However, it doesn't explicitly say when NOT to use it or mention alternatives among the sibling tools.

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

search_case_lawA

Search Polish court judgments (orzecznictwo) live from the SAOS API (saos.org.pl). Returns matching judgments with snippets (>>> <<< around matches), court, case number, and date. Use get_judgment to fetch the full text of a result. Data is sourced live from SAOS, separate from statutory law. Not legal advice; verify against official court portals.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order (default relevance).
limitNoMax results, 1-100 (default 10).
queryYesFull-text query (Polish).
date_toNoOptional end date YYYY-MM-DD.
date_fromNoOptional start date YYYY-MM-DD.
court_typeNoOptional court type filter.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations were provided, so the description carries full burden. It discloses that data is live from SAOS, includes snippet format (>>> <<< markers), and clarifies it's not legal advice requiring verification against official portals. This is meaningful behavioral context beyond a simple mutation/read distinction.

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?

Four sentences, each earning its place: source identification, return format + sibling pointer, data separation nuance, and legal disclaimer. Slightly dense but efficient; no fluff. The data-source and disclaimer sentences add genuine value rather than padding.

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?

Given no output schema and no annotations, the description covers search purpose, return format, data source, sibling linkage, and legal caveats. For a 6-param tool with documentation-rich schema, this is reasonably complete. It could benefit from mentioning pagination or result-count limits more explicitly, but the defaults are in the schema.

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 description coverage is 100%, so all 6 parameters are already documented in the schema. The description adds value by explaining the query language (Polish full-text), the return format (snippets, court, case number, date), and the default sort behavior (relevance per the schema enum default). This supplements rather than repeats schema info.

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?

Description clearly states a specific verb ('Search') + resource ('Polish court judgments from SAOS API'). It names the data source, distinguishes from statutory law, and differentiates from siblings by noting that get_judgment fetches full text — making this the search counterpart. High clarity.

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?

Description gives clear when-to-use context (searching case law live from SAOS, separate from statutory law) and points to get_judgment as the follow-up for full text. However, it doesn't explicitly name alternatives like find_judgments_for_provision or say when NOT to use this tool.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.0.0
    • First observedcaselaw_about
    • First observedcaselaw_list_sources
    • First observedcheck_constitutional_status
    • First observedfind_judgments_for_provision
    • First observedget_judgment
    • First observedlist_courts
    • First observedsearch_case_law

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have clearly distinct purposes: search, fetch by id, list courts, and specialized statutory-citation lookups are easy to tell apart. The main ambiguity is between caselaw_about and caselaw_list_sources, which both describe provenance, coverage, and source metadata.

Naming Consistency4/5

The dominant pattern is verb_noun: search_case_law, get_judgment, list_courts, find_judgments_for_provision, check_constitutional_status. The tools caselaw_about and caselaw_list_sources break this pattern with a caselaw_ prefix and a non-verb name, but the inconsistency is minor and the names remain readable.

Tool Count5/5

Seven tools is well within the ideal range for a focused legal-research server. Each tool supports a distinct part of the caselaw workflow without unnecessary duplication.

Completeness5/5

The server covers the core case-law lifecycle: discovering court types, searching judgments, fetching full texts, looking up citations by statutory provision, checking constitutional-court rulings, and inspecting source provenance. No obvious dead-end or missing operation is apparent for its stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers