Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WLM_PERMITTEDNoComma-separated jurisdiction codes to turn on sources whose terms need permission, only once you have that permission.
WLM_US_GOVINFO_KEYNoFree api.data.gov key for US case-law search.
FONTES_NO_UPDATE_CHECKNoSet to 1 to turn off the once-a-day version check against PyPI.1
WLM_FR_PISTE_CLIENT_IDNoClient ID of a free piste.gouv.fr app subscribed to Judilibre and Légifrance; France is off without it.
WLM_FR_PISTE_CLIENT_SECRETNoClient secret of a free piste.gouv.fr app subscribed to Judilibre and Légifrance; France is off without it.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Live case law and legislation from official government sources. Call list_jurisdictions first to see codes, supported tools and filters. Every result carries the source URL or identifier; always read the full text before relying on a decision or provision.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_jurisdictionsA

List the jurisdictions this server covers. Call this first.

For each jurisdiction it shows: the code to pass as jurisdiction to the other tools (aliases accepted, e.g. "uk" -> "gb"), name, languages, the official sources (with licence notes), which tools are supported, the extra filters each search tool accepts, and the identifier formats.

Args: query: optional text to narrow the list (matches code, alias or name, e.g. "nl", "united", "netherlands"). An exact code, alias or name gives that jurisdiction in full; many matches give a compact index.

search_caselawA

Search court decisions (case law / precedent) in one jurisdiction.

Most sources search the full text; some search only titles, parties or metadata, and a few ignore the words (the result header and Note say so; see list_jurisdictions Notes). A count of 0 may then mean "not searchable this way", not "no such decision".

Args: jurisdiction: code from list_jurisdictions, e.g. "nl", "gb" (alias "uk"). query: search words in the language of the source (Dutch for nl, English for gb). May be empty ("") for sources that can list by filters alone (date, court, number). Date, court, type, year and similar narrowing belong INSIDE filters; any other top-level argument is rejected. limit: results per page (default 10). page: 1-based page number. filters: optional jurisdiction-specific filters as a dict, e.g. {"sort": "uitspraak", "period": "dit_jaar"} for nl or {"court": "uksc,ewca/civ", "order": "-date"} for gb. The valid names differ per jurisdiction; see list_jurisdictions.

Returns a markdown list; each hit has the identifier to pass to get_decision. Snippets are not enough to cite: fetch the full decision.

get_decisionA

Fetch one court decision as markdown (metadata, summary, full text, source URL).

Args: jurisdiction: code from list_jurisdictions, e.g. "nl", "gb". id: the identifier the source uses, as returned by search_caselaw. nl: ECLI ("ECLI:NL:HR:2024:123"). gb: neutral citation ("[2024] UKSC 1", "[2026] EWHC 2093 (Ch)") or Find Case Law slug ("uksc/2024/1"). max_chars: page size (default 60000). Long decisions end with a note giving the next offset. offset: character offset to continue from (from that note).

search_legislationA

Find laws, acts and statutory instruments in one jurisdiction.

Args: jurisdiction: code from list_jurisdictions, e.g. "nl", "gb". query: (may be empty "" when filters alone select) words from the title (or full text where the source allows), in the source's language, e.g. "huurprijzen woonruimte" (nl), "Companies Act 2006" (gb). nl also accepts a BWB-id directly. limit: results per page (default 20). page: 1-based page number. filters: optional jurisdiction-specific filters as a dict, e.g. {"current_only": false} for nl or {"search_in": "text", "doc_type": "ukpga"} for gb. See list_jurisdictions.

Date, type and similar narrowing belong INSIDE filters; any other top-level argument is rejected.

Returns a markdown list; each hit has the id to pass to the get_legislation_* tools.

get_legislation_tocA

Table of contents of a law (parts, chapters, articles/sections) with provision labels.

Args: jurisdiction: code from list_jurisdictions, e.g. "nl", "gb". id: law id from search_legislation. nl: BWB-id ("BWBR0005289"). gb: type/year/number ("ukpga/2006/46"). keyword: optional; only list provisions whose number/title starts a word with (else contains) this text, case-insensitive. It does NOT search the body text. Strongly recommended for big codes.

Use the provision labels it shows with get_legislation_provision.

get_legislation_provisionA

Text of one article / section / regulation / schedule paragraph.

Usually the current consolidated text; some jurisdictions publish only the as-enacted text, and the result then says so at the top (check "Text as of" and any warning).

Args: jurisdiction: code from list_jurisdictions, e.g. "nl", "gb". id: law id from search_legislation (nl "BWBR0005289", gb "ukpga/2006/46"). provision: nl: article number ("2", "6:2", "Artikel 7a"). gb: "172", "s.172", "section/172", "reg 3", "sch 1 para 2", "schedule/1/paragraph/2".

get_legislation_textA

Full consolidated (current) text of a law as markdown, pageable.

Args: jurisdiction: code from list_jurisdictions, e.g. "nl", "gb". id: law id from search_legislation. max_chars: page size (default 60000). Big codes run to megabytes; prefer get_legislation_toc + get_legislation_provision. offset: character offset to continue from (from the truncation note).

report_bugA

Prepare a bug report about Fontes for its developers. Only when the user asks to report a problem.

The report holds the Fontes version, the OS, and the last failed call's jurisdiction, tool and error message (search text and ids removed). The user sees it in a dialog from their app and decides whether to send it; nothing is sent otherwise.

Args: note: what went wrong, in the user's words. Do not copy document text, search terms or client details into it unless the user explicitly asks you to.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation4/5

Tools split cleanly along resource (caselaw vs legislation) and action (search vs fetch vs structure), and report_bug is unmistakably separate. The only soft overlap is get_legislation_text versus get_legislation_toc + get_legislation_provision, since both return statutory text; the descriptions do steer agents (full code vs single provision) but an agent could still pick the wrong one for a large code.

Naming Consistency4/5

Consistent snake_case verb_noun pattern throughout (search_caselaw, get_decision, get_legislation_toc, list_jurisdictions, report_bug). The one asymmetry is that caselaw retrieval is get_decision rather than get_caselaw_decision, breaking the parallel with the get_legislation_* family, though it remains readable.

Tool Count5/5

Eight tools is well within the ideal range and each earns its place: discovery, two search tools, three legislation-retrieval granularities, and a scoped bug reporter. Nothing appears redundant or missing at the count level.

Completeness4/5

The surface covers the full research loop: list jurisdictions, search caselaw/legislation, then fetch decisions, tables of contents, provisions, or whole texts, with paging on long documents. Gaps are minor—no cross-jurisdiction search in a single call, no body-text search within a law (the TOC keyword explicitly does not search text), and no citator/related-case traversal.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues