Skip to main content
Glama
apiotrowski-afk

legal-cite

legal-cite

Legal citation verifier (PL / EU law) — an MCP server that fetches the exact, in-force wording of a cited article straight from the official source. An anti-hallucination tool for Claude (and any MCP client): instead of trusting the model's memory of a statute, it returns the verbatim text of the cited article from the official register.

Weryfikator cytatów prawnych (prawo PL / UE) — serwer MCP pobierający dokładne, aktualne brzmienie cytowanego artykułu prosto z oficjalnego źródła. Narzędzie anti-halucynacyjne dla Claude (i dowolnego klienta MCP).

  • 🇵🇱 PL lawapi.sejm.gov.pl (ELI). Returns the consolidated text (tekst jednolity, currently in force), not the original as-promulgated version.

  • 🇪🇺 EU law — EUR-Lex (Polish text). Note: EUR-Lex sometimes serves a bot-challenge (HTTP 202) → returns an error instead of text.

Returns only the cited article (not the whole act). The quote comes straight from the source.


English

Tools

  • verify_article("art. 45 u.k.k.") — the wording of a provision. Format: art. N [ust. M] CODE. Handles letter suffixes (art. 36a), § as a unit (art. 58 § 2 KC), superscripts (art. 385¹ / 385[1]).

  • list_acts() — list of supported act codes (PL + EU).

Run locally (stdio — Claude Desktop / Claude Code)

pip install -e .
legal-cite          # stdio

claude_desktop_config.json:

{ "mcpServers": { "legal-cite": { "command": "legal-cite" } } }

Deploy to Cloud Run (streamable-http — one shared URL)

gcloud run deploy legal-cite \
  --source=. \
  --region=europe-west4 \
  --allow-unauthenticated \
  --memory=256Mi --cpu=1 --max-instances=2 --port=8080

Public, no-auth is safe here — the service serves only public legal texts (no data, no database, no LLM calls).

Connect in Claude: Connectors → Add custom connectorhttps://<service-url>.run.app/mcp (streamable-http mounts MCP at /mcp).

Add a new act

Add an entry to PL_ACTS (key = abbreviation; pub/year/pos from the Journal of Laws / ELI) or EU_ACTS (key = abbreviation, celex) in legal_cite/core.py.


Related MCP server: Slovak Law MCP Server

Polski

Narzędzia

  • verify_article("art. 45 u.k.k.") — brzmienie przepisu. Format: art. N [ust. M] KOD. Obsługuje sufiks literowy (art. 36a), § jako jednostkę (art. 58 § 2 KC), indeks górny (art. 385¹ / 385[1]).

  • list_acts() — lista obsługiwanych kodów aktów (PL + UE).

Uruchomienie lokalne (stdio — Claude Desktop / Claude Code)

pip install -e .
legal-cite          # stdio

Wpis w claude_desktop_config.json:

{ "mcpServers": { "legal-cite": { "command": "legal-cite" } } }

Deploy na Cloud Run (streamable-http — współdzielony URL)

gcloud run deploy legal-cite \
  --source=. \
  --region=europe-west4 \
  --allow-unauthenticated \
  --memory=256Mi --cpu=1 --max-instances=2 --port=8080

Publiczny bez auth jest tu bezpieczny — serwis serwuje wyłącznie publiczne teksty aktów (zero danych, zero bazy, zero wywołań LLM).

Podłączenie w Claude: Connectors → Add custom connectorhttps://<adres-serwisu>.run.app/mcp.


Część zestawu otwartych narzędzi LegalTech (PL):

  • legal-cite-pl(ten projekt) MCP: weryfikacja brzmienia przepisu PL/UE ze źródła.

  • commercial-legal-pl — Claude skill: redakcja i analiza umów (PL); używa verify_article.

  • anon-legal-pl — lokalna anonimizacja akt prawnych (PL).

  • kancelaria-dms — DMS/CRM dla kancelarii (Google Workspace).

License

Apache License 2.0 — see LICENSE.

Available Tools

2 tools
list_actsA

Lista obsługiwanych kodów aktów (PL + UE) dla verify_article.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The description does not disclose any behavioral traits such as read-only nature, side effects, or return format. Since no annotations are provided, the description carries the burden, but it only states the purpose without behavioral details. However, for a parameterless listing tool, the lack of behavioral information is less critical.

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 a single sentence, which is concise. However, it is in Polish, which may not be ideal for English-language agents. The structure is front-loaded and efficient, but language consideration reduces the score slightly.

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 zero parameters and the presence of an output schema (not shown but indicated), the description is complete enough. It states the tool lists codes for verify_article, which is sufficient for the agent to understand the tool's role. No additional requirements are needed.

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?

There are no parameters, and the schema covers 100% (no parameters). The baseline for 0 parameters is 4, and the description does not add parameter semantics beyond what the schema provides, which is appropriate.

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 lists supported act codes (PL+EU) for verify_article. The name 'list_acts' is a verb+resource, and the sibling tool verify_article provides context, distinguishing this listing function from verification.

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 implies the tool is used to get codes for verify_article, but it does not explicitly state when to use it or provide alternatives. The context is clear from the sibling tool, but no explicit guidance such as 'use this tool to retrieve codes before calling verify_article' is given.

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

verify_articleA

Dokładne brzmienie cytowanego przepisu z OFICJALNEGO źródła (api.sejm.gov.pl dla PL, EUR-Lex dla UE) — zwraca tylko ten artykuł, nie cały akt. Zwraca AKTUALNE brzmienie (tekst jednolity). Anti-halucynacja: weryfikacja cytatu wprost ze źródła. Format: 'art. N [ust. M] KOD'. Przykłady: 'art. 45 u.k.k.', 'art. 385 KC', 'art. 28 ust. 3 RODO', 'art. 10 CCD'. Kody: list_acts().

ParametersJSON Schema
NameRequiredDescriptionDefault
citationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided. Description compensates by stating it returns current wording (consolidated text), only the requested article, and that it uses official sources. No contradictions.

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?

Description is somewhat lengthy but each sentence adds value: purpose, sources, behavior, format, examples. Front-loads the main purpose. Could be slightly tighter but still efficient.

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 the presence of an output schema (not shown but indicated), the description adequately covers input format, sources, and behavior. Sufficient for a single-parameter tool with clear return (article text).

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 coverage is 0% for the single parameter 'citation'. Description provides detailed format, examples, and code listing instruction, adding essential meaning beyond the schema.

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 it returns the exact wording of a cited provision from official sources (api.sejm.gov.pl, EUR-Lex), returns only the article not the whole act, and distinguishes from sibling list_acts by focusing on verification.

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 explains when to use: for verifying citations directly from source (anti-hallucination). Provides format and examples, and mentions sibling tool list_acts for codes. Does not explicitly state when not to use, but context is clear.

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. 2 tool updatesv0.1.0
    • First observedlist_acts
    • First observedverify_article

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely separate purposes: listing supported act codes and verifying a single article citation. There is no overlap or ambiguity.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern (list_acts, verify_article) and are easily readable.

Tool Count3/5

With only two tools, the server feels very minimal. While the domain is narrow, additional tools for searching or retrieving full act texts would be expected.

Completeness3/5

The server handles listing codes and verifying individual articles but lacks tools for retrieving full act texts or verifying multiple citations, leaving notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers