OHADA MCP
This server is a Remote MCP server that enables legal research on OHADA law texts and the SYSCOHADA accounting reference. It offers the following capabilities:
Search OHADA law: Perform full-text searches across the OHADA corpus to find relevant provisions (
search_ohada_law).Retrieve articles: Fetch the full text of a single article with hierarchical context and source metadata (
get_article), or batch fetch 2–5 articles at once (get_articles).Verify citations: Validate and normalize legal citations, returning canonical reference and confidence (
verify_citation).Check temporal applicability: See if an article's indexed version was applicable on a specific date (
get_provision_at_date).Access act metadata: Get details about specific OHADA acts, such as adoption date and description (
get_act), and check the indexed version of a text (get_version).List all indexed texts: View a catalogue of currently available OHADA legal texts (
list_legal_texts).Search SYSCOHADA: Retrieve passages or full accounts from the SYSCOHADA accounting standards.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OHADA MCPGet the full text of article 30 of the OHADA arbitration act"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OHADA MCP
Le serveur MCP public de recherche juridique OHADA.
OHADA MCP permet à Claude, Gemini et aux clients compatibles MCP de rechercher les textes OHADA, de récupérer un article complet, de vérifier une citation et de consulter le SYSCOHADA.
Projet indépendant créé par Christ Chad. Il n'est pas encore affilié, approuvé ou exploité officiellement par l'OHADA.
Connexion
URL du serveur :
https://ohada-mcp-oa42gsj75q-ew.a.run.app/mcpClaude
Avec Claude Pro, Max, Team ou Enterprise :
Ouvrez Settings → Connectors dans Claude ou Claude Desktop.
Cliquez sur Add custom connector.
Nommez-le
OHADA MCPet collez l'URL ci-dessus.Activez les outils dans le menu Search and tools d'une conversation.
Guide officiel des connecteurs personnalisés Claude
Autres clients MCP
Utilisez cette configuration lorsque votre client demande une URL de serveur MCP :
{
"mcpServers": {
"ohada": {
"url": "https://ohada-mcp-oa42gsj75q-ew.a.run.app/mcp"
}
}
}Related MCP server: ro-eli-mcp
Ce que le serveur fournit
recherche de dispositions pertinentes ;
texte intégral d'un article et de son contexte hiérarchique ;
récupération groupée de plusieurs articles ;
contrôle d'une citation et de la version indexée ;
recherche dans le SYSCOHADA et récupération de passages ou comptes complets avec leurs pages.
Le corpus couvre actuellement 13 textes OHADA ainsi que la publication officielle SYSCOHADA. La jurisprudence CCJA et nationale n'est pas encore incluse.
Confidentialité
OHADA MCP ne conserve ni le texte des questions ni les recherches des utilisateurs. N'envoyez pas de dossier client, données personnelles ou informations confidentielles à ce serveur public. Claude, Gemini ou tout autre assistant connecté applique sa propre politique de confidentialité.
Documentation
La documentation complète est disponible à l'adresse christchad-mv.github.io/ohada-mcp-server.
Licence
Le code est distribué sous licence MIT. OHADA MCP est un outil de recherche documentaire, pas un conseil juridique.
Available Tools
8 toolsget_actARead-onlyIdempotent
Retourne les métadonnées complètes d'un texte OHADA identifié par son code. À utiliser pour une question portant sur l'acte lui-même, pas pour lire un article.
| Name | Required | Description | Default |
|---|---|---|---|
| act_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | Yes | Unique code of the Uniform Act |
| name | Yes | Short name of the Act |
| year | Yes | Year of adoption/revision |
| full_name | Yes | Full official title of the Act |
| description | Yes | Summary scope and objective of the Act |
| effective_date | Yes | Date of entry into force (YYYY-MM-DD) |
| total_articles | No | Total number of articles in the Act |
| official_source | Yes | Official publication source |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds that it returns 'complete metadata', which clarifies the output scope, but does not disclose details about error behavior or edge cases. This is adequate but not rich contextual addition.
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 description is two short sentences, each earning its place. The first sentence states the primary function, and the second provides usage distinction. There is no redundant or filler content.
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?
Given the tool's simplicity (one parameter, output schema present, read-only annotations), the description is fully adequate. It explains what the tool does, when to use it, and clearly contrasts with reading articles. No additional information seems necessary for an agent to select and invoke it 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 input schema only provides the parameter name 'act_code' with type string and no description. The description compensates by stating the text is 'identifié par son code', directly clarifying that the parameter is the code of the legal text. This adds meaningful semantic context beyond the schema, though it does not provide format examples.
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 clearly states the tool returns complete metadata for an OHADA legal text identified by its code, using the specific verb 'Retourne' and resource 'métadonnées complètes d'un texte OHADA'. It explicitly distinguishes itself from reading article content, differentiating it from sibling tools like get_article.
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 provides explicit usage guidance: 'À utiliser pour une question portant sur l'acte lui-même, pas pour lire un article.' This gives a clear when-to-use condition and an explicit exclusion, directing the agent away from using this tool for article reading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleARead-onlyIdempotent
Retourne le texte normatif intégral et reconstruit d'un article OHADA exact, avec sa hiérarchie, sa version et sa source officielle. À utiliser lorsqu'une seule disposition est matériellement nécessaire ; utiliser get_articles pour deux à cinq dispositions.
| Name | Required | Description | Default |
|---|---|---|---|
| act_code | Yes | ||
| article_reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | Complete verbatim normative text of the article |
| status | No | Current legal status: 'in_force', 'repealed', 'amended' |
| version | Yes | Promulgation year or version tag (e.g. '2010', '2014') |
| act_code | Yes | Unique code of the Uniform Act (e.g. AUDCG, AUSCGIE) |
| act_name | Yes | Short name of the Act |
| effective_from | No | Enforcement start date (YYYY-MM-DD) |
| effective_until | No | Enforcement end date if repealed (YYYY-MM-DD) |
| official_source | Yes | Official publication source |
| article_reference | Yes | Article reference string (e.g. '16', '13 bis', '655-1', '44 ter') |
| hierarchy_context | Yes | Structural location context |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is known. The description adds useful context about the output's completeness ('intégral et reconstruit') and included metadata (hierarchy, version, source), which goes beyond the structured 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 description consists of two short, front-loaded sentences. The first states the core function and output scope; the second provides usage differentiation. Every word earns its place, with no redundancy or filler.
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?
Given the tool's moderate complexity, the description covers purpose, usage, and key output characteristics. The presence of an output schema covers return value details. However, the lack of parameter semantics is a small completeness gap, preventing a perfect score.
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 0%, so the description must compensate for explaining act_code and article_reference. The description does not mention either parameter or provide any format or usage details. The phrase 'article OHADA exact' hints at precision but does not explain the parameters themselves, leaving a significant gap.
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 ('Retourne') and resource ('article OHADA exact') and clearly states the returned content (text, hierarchy, version, official source). It also distinguishes itself from sibling tool get_articles, satisfying the sibling differentiation criterion.
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 explicitly says when to use this tool ('lorsqu'une seule disposition est matériellement nécessaire') and names the alternative for two to five provisions ('utiliser get_articles'). This provides clear and unambiguous usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articlesARead-onlyIdempotent
Retourne en un seul appel le texte normatif intégral de deux à cinq articles exacts. À préférer après une recherche lorsque plusieurs dispositions sont matériellement nécessaires. Utiliser get_article pour une seule référence. Les erreurs sont isolées par référence afin de préserver les articles valides.
| Name | Required | Description | Default |
|---|---|---|---|
| articles | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| articles | No | |
| result_count | Yes | |
| requested_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint), the description adds a key behavioral detail: 'Les erreurs sont isolées par référence afin de préserver les articles valides' (errors are isolated by reference to preserve valid articles). This explains failure handling, which is not captured in annotations. However, it doesn't provide much additional behavioral context beyond this, so 4 is appropriate.
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 description is three concise, front-loaded sentences. Each sentence serves a distinct purpose: stating the primary function, providing usage guidance, and disclosing error handling. No unnecessary words or repetition.
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?
Given the availability of an output schema and strong annotations, the description adequately covers the essential context: the batch retrieval nature, the count limit (2-5), preference after search, alternative for single article, and error isolation behavior. There are no major gaps for the agent to successfully invoke this 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?
The description does not directly describe the parameter structure, and schema description coverage is 0%. However, it does add the constraint 'de deux à cinq articles exacts' (exactly two to five articles), which is not present in the schema (which only says 'array'). This provides some semantic value, but it does not explain the act_code/article_reference fields, leaving the agent to rely on the schema's brief descriptions.
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 clearly states the tool's function: 'Retourne en un seul appel le texte normatif intégral de deux à cinq articles exacts.' It specifies a verb (returns), a resource (full normative text), and a scope (two to five exact articles). It also distinguishes itself from sibling tool get_article by explicitly mentioning the batch nature for multiple articles.
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 provides explicit usage guidance: 'À préférer après une recherche lorsque plusieurs dispositions sont matériellement nécessaires' (prefer after a search when several provisions are needed) and directly names an alternative: 'Utiliser get_article pour une seule référence' (use get_article for a single reference). This clearly states when to use this tool vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provision_at_dateARead-onlyIdempotent
Contrôle si la version indexée d'un article était applicable à une date ISO. Retourne des métadonnées temporelles compactes, sans répéter le texte ; appeler get_article si le contenu intégral est nécessaire. Ne reconstitue pas un ancien libellé remplacé.
| Name | Required | Description | Default |
|---|---|---|---|
| act_code | Yes | ||
| target_date | Yes | ||
| article_reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| act_code | Yes | |
| limitation | Yes | Explicit limitation: the service does not reconstruct superseded wording |
| target_date | Yes | |
| is_applicable | Yes | |
| effective_from | No | |
| status_at_date | Yes | |
| effective_until | No | |
| indexed_version | Yes | |
| article_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable behavioral context: it returns compact temporal metadata without repeating text and does not reconstruct old wording. This clarifies the output nature and a limitation, complementing the annotations without contradiction.
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 description is two sentences long, front-loads the main purpose, and includes an alternative tool and a limitation. Every sentence carries necessary information with no filler or repetition.
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?
The description covers the tool's purpose, usage direction, and a key limitation, and the output schema presumably documents the return fields. The only slight omission is explicit mention of act_code, but the name and parameters make it reasonably inferable, and the description is otherwise complete for a read-only temporal check 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?
The description clarifies that target_date is an ISO date and that an article is the indexed version, but it does not explain the role of act_code. With schema description coverage at 0%, this leaves one parameter not explicitly documented, though the other two gain some semantic context beyond their names.
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 clearly states the tool checks whether an indexed article version was applicable to an ISO date ('Contrôle si la version indexée d'un article était applicable à une date ISO'). It also differentiates itself from get_article by noting it returns temporal metadata rather than full text, making the purpose specific and distinct among siblings.
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 explicitly directs users to call get_article when full content is needed ('appeler get_article si le contenu intégral est nécessaire') and warns that it does not reconstruct replaced wording ('Ne reconstitue pas un ancien libellé remplacé'). This provides clear when-to-use and when-not-to-use guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionARead-onlyIdempotent
Retourne les métadonnées de la version actuellement indexée d'un texte. L'historique exhaustif des versions antérieures n'est pas encore disponible.
| Name | Required | Description | Default |
|---|---|---|---|
| act_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint false. The description adds valuable context by specifying that it returns metadata of the current indexed version and that exhaustive historical version tracking is not yet available, which is a behavioral limitation. No contradiction with annotations noted.
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 description is concise, consisting of two sentences that immediately state the tool's core function and a relevant limitation. There is no redundant or extraneous information; every sentence earns its place.
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?
Given the tool's simplicity (one parameter, output schema present, and strong annotations), the description is largely sufficient. It explains the return value (metadata of current version) and a key limitation (no historical versions), while the output schema likely details the return structure. A minor gap is not specifying behavior for invalid act_code, but this is minor given the overall context.
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 input schema has one required parameter, act_code, with 0% schema description coverage. The description does not elaborate on what act_code represents or how to use it, relying solely on the schema's field name and title 'Act Code'. Since the description provides no additional meaning beyond the schema, it fails to compensate for the low coverage.
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 clearly states the tool returns metadata of the currently indexed version of a text, which is a specific and distinct purpose. It differentiates from siblings like get_act and get_article by focusing on version metadata and notes the unavailability of historical versions, making its scope unambiguous.
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 conveys clear context: use this tool to get metadata for the current indexed version. However, it does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or alternative tools for historical versions. The usage is implied rather than directly instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_legal_textsARead-onlyIdempotent
Retourne le catalogue compact des textes actuellement indexés. À utiliser uniquement pour connaître la couverture ou identifier un code d'acte.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds the 'compact' nature and 'currently indexed' status, providing some additional context, but does not disclose details like response format or potential limitations beyond what annotations and output schema already provide.
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 description is a single concise sentence that front-loads the action ('Retourne le catalogue compact') followed by usage guidance. Every word earns its place with no redundancy or filler.
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?
This is a simple zero-parameter tool with strong annotations (readOnly, idempotent) and an output schema. The description fully covers the purpose and usage context, so nothing else is needed for the agent to select and invoke it 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 input schema has zero parameters, so the baseline is 4 per evaluation guidelines. The description does not need to add parameter semantics because there are none, and it doesn't introduce confusion.
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 clearly states the tool returns the compact catalog of currently indexed legal texts ('Retourne le catalogue compact des textes actuellement indexés'). It also specifies its purpose for determining coverage or identifying act codes, which distinguishes it from sibling tools like search_ohada_law and get_article.
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 provides explicit direction on when to use the tool: 'À utiliser uniquement pour connaître la couverture ou identifier un code d'acte.' This clearly frames the usage scope. However, it does not name alternative tools directly, though sibling names are evident from the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ohada_lawARead-onlyIdempotent
Découvre des dispositions candidates par recherche textuelle dans le corpus OHADA. Retourne uniquement des extraits courts et des références. Utiliser ensuite get_article pour lire intégralement chaque disposition retenue. Ne pas multiplier les recherches si les premières références répondent déjà à la question.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| act_filter | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | Original search query |
| results | No | Ranked list of search results |
| act_filter | No | Act filter applied if any |
| result_count | Yes | Number of distinct ranked results returned |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds value by stating the tool returns only short excerpts and references, and that results are 'candidate' provisions, which sets expectations about the nature of the output.
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 description is three short, focused sentences. Each sentence adds a distinct piece of information: what the tool does, what it returns, and guidance on follow-up and efficiency. No waste.
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?
The description provides a clear workflow with get_article and mentions return characteristics, but it lacks documentation for the optional parameters. Since the output schema exists, return values need not be described in detail, but the parameter gap leaves the description moderately incomplete for a search tool with filtering options.
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 schema has 0% description coverage, so the description should compensate. While 'query' is implied by 'recherche textuelle', the optional parameters 'act_filter' and 'max_results' are not described at all, leaving the agent uncertain about how to set them, especially 'act_filter' which is domain-specific.
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 clearly states the tool discovers candidate provisions by textual search in the OHADA corpus and returns short excerpts and references. It distinguishes itself from get_article, which is explicitly mentioned for reading full provisions.
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 explicitly instructs to use get_article after search to read full provisions, and advises against multiplying searches when the first references suffice. It does not explicitly state when not to use search (e.g., when a citation is already known), but the workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_citationARead-onlyIdempotent
Vérifie et normalise une citation fournie par l'utilisateur. Retourne seulement la référence canonique et son statut, jamais le texte de l'article. Ne pas appeler cet outil après un get_article ou get_articles réussi pour la même référence.
| Name | Required | Description | Default |
|---|---|---|---|
| citation_text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | Status of the matched indexed provision |
| version | No | Version containing the matched article |
| act_code | No | Matched canonical act code |
| is_valid | Yes | True if the citation exists in the canonical OHADA legal framework |
| confidence | Yes | Confidence score (0.0 to 1.0) |
| explanation | Yes | Detailed verification outcome explanation |
| citation_text | Yes | Original citation string submitted |
| article_reference | No | Matched canonical article reference |
| canonical_citation | No | Normalized canonical citation if found |
| official_source_url | No | Official source URL for the matched act |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent, and the description adds valuable behavioral constraints: it returns only the canonical reference and status, never the article text. This prevents the agent from expecting full article content. It also warns against redundant calls after a successful article retrieval, which is useful operational context.
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 description is three short sentences, each delivering distinct information: purpose, output behavior, and usage warning. There is no redundancy or filler, making it highly efficient.
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?
Given the simple input and presence of an output schema, the description covers the essential aspects: what it does, what it returns, and an important usage constraint. It does not elaborate on the meaning of 'status' or the canonical reference format, but these are likely self-explanatory or defined in the output schema. Overall, it is sufficiently complete for an agent to invoke 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 input schema has one parameter, citation_text, and the description offers minimal additional meaning (only that it is a 'citation fournie par l'utilisateur'). With 0% schema description coverage, the description does not compensate by explaining expected citation formats or providing examples, so the parameter remains somewhat ambiguous beyond its name.
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 clearly states a specific action (vérifie et normalise) on a specific resource (une citation fournie par l'utilisateur) and distinguishes itself from sibling tools by noting that it returns only the canonical reference and status, never the full article text. This makes its purpose unambiguous and differentiates it from get_article/get_articles.
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 provides explicit usage guidance by stating when not to call the tool: after a successful get_article or get_articles for the same reference. It implies the appropriate use case (when a user provides a citation to verify) but does not explicitly name alternative tools to use in other scenarios. This is clear context with a specific exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: search returns excerpts, get_article/get_articles return full text by count, get_act returns act metadata, list_legal_texts catalogs, get_version gives version metadata, get_provision_at_date checks temporal applicability, and verify_citation normalizes citations. No two tools are likely to be confused due to detailed scoping.
All tool names follow a consistent snake_case verb_noun pattern: search_ohada_law, get_article, get_articles, get_act, list_legal_texts, get_version, get_provision_at_date, verify_citation. The verbs (search, get, list, verify) are used predictably and match the action.
With 8 tools, the set is well-scoped for a legal research assistant. It covers search, retrieval, metadata lookup, and citation validation without unnecessary redundancy or bloat.
The domain is OHADA legal text retrieval and the tools cover the full research workflow: searching, reading articles individually or in batch, accessing act metadata, listing available texts, checking version applicability, and verifying citations. The only minor gap is the lack of a tool to retrieve a complete act's full text in one call, but this is a workable limitation given the multi-article tool.
Maintenance
Related MCP Connectors
Academic research MCP server for paper search, citation checks, graphs, and deep research.
The only MCP server for Arabic academic research — search, read & cite Arabic + English papers.
Thai legal search MCP — statutes, gazette, opinions, court cases, with checkable citations.
Eurlex MCP client: Access EU law & Official Journal. https://www.lexsocket.ai/
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for querying French legislation and case law via the Legifrance API, enabling search and retrieval of laws, codes, and court decisions with verifiable citations.81Apache 2.0
- AlicenseAqualityBmaintenanceThis MCP server enables searching and retrieving Romanian legislation from the Portal Legislativ database via its SOAP API, providing metadata and full text with verifiable citations.3Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for real-time access to Mozambican legislation, enabling search, status checks, article retrieval, historical versions, and citation resolution via the Mozaia platform.MIT

LibreJusticeofficial
AlicenseNot gradedqualityDmaintenanceMCP server for searching French and European law, providing natural language access to jurisprudence, consolidated legal texts, and related legal information via tools like search_decisions and search_legal_texts.28Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ChristChad-mv/ohada-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server