Skip to main content
Glama

Server Quality Checklist

83%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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.

  • Average 4.3/5 across 8 of 8 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 3 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • Tools from this server were used 6 times in the last 30 days.

  • Add a glama.json file to provide metadata about your server.

  • This server has been verified by its author.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

    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.

    Conciseness5/5

    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.

    Completeness4/5

    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.

    Parameters2/5

    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.

    Purpose5/5

    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.

    Usage Guidelines3/5

    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.

  • Behavior4/5

    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.

    Conciseness5/5

    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.

    Completeness3/5

    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.

    Parameters2/5

    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.

    Purpose5/5

    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.

    Usage Guidelines4/5

    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.

  • Behavior4/5

    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.

    Conciseness5/5

    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.

    Completeness4/5

    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.

    Parameters3/5

    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.

    Purpose5/5

    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.

    Usage Guidelines4/5

    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.

  • Behavior4/5

    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.

    Conciseness5/5

    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.

    Completeness4/5

    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.

    Parameters2/5

    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.

    Purpose5/5

    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.

    Usage Guidelines5/5

    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.

  • Behavior3/5

    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.

    Conciseness5/5

    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.

    Completeness5/5

    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.

    Parameters4/5

    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.

    Purpose5/5

    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.

    Usage Guidelines4/5

    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.

  • Behavior3/5

    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.

    Conciseness5/5

    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.

    Completeness5/5

    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.

    Parameters4/5

    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.

    Purpose5/5

    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.

    Usage Guidelines5/5

    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.

  • Behavior4/5

    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.

    Conciseness5/5

    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.

    Completeness5/5

    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.

    Parameters3/5

    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.

    Purpose5/5

    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.

    Usage Guidelines5/5

    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.

  • Behavior5/5

    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.

    Conciseness5/5

    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.

    Completeness5/5

    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.

    Parameters3/5

    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.

    Purpose5/5

    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.

    Usage Guidelines5/5

    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.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

ohada-mcp-server MCP server

Copy to your README.md:

Score Badge

ohada-mcp-server MCP server

Copy to your README.md:

Latest Blog Posts

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