Lebanese Legislation
REMOTE · LEBANESELEGISLATION.COM
Search and read Lebanese laws, articles, court rulings and Gazette issues. Verbatim texts only.
Available components
Last scanned (7 hours ago)
Scores higher than 61% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Education and Research
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. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- 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. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management77
- Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
- Tool “get_article” rewrote its description, which is the text the model reads security
- 3 Nov 26 +7
- HTTPS: unverified → pass ▲ security
- HSTS header: fail → pass ▲ security
- 2 Nov 26 +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.
- 31 Oct 26 +1
- 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 security
- 29 Oct 26 +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.
- 28 Oct 26 0
- Tool “get_ruling” rewrote its description, which is the text the model reads security
- 27 Oct 26 +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.
- 24 Oct 26 0
- 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 security
- Schema quality: 164 → 216 ▼ functional
- Server version: 1.0.0 → 1.1.0 functional
- New tool “list_gazette_issues” functional
- New tool “list_legislation” functional
- “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” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://lebaneselegislation.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=lebaneselegislation.com | CN=YE2,O=Let's Encrypt,C=US | 30 Sept 2026 | 29 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 55d22ce63dabdd2e1c2e64087f2f93c5b80 |
| SANs: *.lebaneselegislation.com, lebaneselegislation.com | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of lebaneselegislation.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| lebaneselegislation.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self'; worker-src 'self' blob:; script-src 'self' 'sha256-WZRJfWvsnNCPcxzZwvyhovnZGqhZaC+8gPGPRbx6wTk=' https://www.googletagmanager.com https://static.cloudflareinsights.com; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' data: https://*.google-analytics.com https://*.googletagmanager.com https://analytics.google.com https://*.analytics.google.com https://*.g.doubleclick.net https://www.google.com; connect-src 'self' https://*.google-analytics.com https://analytics.google.com https://*.analytics.google.com https://*.g.doubleclick.net https://www.google.com https://*.googletagmanager.com https://cloudflareinsights.com; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), payment=(), usb=(), interest-cohort=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://lebaneselegislation.com/mcp | Verified | 200 | |
| http (plaintext) | http://lebaneselegislation.com/mcp | HTTPS enforced | 301 | https://lebaneselegislation.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_article ~313
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.
| Name | Type | Req | Description |
|---|---|---|---|
| law_id | integer | yes | the law's id (see get_law) |
| number | string | yes | the article's printed number, e.g. "212", "12 مكرر" or "586-1" (an article numbered under another; "586 (1)" works too) |
No output schema declared.
No examples provided.
get_gazette_issue ~57
Get one Official Gazette issue by id: its number, publication date, and the laws, decrees and decisions it published. Not legal advice.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | the issue's numeric id, from search_legislation |
No output schema declared.
No examples provided.
get_law ~188
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | the law's numeric id, from search_legislation or its URL |
No output schema declared.
No examples provided.
get_law_texts ~191
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.
| Name | Type | Req | Description |
|---|---|---|---|
| law_id | integer | yes | 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) |
No output schema declared.
No examples provided.
get_links ~371
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.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | "to" (edges that name this item as their target) or "from" (edges this item itself carries) |
| key | string | yes | 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 |
No output schema declared.
No examples provided.
get_ruling ~125
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | the ruling's numeric id, from search_legislation |
No output schema declared.
No examples provided.
list_gazette_issues ~221
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 |
No output schema declared.
No examples provided.
list_legislation ~298
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 |
No output schema declared.
No examples provided.
possibly_affected ~72
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.
| Name | Type | Req | Description |
|---|---|---|---|
| law_id | integer | yes | the law's numeric id |
No output schema declared.
No examples provided.
search_legislation ~415
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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | narrow to one category; omit to search all four |
| limit | integer | – | results per category, at most 20 |
| query | string | yes | 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 |
No output schema declared.
No examples provided.
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.
remote · lebaneselegislation.com
claude mcp add --transport http com-lebaneselegislation-mcp 'https://lebaneselegislation.com/mcp'
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.