Docs

euregs is a Streamable-HTTP MCP server exposing EU regulations (GDPR + AI Act + ePrivacy Directive today; DSA, DMA, MiCA, DORA, NIS2, CBAM coming) as queryable, citation-backed tools for AI agents.

Directives vs Regulations: GDPR, AI Act are Regulations — directly applicable EU-wide. ePrivacy and NIS2 are Directives — they require national transposition (each Member State has its own implementing law: UK PECR, German TTDSG, Estonian PEEPS, etc.). The text we serve is the EU-level Directive; national variants may be stricter. Check your country's implementing law for the operative rules in your jurisdiction.

1. Get an API key

Sign up with email + password + the Turnstile challenge. Verify the 6-digit code from your inbox. You'll see your key once — copy it. Manage keys at /dashboard.

2. Add the MCP server to your client

Claude Desktop / Claude Code

claude mcp add euregs https://mcp.euregs.dev/mcp \
  --transport http \
  --header "Authorization: Bearer $YOUR_KEY"

Cursor

Add to your ~/.cursor/mcp.json:

{
  "mcpServers": {
    "euregs": {
      "transport": "http",
      "url": "https://mcp.euregs.dev/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

Direct HTTP

curl -X POST https://mcp.euregs.dev/mcp \
  -H "Authorization: Bearer $YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

3. Tools

Eight tools. All accept regulation as one of "gdpr", "ai_act", "eprivacy". Output is always JSON with citations grounded in the actual regulation text.

Retrieval + lookup (free + paid)

lookup_clause(regulation, query, limit?) — find articles/recitals matching a query. Works on natural language (data minimization principle) or structural references (article 9). Top-3 recall: 100% on our 24-query eval set.

lookup_definition(regulation, term) — resolve a defined term from Art. 4 (GDPR) / Art. 3 (AI Act) / Art. 2 (ePrivacy). Handles common aliases: "data controller""controller", "GPAI""general-purpose AI model", "PII""personal data". Returns null for terms that aren't defined (use lookup_clause instead).

resolve_references(regulation, source) — outgoing graph edges. "What does Article 32 cite?" Returns each cross-reference + the resolved target chunk if it exists.

find_references_to(regulation, target) — incoming graph edges. "What cites Article 9?" Symmetric companion. Useful for impact analysis when a clause changes.

cite(regulation, reference, format?) — format a clause reference as a proper citation. Formats: eu_official (full OJ-style), eu_short ("Art. 5(1) GDPR" — default), oscola (UK academic), bluebook (US legal). Pure formatter — no LLM.

enforcement_dates(regulation, member_state?) — phased applicability dates. AI Act has 6 phases through 2027; GDPR has 2. Use this to time-anchor when obligations kick in.

Synthesis (paid only)

check_compliance(action_description, regulations?) — describe an action, get a verdict (likely / uncertain / likely_not) + required_actions, each grounded to specific articles. Hallucinated citations are dropped before the response reaches you; if any were dropped, verdict auto-downgrades to uncertain.

classify_role(description, regulation) — controller / processor / joint_controller / both / neither under GDPR. If the scenario doesn't have enough info to decide, returns status: "insufficient_info" with concrete follow-up questions — not vague "uncertain".

audit_document(document, document_type?, regulations?) — paste a privacy policy, ToS, DPA, or cookie banner → structured findings report. Each finding has category (missing_clause / weak_language / non_compliant / good_practice), severity, suggested-fix text, and citations. Document type auto-detected from content.

Rate limits

Citations and audit

Every check_compliance call is audit-logged (action description, retrieved chunk IDs, raw + validated LLM output, verdict, latency, references dropped). Retention 12 months. You can request your audit trail via email — useful for compliance review or legal disputes.

Source

euregs is closed-source for now. Once we cross 1000 paying users we may open the corpus + retrieval pipeline. The EUR-Lex source texts are themselves public domain.