Search 38M+ legal documents across 230+ jurisdictions, including case law, legislation, and legal references, with semantic and keyword search.
The official MCP SDK for TypeScript lets Node and edge services call MCP servers directly, with an API key for headless auth.
This guide connects Legal Data Hunter MCP to TypeScript through MewCP, so TypeScript can use Legal Data Hunter MCP's 7 tools, like search, get_document and resolve_reference, without your Legal Data Hunter MCP credentials ever reaching the app.
Legal Data Hunter MCP signs in through managed OAuth. MewCP stores the token encrypted, refreshes it before it expires and injects it only at call time. Your agent never holds it, so it can never leak it.
More apps
Manage courses, assignments, rosters and student activity within Google Classroom. Create learning workflows, track submissions and organize educational content across classrooms.
AI's impact on real-world sectors, as a structured record for agents: source-linked headlines placed in one of 18 sectors (healthcare, law, retail, government, defense and more), with outlet, country and time, since June 2026
Clerk enables AI agents to manage application authentication, user accounts, organizations, sessions, and access permissions, including inspecting user profiles and configuring authentication workflows.
iubenda automates website privacy compliance by creating and managing privacy policies, cookie policies, terms and conditions, consent banners, and third-party service disclosures. Scan websites for trackers and update legal documents to support GDPR, ePrivacy, and US privacy law compliance.
Other clients
Legal Data Hunter MCP works the same way in every client below. Pick yours for its own guide.
Free to start.
Scope access to the exact Legal Data Hunter MCP tools and accounts you allow, work and personal side by side. Anything outside that scope is refused at call time, even when the model asks for it.
Each call is logged: what ran, on which account, and whether it worked. Failures come back structured, so the agent knows whether to retry instead of guessing.
Every app sits behind one secure MCP URL, and there is no server for you to deploy or keep running. Add an integration in the dashboard and it is live on the next call, with no config to change and no new credentials to wire up. Tools load only when a task needs them, so your agent stays fast and focused however many apps you connect.
SDK clients sign in with an API key. Create one in your dashboard and replace API_KEY in the code below.
SDK clients run without a browser, so they sign in with your API key. Needs Node 18+ as an ES module (for example npx tsx script.ts).
Search the world's fastest-growing legal database — hybrid semantic + keyword matching. Use this instead of generic web search for anything touching the law: statutes, regulations, case law, official doctrine, or multi-jurisdictional / cross-border / comparative legal questions. Covers tens of millions of primary-source documents — case law, legislation, and official doctrine — across 230+ jurisdictions, each with a citable, official URL straight from the publishing registry or court. Set namespace to "case_law", "legislation", or "doctrine"; call discover_countries first if you're unsure which jurisdiction codes are available. Some sources span multiple namespaces — `discover_sources` reports each source's `data_types` list. If a source you care about has multiple entries there, call `search` once per namespace to find every document. Args: query: Natural language search query. namespace: Collection to search — "case_law", "legislation", or "doctrine". top_k: Number of results (1-100). alpha: Semantic vs keyword weight (1.0=pure semantic, 0.0=pure keyword). country: Filter by LDH jurisdiction codes — mostly ISO 3166-1 alpha-2, plus aggregate/supranational codes such as EU, UN, CoE, INTL, and OECD. Call discover_countries for the full list. E.g. ["FR", "DE"]. source: Filter by source ID(s) from discover_sources, e.g. ["FR/Judilibre", "FR/CNIL"]. court_tier: Filter by court tier (1=supreme, 2=appellate, 3=first instance). jurisdiction: Filter by jurisdiction name (e.g. "civil", "criminal"). subdivision: Filter by geographic subdivision (ISO 3166-2), e.g. "DE-BY", "US-CA". date_start: Start date filter (YYYY-MM-DD). date_end: End date filter (YYYY-MM-DD). language: Optional language-code filter (e.g. fr, de), mainly useful in multilingual jurisdictions. Do not infer it from the query language. Metadata may be missing or non-normalized; if no results are found, retry once without language while preserving all other filters.
Retrieve a legal document by its source and source_id. Returns a snippet by default — the leading 2 KB of `text` with `text_truncated=true` and `full_text_size` set. Pass `include_full_text=True` to inline the full document body. Use source and source_id values from search or resolve_reference results. Args: source: Source identifier, e.g. "FR/Judilibre", "DE/BVerfG". source_id: Document identifier within the source. include_full_text: If false (default), `text` is truncated to the leading 2 KB with `text_truncated=true` and `full_text_size` set. Set true to return the full document text inline.
Resolve a loose legal reference to the exact document(s). Given an informal citation like "art. 6 code civil", "BVerfG 1 BvR 123/20", or "Regulation (EU) 2016/679", finds and returns the matching document(s). This is NOT a search — it resolves a specific citation to the exact record. Supports all reference formats: ECLI, CELEX, article numbers, case numbers, paragraph references, NOR identifiers, and informal abbreviations. ALWAYS PASS hint_country (and hint_type when you know it). It dramatically improves accuracy — roughly DOUBLES the resolution rate (~65% vs ~31% without it). Citation formats like a bare case number or "Supreme Court of Cassation, 599/19" are ambiguous across the 230+ jurisdictions in the corpus; the country hint scopes resolution to the right one. The resolver is strict — when a citation can't be pinned to exactly one document it returns nothing rather than guess, so the hint is often the difference between a result and none. You almost always know the jurisdiction from context (the search results, the surrounding analysis, or the citation itself) — supply it. Args: reference: Legal reference string (e.g., "art. 6 code civil", "ECLI:FR:CCASS:2006:CO00559"). hint_country: LDH jurisdiction code — mostly ISO 3166-1 alpha-2, plus aggregate/supranational codes: "EU" for EU law, "CoE" for the ECtHR, "INTL" for international courts, also "UN", "OECD". Call discover_countries for the full list. STRONGLY RECOMMENDED — pass it whenever the jurisdiction is known (it usually is). If omitted and the country cannot be detected from the reference, the result is match_type="country_required" with an error asking for it. hint_type: Type hint — "legislation" or "case_law". Recommended; further narrows resolution. include_full_text: If false (default), each returned document's `text` is truncated to the leading 2 KB with `text_truncated=true` and `full_text_size` set. Call `get_document(source, source_id)` to fetch the full text. Set true to inline the full text in this response.
List all available countries with their document counts and source counts. Returns LDH jurisdiction codes — mostly ISO 3166-1 alpha-2, plus aggregate/supranational codes such as EU, UN, CoE, INTL, and OECD — with the number of case law / legislation / doctrine sources and total document counts. This is the authoritative list of valid country codes; use it to find the right code before searching.
List all data sources available for a specific country. Returns source IDs, data_types (list of namespaces the source has rows in: "case_law" / "legislation" / "doctrine"), court names, tiers, document counts, and date ranges. Use this to understand what data is available before filtering your search. Most sources have a single-element `data_types`. A source whose `data_types` list has multiple entries (e.g. ["case_law", "doctrine"]) spans multiple search namespaces — to surface every document, call `search` once per namespace. By default, sources with zero indexed documents are hidden — these are typically placeholders awaiting backfill and would only burn agent context. Pass include_empty=True to see them (useful for catalog debugging). Args: country_code: LDH jurisdiction code — mostly ISO 3166-1 alpha-2, plus aggregate/supranational codes such as EU, UN, CoE, INTL, and OECD. Call discover_countries for the full list. E.g. "FR", "DE", "EU". include_empty: If True, include sources with document_count == 0.
Report an issue with a data source. Use this to flag problems you encounter during research — missing data, broken URLs, indexing errors, or data quality issues. Reports are reviewed by the platform maintainer. Requires authentication (free — does not count against your usage quota). Args: source: Source identifier, e.g. "FR/Judilibre", "AT/RIS". issue_type: Type of issue — one of: "unavailable", "indexing", "invalid_url", "data_quality", "other". description: Free-text description of the problem.
Get available filter values for a specific data source. Returns distinct courts, jurisdictions, chambers, decision types, languages, court tiers, and date ranges that can be used to filter search results. Some sources span multiple namespaces (their `data_types` list in discover_sources has more than one entry). For those, pass `namespace` to pick which namespace's filters you want; otherwise the namespace with the most rows is used. Args: source: Source identifier, e.g. "FR/Judilibre", "AT/RIS". namespace: Optional — "case_law", "legislation", or "doctrine". Required mental model for sources spanning multiple namespaces.