Zaleso
Server Details
Nigeria PAYE, VAT and CBN rates, sourced and dated. Plus invoice totals, QR codes, JSON, Base64.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
10 toolsamount_in_wordsAmount in wordsARead-onlyIdempotentInspect
Spell a monetary amount in words, the way a cheque or an invoice requires — "Four Thousand and Fifty Naira and Seventy-Five Kobo Only". Supports NGN, USD, EUR and GBP with the correct major and minor unit names. It is the row that goes above the signature line on the invoices at https://zaleso.com/invoice
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | The amount, e.g. 4050.75 | |
| currency | No | Default NGN |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only; the description adds the output format (words with major/minor unit names and the 'Only' suffix) and the fact that currency determines those unit names. It does not disclose rounding or edge-case behavior, but for a deterministic formatter this is acceptable.
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?
Three sentences, front-loaded with the action verb, then the example, then supported currencies and context. The long example earns its place by demonstrating the exact output style. There is no fluff or repetition of schema 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?
With no output schema, the description must convey the return shape, and the example does that effectively. It also covers currency support and the primary use case. Edge cases like rounding, negative amounts, or unsupported currencies are not addressed, but the low complexity of the tool keeps this from being a major gap.
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 documents both parameters, so the baseline is 3, but the description adds meaningful semantics: currency is not just an enum but selects the correct unit names (e.g., Naira/Kobo for NGN). The embedded example also reinforces what 'amount' means in practice.
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 opens with a specific verb and resource — 'Spell a monetary amount in words' — and immediately illustrates the output with a full example. It also lists the four supported currencies and ties the tool to cheque or invoice contexts, which distinguishes it from sibling conversion or generation tools like usd_ngn_convert or qr_generate.
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 clear usage context — cheques, invoices, specifically the row above the signature line on Zaleso invoices. It does not explicitly name alternatives or exclusions, but the concrete scenarios are enough to guide an agent on when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base64_convertBase64 encode or decodeARead-onlyIdempotentInspect
Encode text to Base64, or decode Base64 back to text. UTF-8 throughout, so accented text, emoji, Arabic, Devanagari and CJK survive the round trip — the naive btoa/atob version does not. Interactive version: https://zaleso.com/base64
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default encode | |
| text | Yes | The text to encode, or the Base64 to decode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses UTF-8 handling and round-trip safety for accented text, emoji, and non-Latin scripts, which goes beyond the readOnly/idempotent annotations. It also warns against the naive btoa/atob version, adding useful behavioral context. No contradiction with 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 main operation is front-loaded, followed by a valuable UTF-8 caveat and an interactive link. The link is arguably optional for an MCP agent, but the overall description is compact and well-structured with no redundant phrasing.
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 two-parameter, read-only, idempotent transform tool, the description covers the core behavior and input semantics adequately. There is no output schema, but the return value is obvious from the encode/decode framing. It does not spell out invalid-input handling, but that is a minor gap for such a simple operation.
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%, with both mode and text documented in the input schema. The description reinforces that text may be Unicode but does not add significant parameter-level detail beyond the schema. Baseline 3 is 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 opens with a specific verb and resource: 'Encode text to Base64, or decode Base64 back to text.' This clearly distinguishes base64_convert from its siblings like qr_generate, password_generate, and json_format. The title reinforces the same unambiguous purpose.
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 clear context for when to use the tool: any time Base64 encoding or decoding is needed. It does not explicitly name alternatives or state when not to use it, but the purpose is specific enough that an agent can select it confidently among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_totalsInvoice totals (any currency)ARead-onlyIdempotentInspect
Compute invoice totals from line items: per-line totals, subtotal, an optional discount, optional tax (the verified Nigeria VAT preset or any rate you name), a deposit already paid, and the balance due. Country-agnostic. The interactive version also produces the PDF: https://zaleso.com/invoice
| Name | Required | Description | Default |
|---|---|---|---|
| vat | No | Charge the verified Nigeria VAT rate. Only when the seller is VAT-registered in Nigeria. Default false. | |
| lines | Yes | Line items, up to 20. | |
| deposit | No | Amount already paid. | |
| taxRate | No | Tax rate as a percentage (20 for 20%), for jurisdictions other than Nigeria. Takes precedence over vat. | |
| currency | No | Default NGN. Affects formatting only. | |
| taxLabel | No | Label for the tax row, e.g. "GST". Default "Tax". | |
| discountAmount | No | Discount as a flat amount. | |
| discountPercent | No | Discount as a percentage, 0-100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive, so the bar is lower. The description adds meaningful behavioral detail beyond that: it lists the calculation components, the optional deposit, and the balance due, and it clarifies the boundary with the interactive PDF version. No contradiction with 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 is compact and front-loaded with the core action, and every sentence contributes useful information. The first sentence is a long enumeration, but it is dense rather than padded, and the PDF pointer is a useful clarification.
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 8 parameters and no output schema, the description covers the main output concepts and optional inputs, and points to the interactive version for PDF need. It does not give an exact return shape, but the schema handles input semantics well and the annotation set covers safety expectations.
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 baseline is 3. The description restates the roles of discount, tax, and deposit but does not add significant parameter-level detail beyond what the schema already provides, such as defaults, precedence, or formatting behavior.
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: 'Compute invoice totals from line items' and then enumerates the exact outputs: per-line totals, subtotal, discount, tax, deposit, and balance due. This clearly distinguishes it from the sibling utilities, which are mostly unrelated conversion or generation tools.
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 clear context by calling the tool 'Country-agnostic' and noting that the interactive version produces the PDF, which signals that PDF generation is handled elsewhere. It does not explicitly name sibling alternatives, but the context is sufficient for an agent to decide when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json_formatFormat or minify JSONARead-onlyIdempotentInspect
Format (pretty-print) or minify JSON. Invalid input returns the line and column of the error. Interactive version: https://zaleso.com/json
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | The JSON text | |
| mode | No | Default format | |
| indent | No | Spaces; default 2 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond annotations by stating that invalid input returns the line and column of the error, which helps an agent anticipate failure details. The interactive link is incidental but not contradictory.
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 only two sentences and front-loads the core purpose. The error behavior sentence earns its place. The interactive URL is minor extraneous clutter for an AI agent but does not significantly harm conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple pure-transformation tool with no output schema and strong annotations, the description covers the essential behavior and error reporting. It does not spell out the return format, but that is strongly implied by the operation, and the schema fully documents inputs. Minor gap: no explicit mention that mode defaults to format.
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 all parameters (json, mode, indent) are already documented with descriptions and constraints. The description adds no extra parameter-level semantics, which fits the baseline of 3 when the schema carries the burden.
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 operation: "Format (pretty-print) or minify JSON." This goes beyond the title by specifying the exact behavior and also adds the distinctive error-reporting detail (invalid input returns line and column). Among siblings like base64_convert or qr_generate, this tool is 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 does not explicitly say when to use this tool versus alternatives or when not to use it. Since there are no sibling JSON tools, the usage context is implied: use it whenever JSON formatting or minification is needed. This is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ng_gross_for_take_homeNigeria gross-up (salary for a target take-home)ARead-onlyIdempotentInspect
Work backwards from a target take-home to the gross salary that produces it, under the Nigeria Tax Act 2025 (2026 tax year). This is the question employers and contractors actually ask — "what must I pay for them to clear ₦500,000 a month" — and it cannot be answered by applying a rate, because PAYE is banded. Returns the required gross with the full band-by-band working and the statutory source. Informational only — verify with the tax authority. Interactive version: https://zaleso.com/ng/net-salary
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Whether takeHome is monthly or annual. Default monthly. | |
| takeHome | Yes | Target take-home (net) pay in naira, after PAYE and deductions. | |
| includeNhf | No | Deduct the 2.5% National Housing Fund contribution — voluntary for private-sector employees since 2023. Default false. | |
| includePension | No | Deduct the 8% employee pension contribution (PRA 2014). Default true. | |
| rentPaidAnnual | No | Annual rent actually paid, in naira. Unlocks rent relief (20% of rent, capped at ₦500,000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: it returns 'the required gross with the full band-by-band working and the statutory source,' and explicitly disclaims authoritative status. This is meaningful context without contradicting the read-only annotation.
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 front-loaded with the core purpose, then explains why the tool exists, then lists what it returns, then adds a caveat and a link. It is slightly longer than strictly necessary — the interactive link and the rhetorical framing could be trimmed — but every sentence contributes to either purpose, usage, or behavioral transparency.
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 read-only calculator with 100% schema coverage, the description covers the essential context: the calculation direction, the legal basis, the banded-PAYE complication, the return value, and the verification caveat. Since there is no output schema, the brief statement that it returns 'the required gross with the full band-by-band working and the statutory source' is sufficient. Nothing critical is missing.
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 each parameter already carries its own explanation, defaults, and units. The description does not add parameter-level detail beyond noting the PAYE is banded and that gross is derived from take-home, which is more about the tool's approach than about individual parameters. Baseline 3 is 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 opens with a specific verb and resource: 'Work backwards from a target take-home to the gross salary that produces it.' It also identifies the governing law and tax year, and contrasts itself with rate-based PAYE calculation because 'PAYE is banded.' This clearly distinguishes it from sibling tools like ng_paye_calculate.
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 clear usage context — this is 'the question employers and contractors actually ask' — and explains why a simple rate approach fails. It does not explicitly name ng_paye_calculate as the alternative, but the banding rationale implicitly tells the agent when this tool is needed. The 'Informational only — verify with the tax authority' caveat adds appropriate usage caution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ng_paye_calculateNigeria PAYE calculator (2026)ARead-onlyIdempotentInspect
Calculate Nigeria PAYE income tax and net (take-home) salary under the Nigeria Tax Act 2025, effective for the 2026 tax year. Returns monthly take-home, monthly PAYE, the effective rate, and the full band-by-band working, with the statutory source and verification date. Handles pension (8%), NHF (2.5%, voluntary), rent relief (20% of rent, capped at ₦500,000), and the minimum-wage exemption. Figures are informational — verify with the tax authority. Interactive version: https://zaleso.com/ng/paye
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Whether grossIncome is monthly or annual. Default monthly. | |
| includeNhf | No | Deduct the 2.5% National Housing Fund contribution — voluntary for private-sector employees since 2023. Default false. | |
| grossIncome | Yes | Gross salary in naira (before tax and deductions). | |
| includePension | No | Deduct the 8% employee pension contribution (PRA 2014). Default true. | |
| rentPaidAnnual | No | Annual rent actually paid, in naira. Unlocks rent relief (20% of rent, capped at ₦500,000). Relief is claim-based: omit if no rent is declared. | |
| otherDeductionsAnnual | No | Other eligible annual deductions actually paid (NHIS, life-insurance premium), in naira. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnly/idempotent/destructive annotations by disclosing exactly what the tool returns (take-home, PAYE, effective rate, band-by-band working, statutory source, verification date), which deductions it handles, and that figures are informational and should be verified. This gives an agent a realistic picture of behavior and output before calling it.
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 dense but every sentence earns its place: purpose, outputs, handled deductions, statutory basis, and a verification caveat. Key information is front-loaded in the first sentence, with supporting details following logically. The interactive link is a minor extra but relevant for verification.
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 calculator with no output schema, the description sufficiently covers what the agent needs: input semantics are in the schema, outputs are enumerated, deduction rules are summarized, and the legal/verification context is provided. There are no major gaps that would prevent a correct invocation or interpretation of results.
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 baseline is 3; the schema already explains each parameter and default. The description adds useful context about how pension, NHF, and rent relief factor into the calculation, but it largely restates what the parameter descriptions already provide rather than adding new parameter-level meaning.
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 ('Calculate') with a precise resource ('Nigeria PAYE income tax and net take-home salary') and adds the governing law and tax year ('Nigeria Tax Act 2025, effective for the 2026 tax year'). This clearly differentiates it from tax siblings like ng_vat_calculate and the reverse-calculator ng_gross_for_take_home.
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 intended use is implicit: use this when you need PAYE and net salary from gross income. However, the description never explicitly states when to choose this tool over the sibling ng_gross_for_take_home, nor does it give exclusion criteria or alternative routing. The usage context is clear but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ng_vat_calculateNigeria VAT (add or extract)ARead-onlyIdempotentInspect
Add Nigerian VAT to a net amount, or extract the VAT already contained in a VAT-inclusive amount. Uses the verified statutory rate from the data layer and returns it with its source and effective date — never an assumed rate. Informational only — verify with the tax authority. Interactive version: https://zaleso.com/invoice
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'add' treats amount as VAT-exclusive and adds VAT; 'extract' treats it as VAT-inclusive and backs the VAT out. Default add. | |
| year | No | Tax year. Default 2026. | |
| amount | Yes | The amount in naira. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent annotations, the description discloses that the rate comes from a verified data layer, is never assumed, and is returned with its source and effective date. It also frames the result as informational, which helps the agent use it appropriately.
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?
Three sentences deliver purpose, data-source behavior, and an important verification caveat without wasted words. The purpose is front-loaded and 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?
For a read-only calculation tool with fully documented parameters and annotations, the description is complete: it explains the modes, the rate provenance, the return contents, and the need to verify with the tax authority. Nothing required for correct invocation is missing.
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 mode, year, and amount. The description reinforces the net versus VAT-inclusive distinction but adds no new parameter-level detail.
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 opens with the exact operations: adding Nigerian VAT to a net amount or extracting VAT from an inclusive amount. It names the resource clearly and distinguishes this tool from sibling tax/salary and conversion tools.
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 provides clear mode-selection guidance: use 'add' when the amount is VAT-exclusive and 'extract' when it is VAT-inclusive. It does not explicitly discuss when not to use the tool relative to siblings, but the mode guidance covers the key decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
password_generateGenerate a strong passwordARead-onlyInspect
Generate a cryptographically secure random password (crypto.getRandomValues with rejection sampling — no modulo bias). Returns the password and its entropy. Interactive version: https://zaleso.com/password
| Name | Required | Description | Default |
|---|---|---|---|
| length | No | Default 20 | |
| symbols | No | Include !@#$ etc. Default true | |
| excludeAmbiguous | No | Drop lookalikes (l, I, 1, O, 0) for passwords that get read aloud |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only and non-destructive. The description adds meaningful behavioral detail by disclosing the cryptographic algorithm (crypto.getRandomValues with rejection sampling) and explicitly ruling out modulo bias, which is significant for a security-sensitive tool. It also states the output contents, going beyond what annotations 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 compact and front-loaded: the core action and security property appear first, followed by the return value. The interactive URL is a minor extra that an API agent does not need, but it does not hurt clarity or distract from the essential guidance.
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 stateless generator with a well-documented schema, the description covers the algorithm, the output, and the security guarantee. It could be more precise about the output format or entropy unit, but those details are not required 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?
All three parameters are already fully described in the schema, including defaults for length and symbols and the meaning of excludeAmbiguous. The description adds no additional parameter-level guidance, so the baseline of 3 for high schema coverage 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 operation ('Generate') and a precise resource ('a cryptographically secure random password'), and it states what is returned ('the password and its entropy'). None of the sibling tools overlap with password generation, so there is no risk of confusion with alternatives.
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 a clear context: use this tool whenever a cryptographically secure random password is needed. It does not explicitly name when-not-to-use conditions or alternatives, but the sibling list contains no password-generating alternative, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qr_generateGenerate QR codeARead-onlyIdempotentInspect
Generate a QR code as an SVG image from text or a URL. The code encodes the value directly — no tracking redirect, so it works forever. Interactive version: https://zaleso.com/qr
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or URL to encode (max 2953 chars) | |
| errorCorrection | No | Error correction level; H survives print damage best. Default M. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior. The description adds meaningful behavioral context beyond that: 'The code encodes the value directly — no tracking redirect, so it works forever.' This gives the agent useful information about the output's durability and content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, and the second sentence adds useful behavioral context. The interactive version link is not essential for API agents, which keeps it from a perfect 5, but it is short and does not detract significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers the essential output format ('SVG image') and the key encoding behavior. Since there is no output schema, it would be slightly stronger to explicitly state the return representation (e.g., SVG string vs. file), but the current wording is sufficient for an agent to understand the result.
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 both parameters. The description's phrase 'from text or a URL' restates the `text` parameter's purpose without adding new meaning, and it says nothing about `errorCorrection` beyond what the schema already provides.
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: 'Generate a QR code as an SVG image from text or a URL.' It clearly distinguishes the tool from its sibling conversion/calculation utilities, which are all unrelated to QR generation.
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 clear input context ('from text or a URL') and implies the tool is for QR generation when needed. There are no relevant sibling alternatives to exclude, so the lack of explicit when-not guidance is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usd_ngn_convertConvert USD and NGN at the official CBN rateARead-onlyInspect
Convert between US dollars and Nigerian naira at the Central Bank of Nigeria's official NFEM rate — the volume-weighted average CBN publishes, not a parallel-market figure. Returns the converted amount with the rate, the trading date it applies to, and the CBN source. Interactive version: https://zaleso.com/ng/fx
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | The currency the amount is in. Default USD. | |
| amount | Yes | The amount to convert. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: the rate is the CBN-published volume-weighted NFEM rate, and the response includes the converted amount, applicable trading date, and CBN source. This helps the agent set expectations without an output schema.
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 tight and front-loaded: the core purpose appears in the first sentence, the key rate distinction is explicit, and the return payload is summarized in one clause. The interactive URL is a small, useful addition and does not clutter the definition.
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 a simple two-parameter tool with complete schema coverage and annotations already covering safety, the description is fully sufficient. It explains the rate source, what the response contains, and how this differs from unofficial rates; no agent-facing gap remains for selecting and invoking 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 already documents both parameters completely with types, defaults, enums, and descriptions, so schema coverage is 100%. The description reinforces the conversion concept but does not add meaning beyond what the structured schema provides. This meets the baseline for full schema 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 a specific verb ('Convert'), an exact resource ('USD and NGN at the Central Bank of Nigeria's official NFEM rate'), and immediately distinguishes the result from a parallel-market figure. Among the sibling tools, none overlap with currency conversion, so the tool is uniquely identifiable.
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 establishes a clear use case: convert currency when an official CBN NFEM rate is needed. It explicitly warns that the rate is not a parallel-market figure, providing a helpful exclusion for misuse. It does not name an alternative tool, but the exclusions and specificity are strong enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Mobile money fees, African tax rates, currency conversion and Uganda PAYE for AI agents.
25 tools: exact IBAN/VAT/cron/regex utilities plus renders to hosted PDF, screenshot and QR files.
Validates PESEL/NIP/REGON/IBAN/Luhn/ISBN/EAN/SWIFT-BIC/VAT; RPN calc, date math, hashing, tokens
Argentina CUIT/CUIL validation and AFIP fiscal QR generation. Pure, no-auth MCP tools.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides AI agents with tools to access Nigerian trade statistics, live FX rates, bank account resolution, and electricity meter validation data.MIT
- FlicenseAqualityDmaintenanceLatin American business compliance suite — 28 tools for tax ID validation (CPF, CNPJ, RFC, RUT, CUIT, NIT), banking (PIX, CLABE, CBU), VAT rules, e-invoicing (NF-e, CFDI, DTE), holidays, and labor calendar across Brazil, Mexico, Chile, Argentina, and Colombia.28
- AlicenseNot gradedqualityCmaintenanceProvides Japanese tax and invoice utilities such as consumption tax calculation, withholding tax, invoice number validation, and tax rate summarization, enabling AI assistants to perform these operations locally without external APIs.MIT
- AlicenseAqualityCmaintenance14 utility tools via the PublicSoftTools API: QR code generation, PDF compress/merge/split/convert/unlock, cryptographic hashing (MD5/SHA-1/SHA-256/SHA-512), UUID generation, base64 encode/decode, secure password generation, IP geolocation, DNS records, SSL certificate check, and WHOIS lookup. Free tier: 1,500 calls/month.1413MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
The finance tools form inverse pairs (PAYE vs gross-for-take-home, VAT add vs extract) and the invoice helpers (totals vs amount in words) are adjacent, but each tool's description clearly states its input and output, so an agent can select correctly with attention. No two tools are actually synonymous.
Most tools follow a noun_verb pattern such as base64_convert, json_format, password_generate, and ng_vat_calculate. However, amount_in_words, invoice_totals, and ng_gross_for_take_home are descriptive noun phrases rather than verb actions, creating a minor but not confusing inconsistency.
Ten tools is well within the ideal range for a utility suite, and each tool is a distinct, usable operation that earns its place. The count feels proportionate to the set of converters, generators, and financial calculators.
The set covers forward and reverse PAYE, VAT, USD/NGN conversion, invoice math, formatting utilities, and common generators, so most user goals have no dead ends. Obvious gaps are limited to non-essential extras like an invoice PDF generator or broader multi-currency conversion beyond USD/NGN.