Skip to main content
Glama

mcp-lovdata

MCP-server for norske lover og sentrale forskrifter fra Lovdatas åpne datasett. Korpuset lastes ned, parses og indekseres lokalt i SQLite med FTS5, slik at søk går på millisekunder uten nettverk.

Hvorfor lokal indeks

Lovdata har ikke et gratis spørrings-API. Det som er åpent er to bulk-arkiver som legges ut på nytt hver natt:

  • gjeldende-lover.tar.bz2 — 758 lover

  • gjeldende-sentrale-forskrifter.tar.bz2 — 5 114 forskrifter, delegeringer, instrukser og stortingsvedtak

Til sammen 27 MB komprimert. Alt annet — rettspraksis, forarbeider, historiske versjoner, lokale forskrifter — ligger bak betaling i Lovdata Pro. Dataene her er lisensiert under NLOD 2.0 og kan fritt brukes til alle formål.

Filene er XHTML med semantiske klassenavn, ikke et maskinformat. src/parse.js leser metadata, kapittelstruktur, paragrafer og endringshistorikk ut av dem.

Related MCP server: Icelandic Law MCP

Verktøy

Verktøy

Hva det gjør

search

Fulltekstsøk i alle paragrafer, med utdrag. Kan avgrenses til én lov, én type eller ett departement.

get_document

Slår opp en lov på vanlig navn, dokid eller LOV-kode. Metadata, hjemmel og innholdsfortegnelse.

get_article

Én paragraf ordrett, med endringshistorikk. Bruk denne før du siterer.

list_documents

Bla etter type, departement eller endringsdato.

status

Når indeksen sist ble bygget, og hvor mye den inneholder.

sync

Henter ferske datapakker og bygger indeksen om.

caselaw_search

Søker i EMD-praksis via Europarådets åpne HUDOC-base.

caselaw_get

Henter én EMD-dom i fulltekst, med mulighet for å hoppe til en seksjon.

preparatory_search

Søker i Stortingets saker fra 1986 — forarbeidene.

preparatory_get

Saksgang, vedtak og dokumenttekst for én stortingssak.

ombudsman_search

Søker i Sivilombudets uttalelser.

ombudsman_get

Henter én uttalelse i fulltekst.

Rettspraksis

Norsk rettspraksis finnes ikke i noen fri, maskinlesbar kilde. Lovdata Pro tar betalt for Høyesterett og lagmannsrettene, og domstol.no sperrer /api i robots.txt.

Det som derimot er åpent, er Den europeiske menneskerettsdomstolen gjennom Europarådets HUDOC-base — og den er ikke et sidespor: menneskerettsloven § 2 gjør EMK til norsk lov, og § 3 gir den forrang ved motstrid med annen lovgivning. Basen har 906 avgjørelser mot Norge, med fulltekst, artikkelhenvisninger og konklusjon.

caselaw_search går live mot HUDOC — ingen lokal indeks, ingen autentisering. Vær oppmerksom på to feller i deres spørresyntaks:

  • sort er obligatorisk. Uten den svarer HUDOC med en 404-side i HTML.

  • Ukjente sorteringsfelt gir stille null treff, ikke en feilmelding. rank er ett av dem, så relevanssortering finnes ikke — bruk caseName for å finne én bestemt sak.

Forarbeider

Stortingets API (data.stortinget.no, versjon 1.6) er åpent og uten autentisering, men har ingen fritekstsøk — bare uttrekk per sesjon. Sakslistene er små og gamle sesjoner endrer seg aldri, så de indekseres lokalt sammen med lovtekstene: 24 870 saker fra 1986-87 til i dag. Bare de to nyeste sesjonene hentes på nytt ved hver sync.

Søket dekker sakstitler, henvisninger og emneord — ikke dokumentteksten. Selve teksten i innstillinger og proposisjoner hentes live på forespørsel.

To ting API-et krever at man vet:

  • Datoene er lokal midnatt i formatet /Date(1787522400000+0200)/. Uten å legge til offsetet havner man konsekvent på dagen før.

  • Samme sak ligger i to sesjoner — den den ble fremmet i og den den ble behandlet i, med samme id. Nøkkelen må være sak pluss sesjon, ellers forsvinner 1 100 saker.

Forvaltningspraksis

Sivilombudets uttalelser via WordPress' åpne REST-API: 1 965 saker med fulltekst og fungerende serversøk. Ikke bindende som en dom, men forvaltningen retter seg etter dem, og de er en etablert rettskilde i forvaltningsretten.

