Qanun: Tunisian law
Server Details
Search Tunisian law and JORT announcements in Arabic and French, with article and JORT citations.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool targets a distinct resource: single article lookup (get_article), text-level metadata/article listing (get_text), full-text law search (search_law), announcement search (search_announcements), and a JORT activity digest (latest_jort). The only mild overlap is get_article vs get_text since both surface articles, but the descriptions make the granularity distinction clear.
Four of five tools follow a clear verb_noun pattern (get_article, get_text, search_law, search_announcements) with two get_ and two search_ verbs. latest_jort deviates with an adjective_noun form and no verb, a minor inconsistency.
Five tools is a tight, purposeful surface for a legal database, with each tool covering a distinct access pattern. It is slightly under-provisioned since there is no tool to browse or list laws by category/date, but nothing is redundant.
The surface covers the core legal workflows: retrieve a text, retrieve an article, full-text search laws, search JORT announcements, and check recent activity. Minor gaps exist around exploratory browsing (listing all texts or filtering laws by type/date) that agents would have to work around via search.
Available Tools
5 toolsget_articleGet an article of Tunisian lawARead-onlyInspect
Get one article of a Tunisian law or code by text_id and article number, with French and Arabic side by side when available. Obtenir un article d'un texte de droit tunisien (texte_id et numéro), en français et en arabe côte à côte si disponibles.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | both | |
| text_id | Yes | Text id from search_law, e.g. "code/travail" or "loi/2016-10" | |
| article_no | Yes | Article number, e.g. "14", "14 bis", "unique" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower, and the description adds genuine context beyond them: the return is French and Arabic side by side, qualified by 'when available', which tells the agent output may be partial. It does not cover behavior when the article number does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key constraints (one article, keyed by text_id and number, bilingual output) are front-loaded in a single sentence. The full French restatement doubles the length, which is defensible for a bilingual legal-domain tool but adds no information an English-reading agent did not already have.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-required-parameter read tool with no output schema, the description should carry the return shape, and it only says French/Arabic side by side 'when available' without describing the response structure or the not-found case. Adequate but with visible gaps for an agent deciding what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; text_id and article_no are documented in the schema with examples, and the description restates them without adding format detail. The lang parameter has no schema description, and the description only indirectly implies its effect ('French and Arabic side by side') without explaining the fr/ar/both options or the default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieve a single article of a Tunisian law/code, keyed by text_id and article number. That is clearly narrower than get_text (whole text) and search_law (discovery), though the description never names those siblings to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the required text_id and article_no make it obvious this is a follow-up lookup once a text is known, and the schema's 'from search_law' note hints at the workflow, but that guidance lives in the schema, not the description. No explicit when-not or pointer to get_text for full-text retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_textGet a Tunisian legal textARead-onlyInspect
Get metadata and the list of articles of a Tunisian law or code (500 per page; use offset to paginate). Obtenir les métadonnées et la liste des articles d'une loi ou d'un code tunisien (500 par page ; paginer avec offset).
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| text_id | Yes | Text id, e.g. "code/coc" or "loi-organique/2016-22" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the 500-per-page limit and pagination behavior, which the annotations do not convey, but it says nothing about output shape (e.g., whether articles come as stubs or full text) or what happens on an unknown text_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and short, with the pagination hint in a parenthetical. The full bilingual duplication doubles the text for no informational gain, which is the only waste, but it is the same statement repeated rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema, the description covers purpose, scope, and pagination adequately. The remaining gap is that it doesn't characterize the return payload (metadata fields, article granularity), which would matter for a list of up to 500 articles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: text_id is documented with concrete examples ("code/coc", "loi-organique/2016-22"), while offset has only type and default. The description compensates for offset by explaining the 500-per-page page size, but adds no id format guidance beyond the schema. Baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource — retrieving metadata plus the article list for a Tunisian law or code — and its scope is distinguishable from siblings like get_article (single article) and search_law (searching). An agent can tell what it returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The pagination clause implies when to use offset (for texts longer than 500 articles), which is useful operational guidance. However, it never states when to prefer this tool over search_law or how it relates to get_article, so sibling routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
latest_jortLatest JORT activityBRead-onlyInspect
Summarise recent Tunisian official journal (JORT) activity: announcement counts by kind, the 20 latest announcements and newly added law texts. Résumé de l’activité récente du JORT tunisien : annonces par type, les 20 dernières annonces et les nouveaux textes de loi.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral content by stating exactly what the summary includes: announcement counts by kind, the 20 latest announcements, and newly added law texts. It does not explain the time-window behavior or whether counts respect the 'days' input, but it goes well beyond restating annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English sentence is front-loaded and efficient, naming the action and outputs immediately. However, the identical content is repeated in French, roughly doubling the length without adding information for an agent that already understands either language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only summary tool with no output schema, the description adequately explains the returned content. It is incomplete because the sole parameter, its default lookback, and its upper bound are absent, which is critical for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has one parameter, 'days', with 0% schema description coverage, and the description never names or explains it. The word 'recent' is not tied to the default of 7 days or the maximum of 90 days, leaving the only invocation control undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'summarise', and a specific resource, 'recent Tunisian official journal (JORT) activity', then enumerates the outputs: counts by kind, the 20 latest announcements, and newly added law texts. It is clear what the tool produces, but it does not explicitly distinguish itself from sibling search tools such as search_announcements or search_law.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use, when-not-to-use, or alternative routing guidance. An agent must infer from the word 'recent' that this is an overview tool rather than a targeted search tool, and the sibling tools search_announcements and search_law are never mentioned as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_announcementsSearch JORT legal announcementsBRead-onlyInspect
Search Tunisian official JORT legal announcements (company formation, changes, dissolution, merger) by company name, keywords, RNE number or date. Rechercher les annonces légales du JORT tunisien (constitution, modification, dissolution, fusion) par société, mots-clés, numéro RNE ou date.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| query | No | Full-text keywords | |
| company | No | Company name (fuzzy match) | |
| date_to | No | YYYY-MM-DD | |
| date_from | No | YYYY-MM-DD | |
| rne_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful domain context by naming the announcement categories (company formation, changes, dissolution, merger), but says nothing about result shape, pagination, or behavior when no filters are supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The searchable axes are front-loaded in a single sentence, with the bilingual French rendering being an intentional accessibility choice rather than filler. The trade-off is that the same information is stated twice, so there is no net new content in the second half.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven optional parameters, no output schema, and no required fields, an agent needs to know what results look like and how to narrow a broad query. The description covers the domain but not result structure, pagination, or fallback behavior for zero-result searches, which is a meaningful gap for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 57% schema description coverage, the schema already documents query, company (fuzzy), and the date patterns. The description roughly mirrors those same four search axes without adding syntax, matching behavior, or precedence when multiple filters are provided, and it never mentions the 'kind' enum or the 'limit' cap as usable filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (Tunisian official JORT legal announcements) and enumerates the covered announcement types, so the domain is unambiguous. It does not explicitly distinguish itself from the sibling search_law, leaving the boundary between 'legal announcements' and 'laws' to be inferred from the resource name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists which fields can be searched but gives no when-to-use guidance, no exclusions, and no mention of alternatives such as search_law or latest_jort, which are the obvious overlapping siblings. It also omits whether filters can be combined, which matters for a seven-parameter search tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_lawSearch Tunisian lawARead-onlyInspect
Search Tunisian law (codes, laws, organic laws, decree-laws) by keywords in French or Arabic; returns matching articles with JORT references. Recherche plein texte dans le droit tunisien (codes, lois, décrets-lois) en français ou en arabe ; renvoie les articles avec la référence JORT.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Restrict to one kind of text | |
| lang | No | Language of articles to search: fr, ar or both | both |
| limit | No | ||
| query | Yes | Keywords or a question, in French or Arabic | |
| year_to | No | Latest year of the text | |
| year_from | No | Earliest year of the text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, closed-corpus operation, so the bar is lower. The description usefully adds that results are article-level with JORT citations and that both French and Arabic text is searchable, but it says nothing about result ordering, relevance behavior, or how truncated/large result sets behave beyond the schema's limit cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and return content are front-loaded in a single well-formed sentence. The only waste is that the French sentence is a near-verbatim restatement of the English one; reasonable for a bilingual legal tool but it doubles length without adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no output schema, and a non-trivial domain, the description covers the essentials: scope of the corpus, languages supported, and the shape of returned data (articles with JORT references). Missing only retrieval-behavior details (top-N semantics, ranking), which are minor for a straightforward search endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so kind, lang, query, year_from, and year_to are already documented in structured fields, and limit is bounded by min/max. The description only loosely reinforces the query/lang semantics ('keywords in French or Arabic') without adding format, syntax, or matching behavior beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search Tunisian law') plus the covered document types (codes, laws, organic laws, decree-laws) and what is returned ('matching articles with JORT references'). It is clearly distinguishable from get_article/get_text/latest_jort by being a keyword search, but it never explicitly names a sibling or draws the boundary with search_announcements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer 'use this when you have keywords in French or Arabic about Tunisian legislation.' There is no statement of when to prefer this over search_announcements, get_article, or get_text, and no note on fallback behavior when results are empty.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
get_article - First observed
get_text - First observed
latest_jort - First observed
search_announcements - First observed
search_law
Related MCP Connectors
Search and read Lebanese laws, articles, court rulings and Gazette issues. Verbatim texts only.
Search and cite UAE law (federal, Dubai, Abu Dhabi, DIFC, ADGM) with verifiable citations.
French law articles, codes, collective agreements, case law (Judilibre) and IDCC lookup.
Grounded MENA legal search, reasoning, citation resolution, and citation-graph traversal.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceLebanese laws, articles, court rulings and Official Gazette issues, returned verbatim: search in Arabic, French or English, articles in force with amendment history, and citation links. Free public remote server with no API key, or run it locally with Docker.1MIT
- AlicenseAqualityBmaintenanceStatute & article text (mevzuat.gov.tr) and court decisions (UYAP Emsal, Council of State, Constitutional Court), with their citation, source, live. It works as long as the official sources remain reachable.2241 PyPI19MIT
- AlicenseAqualityCmaintenanceStatute & article text (mevzuat.gov.tr) and court decisions (UYAP Emsal, Council of State, Constitutional Court), with their citation, source, live. It works as long as the official sources remain reachable.4179 PyPI6MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search Turkish legislation by natural-language query or citation, retrieve full article text including ranges and paragraphs, and return results with official citations, Official Gazette details, and source links.Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.