Text & Number Toolkit
Server Details
Amounts in words (Arabic cheque grammar), number formatting, Arabic text tools, date parsing.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Most tools target a distinct operation: parse_number vs format_number vs number_to_words vs amount_to_words are separable by input/output direction and currency scope. A couple of boundaries are soft — convert_digits also rewrites digits to Western form, which normalize_arabic does as one of its rules, and amount_to_words/number_to_words could be confused at a glance. Descriptions do enough work to resolve these.
All snake_case and predominantly verb-first (convert_digits, detect_script, format_number, parse_date, normalize_arabic), which makes the set predictable. Minor deviations: amount_to_words and number_to_words use noun_to_noun form, and transliterate is a bare verb. Still readable and non-chaotic.
Ten tools is well within the sweet spot for a multilingual text/number utility server. Each tool maps to a distinct primitive (parse, format, verbalize, normalize, convert, detect) with no filler entries.
Core numeric lifecycle is covered: parse_number, format_number, number_to_words, amount_to_words, plus digit/script/normalization/transliteration and date parsing. Gaps: no reverse direction for words-to-number or words-to-amount, and dates can be parsed but not rendered back into a locale format. These are workable around but real.
Available Tools
10 toolsamount_to_wordsWrite a money amount in wordsARead-onlyIdempotentInspect
Convert an amount in a currency to words for cheques, invoices and contracts, in 56 languages. Arabic output applies number–noun agreement (درهم واحد / درهمان / ثلاثة دراهم / أحد عشر درهماً) and the correct minor unit (فلس، هللة، قرش…); English uses CLDR currency names. style='cheque' adds the customary wrapper. Example: amount 1250.50, currency 'AED', language 'ar', style 'cheque'. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | cheque wraps the phrase the way cheques/contracts do ('… only' / 'فقط … لا غير'). | plain |
| amount | Yes | Amount as number or numeric string, e.g. 1234567.89 or '١٢٣٤٫٥٠'. | |
| currency | Yes | ISO 4217 code: AED, SAR, USD, EUR… | |
| language | No | Language of the words: 'en', 'ar', 'fr', 'de', 'es', 'hi', 'ur'… (56 languages; list_languages). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: deterministic output, no logging, response fields, Arabic number–noun agreement, minor-unit handling, and CLDR currency naming. These details help the agent understand domain behavior beyond the safe-read annotation profile.
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 purpose is front-loaded, and the paragraph packs examples, language behavior, style behavior, and response details without obvious filler. Every sentence contributes actionable context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and rich annotations, the description supplies the remaining domain context: determinism, no logging, Arabic agreement rules, currency naming, and style semantics. An agent has enough information to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters; the description still adds useful meaning through the amount example, the 56-language scope, and the effect of style='cheque'. It does not fully restate all parameter constraints, but it adds meaningful domain context.
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: convert a currency amount to words, with concrete domains (cheques, invoices, contracts) and language scope. It is distinguishable from generic siblings like number_to_words by its currency-specific behavior, though it does not explicitly name the alternative.
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?
Gives clear use contexts ('for cheques, invoices and contracts') and explains that style='cheque' adds the customary wrapper. It lacks explicit when-not guidance or named alternatives, but the intended usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_digitsConvert digit systemsARead-onlyIdempotentInspect
Rewrite digits between Western (0-9), Arabic-Indic (٠-٩) and Persian/Urdu (۰-۹) anywhere in a text, leaving everything else untouched. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | western 0-9 | arabic_indic ٠-٩ | persian ۰-۹. | |
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely new behavioral facts: deterministic processing with no AI inside and no logging. The response field list is somewhat redundant given an output schema exists, but the determinism and logging guarantees are real added value.
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 behavioral core (what converts, what stays untouched) is front-loaded in the first sentence, and the second carries guarantees and return shape. The inline list of response fields is a bit dense and largely duplicated by the output schema, slightly diluting 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?
For a two-parameter, read-only transformation with an output schema and full annotations, the description covers purpose, scope, determinism, and privacy. The only gap is the absence of explicit guidance on when to pick this over sibling normalization/formatting 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 only 50% — the 'to' enum is documented in the schema but 'text' has an empty description. The description partially compensates by making clear that the entire text is scanned and non-digit characters are preserved, which is the key semantic an agent needs, but it adds nothing about the 'to' values beyond the schema's enum.
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 (rewrite) and resource (digits) with the exact three numeral systems named, plus the scope qualifier 'anywhere in a text, leaving everything else untouched.' An agent can distinguish it from format_number or normalize_arabic by intent, though no sibling is named explicitly.
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 'anywhere in a text,' which suggests whole-string conversion rather than formatting a single number, but there is no explicit when-to-use versus normalize_arabic, format_number, or transliterate, and no stated preconditions. The agent must infer the routing decision from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_scriptDetect scripts, direction and digit systemsARead-onlyIdempotentInspect
Proportions of writing systems in a text (latin, arabic, cyrillic, han…), dominant script, RTL/LTR direction, mixed-script flag, which digit systems appear, and hints such as Persian/Urdu-specific letters. Free. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful context beyond annotations: it is free, deterministic with no AI inside, nothing is logged, and the response includes confidence, estimated items, sources, version, and warnings.
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 front-loaded, starting with what is detected before moving to response and behavioral notes. Some response-field listing may be redundant with the output schema, but the overall wording is 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?
For a single-parameter detection tool with an output schema and rich annotations, the definition is largely complete: it describes outputs, determinism, privacy, and response metadata. The main gaps are input expectations and explicit routing versus 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?
The only parameter is `text`, but its schema description is empty and the tool description only says the analysis is of 'a text.' It does not add constraints, format expectations, or examples, so it fails to compensate for 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource analyzed and enumerates specific outputs: script proportions, dominant script, RTL/LTR direction, mixed-script flag, digit systems, and script hints. It does not explicitly contrast with sibling tools such as transliterate or convert_digits, so sibling differentiation is left implicit.
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 say when to use this tool versus alternatives like transliterate, convert_digits, or normalize_arabic. The output list implies it is for script analysis, but no explicit usage context, exclusions, or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_numberFormat a number for a localeARead-onlyIdempotentInspect
Locale-correct display of a decimal, currency amount or percentage using CLDR rules: grouping (1,234,567 / 12,34,567 / 1.234.567 / 1 234 567), decimal mark, currency symbol placement, Arabic-Indic digits for ar_* locales. Example: number 1234567.891, locale 'en_IN', style 'currency', currency 'INR'. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | decimal | |
| locale | Yes | CLDR locale: 'en', 'en_IN' (lakh grouping), 'ar_AE' (Arabic-Indic digits), 'de_DE', 'fr_CH'… | |
| number | Yes | Number to format. | |
| currency | No | ISO 4217 code when style=currency. | |
| decimals | No | Force a number of decimal places; default = locale/currency rule. | |
| numbering | No | Digit system: locale default (ar_EG → Arabic-Indic, ar_AE → Western), or force latn / arab. | locale |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely new behavioral facts beyond them: deterministic with no AI inside and no logging of inputs, which matters for a formatting utility handling possibly sensitive amounts.
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?
Front-loaded with the core capability and grouping examples, then the example, then the response. Mostly earns its space, but the enumeration of response fields (data_confidence, estimated_items, sources, data_version, warnings) is redundant given an output schema exists.
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 need not be explained, and the description instead wastes a clause listing them. Everything an agent needs to call it correctly is present: scope, example, determinism, and no-logging guarantee; only explicit sibling routing is absent.
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 high (83%) and already documents locale, currency, decimals and numbering well. The description adds marginal but real value by showing the three-parameter interplay (locale+style+currency) and illustrating grouping outputs per locale, though the per-locale grouping examples largely echo the schema's locale hints.
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 (format/number) and enumerates the exact behaviors: grouping variants, decimal mark, currency symbol placement, Arabic-Indic digits under CLDR. It is clearly not parse_number or number_to_words, but it never names or explicitly contrasts with those siblings, leaving the agent to 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 worked example (1234567.891 / en_IN / currency / INR) implies when the tool applies, but there is no explicit when-to-use, when-not, or routing to alternatives such as number_to_words or format vs. parse_number. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_languagesSupported languages and localesBRead-onlyIdempotentInspect
Languages available for words, the curated Arabic-grammar currencies, and notes on locales. Free. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| 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?
Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the description correctly spends its words elsewhere: 'Free', 'deterministic (no AI inside)', and 'nothing logged' are genuine behavioral facts not present in structured fields. Listing the response envelope (data_confidence, estimated_items, sources, data_version, warnings) is partly redundant with the existing 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?
Three short sentences, purpose first, then cost/determinism, then response shape. The explicit enumeration of response fields is the only low-value material, since an output schema already exists and the agent will see those fields at call time.
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 parameters, full annotations, and an output schema, the surface area is small and the description covers the essentials: what data it exposes, that it is free and non-AI, and that nothing is logged. The missing piece is workflow guidance, which is scored separately under usage.
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 is 4 and there is nothing for the description to compensate for. The description does not waste space inventing parameter semantics.
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 the resource — languages for words, Arabic-grammar currencies, and locale notes — but never uses a verb like 'list' or 'returns', leaving the action implied by the name alone. An agent can infer it is a metadata/enumeration tool, but the phrasing 'Languages available for words, the curated Arabic-grammar currencies' is ambiguous about exactly what is enumerated.
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 call this versus the conversion siblings (number_to_words, amount_to_words, etc.), nor any suggestion such as checking supported languages before requesting word output. The agent must infer the workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_arabicNormalise Arabic textARead-onlyIdempotentInspect
Clean Arabic text for matching, search and storage: strip diacritics and tatweel, unify alef forms, optional ة→ه and ى→ي, Western digits, Latin punctuation, whitespace. Reports exactly which rules changed the text. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| unify_alef | No | آ أ إ ٱ → ا. | |
| strip_tatweel | No | Remove kashida/tatweel elongation. | |
| strip_tashkeel | No | Remove diacritics (fatha, damma, shadda…). | |
| digits_to_western | No | ٠-٩/۰-۹ → 0-9. | |
| taa_marbuta_to_haa | No | ة → ه (search normalisation; changes spelling). | |
| alef_maqsura_to_yaa | No | ى → ي (search normalisation; changes spelling). | |
| collapse_whitespace | No | ||
| punctuation_to_latin | No | ، ؛ ؟ ٪ ٫ ٬ → , ; ? % . , |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and non-destructive semantics, and the description adds genuinely new behavioral facts: "reports exactly which rules changed the text," "deterministic (no AI inside)" and "nothing logged." The privacy and determinism guarantees are meaningful context an agent could not infer from the schema or 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?
Two dense sentences with zero filler, front-loaded with the operation and its rule set before any response detail. Every clause carries information an agent can act on.
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 9-parameter tool with an output schema, the definition covers the rule set, optionality, determinism and logging behavior, which is enough to call it correctly. Minor gaps remain: no guidance on non-Arabic or empty input, and the response field enumeration largely duplicates the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 78% schema description coverage the schema already documents nearly every flag with examples (٠-٩ → 0-9, ة → ه). The description largely restates that list rather than adding new semantics; its only added signal is calling out ة→ه and ى→ي as optional, which the schema's default:false already conveys.
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?
Uses a specific verb-plus-resource opening ("Clean Arabic text") and enumerates the exact transformations applied, immediately separating it from siblings such as detect_script or transliterate. The stated goal ("for matching, search and storage") tells an agent what class of task this serves.
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 this tool applies (matching, search, storage normalization) and flags the two spelling-changing rules as optional, which is the key usage decision. It stops short of naming alternatives or stating when not to use it (e.g., when detection via detect_script is the actual need).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
number_to_wordsWrite a number in wordsARead-onlyIdempotentInspect
Cardinal, ordinal or year wording of a number in 56 languages (en, ar, fr, de, es, pt, it, nl, tr, ru, hi, ur, id, ja, ko…). Example: number 2026, language 'en', to 'year' → 'twenty twenty-six'. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | cardinal (default) | ordinal (1st, الأول) | year (nineteen ninety-nine). | cardinal |
| number | Yes | Number (integers or decimals; Arabic-Indic digits accepted). | |
| language | No | Target language code (56 supported). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral facts — deterministic output with 'no AI inside', nothing logged, and a warning/confidence envelope — which matter for trusting the result. The return-field list partly duplicates the output schema, keeping it just short of a 5.
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?
Dense but front-loaded: the capability, mode list, and example come first, with the response/determinism note second. The response-field enumeration is somewhat compressed into a run-on list, but no sentence is wasted.
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 full annotation coverage and an output schema present, the description needs only to convey purpose, mode semantics, and trust characteristics — all of which it does. The one substantive gap is routing guidance relative to the near-synonym sibling amount_to_words, which is left to inference.
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 all three parameters are already documented in the schema, giving a baseline of 3. The description adds a little value by illustrating the 'to' enum in a worked example and noting Arabic-Indic digit acceptance is handled, but it introduces no new syntax or constraints for 'language' beyond what the schema states.
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 transformation (number → words) and enumerates the three variants it produces (cardinal, ordinal, year) across 56 languages, with a concrete worked example. It does not, however, distinguish itself from the sibling amount_to_words, which an agent could plausibly confuse with this tool.
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 through the example (number 2026, language 'en', to 'year'), with no explicit statement of when to pick this over amount_to_words or parse_number/format_number. It also doesn't point to list_languages for discovering valid language codes despite advertising 56 supported languages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_dateParse a human-written date (200 locales + Hijri)ARead-onlyIdempotentInspect
Turn a date written in natural language or local numeric formats into an ISO date/datetime: '3 mars 2026', '12.11.2026', 'next month', 'غداً', 'in 3 weeks', and Hijri dates such as '15 رمضان 1447' or '1 Muharram 1448' (converted by Umm al-Qura). Returns precision (day/month/year/time), the detected language and the relative base used. Pass languages and date_order when known. Example: text '١٥ رمضان ١٤٤٧'. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | A date as humans write it: '3 mars 2026', '12/11/2026', 'غداً', 'in 3 weeks', '15 رمضان 1447', '2026-11-12T10:00'. | |
| timezone | No | IANA zone for the result, e.g. 'Asia/Dubai'. | |
| languages | No | Language codes to try, e.g. ['en','ar','fr']. Strongly recommended for speed and accuracy. | |
| date_order | No | Order for ambiguous numeric dates. Pass it whenever you know the source country. | |
| prefer_future | No | Resolve ambiguous relative dates forward (deadlines) rather than backward. | |
| relative_base | No | ISO datetime that relative phrases ('tomorrow', 'in 3 days') count from. Default: now. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing that the engine is deterministic ('no AI inside'), that 'nothing logged', which Hijri convention is used (Umm al-Qura), and what precision/language/relative-base metadata is returned. These are non-obvious behavioral traits an agent would otherwise not know.
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?
Front-loads the core purpose with examples, then covers params and response shape. It is dense and packs several ideas into one paragraph, but virtually every clause carries information; minor trimming of the fully-duplicated example would help.
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 6-param tool with an output schema and full annotation coverage, the description supplies everything needed: input formats, when to pass hints, determinism/privacy behavior, and a sketch of the response. Nothing an agent needs to call it correctly 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 parameters are already well documented. The description adds only mild value by echoing 'Pass languages and date_order when known' and noting relative base is reported, but adds no syntax or format 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?
States a specific verb and resource ('Turn a date written in natural language... into an ISO date/datetime') with concrete multilingual examples including Hijri. This clearly separates it from numeric siblings like parse_number or convert_digits.
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?
Gives actionable guidance ('Pass languages and date_order when known') and implies the tool's context via examples. However, it never explicitly contrasts with siblings or states when NOT to use it (e.g., for pure numbers), leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_numberRead a human-written numberARead-onlyIdempotentInspect
Turn '1.234,56', '١٬٢٣٤٫٥٦', '12 345,6' or '1,234.56' into an exact decimal, using the locale's separators first and a clearly flagged heuristic when they do not match. Example: text '1.234,56', locale 'de'. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Number as written by a human: '1.234,56', '١٬٢٣٤٫٥٦', '12 345,6', '1,234.56'. | |
| locale | No | Locale whose separators to assume first; a heuristic fallback handles mismatches and says so. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, closed-world and non-destructive behavior, so the bar is lower. The description still adds real value: it declares determinism ('no AI inside'), the fact nothing is logged, that heuristic fallbacks are clearly flagged, and that confidence/warnings are surfaced — all beyond what the annotations say.
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?
It is front-loaded with the transformation and its examples in a single dense sentence plus a worked 'de' example. The enumerated response fields (result, data_confidence, estimated_items[], sources[], data_version, warnings[]) duplicate the existing output schema and are the one part that does not fully earn 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 two-parameter, read-only tool with an output schema and full schema coverage, the description supplies what structured fields cannot: determinism, no logging, heuristic flagging. The only omission is an explicit statement of what happens when the text cannot be parsed at all, which warnings[]/data_confidence only hint at.
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 both text and locale are documented with the same examples, making the description largely redundant here. Its only marginal addition is restating that locale separators are tried first with a flagged heuristic fallback.
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+deliverable: turn human-written number text into an exact decimal, with four concrete input shapes. That clearly separates it from format_number (the inverse direction) and number_to_words, though it never names a sibling explicitly, so sibling differentiation is left implicit.
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 examples (use it when you hold a human-written numeric string) and the locale-then-heuristic precedence tells the agent how to pick a locale. There is no explicit when-to-use vs when-not-to-use guidance and no pointer to convert_digits or format_number as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transliterateRomanise any script to ASCIIARead-onlyIdempotentInspect
Deterministic romanisation of any script to plain ASCII (Cyrillic, Greek, CJK, Devanagari, Thai, Arabic…) for slugs, sorting, matching and systems that reject non-ASCII. Not an official spelling: for Arabic names the result is a consonant skeleton and is flagged low confidence. Response: result plus data_confidence, estimated_items[], sources[], data_version, warnings[]; deterministic (no AI inside), nothing logged.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text in any script (Cyrillic, Greek, CJK, Arabic, Devanagari…). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioural facts: deterministic with no AI inside, nothing logged, confidence flagging for Arabic, and the shape of the response. The 'not an official spelling' warning is exactly the kind of caveat an agent needs to decide whether the output is safe to use downstream.
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?
Front-loaded with the core verb and scope, then caveats, then behaviour. The trailing enumeration of response fields (result, data_confidence, estimated_items[], sources[], data_version, warnings[]) partly duplicates the output schema, which costs some tightness, though the 'deterministic, nothing logged' clause in the same sentence still 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 one-parameter, read-only, idempotent tool with full schema coverage, this description covers purpose, inputs, output shape, determinism, privacy, and the main quality caveat. An agent has everything needed to call it and to interpret a low-confidence 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 coverage is 100% for the single 'text' parameter, so the baseline is 3; the description goes slightly beyond by enumerating accepted scripts and warning that certain inputs (Arabic names) yield degraded, low-confidence output. It adds no format or length constraints on the input, so it does not fully compensate for anything the schema lacks.
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 — 'deterministic romanisation of any script to plain ASCII' — and enumerates the covered scripts (Cyrillic, Greek, CJK, Devanagari, Thai, Arabic). It is clearly distinguishable from siblings like detect_script (identifies script) or normalize_arabic (script-specific normalisation) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names concrete use cases — slugs, sorting, matching, and systems that reject non-ASCII — which gives an agent a clear trigger condition. It also flags a caveat case (Arabic names produce a consonant skeleton flagged low confidence). It stops short of explicitly naming alternatives such as detect_script or normalize_arabic as the preferred tools in overlapping situations.
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.
10 tool updates
- First observed
amount_to_words - First observed
convert_digits - First observed
detect_script - First observed
format_number - First observed
list_languages - First observed
normalize_arabic - First observed
number_to_words - First observed
parse_date - First observed
parse_number - First observed
transliterate
Related MCP Connectors
OCR, editable Word, tables, translation and data extraction for Arabic-script documents
Persian and Iranian utilities for agents plus text tooling. Paid via x402 or MPP.
Arabic-first OCR, translation and document extraction. First call mints a free trial key.
Pay-per-call Arabic text, audio and document utilities over x402. USDC on Base, no API key.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for correct Arabic formatting — currency, Hijri dates, number-to-words, RTL fixes and validation across all 22 Arab countries. Zero-dependency.17141 npm3MIT
- AlicenseAqualityDmaintenanceMCP server exposing Arabic text utilities: normalisation, tashkeel stripping, transliteration, heuristic dialect detection, and token counting.5MIT
- AlicenseBqualityCmaintenanceEnables dependable Arabic text normalization and search preparation for RAG and deduplication, with typed outputs, stable fingerprints, and experimental dialect, sentiment, and diacritization tools.2MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to normalize Arabic text, strip diacritics, classify regional dialects, and analyze prompt token efficiency. Exposes these capabilities as MCP tools that plug into Claude Desktop, Cursor, and other MCP clients.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.