Skip to content

lahend.ee — Estonian court decisions

by Nimistu · remote · no sign-in to list tools · v1.0.0 · published by GitHub user Nimistu

Estonian court decisions: full-text case-law search, each ruling linked to its companies. Free.

Changes · 9

20 tools: 9 change things and 11 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http lahend https://lahend.ee/api/lahend-mcp/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

20 tools

Changes things 9Claude Code: ask
  • authority_documents_for_rulingGiven a ruling id, return documents from Estonian public-authority document registers that name the same companies - procurement files, licences, correspondence, inspections.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Given a ruling id, return documents from Estonian public-authority document registers that name the same companies - procurement files, licences, correspondence, inspections. A court dispute and an authority's file about the same company are the two halves nobody normally sees together. Sourced from dokumendiregister.ee. This depends on the ruling having a company linked to it, which holds for about 19% of the corpus: parties are extracted from the decision text by registry code, and a judgment that names a company without its code yields no link. An empty list therefore means either no linked company or no matching documents - it is not evidence that no authority holds a file.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • estonian_rulings_citing_eu_lawGiven a CELEX (an act like '32016R0679', or a Court of Justice judgment like '62014CJ0362'), return the Estonian court decisions that cite it.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Given a CELEX (an act like '32016R0679', or a Court of Justice judgment like '62014CJ0362'), return the Estonian court decisions that cite it. This is the join no other source publishes: EUR-Lex knows the EU instrument, Riigi Teataja knows the Estonian decision, and nobody connects them.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • eu_law_cited_by_rulingGiven an Estonian ruling id (from `search`), list the EU instruments it cites - regulations, directives and Court of Justice judgments - with the articles named where the decision …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Given an Estonian ruling id (from `search`), list the EU instruments it cites - regulations, directives and Court of Justice judgments - with the articles named where the decision names them.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • most_cited_eu_lawRanked by how many Estonian decisions cite them.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Ranked by how many Estonian decisions cite them. A good starting point for 'which EU law actually matters in Estonian practice' - the answer is concentrated in consumer protection, jurisdiction, asylum and agriculture rather than spread evenly.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • most_cited_sectionsThe statute paragraphs cited by the most court decisions, ranked.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The statute paragraphs cited by the most court decisions, ranked. A map of where Estonian litigation actually happens, and a good starting point when exploring an unfamiliar area.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • recent_rulingsThe newest published rulings (by decision date), across all courts and areas of law.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The newest published rulings (by decision date), across all courts and areas of law.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • rulings_by_companyGiven an 8-digit Estonian registry code (registrikood), return every court decision that names that company, with its role (claimant/defendant/etc.) and the other parties.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Given an 8-digit Estonian registry code (registrikood), return every court decision that names that company, with its role (claimant/defendant/etc.) and the other parties. This company↔case-law join is unique to lahend.ee. Find a registry code via nimistu.ee or the nimistu MCP.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • rulings_citing_sectionGiven an act abbreviation and a §, return the court decisions that actually cite it, newest first, with a total count.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Given an act abbreviation and a §, return the court decisions that actually cite it, newest first, with a total count. Built from 3.05M citations extracted from the decision texts themselves. This answers 'how have the courts applied KarS § 199' - the question statute text alone cannot answer, and the reason to use lahend.ee over reading Riigi Teataja.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • sections_cited_by_rulingGiven a ruling id (from `search`), list the statute paragraphs it cites, with the lõiked named and each § resolved to its act.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Given a ruling id (from `search`), list the statute paragraphs it cites, with the lõiked named and each § resolved to its act. Use it to see the legal basis of a decision without reading the whole judgment, then `fetch` a `section:` id for the provision text.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
