The Legal Data Hunter MCP connector routes your AI agent's tool calls to Legal Data Hunter's own MCP server through Scalekit. Each user signs in to Legal Data Hunter once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 7 tools.
- Tools
- 7
- What they doRead · write · destructive
- 6 · 1 · 06 read1 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Search legal sources: find statutes, regulations, case law, and official doctrine across many jurisdictions
- Resolve citations: turn an informal legal citation into the exact matching document
- Read legal documents: retrieve a document’s text snippet or its complete body
- Browse coverage: list available countries, data sources, and filter values such as courts, chambers, and date ranges
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Legal Data Hunter MCP connection
In AgentKit > Connections, create a Legal Data Hunter MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Legal Data Hunter MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'legaldatahuntermcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Legal Data Hunter MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'legaldatahuntermcp_discover_countries',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "legaldatahuntermcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Legal Data Hunter MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="legaldatahuntermcp_discover_countries",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toollegaldatahuntermcp_discover_countriesList all available countries with their document counts and source counts.Read-onlyDiscover Countries
List all available countries with their document counts and source counts. Returns LDH jurisdiction codes (mostly ISO 3166-1 alpha-2, plus supranational codes like EU, UN, CoE, INTL, OECD) with case law, legislation, and doctrine source counts and total document counts. This is the authoritative list of valid country codes to use in search and resolve_reference.
Inputs
This tool takes no inputs.
legaldatahuntermcp_discover_sourcesList all data sources available for a specific country.Read-onlyDiscover Sources
List all data sources available for a specific country. Returns source IDs, data_types (namespaces each source covers: "case_law", "legislation", or "doctrine"), court names, tiers, document counts, and date ranges. Use this to understand what data is available before filtering a search.
Inputs
country_codestringrequired- LDH jurisdiction code for the country whose sources to list, e.g. "FR", "DE", "EU".
include_emptyboolean- If true, include sources with zero indexed documents (placeholders awaiting backfill).default
false
legaldatahuntermcp_get_documentRetrieve a legal document by its source and source_id.Read-onlyGet Document
Retrieve a legal document by its source and source_id. Returns a 2 KB text snippet by default; pass include_full_text=true to inline the complete document body. Use source and source_id values from search or resolve_reference results.
Inputs
sourcestringrequired- Source identifier for the legal database, e.g. "FR/Judilibre" or "DE/BVerfG".
source_idstringrequired- Document identifier within the specified source.
include_full_textboolean- If false (default), text is truncated to the leading 2 KB with text_truncated=true. Set true to return the full document text inline.default
false
legaldatahuntermcp_get_filtersGet available filter values for a specific data source.Read-onlyGet Filters
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 refine search results. For sources spanning multiple namespaces, pass namespace to select which namespace's filters to return.
Inputs
sourcestringrequired- No description.
namespacestring- No description.
legaldatahuntermcp_resolve_referenceResolve a loose legal citation or reference to the exact matching document(s).Read-onlyResolve Reference
Resolve a loose legal citation or reference to the exact matching 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 precise record. Supports ECLI, CELEX, article numbers, case numbers, NOR identifiers, and informal abbreviations.
Inputs
referencestringrequired- No description.
hint_countrystring- No description.
hint_typestring- No description.
include_full_textboolean- No description.default
false
legaldatahuntermcp_searchSearch the world's fastest-growing legal database using hybrid semantic and keyword matching.Read-onlySearch
Search the world's fastest-growing legal database using hybrid semantic and keyword matching. Use this for anything touching the law: statutes, regulations, case law, official doctrine, or multi-jurisdictional and comparative legal questions. Covers tens of millions of primary-source documents across 230+ jurisdictions.
Inputs
querystringrequired- No description.
alphanumber- No description.default
0.7 countryarray- No description.
court_tierstring- No description.
date_endstring- No description.
date_startstring- No description.
jurisdictionstring- No description.
languagestring- No description.
namespacestring- No description.default
case_law sourcearray- No description.
subdivisionstring- No description.
top_kinteger- No description.default
10
legaldatahuntermcp_report_source_issueReport an issue with a data source to the platform maintainer.WriteReport Source Issue
Report an issue with a data source to the platform maintainer. Use this to flag problems encountered during research — missing data, broken URLs, indexing errors, or data quality issues. Reports are reviewed by the Legal Data Hunter team. Does not count against your usage quota.
Inputs
issue_typestringrequired- Type of issue — one of: "unavailable", "indexing", "invalid_url", "data_quality", "other".
sourcestringrequired- Source identifier for the data source being reported, e.g. "FR/Judilibre" or "AT/RIS".
descriptionstring- Free-text description of the problem encountered.default
No tools match.