Calling the islands (works in any runtime). Every endpoint below is a plain public HTTPS GET that returns JSON — call it with whatever fetch/HTTP tool you have (e.g. web-fetch). The bundled
_lib/legal_search.pyonly parallelizes these same calls and needs a shell + outbound network: it works in Claude Code, but sandboxed runtimes (e.g. the claude.ai Skills container) may block egress. If the script is blocked, just fetch the URL directly instead.Honesty rule: only data returned from these
*.openlegaldata.netendpoints is an authoritative OpenLegalData result. If you cannot reach them, say so plainly — do NOT present a general web-search answer as an OpenLegalData verification.
World / Comparative Legal Sources
Each jurisdiction is its own island at <cc>.openlegaldata.net (ISO-ish country
code), built from official government legal sources (courts + legislation), with
every scraped field preserved as metadata (court, chamber, decision number,
ECLI, dates, etc.). Content is in each country's native language — search in
that language for best recall.
The full list lives in skills/_lib/islands.json under world (~55 entries:
ad al am ar at au az ba be bg by ca ch coe cy cz de dk dz ee eg es fi fr ge gr hr hu ie is it li lt lu lv mc me mt nl no nz pl pt ro rs se si sk sm tr tw ua uk xk …).
How to use
Target a specific jurisdiction (preferred — precise + fast):
python "${CLAUDE_PLUGIN_ROOT:-.}/skills/_lib/legal_search.py" search "Datenschutz" --islands https://de.openlegaldata.net --limit 10
Broad comparative sweep across ALL world islands in parallel (e.g. "how do jurisdictions treat X"):
python "${CLAUDE_PLUGIN_ROOT:-.}/skills/_lib/legal_search.py" search "data protection" --category world --limit 5
Results are tagged with _island (the country) so you can compare across systems.
Strategy
- Known jurisdiction → query just that island (
--islands https://<cc>.openlegaldata.net). - Comparative question → parallel
--category world, then group hits by_island. - Search in the jurisdiction's language (German for
de, French forfr/lu/mc, Arabic foreg/dz, etc.) — these are native-language corpora. - Coverage is sample corpora per source (tens–hundreds of docs each), good for locating leading/representative texts; not exhaustive. Say so when relevant.
Endpoints
GET /search?q=<terms>&limit=Nper island;GET /for info + counts.- Each result carries rich per-document metadata (the original scraped fields).
import os, sys; sys.path.insert(0, os.path.join(os.environ.get("CLAUDE_PLUGIN_ROOT","."), "skills/_lib"))
from legal_search import search, REGISTRY
fr = [i["url"] for i in REGISTRY["world"] if i["slug"] == "fr"]
hits = search("responsabilité du fait des produits", islands=fr, limit=10)