wezas-africa-toolkit
Click on "Deploy 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., "@wezas-africa-toolkitIs 077123456 a valid mobile number in Gabon?"
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.
Wezas Africa Toolkit
Pourquoi Wezas Africa Toolkit ?
Dans des projets comme MedRDV, StockR ou Gabozon, nous retrouvons systématiquement les mêmes besoins :
Valider un numéro de téléphone africain avec les bons formats (8, 9 ou 10 chiffres selon les récentes réformes ARCEP), détecter l'opérateur et sa compatibilité Mobile Money.
Convertir des devises de la zone franc (
XAF,XOF,EUR) avec parité fixe garantie sans dépendre d'une connexion réseau instable.Connaître les indicatifs, les langues, les fuseaux horaires et les jours fériés légaux (fixes, fêtes mobiles chrétiennes calculées dynamiquement, fêtes musulmanes).
Wezas Africa Toolkit résout ces problèmes sous la forme d'un serveur Model Context Protocol (MCP) standardisé, utilisable directement par vos assistants IA (Claude Desktop, Cursor, Windsurf, Copilot, etc.) ou en bibliothèque Python autonome.
Related MCP server: mcp-phone
Installation rapide & Connexion MCP
Option A : Directement via npx (Recommandé, Node.js / Claude Desktop)
npx -y wezas-africa-toolkitOption B : En local via uvx (Python)
uvx wezas-africa-toolkitOption C : Découverte & Registre MCP via Glama
Consultez la fiche et explorez les outils sur le registre Glama MCP :
Registre Glama : glama.ai/mcp/servers/Benjamin09e/wezas-toolkit
Option D : Connexion distante via Server-Sent Events (SSE)
Vous pouvez également connecter vos agents directement au serveur hébergé sur Render sans rien exécuter en local :
URL SSE :
https://wezas-backend.onrender.com/sseMéthode :
sse
Configuration dans vos IDE & Clients IA
1. Claude Desktop
Ajoutez ce bloc de configuration prêt à copier dans votre fichier de configuration Claude Desktop :
macOS :
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows :
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wezas-africa": {
"command": "npx",
"args": ["-y", "wezas-africa-toolkit"]
}
}
}(Si vous préférez l'environnement Python avec uvx, remplacez "command": "uvx" et "args": ["wezas-africa-toolkit"]).
2. Cursor IDE
Dans Cursor Settings > Features > MCP Servers > Add New MCP Server :
Name :
wezas-africaType :
commandCommand :
npx -y wezas-africa-toolkit
3. Windsurf
Dans votre fichier ~/.codeium/windsurf/mcp_config.json :
{
"mcpServers": {
"wezas-africa": {
"command": "npx",
"args": ["-y", "wezas-africa-toolkit"]
}
}
}Outils disponibles (Volet 1)
Tous les outils retournent une réponse enveloppée uniforme (Envelope) contenant ok, data, source, derniere_verification, confiance et d'éventuels avertissements.
1. valider_telephone(pays, numero)
Valide et normalise n'importe quel numéro de téléphone local ou international.
Exemple d'appel :
valider_telephone(pays="Gabon", numero="077 12 34 56")Réponse :
{ "ok": true, "data": { "valide": true, "e164": "+24177123456", "format_national": "077123456", "type": "mobile", "operateur_probable": "Airtel Gabon", "mobile_money": ["Airtel Money"], "pays": { "iso2": "GA", "nom": "Gabon" } }, "source": "ARCEP Gabon / UIT Décision Plan National de Numérotation 2024", "confiance": "moyenne", "avertissements": [ { "code": "PORTABILITE_NUMERO", "message": { "fr": "L'opérateur et la compatibilité Mobile Money sont probables mais peuvent différer en cas de portabilité." } } ] }
2. convertir_devise(montant, de, vers, taux?)
Conversion exacte par fractions sans approximation binaire.
Parité fixe garantie :
1 EUR = 655,957 XAF = 655,957 XOF.Gestion de l'USD avec taux indicatif de repli daté ou taux personnalisé fourni par l'utilisateur.
Exemple :
convertir_devise(montant=15000, de="EUR", vers="XAF")->9839355 XAF.
3. info_pays(pays, annee?, champs?)
Informations clés complètes et calendrier des jours fériés légaux.
Indicatif international, capitale, fuseaux horaires avec heure locale dynamique (
zoneinfo).Jours fériés à date fixe, calcul automatique de Pâques (Vendredi Saint, Ascension, Pentecôte) et fêtes musulmanes.
Exemple :
info_pays(pays="Sénégal", annee=2026)
Couverture actuelle (v0.1)
Zone | Pays couverts |
Afrique Centrale (XAF) | 🇬🇦 Gabon ( |
Afrique de l'Ouest (XOF) | 🇸🇳 Sénégal ( |
Contribuer
Wezas Africa Toolkit est un projet communautaire. Vous pouvez facilement ajouter de nouveaux pays ou corriger des données télécoms :
Consultez le Guide de Contribution (CONTRIBUTING.md).
Utilisez le script de scaffolding :
uv run python scripts/scaffold_country.py --iso RW --nom Rwanda.Vérifiez la conformité des schémas :
uv run python scripts/validate_data.py.
Licence
Distribué sous licence open source MIT.
Available Tools
9 toolscalculer_tvaCalculer TvaB
Calcule la TVA et les montants HT/TTC selon les taux officiels du pays africain. Calculates VAT and net/gross amounts according to official African country rates.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "ht" pour calculer la TVA et le TTC, ou "ttc" pour extraire la TVA et le HT. | ht |
| pays | Yes | Nom ou code pays (ex. "Gabon", "GA", "Cameroun", "Sénégal"). | |
| montant | Yes | Montant de base (nombre ou chaîne, ex. 10000). | |
| type_taux | No | "standard" (par défaut), "reduit" ou "super_reduit". | standard |
| taux_personnalise | No | Taux décimal personnalisé optionnel (ex. 0.18 pour 18%). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load, and it does disclose one important trait: rates come from a built-in table of official African country rates rather than being supplied by the caller. It says nothing about what happens for unsupported countries, rate-table coverage, rounding, or whether taux_personnalise overrides type_taux.
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?
Two short sentences that front-load the core purpose, with no filler. The only inefficiency is that the French and English lines are verbatim restatements rather than complementary detail.
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?
Five parameters, two enums, and an output schema means the return values need no explanation, and the schema covers the inputs. Still missing are the behaviors an agent needs to call it correctly: precedence of taux_personnalise, behavior for an unrecognized country, and rounding convention.
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 100% and every parameter, including both enums, is documented inline, so the schema does the heavy lifting. The description adds only the framing that 'pays' keys into an official rate table; it never disambiguates mode or the precedence between taux_personnalise and type_taux.
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?
Names a specific verb (calcule) and a specific output set (TVA et montants HT/TTC), plus a scope qualifier (taux officiels du pays africain) that tells the agent where the rates come from. It does not, however, distinguish itself from nearby siblings such as convertir_devise or formater_montant, so an agent must infer the boundary.
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 when-to-use / when-not-to-use guidance and never mentions the siblings it overlaps with (currency conversion, amount formatting). It also does not say when to prefer type_taux over taux_personnalise, leaving the caller to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convertir_deviseConvertir DeviseA
Convertit un montant entre XAF, XOF, EUR et USD, hors ligne ou avec taux personnalisé. Converts an amount between XAF, XOF, EUR and USD, offline or with custom rate.
| Name | Required | Description | Default |
|---|---|---|---|
| de | Yes | Devise source : XAF, XOF, EUR ou USD. | |
| taux | No | Taux personnalisé optionnel pour devises flottantes (ex. 610.5 ou 1.08). | |
| vers | Yes | Devise cible : XAF, XOF, EUR ou USD. | |
| montant | Yes | Montant à convertir (nombre ou texte, ex. 15000 ou "15 000"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose that conversion works offline and supports a custom rate, which is genuinely useful behavioral context. It omits what happens without a rate, rounding/precision behavior, and error handling for unsupported currencies, leaving notable gaps.
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?
Two tight sentences, front-loaded with the core action and currency scope. The bilingual restatement doubles length but is efficient and non-redundant in 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?
An output schema exists and the input schema is fully documented, so the description needn't explain return values. Given the low complexity of a currency conversion, the definition is nearly complete, with only minor gaps around default rate sourcing and precision.
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 100%, so the schema already documents all four parameters including the optional taux. The description reinforces the offline/default-rate versus custom-rate distinction but adds no format or validation detail beyond the schema, so 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?
The description names a specific verb (convertit/converts) and resource (montant/devise) and enumerates the supported currencies XAF, XOF, EUR and USD. It does not explicitly contrast itself with related siblings like formater_montant or calculer_tva, so it stops short of a 5.
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?
It implies context by mentioning 'hors ligne ou avec taux personnalisé' (offline, or with a custom rate), which tells the agent this works without a live rate feed. However, there is no explicit when-to-use guidance and no naming of alternatives such as formater_montant, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formater_montantFormater MontantB
Formate un montant avec les séparateurs et symboles monétaires locaux. Formats an amount with local currency symbols and grouping separators.
| Name | Required | Description | Default |
|---|---|---|---|
| pays | No | Nom ou code ISO du pays (ex. "Gabon", "CI") pour déduire la devise. | |
| devise | No | Code devise (XAF, XOF, EUR, USD). Optionnel si `pays` est fourni. | |
| montant | Yes | Montant numérique ou texte à formater (ex. 1000000, "15000.5"). | |
| decimales | No | Nombre spécifique de décimales (optionnel, déduit de la devise par défaut). | |
| inclure_symbole | No | Inclure le symbole monétaire dans la sortie (True par défaut). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the core transformation behavior—local currency symbols and grouping separators—but does not mention error handling, default currency inference, or that it is a non-mutating formatting operation.
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 and front-loads the core purpose. The French and English sentences duplicate the same information, which is slightly redundant, but the description remains 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?
The tool is simple, the input schema has full parameter descriptions, and an output schema exists. The description sufficiently explains the formatting purpose, though it could briefly clarify default currency inference or contrast with sibling tools.
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 100%, so the schema already documents all five parameters thoroughly. The description adds no parameter-specific meaning beyond what the schema provides, making the baseline score appropriate.
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 states a specific verb and resource: formatting an amount with local currency symbols and grouping separators. It is clear what the tool does, but it does not explicitly differentiate itself from siblings such as convertir_devise or calculer_tva.
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?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description only says what it does, leaving the agent to infer usage contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generer_paiement_mobile_moneyGenerer Paiement Mobile MoneyB
Génère un lien profond, une syntaxe USSD et un QR payload Mobile Money (Wave, Orange Money, MTN MoMo, M-Pesa, Airtel Money). / Generate deeplinks, USSD codes and QR payloads for African Mobile Money payments.
| Name | Required | Description | Default |
|---|---|---|---|
| pays | Yes | ||
| montant | Yes | ||
| operateur | Yes | ||
| reference | No | ||
| telephone | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It clarifies that the tool generates payment artifacts rather than executing payments, and it lists supported operators. However, it does not state whether any payment is initiated, what validation or formatting rules apply, or what error conditions 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 description is compact, front-loaded, and contains no filler. The bilingual wording is appropriate for a bilingual tool and both sentences directly describe the generated artifacts and operator scope.
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?
An output schema exists, so return values do not need detailed explanation. Still, for a five-parameter payment generator with no annotations and no schema descriptions, the description omits essential calling details such as phone format, amount currency, country handling, and reference semantics.
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 should compensate for all five parameters. It provides useful operator examples (Wave, Orange Money, MTN MoMo, M-Pesa, Airtel Money), which partially helps operateur, but says nothing about telephone, montant, pays, or reference formats and constraints.
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 ('Génère') and names concrete resources: deeplinks, USSD codes, and QR payloads for African Mobile Money payments. It does not explicitly differentiate itself from related siblings such as lister_operateurs or valider_telephone, but the purpose is still clear.
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 states what the tool generates and lists supported operators, but gives no guidance on when to use it versus alternatives like lister_operateurs, valider_telephone, or info_pays. There are no exclusions, prerequisites, or usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
info_paysInfo PaysB
Retourne les informations clés d'un pays africain (indicatif, devise, fériés). Returns key information for an African country (dial code, currency, holidays).
| Name | Required | Description | Default |
|---|---|---|---|
| pays | Yes | Nom ou code ISO du pays (ex. 'Gabon', 'GA', 'Côte d'Ivoire', 'CI'). | |
| annee | No | Année pour les jours fériés (optionnel, année en cours par défaut). | |
| champs | No | Champs spécifiques à retourner (optionnel, ex. ['devise', 'jours_feries']). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not say the operation is read-only/no side effects, what happens for non-African or unknown country names, whether results are cached or live, or how the optional year affects holiday data. Only the enumeration of returned fields adds any behavioral signal.
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 in substance, but it is given twice in full (French then English), which doubles length without adding information. Neither sentence is wasteful individually, but the duplication costs efficiency.
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 a fully documented schema and an output schema present, the description needn't explain return values, so the remaining gap is behavioral and routing context. It never states read-only semantics, behavior on unknown countries, or how it relates to sibling lookups, which leaves real ambiguity for an agent choosing between tools.
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 100% and each parameter (pays, annee, champs) already has a clear description, so baseline 3 applies. The description's mention of currency and holidays loosely maps to the 'champs' selector and 'annee' parameter but adds no syntax, defaults, or validation detail beyond the schema.
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 ('Retourne les informations clés d'un pays africain') and enumerates the returned fields (dial code, currency, holidays), which is enough to distinguish it from pure-action siblings. It does not name or differentiate itself from close siblings like convertir_devise or valider_telephone, which also operate on country/phone/currency data.
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 by the field list: an agent can infer this is a reference lookup for country metadata. There is no explicit when-to-use, no mention of alternatives (e.g. use convertir_devise for rate conversion, valider_telephone for number validation), and no stated scope restriction beyond 'African country'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lister_operateursLister OperateursB
Liste les opérateurs télécoms et services Mobile Money disponibles. Lists telecom operators and supported Mobile Money services.
| Name | Required | Description | Default |
|---|---|---|---|
| pays | No | Nom ou code pays optionnel pour filtrer les opérateurs (ex. "Sénégal", "GA"). | |
| avec_mobile_money_seulement | No | Si True, ne renvoie que ceux avec Mobile Money. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. 'Liste' implies a read-only lookup, and the description clarifies which entities are returned — operators and their supported Mobile Money services — but it says nothing about rate limits, caching, or data freshness, and nothing about how the result relates to later payment calls.
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 definition is short and front-loaded, but the second sentence is a verbatim translation of the first and adds no new information. A bilingual audience may justify this, but under a strict cost-per-token reading it doubles length without adding meaning.
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 tool is simple, all parameters are documented, and an output schema exists, so the description covers the minimum. What is missing is the connective tissue: when this list should be consulted, and how its output feeds siblings like generer_paiement_mobile_money and valider_telephone.
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 100%: both 'pays' (name or code, with examples) and 'avec_mobile_money_seulement' are fully documented in the schema. The description adds no extra semantics about filtering behavior or defaults, so the baseline of 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?
The description states a specific verb and resource: it lists telecom operators and the Mobile Money services they support. That is clearly distinct from siblings such as generer_paiement_mobile_money or valider_telephone, though the description never explicitly contrasts itself with them, so it stops short of a 5.
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 reference-data nature of the tool implies when to call it, but the description never says so, and it never mentions the obvious alternatives (info_pays for country data, generer_paiement_mobile_money for payments) or any prerequisite. The agent has to infer the workflow from the tool's name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingPingA
Vérifie que le serveur répond. / Health check returning the server version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose that the response includes the server version, but it does not mention auth requirements, latency, or that it is a side-effect-free read. For a trivial zero-parameter health check the bar is low, but the description largely restates what the output schema already conveys.
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?
Two short sentences, front-loaded with the purpose. The French/English duplication adds minor redundancy but costs almost nothing given the tool's simplicity.
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?
An output schema exists, so the description need not explain return values. For a no-parameter health check, purpose plus the version note covers what an agent needs to call 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 tool takes zero parameters, so the baseline of 4 applies. Nothing in the description is needed to clarify inputs.
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 in both languages: 'Vérifie que le serveur répond' / 'Health check returning the server version.' This is unambiguous and trivially distinguishable from the domain-specific payment/validation siblings (generer_paiement_mobile_money, convertir_devise, etc.).
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 – an agent infers this is for connectivity/liveness checks. There is no explicit statement of when to use it versus other tools or when not to call it (e.g., as a readiness probe before a payment flow).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valider_identifiant_fiscalValider Identifiant FiscalB
Valide et normalise un numéro d'identifiant fiscal en Afrique (NCC, NINEA, NIU, NIF, KRA PIN, TIN). / Validate and normalize an African corporate tax ID.
| Name | Required | Description | Default |
|---|---|---|---|
| pays | Yes | ||
| identifiant | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It says the tool validates and normalizes, but it does not describe validation rules, error behavior, normalization format, or any operational constraints.
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, front-loaded sentence with no wasted text. The bilingual repetition is compact and does not obscure the core purpose.
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 tool with two required parameters, no annotations, and 0% schema description coverage, the description is too thin. It does not specify expected input formats for pays or identifiant, and the presence of an output schema does not compensate for the missing input and behavioral 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?
Schema description coverage is 0%, so the description must compensate for both parameters. It clarifies that identifiant is a tax ID and mentions Africa, but it does not explain the expected format for pays or how the listed identifier types map to country values.
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 states a specific verb and resource: validating and normalizing an African corporate tax ID, with concrete examples (NCC, NINEA, NIU, NIF, KRA PIN, TIN). It is clear what the tool does, but it does not explicitly differentiate itself from the sibling tool valider_telephone.
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 implied by the domain: it applies to African corporate tax identifiers. However, there is no explicit guidance on when to choose this tool versus alternatives, nor any exclusion or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valider_telephoneValider TelephoneC
Valide un numéro de téléphone africain (E.164, opérateur, Mobile Money). Validates an African phone number (E.164, operator, Mobile Money).
| Name | Required | Description | Default |
|---|---|---|---|
| pays | Yes | Nom ou code ISO (ex. 'Gabon', 'GA', 'Sénégal', 'SN', 'CI'). | |
| numero | Yes | Numéro local ou international (ex. '066 11 22 33' ou '+24166112233'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It says the tool validates a number but does not state that it is read-only, whether it has side effects, what permissions are needed, or how invalid inputs are handled.
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 definition is short and front-loaded with the core purpose. The French and English sentences are duplicated, which is useful for bilingual clarity but does double the text length.
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 tool has only two required parameters with full schema coverage and an output schema, so the description needn't explain return values. However, with no annotations, it should do more to disclose behavioral context such as read-only status or error behavior.
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 100%, and both parameters are already well documented in the schema. The description adds no parameter-level details beyond the schema, so the baseline score of 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?
The description states a specific verb and resource: validating an African phone number, including E.164 format, operator, and Mobile Money. It is clear what the tool does, though it does not explicitly distinguish it from siblings such as lister_operateurs or info_pays.
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?
There is no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The agent can infer it validates phone numbers, but usage conditions are left unstated.
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.
9 tool updates
v0.1.0- First observed
calculer_tva - First observed
convertir_devise - First observed
formater_montant - First observed
generer_paiement_mobile_money - First observed
info_pays - First observed
lister_operateurs - First observed
ping - First observed
valider_identifiant_fiscal - First observed
valider_telephone
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: payment link/USSD/QR generation, currency conversion, phone validation, country metadata, amount formatting, VAT calculation, operator listing, tax ID validation, and health check. Adjacent tools such as valider_telephone/lister_operateurs and convertir_devise/formater_montant/calculer_tva are separated by their descriptions.
Most names are snake_case French verb_noun patterns such as convertir_devise, valider_telephone, and calculer_tva. Minor deviations include the noun-first info_pays and the English ping, but the overall convention remains predictable.
Nine tools is well within the appropriate range for a focused African fintech/telecom toolkit. Each tool earns its place by covering a distinct utility, with ping serving as a lightweight health check.
The surface covers a broad set of related utilities: payments, currency, phone validation, country info, formatting, VAT, operators, and tax IDs. Minor gaps exist around Mobile Money transaction status/verification and operator-specific fee/limit lookup, but agents can work around them for basic toolkit use.
Maintenance
Related MCP Connectors
African bank & SWIFT codes, NUBAN resolution, mobile networks, holidays and ISO 4217 currencies.
Public holidays, business days, VAT, withholding tax and tax-ID checks for 54 African countries
Offline phone number validation and formatting at the edge: E.164/national/international formats,...
Mobile money fees, African tax rates, currency conversion and Uganda PAYE for AI agents.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceProvides AI agents with structured, verified specs for African APIs like Wave and Paycard, enabling automatic integration code generation without manual documentation parsing.29Apache 2.0- AlicenseNot gradedqualityBmaintenanceValidates phone numbers and provides country calling codes, enabling AI agents to look up international dialing codes and filter by country name, ISO code, or calling code.10 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to audit EU payment runs offline—validating IBANs, SEPA character sets, VAT numbers, and control sums—without uploading any data.2 npmMIT
- AlicenseBqualityAmaintenanceEnables AI agents to work with Iran-specific data and Persian/RTL frontends fully offline, covering Jalali date conversion, national ID, card, Sheba and mobile validation, Persian text and number formatting, bank and operator lookup, VAT and price handling, plus RTL auditing and CSS/Tailwind conversion. All tools run locally with no API keys.560MIT