# Lebanese Legislation (remote · lebaneselegislation.com)

Search and read Lebanese laws, articles, court rulings and Gazette issues. Verbatim texts only.

- Trust score: 74/100 (medium)
- Change this week: +10
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `lebaneselegislation.com`: 74/100 (this document), [markdown](https://verifymcp.io/servers/com-lebaneselegislation-mcp/lebaneselegislation.md), [page](https://verifymcp.io/servers/com-lebaneselegislation-mcp/lebaneselegislation)

## Channel facts

- Endpoint: `https://lebaneselegislation.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 10 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2371 tokens (~237/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 77/100
  - Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Lebanese Legislation MCP server?

Lebanese Legislation is a hosted endpoint at https://lebaneselegislation.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-lebaneselegislation-mcp 'https://lebaneselegislation.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-lebaneselegislation-mcp": {
      "url": "https://lebaneselegislation.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-lebaneselegislation-mcp": {
      "type": "http",
      "url": "https://lebaneselegislation.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-lebaneselegislation-mcp]
url = "https://lebaneselegislation.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-lebaneselegislation-mcp": {
      "type": "remote",
      "url": "https://lebaneselegislation.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-lebaneselegislation-mcp --url 'https://lebaneselegislation.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-lebaneselegislation-mcp:
    url: "https://lebaneselegislation.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-lebaneselegislation-mcp": {
      "Transport": "http",
      "Url": "https://lebaneselegislation.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-lebaneselegislation-mcp -t streamable-http -u 'https://lebaneselegislation.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-lebaneselegislation-mcp": {
      "type": "http",
      "url": "https://lebaneselegislation.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 74, +1)

- [security] Tool “get_article” rewrote its description, which is the text the model reads

### 2026-11-03 (score 73, +7)

- [security improvement] HTTPS: unverified → pass
- [security improvement] HSTS header: fail → pass

### 2026-11-02 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 65, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_article” rewrote its description, which is the text the model reads
- [security] Tool “get_law_texts” rewrote its description, which is the text the model reads
- [security] Tool “search_legislation” rewrote its description, which is the text the model reads

### 2026-10-29 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 63, 0)

- [security] Tool “get_ruling” rewrote its description, which is the text the model reads

### 2026-10-27 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 62, 0)

- [security] Tool “get_law” rewrote its description, which is the text the model reads
- [security] Tool “get_links” rewrote its description, which is the text the model reads
- [security] Tool “search_legislation” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 164 → 216
- [functional] Server version: 1.0.0 → 1.1.0
- [functional] New tool “list_gazette_issues”
- [functional] New tool “list_legislation”
- [cosmetic] “get_links” added an optional parameter “offset”
- [cosmetic] “get_links” added an optional parameter “order”
- [cosmetic] “get_links” added an optional parameter “scope”
- [cosmetic] “get_links” reworded the description of “limit”
- [cosmetic] “search_legislation” reworded the description of “year”

## MCP tools (10)

### `search_legislation` (~415 tokens)

When calculated_current is present, use its text_ar for current monetary amounts and cite its authority.url. Identify this as calculated under the authority, never as verbatim published wording. The article text_ar and source fields remain published wording. Search Lebanese legislation (laws, decrees, decisions), their articles, court rulings, or Official Gazette issues, by keyword: Arabic words, French words (articles the Centre published in French, and the codes' French or English names), or a law's numeric id. Returns verbatim snippets from the Lebanese University's database, never an AI-written summary. A ruling hit's pdf_url is its full judgment's scan on the Lebanese University's site: always pass it on with any answer that cites the ruling. English words work too: they are read into Arabic through a glossary, matched against the unofficial English titles, and when nothing matches the result says what was searched instead (searched_instead). A code named in the query ("قانون العقوبات 670", "أصول محاكمات مدنية صورية") narrows the articles to that code; when none of its articles holds the other words, articles_not_in_code names it and the articles listed are from other texts. Each law carries title_en, an unofficial English title a model wrote from the Arabic title alone: the Arabic title and text are official and more accurate; cite the Arabic. A search of the gazette category with a bare year ("2025") lists that year's issues, and "22/2025" is issue 22 of 2025; to list texts by date use list_legislation instead. Not legal advice.

Input parameters:

- `kind` (string): narrow to one category; omit to search all four
- `limit` (integer): results per category, at most 20
- `query` (string, required): words to search for, Arabic, English or French, or a law's id
- `year` (integer): only laws issued this year; for the gazette category, only issues published this year

### `get_law` (~188 tokens)

Get a law, decree or similar text's metadata (kind, number, date, status), its table of contents (the chapters: id, parent_id, depth, heading), its articles in order (number, and the section_id of the chapter each sits under) and the texts it amended or was amended by (amended_by / amended: one entry per text and relation, with articles listing the articles of this law it touches, or of the other law for amended; no articles means the whole law). Use get_article to read one article's verbatim text, or get_law_texts to read all of them. title_en is an unofficial English title (a model's rendering of the Arabic one); the Arabic title and text are official and more accurate. Not legal advice.

Input parameters:

- `id` (integer, required): the law's numeric id, from search_legislation or its URL

### `get_article` (~313 tokens)

When calculated_current is present, use its text_ar for current monetary amounts and cite its authority.url. Identify this as calculated under the authority, never as verbatim published wording. The article text_ar and source fields remain published wording. Get one article's verbatim Arabic text as in force today (and French, when the Centre published it and no amendment has replaced it), its in-force status, amendment history, and the canonical and source URLs. When an amendment replaced the wording, text_ar is the new wording and centre_text_ar the earlier one the Centre's site still shows. centre_error, when present, notes an error in the Centre's own text (one article repeating another, a stray letter); the text itself is left as published. The text is copied exactly from the database; nothing here is AI-written. Laws with ids from 2000000000 are ones the Lebanese University has not published yet, read by machine from scans of the Official Gazette's pages (unofficial copies; the law's page links the original Gazette PDF on SaderLex); where the two readings differ the text shows both as ⟦reading one | reading two⟧: quote neither as certain. Not legal advice.

Input parameters:

- `law_id` (integer, required): the law's id (see get_law)
- `number` (string, required): the article's printed number, e.g. "212", "12 مكرر" or "586-1" (an article numbered under another; "586 (1)" works too)

### `get_law_texts` (~191 tokens)

When calculated_current is present, use its text_ar for current monetary amounts and cite its authority.url. Identify this as calculated under the authority, never as verbatim published wording. The article text_ar and source fields remain published wording. Get the verbatim texts of a law's articles in order, a page at a time: for each article its number, section_id, note, and the same text fields as get_article (text_ar in force today, text_fr, centre_text_ar when an amendment replaced the wording, version, repealed). Follow next_offset until it is absent to read the whole law. Amendment history stays in get_article. Not legal advice.

Input parameters:

- `law_id` (integer, required): the law's numeric id
- `limit` (integer): articles per page, at most 200
- `offset` (integer): how many articles to skip (next_offset of the previous page)

### `get_ruling` (~125 tokens)

Get one court ruling (judgment) by id: court, number, date, panel, and its verbatim text when the Centre holds it as typed text. When available, pages returns the scanned judgment's machine reading, with low_confidence: true on hard-to-read pages where errors are expected. pdf_url is the full judgment's scan on the Lebanese University's site: always give it to the user with any answer about the ruling, so they can open the original. Not legal advice.

Input parameters:

- `id` (integer, required): the ruling's numeric id, from search_legislation

### `get_gazette_issue` (~57 tokens)

Get one Official Gazette issue by id: its number, publication date, and the laws, decrees and decisions it published. Not legal advice.

Input parameters:

- `id` (integer, required): the issue's numeric id, from search_legislation

### `get_links` (~371 tokens)

Get the graph edges into or out of one item: a law, an article, a ruling, an opinion, a research study or a Gazette issue. Use this to walk citations and amendments directly, instead of only what get_law and get_article attach automatically. For a law key ("law/<id>") the default scope "all" includes the edges of its articles too (each link keeps its real to_key, e.g. "law/244611/art/37"); scope "law" is the law itself only. Newest first by the date of the text each edge comes from; page with offset and next_offset, total is the number of edges. Not legal advice.

Input parameters:

- `direction` (string): "to" (edges that name this item as their target) or "from" (edges this item itself carries)
- `key` (string, required): the item's key: "law/<id>", "law/<id>/art/<number>", "ruling/<id>", "opinion/<id>", "research/<id>" or "gazette/<id>"
- `limit` (integer): at most this many edges. quote is cut to 600 characters when longer (quote_truncated: true); get_article has the full wording
- `offset` (integer): how many edges to skip (next_offset of the previous page)
- `order` (string): by the date of the text the edge comes from (Gazette date, else issue date)
- `relation` (string): narrow to one relation (e.g. "cites", "amend", "repeal"); omit for all
- `scope` (string): for a law key only: "all" (default) adds the edges to or from its articles, "law" is the law itself only

### `list_legislation` (~298 tokens)

List laws, decrees and decisions by date, newest first: for "everything published since January 2025" call with since "2025-01". The date is the publication date: the Official Gazette date, else the issue date (each entry's date, with gazette_number, gazette_date and gazette_issue_id). Recent texts come from machine readings of Gazette scans (ids from 2000000000, unofficial) because the Lebanese University's Centre lags about a year, so a recent period lists mostly those. since and until accept YYYY, YYYY-MM or YYYY-MM-DD, inclusive. kind narrows to one kind, in Arabic ("قانون", "مرسوم") or English ("Law", "Decree"). Page with offset and next_offset; total is the whole count. Not legal advice.

Input parameters:

- `kind` (string): the kind of text, Arabic or English (e.g. "قانون" or "Law", "Decree")
- `limit` (integer): texts per page, at most 100
- `offset` (integer): how many texts to skip (next_offset of the previous page)
- `order` (string): by publication date
- `since` (string): first date, inclusive: YYYY, YYYY-MM or YYYY-MM-DD (e.g. "2025-01")
- `until` (string): last date, inclusive: YYYY, YYYY-MM or YYYY-MM-DD

### `list_gazette_issues` (~221 tokens)

List Official Gazette issues by publication date, newest first, with the number of texts each carries (text_count) and where the issue comes from: source "centre" (the Lebanese University's Centre, whose issues stop about a year back) or "scans" (issues seen in Gazette scans, ids from 2000000000, which cover recent months). since and until accept YYYY, YYYY-MM or YYYY-MM-DD, inclusive; "everything since January 2025" is since "2025-01". Page with offset and next_offset. get_gazette_issue reads one issue's texts. Not legal advice.

Input parameters:

- `limit` (integer): issues per page, at most 100
- `offset` (integer): how many issues to skip (next_offset of the previous page)
- `order` (string): by publication date
- `since` (string): first date, inclusive: YYYY, YYYY-MM or YYYY-MM-DD
- `until` (string): last date, inclusive: YYYY, YYYY-MM or YYYY-MM-DD

### `possibly_affected` (~72 tokens)

Get the general repeals that may touch a law: earlier texts with a "all provisions contrary to this law are repealed" clause pointing at it. A list to check, never a finding that anything was actually repealed. Not legal advice.

Input parameters:

- `law_id` (integer, required): the law's numeric id

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-lebaneselegislation-mcp/lebaneselegislation#diagnostics

## Score history

- 2026-11-05: 74
- 2026-11-04: 73
- 2026-11-03: 73
- 2026-11-02: 66
- 2026-11-01: 65
- 2026-10-31: 65
- 2026-10-30: 64
- 2026-10-29: 64
- 2026-10-28: 63
- 2026-10-27: 63
- 2026-10-26: 62
- 2026-10-25: 62
- 2026-10-24: 62
- 2026-10-23: 62
- 2026-10-22: 61
- 2026-10-21: 61
- 2026-10-20: 61
- 2026-10-19: 61
- 2026-10-18: 61
- 2026-10-17: 60
- 2026-10-16: 60
- 2026-10-15: 59
- 2026-10-14: 59
- 2026-10-13: 58

## Common questions

### What is the Lebanese Legislation MCP server?

Lebanese Legislation is an MCP server listed in the public MCP registry as com.lebaneselegislation/mcp. Search and read Lebanese laws, articles, court rulings and Gazette issues. Verbatim texts only. This page covers its hosted endpoint (https://lebaneselegislation.com/mcp).

### Is the Lebanese Legislation MCP server safe to use?

Lebanese Legislation scores 74 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Lebanese Legislation MCP server expose?

Lebanese Legislation exposes 10 tools: search_legislation, get_law, get_article, get_law_texts, get_ruling, and 5 more. Their descriptions and schemas cost roughly 2,251 tokens of context every time the server is loaded.

### Does the Lebanese Legislation MCP server require authentication?

No. We connected to Lebanese Legislation without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Lebanese Legislation MCP server still maintained?

Lebanese Legislation is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://lebaneselegislation.com/mcp
- Repository: https://github.com/taktekhq/lebanese-legislation
- Website: https://lebaneselegislation.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-lebaneselegislation-mcp/lebaneselegislation.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-lebaneselegislation-mcp/lebaneselegislation.json
- HTML version of this page: https://verifymcp.io/servers/com-lebaneselegislation-mcp/lebaneselegislation