Det som ikke er med

EFTA-domstolen ble undersøkt og forkastet. REST-API-et deres gir bare saksnummer («E-12/26») uten parter, tema eller sammendrag, og sakssidene rendres med JavaScript. Det finnes ingen maskinlesbar inngang til innholdet.

Kommandolinje

De samme kildene finnes som kommandoen lovdata. Den importerer modulene direkte — ingen JSON-RPC-omvei — så lokale søk svarer på under et tiendedels sekund.

lovdata sok '"organinterne dokumenter"'      # søk i alle paragrafer
lovdata p offentleglova 11                   # én paragraf ordrett
lovdata lov arbeidsmiljøloven                # metadata og innholdsfortegnelse
lovdata fa offentleglova                     # forarbeider
lovdata sak 89888 --tekst                    # stortingssak med dokumenttekst
lovdata emd --art 8 --viktighet 1            # EMD-dommer mot Norge
lovdata dom 001-214433 --del "FOR THESE REASONS"
lovdata ombud innsyn byggesak                # Sivilombudet
lovdata status

--json gir rå JSON på stdout for videre behandling. lovdata hjelp viser alt.

Installer wrapperen:

ln -sf ~/Work/mcp-lovdata/src/cli.js ~/.local/bin/lovdata

Installasjon

npm install
npm run sync          # ~3 minutter, laster ned 27 MB

Registrer serveren i Claude Code:

claude mcp add --scope user lovdata -- node ~/Work/mcp-lovdata/src/index.js

Indeksen havner i ~/.local/share/mcp-lovdata/lovdata.db (~150 MB). Overstyr med LOVDATA_DB, eller flytt hele mappa med XDG_DATA_HOME.

Slik er det bygget

  • Ingen avhengigheter utover MCP-SDK-en. SQLite kommer fra node:sqlite, som har FTS5 innebygd fra Node 22. Utpakkingen bruker systemets tar.

  • Arkivene pakkes ut i /tmp, ikke i hjemmemappa. Tusenvis av små filer er det dyreste man kan skrive til en mekanisk disk; det som blir liggende igjen er én fil.

  • remove_diacritics 0 i tokenizeren. Æ, ø og å er egne bokstaver på norsk, ikke aksenter over a og o.

  • Bindeord fjernes fra søket. FTS5 krever at alle ord finnes, så «oppsigelse i prøvetiden» mistet ellers treff bare fordi «i» ikke sto i paragrafen. Fraser i anførselstegn røres ikke.

  • Rangering. Paragrafsøk vekter paragrafnavn og overskrift over brødtekst. Navneoppslag løfter treff der navnet står i tittelens parentes — det er der kortnavnet står, som i «Lov om arbeidsmiljø … (arbeidsmiljøloven)» — og foretrekker lov framfor delegeringsvedtak med samme ord i tittelen.

Grenser

  • Bare gjeldende rett. Ingen opphevede lover, ingen historiske versjoner, ingen rettsavgjørelser eller forarbeider.

  • Bare sentrale forskrifter. Lokale og kommunale forskrifter er ikke med.

  • Indeksen er et øyeblikksbilde. Lovdata legger ut nye pakker hver natt; status viser alderen, sync henter på nytt.

  • Dette er ikke juridisk rådgivning. Verktøyet finner og siterer lovtekst.

Utvikling

npm test              # enhetstester for parser og søkesyntaks, ingen nettverk
npm start             # kjør serveren på stdio

Kilder

Lisens

MIT for koden. Lovtekstene er NLOD 2.0 fra Stiftelsen Lovdata.

Available Tools

12 tools
caselaw_getHent en EMD-dom i fulltekstA

Hele teksten i én EMD-avgjørelse, hentet på itemid fra et søketreff. Dommene er lange — ofte 30 000 til 300 000 tegn — så teksten avkortes. Sett section for å hoppe til den delen du trenger: THE FACTS, THE LAW, eller FOR THESE REASONS for domsslutningen.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemidYesHUDOC-id fra et søketreff, f.eks. 001-250427.
sectionNoHopp til første forekomst av denne teksten, f.eks. "THE LAW" eller "FOR THESE REASONS".
maxCharsNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does include the key behavioral trait: the output is truncated because judgments are often 30,000–300,000 characters. It also explains section as a jump-to location and maps 'FOR THESE REASONS' to the operative part. It does not mention behavior on missing sections or exact truncation limits, but those are partly covered by the schema's maxChars constraints.

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?

