Nalegalu MCP
Semantic search over Polish law and case law, citing the exact in-force article.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"nalegalu": {
"url": "https://mcp.nalegalu.org/mcp"
}
}
}Puntos de conexión remotos
https://mcp.nalegalu.org/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (7)
🟢search_law(query, limit, address, domain, article, ...)
Search current Polish statutes and return article-level hits. Start here for a natural-language legal issue or a direct citation. Use the user's own Polish wording, e.g. "kupiłem wadliwy towar od firmy jakie mam prawa". Do not add address, domain, article, act_type, or status filters unless the user explicitly supplied that restriction. Results are primary-source material, not legal advice.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
},
"address": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Address"
},
"domain": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Domain"
},
"article": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Article"
},
"act_type": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Act Type"
},
"status": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"include_non_in_force": {
"default": false,
"title": "Include Non In Force",
"type": "boolean"
},
"case_law_boost": {
"default": 0,
"title": "Case Law Boost",
"type": "number"
},
"candidate_multiplier": {
"default": 4,
"title": "Candidate Multiplier",
"type": "integer"
},
"top_cases": {
"default": 3,
"title": "Top Cases",
"type": "integer"
},
"retrieval_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Retrieval Mode"
}
},
"required": [
"query"
],
"title": "search_lawArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "search_lawDictOutput"
}🟢get_article(address, article_key, paragraph_key)
Fetch the exact text of one article (or paragraph) of a Polish legal act. Use after search_law or another trusted source supplied the address and article key; never guess them. Deterministic lookup by act address (e.g. WDU19740240141) and article key (e.g. "133" or "Art. 133."). Optional paragraph_key (e.g. "1" or "§ 1.") narrows the result to a single paragraph.
Esquema de entrada
{
"type": "object",
"properties": {
"address": {
"title": "Address",
"type": "string"
},
"article_key": {
"title": "Article Key",
"type": "string"
},
"paragraph_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Paragraph Key"
}
},
"required": [
"address",
"article_key"
],
"title": "get_articleArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "get_articleDictOutput"
}🟢related_cases(address, article_key, paragraph_key, limit)
List SAOS cases related to one statutory provision. Use after identifying a relevant provision. A related-case link is not proof of a legal rule: inspect the judgment with get_case before asserting its holding. Deterministic lookup by act address (e.g. WDU19740240141) and article key. Returns case number, court, date, relevance score when available, and a SAOS link per case; scored cases sort first. Newer data also carries citation context per case: mentions (how many times the article appears in the judgment text), mention_match ("exact" = found with a matching act marker; "ambiguous" = bare mention, possibly another act's article — discount it), and context (snippet around the mention). mentions=0 or a missing context means the link comes from SAOS metadata but the text scan could not confirm it — treat relevance as unverified rather than assuming the case is on point. If count is zero, it means this local provision-to-case link dataset has no rows; it is not an exhaustive SAOS or case-law search.
Esquema de entrada
{
"type": "object",
"properties": {
"address": {
"title": "Address",
"type": "string"
},
"article_key": {
"title": "Article Key",
"type": "string"
},
"paragraph_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Paragraph Key"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
}
},
"required": [
"address",
"article_key"
],
"title": "related_casesArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "related_casesDictOutput"
}🟢research_cases(query, provision_limit, cases_per_provision, candidate_limit, context_max_chars, ...)
Discover related-case candidates for a natural-language legal issue. This tool first searches statutes, then follows local provision-to-case links for several distinct provisions and deduplicates by SAOS ID. ``rerank=false`` is the inexpensive deterministic discovery stage. With ``rerank=true``, it fetches at most ``rerank_fetch_limit`` public SAOS excerpts and reranks them only when the server has explicitly configured a Cohere reranker. It never decides a holding: call ``get_case`` for every judgment used in an answer.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"provision_limit": {
"default": 5,
"title": "Provision Limit",
"type": "integer"
},
"cases_per_provision": {
"default": 80,
"title": "Cases Per Provision",
"type": "integer"
},
"candidate_limit": {
"default": 40,
"title": "Candidate Limit",
"type": "integer"
},
"context_max_chars": {
"default": 450,
"title": "Context Max Chars",
"type": "integer"
},
"rerank": {
"default": false,
"title": "Rerank",
"type": "boolean"
},
"rerank_fetch_limit": {
"default": 75,
"title": "Rerank Fetch Limit",
"type": "integer"
},
"rerank_result_limit": {
"default": 10,
"title": "Rerank Result Limit",
"type": "integer"
},
"case_text_max_chars": {
"default": 6000,
"title": "Case Text Max Chars",
"type": "integer"
}
},
"required": [
"query"
],
"title": "research_casesArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "research_casesDictOutput"
}🟢get_case(saos_id, max_chars, offset)
Fetch one SAOS court judgment (metadata + bounded text excerpt). Use only with a saos_id returned by related_cases, research_cases, or search_case_by_signature. Long judgments are paged: when has_more is true, call again with offset=next_offset. If the response has ok=false with a fallback hint, SAOS is unavailable or rate-limited — fetch the returned saos_url yourself with your own web tools instead of retrying this tool.
Esquema de entrada
{
"type": "object",
"properties": {
"saos_id": {
"title": "Saos Id",
"type": "integer"
},
"max_chars": {
"default": 6000,
"title": "Max Chars",
"type": "integer"
},
"offset": {
"default": 0,
"title": "Offset",
"type": "integer"
}
},
"required": [
"saos_id"
],
"title": "get_caseArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "get_caseDictOutput"
}🟢search_case_by_signature(signature, limit, court_type)
Verify a cited case signature (sygnatura), e.g. "II CSK 448/14". Use before relying on a judgment cited by a user or another agent. Answers from a local index of all SAOS judgments first; only on a local miss does it query live SAOS. Read the verdict field: "confirmed" (matches listed with saos_id, court, date, type — different courts reuse signatures, so check the court), "not_found" (strong evidence the citation is fabricated or wrong), "outside_coverage" (administrative courts NSA/WSA are not in SAOS — verify in CBOSA instead), "unverified" (local miss and SAOS unreachable; do not treat as nonexistent). Optional court_type: COMMON, SUPREME, CONSTITUTIONAL_TRIBUNAL, NATIONAL_APPEAL_CHAMBER. has_text=false on a match means SAOS stores no text for it, so verify_quote cannot check quotes against that judgment.
Esquema de entrada
{
"type": "object",
"properties": {
"signature": {
"title": "Signature",
"type": "string"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
},
"court_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Court Type"
}
},
"required": [
"signature"
],
"title": "search_case_by_signatureArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "search_case_by_signatureDictOutput"
}🟢verify_quote(saos_id, quote, min_similarity)
Check whether a supplied quote appears in a SAOS judgment. Use only after resolving the judgment to a saos_id. This validates wording, not whether the quote supports a legal conclusion. Pass the saos_id (from search_case_by_signature or related_cases) and the fragment as quoted. One call replaces paging through the full text: verdict is "exact" (verbatim after normalizing whitespace, quote marks and dashes), "near_match" (best passage plus similarity score — compare it against the claim), or "not_found" (treat the quote as fabricated or misattributed). If ok=false with a fallback hint, fetch saos_url with your own web tools instead of retrying.
Esquema de entrada
{
"type": "object",
"properties": {
"saos_id": {
"title": "Saos Id",
"type": "integer"
},
"quote": {
"title": "Quote",
"type": "string"
},
"min_similarity": {
"default": 0.75,
"title": "Min Similarity",
"type": "number"
}
},
"required": [
"saos_id",
"quote"
],
"title": "verify_quoteArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "verify_quoteDictOutput"
}Comunidad
Evidencia