# French Legal Data MCP Server (Case Law + IDCC) (`klyve1/french-legal-mcp`) Actor

MCP server for AI agents: search French case law (Judilibre, Cour de cassation and appeal courts), read full decisions, and find any company's collective agreement (IDCC). Official open data, pay per tool call, no API keys to manage.

- **URL**: https://apify.com/klyve1/french-legal-mcp.md
- **Developed by:** [Nico Klyve](https://apify.com/klyve1) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 law-articles

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What is French Legal Data MCP Server?

An **MCP server** that gives any AI agent (Claude, ChatGPT, Cursor, n8n, LangChain...) reliable access to **French law, case law (judicial and administrative), collective and company agreements, and the Journal officiel** from official sources (Légifrance, Judilibre, SIRENE), with **no API key, no PISTE account and no OAuth** to manage. Your agent pays per tool call.

#### Tools

| Tool | What it does |
|---|---|
| `search_french_case_law` | Full-text search of French court decisions (Cour de cassation, cours d'appel, tribunaux judiciaires, tribunaux de commerce) in the official **Judilibre** base. Filters: court, chamber, Bulletin-only, dates, sort by relevance or date. |
| `get_french_court_decision` | Full text of a decision, with its **reasoning (motifs)**, **operative part (dispositif)**, legal provisions cited and related decisions. |
| `find_french_collective_agreement` | The **convention collective (IDCC)** of any French company from its SIRET, SIREN or name: code, official title, Légifrance link. |
| `get_french_law_article` | Official text of any article of any French code from **Légifrance** ("Code du travail L1234-1", "Code civil 1240"), with status, validity dates and an optional version date. |
| `search_french_codes` | Keyword search across the 76 French codes in force, or inside one code. |
| `search_collective_agreement_text` | Search inside a collective agreement by IDCC (Légifrance KALI) and get the matching clauses in force, full text. |
| `search_company_agreements` | Company-level agreements (accords d'entreprise) by company and/or topic: remote work, wages, working time, signing unions. |
| `search_administrative_case_law` | Conseil d'État and administrative courts decisions (urban planning, public procurement, tax...), with official summaries. |
| `search_journal_officiel` | Latest texts published in the Journal officiel on a topic: laws, decrees, orders, decisions. |

### Why use it?

- **Grounded answers**: stop your agent from inventing French case law. Every result links to the official decision.
- **Built for agents**: compact JSON, clear tool descriptions, results capped to keep token usage low.
- **Complete labour-law workflow**: find the employer's collective agreement, read the clause on the trial period, read the Code du travail article, then the case law that applies. All in one server.
- **Zero setup**: no government portal account, no keys to rotate.

### Connect your MCP client

```json
{
  "mcpServers": {
    "french-legal-data": {
      "url": "https://mcp.apify.com/?tools=klyve1/french-legal-mcp"
    }
  }
}
```

Or call the server directly at its Standby URL with the `/mcp` path (shown in the Endpoints tab), authenticated with your Apify token.

You can also run it as a normal Actor: choose a `tool` and its `arguments` in the input, and get the result in the dataset.

### Pricing

Pay per tool call:

- `search_french_case_law`: **$0.01** per search (up to 10 decisions)
- `get_french_court_decision`: **$0.01** per decision
- `find_french_collective_agreement`: **$0.005** per lookup, charged only when an agreement is found
- `get_french_law_article`: **$0.005** per article
- `search_french_codes`: **$0.01** per search (up to 10 articles)
- `search_collective_agreement_text`: **$0.01** per search (up to 5 clauses with full text)
- `search_company_agreements`: **$0.01** per search (up to 10 agreements)
- `search_administrative_case_law`: **$0.01** per search (up to 10 decisions)
- `search_journal_officiel`: **$0.01** per search (up to 20 texts)

### Data sources and reuse terms

- Case law: **Judilibre**, the open data base of the Cour de cassation (Licence Ouverte 2.0). Decisions are pseudonymised by the Cour de cassation and returned unaltered, with court, formation, seat, date, source and last update date.
- Law and collective agreements text: **Légifrance API** of the DILA (Licence Ouverte 2.0). Consolidated texts are informational: only the Journal officiel is legally binding.
- Company collective agreements: SIRENE register (INSEE), DSN payroll declarations (Ministry of Labour) and Code du travail numérique.

When you reuse decisions, credit the Cour de cassation open data base with the last update date, do not alter them, and never use them to evaluate, compare or predict the practices of identified judges or court clerks (forbidden by article L. 111-13 of the Code de l'organisation judiciaire).

Results are informational and are not legal advice.

### En français

Serveur MCP pour agents IA : **articles de loi et codes** (Légifrance), **textes des conventions collectives**, recherche de **jurisprudence française** (Judilibre : Cour de cassation, cours d'appel, tribunaux), texte intégral des décisions avec motifs et dispositif, et **convention collective (IDCC)** de n'importe quelle entreprise. Données publiques officielles, sans compte PISTE, paiement à l'appel.

# Actor input Schema

## `tool` (type: `string`):

When the Actor is run normally (not through MCP), which tool to call once.

## `arguments` (type: `object`):

Arguments for the tool, e.g. {"query": "licenciement faute grave", "limit": 5}.

## Actor input object example

```json
{
  "tool": "search_french_case_law",
  "arguments": {
    "query": "rupture conventionnelle vice du consentement",
    "limit": 3
  }
}
```

# Actor output Schema

## `results` (type: `string`):

When run in batch mode, one row with the tool called, its arguments and its result. In MCP Standby mode results are returned to the MCP client.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "arguments": {
        "query": "rupture conventionnelle vice du consentement",
        "limit": 3
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("klyve1/french-legal-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "arguments": {
        "query": "rupture conventionnelle vice du consentement",
        "limit": 3,
    } }

# Run the Actor and wait for it to finish
run = client.actor("klyve1/french-legal-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "arguments": {
    "query": "rupture conventionnelle vice du consentement",
    "limit": 3
  }
}' |
apify call klyve1/french-legal-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,klyve1/french-legal-mcp"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/nYXfe0hD2nqDEBXVF/builds/8xfEdy4wqiaXlx2Jh/openapi.json