The description is two sentences: the first front-loads the primary action, and the second adds the essential length/truncation context and the section usage hint. There is no filler or redundancy.

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-document retrieval tool with one required parameter and no output schema, the description plus schema is sufficient to call it correctly: itemid source, section values, and truncation behavior are all present. The main gap is the lack of any stated output format or error behavior, but the operation is simple enough that this is not critical.

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?

The schema already defines two of three parameters with examples and constrains maxChars with default/min/max (67% description coverage). The description adds 'THE FACTS' and the mapping of 'FOR THESE REASONS' to the conclusion, but it does not explicitly tie maxChars to the truncation behavior, so the added semantic value over the schema is modest.

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 states a clear action: fetch the text of one ECHR judgment using an itemid from a search hit. It is specific about the resource (EMD-avgjørelse) and the retrieval mechanism, but it does not explicitly name sibling tools such as caselaw_search or get_document to differentiate 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 phrase 'hentet på itemid fra et søketreff' places this tool after a search operation and tells the agent to supply a HUDOC id. The second sentence also gives concrete guidance on when to set section. However, it never states exclusions or names the alternative tools for other document types.

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

get_articleHent én paragraf ordrettA

Hele teksten i én paragraf, pluss endringshistorikken for den. Bruk dette før du siterer — søketreffene er utdrag med utelatelser. reference tolkes som i get_document, article skrives «§ 14-9» eller «§14-9».

ParametersJSON Schema
NameRequiredDescriptionDefault
articleYesParagrafnummer, f.eks. "§ 100" eller "14-9".
contextNoTa med paragrafen før og etter.
referenceYesLov eller forskrift — navn, dokid eller LOV-kode.

TDQS

A4.5/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 and does disclose important behavior: it returns the full paragraph text plus amendment history, and it contrasts this with incomplete search excerpts. For a read-only retrieval tool this is adequate, though it could state safety/permissions explicitly.

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?

Three short sentences with no filler. The most important guidance—use before quoting—is front-loaded, and parameter clarifications are compactly appended.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-article retrieval tool, the description covers what the tool does, what it returns, when to use it, and how to format both parameters. No output schema exists, but the description still provides enough return-value context.

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%, giving a baseline of 3. The description adds meaningful value by explaining that reference is interpreted as in get_document and by specifying accepted article formats like '§ 14-9' or '§14-9'.

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?

States a precise resource: the full verbatim text of one article plus its amendment history. It clearly distinguishes itself from truncated search snippets and from get_document by focusing on a single paragraph.

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?

Explicitly tells the agent to use this before quoting because search hits are excerpts with omissions. It does not explicitly name all alternatives or state when not to use it, but the provided context makes the intended use unambiguous.

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

get_documentHent en lov eller forskriftA

Slå opp et dokument på vanlig navn («arbeidsmiljøloven», «plan- og bygningsloven»), på dokid («NL/lov/2005-06-17-62») eller på den gamle koden («LOV-2005-06-17-62»).

Gir metadata — departement, ikrafttredelse, siste endring, hjemmel — og innholdsfortegnelsen med alle paragrafer. Sett includeText for hele teksten; for store lover blir den avkortet, og da er search med docId bedre.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoBegrens oppslaget til én dokumenttype.
maxCharsNoTak for teksten.
referenceYesNavn, dokid eller LOV-/FOR-kode.
includeTextNoTa med hele lovteksten.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses what the tool returns, and importantly warns that large laws return truncated text when includeText is set. It does not mention edge cases like ambiguous names or empty results, but the core behavior is transparent.

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 dense sentences, with the primary lookup methods and result contents front-loaded. The second sentence handles the includeText caveat efficiently. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four parameters with full schema coverage and no output schema, the description provides enough context: how to reference documents, what output to expect, when text is truncated, and which sibling to use instead. An agent can correctly select and invoke this tool without further clarification.

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 meaningful semantic value by explaining accepted reference formats ('arbeidsmiljøloven', dokid, LOV-kode), clarifying includeText's truncation caveat, and pointing to search for large full-text needs.

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 states a specific verb and resource: 'Slå opp et dokument' (look up a document) using common name, docid, or legacy code. It clearly describes what is returned—metadata and a table of contents—and implicitly distinguishes itself from sibling tools like search and get_article by describing whole-document retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use an alternative: for large laws with includeText, the text may be truncated, and 'search med docId' is better. This is a clear when-not-to-use condition with a named alternative.

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

list_documentsBla i korpusetA