Only reads 11Claude Code: allow
  • eu_actFetch an EU regulation or directive by CELEX (e.g.No findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    Description, as the server wrote it
    Fetch an EU regulation or directive by CELEX (e.g. '32016R0679' for the GDPR), article by article, in Estonian. Also reports how many Estonian court decisions cite it and which articles they lean on - the part EUR-Lex cannot answer.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • fetchRetrieve the full text + metadata for any `id` returned by `search`.No findings

    Why it is in this group

    • The name "fetch" says "fetch": a word for reading.
    Description, as the server wrote it
    Retrieve the full text + metadata for any `id` returned by `search`. Handles all three kinds: `ruling:<n>` (a court decision with its linked companies), `law:<n>` (an act in its current redaktsioon, all paragraphs) and `section:<n>:<par>` (a single paragraph - prefer this over pulling a whole act). Returns Markdown plus the canonical lahend.ee URL.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_law_sectionReturn a single § of an Estonian act, addressed the way lawyers cite it: an abbreviation and a number, e.g.No findings

    Why it is in this group

    • The name "get_law_section" says "get": a word for reading.
    Description, as the server wrote it
    Return a single § of an Estonian act, addressed the way lawyers cite it: an abbreviation and a number, e.g. abbrev='KarS', paragrahv='199', or abbrev='TsMS', paragrahv='430'. This is the precise way to answer a legal question - pulling a whole act costs thousands of tokens and buries the answer. Text comes from the act's current redaktsioon.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • law_versionsList an act's redaktsioonid (consolidated versions) with their validity ranges, newest first.No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    Description, as the server wrote it
    List an act's redaktsioonid (consolidated versions) with their validity ranges, newest first. Use this to answer 'what did this say on date X' - Estonian law is amended constantly and the current text is often not the one that applied to the facts.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_categoriesAll areas of law (asja_kategooria) present in the corpus, each with its ruling count.No findings

    Why it is in this group

    • The name "list_categories" says "list": a word for reading.
    Description, as the server wrote it
    All areas of law (asja_kategooria) present in the corpus, each with its ruling count. Use a category as the `category` filter in `search_rulings`. These counts do NOT sum to the corpus size: about 26% of rulings carry no category, so they appear in `list_courts` totals and in unfiltered search but in no category here. Filtering by category silently excludes them.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_courtsAll Estonian courts that have published decisions, each with its ruling count.No findings

    Why it is in this group

    • The name "list_courts" says "list": a word for reading.
    Description, as the server wrote it
    All Estonian courts that have published decisions, each with its ruling count. Use a court name as the `court` filter in `search_rulings`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • search_law_sectionsFull-text search across the paragraphs of every in-force Estonian act (4M+ sections).No findings

    Why it is in this group

    • The name "search_law_sections" says "search": a word for reading.
    Description, as the server wrote it
    Full-text search across the paragraphs of every in-force Estonian act (4M+ sections). Answers 'which provision governs X' directly, returning the paragraphs themselves rather than acts you then have to read. Each hit carries a `section:` id for `fetch`.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • search_lawsFind Estonian acts by title or abbreviation (KarS, TsMS, VÕS…).No findings

    Why it is in this group

    • The name "search_laws" says "search": a word for reading.
    Description, as the server wrote it
    Find Estonian acts by title or abbreviation (KarS, TsMS, VÕS…). Returns each act with a `law:` id for `fetch`, its type, issuer and whether it is still in force. Use get_law_section when you already know the paragraph you want.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • search_rulingsFull-text ruling search with optional filters: court name, case type (civil/administrative/criminal), area of law (asja_kategooria) and a decision-date range.No findings

    Why it is in this group

    • The name "search_rulings" says "search": a word for reading.
    Description, as the server wrote it
    Full-text ruling search with optional filters: court name, case type (civil/administrative/criminal), area of law (asja_kategooria) and a decision-date range. Returns a page of rulings with a total count. Use `list_courts` / `list_categories` to discover valid filter values. Two coverage limits worth knowing, because both are silent: - `companies` is populated on about 19% of rulings. Parties are extracted from the decision text by registry code, and many judgments name a company without ever stating its code. An EMPTY array means no code was found in the text, NOT that no company was involved. - About 26% of rulings carry no `asja_kategooria` at all, so filtering by `category` silently excludes them. Omit the filter to search the whole corpus.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http lahend https://lahend.ee/api/lahend-mcp/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__lahend__search",
      "mcp__lahend__fetch",
      "mcp__lahend__get_law_section",
      "mcp__lahend__search_law_sections",
      "mcp__lahend__search_laws",
      "mcp__lahend__law_versions",
      "mcp__lahend__search_rulings",
      "mcp__lahend__list_courts",
      "mcp__lahend__list_categories",
      "mcp__lahend__eu_law_search",
      "mcp__lahend__eu_act"
    ],
    "ask": [
      "mcp__lahend__rulings_citing_section",
      "mcp__lahend__sections_cited_by_ruling",
      "mcp__lahend__most_cited_sections",
      "mcp__lahend__authority_documents_for_ruling",
      "mcp__lahend__rulings_by_company",
      "mcp__lahend__recent_rulings",
      "mcp__lahend__estonian_rulings_citing_eu_law",
      "mcp__lahend__eu_law_cited_by_ruling",
      "mcp__lahend__most_cited_eu_law"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as lahend. Review it before you use it.