eu.nulegal/recht

nu:legal Deutsches Recht

German federal and Land statutes plus court decisions for agents. Keyless, read-only.

Endpointhttps://recht.nulegal.eu/v1/mcp (streamable-http)
Registry version1.0.4
Now11 tools · grade A (91) · pin ts_698a63364c556ac86834f943db3425e6 · protocol 2025-06-18
First / last listed2026-11-08 00:53 UTC / 2026-11-08 00:53 UTC
Grade over time2026-11-08: A (91), 11 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-11-08 00:53 UTC
11 tools, grade A (91)

Tools: resolveIdentifiers search getNorm listNormVersions listCitingDecisions listCitedAuthorities listCasePassages getChanges getCoverage search_lawyers get_lawyer

Current tools (11)

resolveIdentifiersLook up German legal citations, up to 100 at once: a § or Article, an Aktenzeichen, an ECLI or a Fundstelle. Use it to find a decision by its docket and to check a citation before you state it. Pass each citation as you hold it, with court and date: they pick the right decision where a docket repeats. It never guesses. A miss is `not_in_corpus`; `attested` / `known_missing` means the decision exis
params: citations*, include
searchFind statutes and decisions on a topic or a question, in one call. Use it when you hold no citation yet. German keywords or a full question both work; decisions are matched by meaning. A decision hit carries `url` (pass it as `case` to the decision tools), `ecli` and `cited_by`; a statute hit carries `slug` and `ref_norm` (pass them as `law` and `ref` to getNorm). Full text is held for Bayern, Bra
params: q*, scope, limit, include_repealed, court, court_level, state, panel, from, to, decision_type, sort
getNormThe text of one provision (§ or Article) as Markdown. `law` is the abbreviation ('BGB', 'StGB', 'DSGVO'; Hessen: 'HBO'), `ref` the number ('573', '3a'). For the text on a past date add `as_of` (YYYY-MM-DD; versions are held from 2019-06-10; for EU acts, the EMRK and some Landesrecht from the day their held text applies). The answer says how many versions are held (`versions_held`) and how many dec
params: law*, ref*, as_of, format, compare_to
listNormVersionsEvery stored version of one provision with its dates, newest first. Use it to see when a provision changed, then read a version with getNorm `as_of`. `at_archive_floor` marks a text that was already in force when the archive began. To compare two versions, call `getNorm(compare_to=…)`: the answer's `diff` is the word diff, and each side says what its date is (`date_basis`: `in_force`, `eurlex_cons
params: law*, ref*
listCitingDecisionsWho cites this: the decisions citing a provision (`law` + `ref`) or a decision (`case`). Ranked by weight; `sort: "recent"` gives the newest first. Each citer links to the Randnummer where it cites. The graph is built over every decision held, federal, Land and EU courts alike, and links federal, EU and Land provisions; it does not link Hessen provisions, which answer `total: 0` with `coverage.com
params: law, ref, case, limit, offset, sort
listCitedAuthoritiesWhat one decision cites: the provisions (with how often) and the decisions it relies on. Example: {"case": "bgh/2017-03-29/viii-zr-45-16"}
params: case*, lang, offset
listCasePassagesRead a decision: its paragraphs, each with the court's Randnummer (`rn`) and a link. `case` takes an ECLI, our decision URL or an Aktenzeichen. Jump to a Randnummer with `around`, page with `offset` and `limit`. The first page also says how often the decision is cited and by whom. The answer carries `card`: typed `headnotes` (Leitsatz apart from Orientierungssatz), the `tenor` where the source mar
params: case*, offset, limit, around, lang, include
getChangesWhat changed here, as JSON. Two ways to read it. The cursor feed (send `kinds`, or `cursor`): everything that changed, oldest first, readable to the end without gaps: decisions added or changed, provisions with a new text (new Fassung, new provision, new law), and new citation links (decision X now cites Y, or decision Y gained a citer). Start with `kinds` (and `since`, default 7 days ago), then
params: since, limit, cursor, kinds, court, land, law
getCoverageWhat the corpus holds and what it does not: laws, decisions, courts, the version archive and the Länder covered. Call it before you report that something does not exist. The answer's `coverage` block is /v1/coverage: statutes per Land (`statutes`: full_text, partial or none), decisions per court level, the citation graph and what every version date is, all from one daily table. Example: {}
params: include, court
search_lawyersFind lawyers in Germany in the official register of the Bundesrechtsanwaltskammer. Give `city` (a German city or place; English names such as Munich or Cologne work; a 5-digit postcode is searched 10 km around, a smaller place 25 km), `name` (a lawyer or a firm), or both. Narrow with `area`, one of the 24 Fachanwalt areas in German or English ('Arbeitsrecht' or 'employment law', 'Strafrecht' or 'c
params: city, area, language, name, limit, offset
get_lawyerOne lawyer's profile by `id` from search_lawyers: the official register entry with the date it was checked (chamber, admission, firm, office address, phone, fax, e-mail, website, beA id), Fachanwalt titles, contact data, languages, focus areas, opening hours and ratings per platform with the combined score. It holds what the public profile page (`profile_url`) shows, no more. Example: {"id": "8a0f
params: id*

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.