List dokumenter filtrert på type, departement eller endringsdato, sortert med sist endrede først. Bruk since for «hva er nytt i regelverket siden ...». Uten filtre svarer verktøyet med hvilke departementer som finnes, og hvor mye hvert av dem har publisert.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
sinceNoIkrafttredelse eller endring fra og med, f.eks. "2026-01".
offsetNo
ministryNoDelstreng av departementsnavn, f.eks. "Helse".

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the sort order and the significant no-filter aggregation behavior, both of which are non-obvious. It does not specify the response format or pagination details, but these are partially covered by the schema's limit/offset fields.

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?

Three tight sentences, each adding unique value: the core action, the specific use of 'since', and the no-filter fallback. No filler or repetition, and the main action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers filtering and a special no-filter case, but with 5 parameters, no output schema, and no annotations, it could have stated what fields are returned and how this relates to `get_document` or `search`. The lack of response-shape information and explicit routing to sibling tools leaves some gaps for correct invocation.

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 only 40%, but the description compensates by explaining 'since' as a date filter and interpreting 'departement' as a ministry filter. It also adds the interaction that omitting all filters produces ministry counts. Limit and offset are left to schema defaults, which is acceptable since they are conventional.

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 the tool lists documents with filters on type, ministry, or change date, and sorts by most recently changed. This distinguishes it from the general 'search' sibling by focusing on structured browsing rather than full-text search, though it does not explicitly name that alternative.

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?

