Building Your Own AI Agent on the Europaius Legal Corpus
Anyone building a custom agent for legal or compliance tasks does not need to build a database of legislation from scratch. The Europaius MCP server provides search, full-text retrieval and cross-country comparison as standard tools that an agent can call via the MCP SDK.

4 883 Laws553 Laws with AI explanation
Signing In from Code
For interactive use, standard OAuth sign-in takes place in the browser; the MCP SDK for both Python and TypeScript can handle it. For server-side agents and automations, use the API key from the Europaius pricing page: enter it at login instead of an email address, or have your own OAuth client complete authorisation once and store the refresh token. The key starts with the prefix eur_ and is tied to the account and its limits.
Tools
search(query, states): returns JSON{"results":[{id,title,url,snippet}]}across legislation and case law.fetch(id): full text of a document by identifier, including metadata (court, date, ECLI, country).search_law,find_caselaw,find_caselaw_cz: targeted search within legislation or case law with parameters.get_paragraf(state, law, paragraf): exact wording of a section by statute number.souvislosti(para_id): verified citation links for a section.compare_norm(query, states): the most relevant provisions from each country.vyklad,list_states: interpretation of a Czech section, overview of coverage.
Identifiers
Identifiers returned by the search tool are stable and can be stored. Decisions of Czech courts: case:<court>:<slug>, where the court is ns, nss, us or justice — all Czech sources. Section: para:CZ:89/2012:§2991. Document from another jurisdiction: eu:DE:<id>. For decisions, the fetch tool returns the legal proposition, operative part and reasoning as a single text, up to 80,000 characters.
Python Example
from mcp import ClientSession; from mcp.client.streamable_http import streamablehttp_client; async with streamablehttp_client("https://mcp.europaius.com/mcp", headers={"Authorization": "Bearer <token>"}) as (r, w, _): async with ClientSession(r, w) as s: await s.initialize(); res = await s.call_tool("search", {"query": "limitation of claims", "states": ["CZ"]}). The result is text containing JSON, which you parse as usual. You obtain the token either through the OAuth flow or from API key login.
Recommendations for Agents
- Give the agent a system instruction to call the tool for every legal claim and to include the URL from the result in its answer.
- Store document identifiers, not full texts; retrieve the full text only when actually needed.
- Expect the first query to a foreign jurisdiction to take longer; use a timeout of at least 120 seconds.
- Respect account limits; an agent running in a loop can burn through 100 queries quickly, so use a subscription for production.
https://mcp.europaius.com/mcp
Frequently Asked Questions
Can I call the server without MCP, using plain HTTP?
The protocol is JSON-RPC over HTTP, so technically yes, but the MCP SDK handles sessions, streaming and errors for you. We recommend using the SDK.
Is there a sandbox or test environment?
The free account with 100 queries per day serves as a test environment. The data is identical to production.
How do I report a bug or a missing source?
Via the contact form at europaius.com. For a missing source, please specify the country and document type.