It gives explicit guidance for the 'since' parameter ('what's new in the regulations since ...') and explains the no-filter behavior (returns ministry counts). It lacks direct 'when not to use' or explicit comparison to sibling tools like 'search', but the provided usage context is actionable.

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

ombudsman_getHent en uttalelse fra SivilombudetB

Hele teksten i én uttalelse. Saksnummeret står i teksten som SOM-ÅÅÅÅ-NNNN, og det er slik uttalelsen siteres.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesid fra et søketreff.
typeNouttalelser
maxCharsNo

TDQS

B3.2/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 behavioral disclosure burden. It does disclose that the returned content is the complete text of a single statement and adds the useful citation format SOM-ÅÅÅÅ-NNNN. It does not mention output shape, errors, access constraints, or the effect of maxChars, but the core retrieval behavior is reasonably clear.

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, focused sentences with no filler. The purpose is front-loaded in the first sentence, and the citation convention is compactly provided in the second. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a sibling set containing several similar retrieval tools, the description is under-specified. It does not explain when to choose this over ombudsman_search or caselaw_get, nor does it clarify the purpose of type and maxChars. An agent gets the basic what but not enough surrounding context for confident tool selection and invocation.

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

Parameters2/5

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

Schema description coverage is only 33%: only 'id' has an explanatory description. The tool description adds no parameter-level meaning; the case-number note is about the returned text's citation format, not about the id, type, or maxChars parameters. The description therefore fails to compensate for the low schema coverage.

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 title and description identify a clear verb and resource: retrieving one full statement/uttalelse from Sivilombudet. The phrase 'Hele teksten i én uttalelse' unambiguously indicates full-text retrieval of a single opinion. However, it does not explicitly distinguish itself from sibling retrieval tools such as get_document, caselaw_get, or ombudsman_search.

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?

The description implies the tool is for retrieving the full text of one statement and mentions how the case number appears for citation purposes. It does not state when to use this tool over ombudsman_search, caselaw_get, or get_document, nor does it explain that the id should come from a search hit. Usage context is only implied, not explicit.

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

preparatory_getHent en stortingssak med dokumenttekstB

Detaljer om én sak: emner, komité, saksgang, vedtak og lenker til dokumentene. Sett includeText for å hente selve teksten i innstillingen eller proposisjonen — den er ofte lang, så den avkortes.

ParametersJSON Schema
NameRequiredDescriptionDefault
caseIdYessakId fra et søketreff.
maxCharsNo
includeTextNoHent dokumentteksten, ikke bare metadataene.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It usefully warns that document text is often long and is truncated ('den er ofte lang, så den avkortes'), but it does not describe return structure, permissions, or other behavioral constraints.

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?

The description is compact and front-loaded: the first sentence states the core purpose, and the second explains the optional text behavior and its important truncation caveat. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description names the main returned content and the optional text behavior, which is adequate for a basic call. However, with no output schema and several sibling getters, the lack of tool-selection guidance and undocumented maxChars behavior leave some gaps for an agent.

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 67%, and the description adds meaningful context for includeText by explaining that it retrieves the actual innstilling/proposisjon text. However, maxChars is not explained in the description, and caseId is only minimally connected to a search result.

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 that the tool returns details about a single parliamentary case: subjects, committee, case process, decisions, and links to documents. The singular focus ('én sak') helps distinguish it from search tools, though it does not explicitly contrast it with sibling getters like get_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool instead of preparatory_search, get_document, or get_article. The only conditional instruction concerns setting includeText, which is a parameter choice rather than tool-selection guidance.

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

statusStatus for den lokale indeksenA

Når korpuset sist ble hentet, hvor mange dokumenter og paragrafer det inneholder, og fordelingen på type. Sjekk denne når ferskhet betyr noe.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/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 clearly states what data is returned and implies a read-only snapshot by referencing when the corpus was last fetched rather than saying it fetches now. It could be more explicit about being non-mutating, but nothing suggests side effects.

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 with no wasted words: the first lists the reported content, the second gives usage guidance. The information is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status tool with no parameters and no output schema, the description sufficiently explains the return values (last fetch time, document count, paragraph count, type distribution) and the reasoning for using it. Nothing important is missing for an agent to invoke it correctly.

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 empty schema fully documents this. The baseline for zero-parameter tools is 4, and no additional parameter semantics are needed since there is nothing to configure.

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 specifies the tool reports when the local corpus was last fetched, counts of documents and paragraphs, and type distribution. This clearly distinguishes it from the sibling search/retrieval tools, making the purpose immediately understandable.

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 explicitly says 'Check this when freshness matters' (Sjekk denne når ferskhet betyr noe), providing a clear context for use. It doesn't name alternatives or exclusions, but the sibling list shows status is the only index-inspection tool besides sync.

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

syncHent ferske datapakker fra LovdataA

Laster ned Lovdata-datasettene på nytt og bygger lovindeksen om fra bunnen, og friskner opp forarbeidene fra Stortinget. Tar rundt to minutter. En systemd-timer kjører dette ukentlig, så det trengs sjelden manuelt.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 behavioral burden. It discloses that the tool re-downloads all datasets, rebuilds the index from scratch, and takes about two minutes, which is meaningful behavioral context. It stops short of detailing side effects such as temporary unavailability or concurrent-run implications, so it is adequate but not rich.

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?

The description is three short, information-dense sentences with the core action front-loaded and the time/scheduling context following. Every sentence earns its place and there is no redundancy.

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 no-parameter maintenance action, the description covers the key decision factors: what it does, how long it takes, and when it normally runs. It could mention output or operational impact, but the essential information needed to decide whether to invoke the tool is present.

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 schema is empty, so the baseline of 4 applies. There are no parameter-level details for the description to add, and the description does not attempt to invent any.

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 names a concrete action: it downloads Lovdata datasets again, rebuilds the law index from scratch, and refreshes preparatory works from the Storting. This clearly identifies the resource and scope, and distinguishes sync from sibling read/search tools such as search, get_document, and status.

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 explicitly notes that a systemd timer runs the sync weekly and that manual runs are rarely needed, giving an agent clear guidance on when not to use it. It does not go as far as naming explicit alternative tools or conditions, but the scheduling context is strong and actionable.

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

TDQS

A4/5.0
Disambiguation5/5

Each corpus has its own clearly namespaced search/get pair (caselaw_, preparatory_, ombudsman_), and the generic search tool is explicitly scoped to statute paragraphs. get_document vs get_article are also clearly separated by document-level vs article-level retrieval, so there is no real overlap.

Naming Consistency4/5

The dominant pattern is clear: `domain_search` and `domain_get` for the three secondary legal sources. However, the main corpus uses get_document and get_article rather than law_document/law_get, and status/sync are bare words that don't follow the verb_noun or domain_action pattern. Still, all names are readable and predictable once the pattern is understood.

Tool Count5/5

Twelve tools is well within the ideal range for a legal research server with four distinct source types. Each tool covers a necessary retrieval or maintenance need, and none feel redundant.

Completeness5/5

The surface is comprehensive for its stated domain: statute search and retrieval, document listing, article-level detail with history, ECHR case law retrieval, preparatory works, and ombudsman opinions all have search and get coverage. The only notable absence is Norwegian court caselaw, but the tool descriptions explicitly explain that no free machine-readable source exists, so it is a data-availability limitation rather than a design gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/synjan/mcp-lovdata'

If you have feedback or need assistance with the MCP directory API, please join our Discord server