Bhasini Indic Languages
Server Details
Indic MCP: transliterate into all 22 Indian languages, convert scripts, keymaps. Hosted or local.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Codegres-com/Bhasini
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- Bhasini
TDQS
Scored across 6 tools
The three text-transform tools (convert_script, transliterate, translate) could superficially overlap, but their descriptions explicitly disambiguate script-to-script mapping, sound-based romanisation, and meaning-based translation. get_keymap, list_languages, and native_digits are clearly distinct utilities. Minor residual confusion is possible between transliterate and convert_script for an agent skimming names, but the descriptions resolve it.
Most names follow a predictable verb_noun or verb pattern in snake_case (convert_script, get_keymap, list_languages), with translate and transliterate as bare verbs. native_digits deviates as a noun phrase, but overall the set is readable and consistent in casing and style.
Six tools is well-scoped for an Indic language utility server. Each tool has a clear, non-redundant role: translation, transliteration, script conversion, digit localisation, keyboard maps, and language discovery.
The surface covers the core Indic text workflows: translation, transliteration, script conversion, native digits, keymaps, and language codes. Minor gaps exist, such as reverse transliteration (script to romanised Latin) or language/script detection, but these are not central dead ends.
Available Tools
6 toolsconvert_scriptConvert between Indian scriptsARead-onlyIdempotentInspect
Rewrites text from one Indian script into another letter by letter, e.g. Devanagari 'नमस्ते' → Kannada 'ನಮಸ್ತೇ'. The language does not change, only the letters. Works between the Brahmic scripts (Devanagari, Bengali, Gurmukhi, Gujarati, Odia, Tamil, Telugu, Kannada, Malayalam) and Meetei Mayek; sounds the target script lacks use the nearest letter. Text in other scripts is kept as it is.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text in any Brahmic script or Meetei Mayek. | |
| targetLanguage | Yes | Language whose script to convert into, e.g. 'ta', 'Telugu', 'mni'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered; the description instead contributes real behavioural detail: letter-by-letter mapping, language preservation, nearest-letter fallback for missing sounds, and pass-through of non-Brahmic text. That fallback/pass-through behaviour is exactly the kind of edge-case disclosure an agent needs and cannot get from 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?
Four short sentences, front-loaded with the core transformation and immediately followed by a concrete Devanagari→Kannada example. Every sentence carries information, though the script enumeration could be tightened.
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?
There is no output schema, so the description's statement that unmapped text is kept as-is usefully implies the return shape (transformed text with pass-through). Error behaviour for unsupported targets is unstated, but otherwise the definition is complete for this low-complexity, two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, and the description adds only a worked example of the mapping rather than new parameter detail. Baseline 3 applies when the schema carries the parameter 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 gives a precise verb+resource ('rewrites text from one Indian script into another letter by letter') and enumerates the exact script families handled, which lets an agent separate this from generic Romanisation tools. It stops short of naming the sibling `transliterate` or stating how it differs from it, so sibling differentiation is only 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 enumerated script set and the note that 'text in other scripts is kept as it is', which tells the agent when this tool will and won't transform input. However, no alternative is named and no explicit when-to-use-this-vs-`transliterate` guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keymapGet phonetic keyboard mapARead-onlyIdempotentInspect
Returns the phonetic keyboard map for a language: which Latin keys produce each letter. Useful for teaching someone to type a language or for building correct romanised input for transliterate.
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes | Language code or name, e.g. 'ml', 'Odia'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior, so the bar for additional disclosure is lower. The description adds the return semantics (a key-to-letter map), which is useful, but says nothing about format, size, language coverage, or error behavior.
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 sentences, front-loaded with the core return value followed by use cases; little waste. The phrasing 'for transliterate' is slightly awkward for 'for transliteration', but the structure remains clear and 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 simple read-only lookup with rich schema and annotation coverage, the description adequately explains what the tool returns. It could be more complete by hinting at the output format (e.g., object vs. list) since no output schema exists, but the core information is present.
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 the single language parameter is already documented as accepting codes or names. The description only restates 'for a language' and adds no syntax, examples, or constraints 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 (returns) and resource (phonetic keyboard map for a language), and describes the content (Latin keys → letters). It also names the sibling transliterate and positions itself as an input-building helper, giving an agent enough to distinguish it from the 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?
Provides two clear use cases: teaching typing and building romanised input for transliterate. It does not state when not to use it or explicitly compare against convert_script/list_languages/native_digits, but the context is sufficient to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_languagesList Indian languagesARead-onlyIdempotentInspect
Lists the 22 scheduled languages of India (plus extra official scripts for Kashmiri, Manipuri and Sindhi) with the codes the other tools accept.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered structurally. The description adds useful content context (what the list contains and why the codes matter) but says nothing about ordering, return shape, or whether the extras are distinguished in the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource, with the qualifying parenthetical folded in. Every clause carries information; nothing is padding.
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 zero-parameter, read-only listing tool with rich annotations and no output schema, the description covers what is returned and why it matters. Slightly short of complete only because it does not describe the response structure or whether the extra scripts are flagged.
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 there is nothing to disambiguate; baseline for no-param tools is 4. The description still earns its place by explaining the semantic content of the returned codes rather than leaving them unexplained.
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 (lists languages) and narrows the scope precisely: the 22 scheduled languages of India plus extra official scripts for Kashmiri, Manipuri and Sindhi. No sibling (convert_script, get_keymap, native_digits, transliterate) is a listing tool, and the description makes this one obviously the discovery entry point.
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 clause 'with the codes the other tools accept' implies a clear use case: call this first to obtain valid language codes for the other tools. It gives good context but stops short of explicit when-not guidance or naming which sibling to call next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
native_digitsWrite digits in a native scriptARead-onlyIdempotentInspect
Replaces ASCII digits 0-9 with a language's native digits, e.g. '2026' → '२०२६' (Hindi), '௨௦௨௬' (Tamil), '۲۰۲۶' (Urdu).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text containing digits. | |
| language | Yes | Language code or name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully shows the exact input→output transformation, but says nothing about what happens to non-digit characters, unsupported languages, or the return format.
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?
A single front-loaded sentence with three illustrative examples; every element earns its place and nothing is padded.
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, no-output-schema, non-destructive utility, the description is nearly complete — the transformation is fully conveyed by example. It would be stronger with a note on handling of unsupported languages or non-digit text.
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 params are documented there, so the schema carries the burden and baseline is 3. The description adds only indirect value: the Hindi/Tamil/Urdu examples hint that the language parameter accepts names as well as codes, but no format or validation detail is provided beyond that.
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+resource: replacing ASCII digits 0-9 with a language's native digits, with concrete transformation examples. It is unambiguous about what it does, though it never distinguishes itself from overlapping siblings like transliterate or convert_script, which also transform text into other scripts.
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 narrow framing (digit-only replacement) and the examples, but the description never states when to pick this over transliterate or convert_script, which are the obvious alternatives for script-related work. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translateTranslate textARead-onlyIdempotentInspect
Translates the meaning of text between English and the 22 scheduled languages of India, or between two of them, e.g. 'Where is the station?' → 'स्टेशन कहाँ है?' (Hindi). English → Indic uses AI4Bharat IndicTrans2; Indic → English uses Gemma 4; Indic → Indic goes through English. Free use: up to 2,000 characters per call, 5 calls a minute and 10,000 characters a day. Unlike the other tools this sends the text to Bhasini's server (mcp.bhasini.com); the text is not stored. To write romanised words in a script by sound, use transliterate instead.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to translate. Line breaks are kept. | |
| sourceLanguage | No | Language of the text, or 'auto' (default) to detect it. | auto |
| targetLanguage | Yes | Language to translate into: a code or name from list_languages, or 'en' for English. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only, idempotent, open-world; the description adds substantive context they cannot express: which model handles each direction, that Indic-to-Indic pivots through English, per-call/daily/minute quotas, and that text is sent to an external server (mcp.bhasini.com) but not stored. Language-to-language pivoting is disclosed, so the remaining gap is minor (no mention of how detection failures surface).
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?
One dense paragraph, front-loaded with what it does before quotas and the sibling routing. Each sentence carries information, though the quota sentence crams three separate limits together and could be split for scanability.
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?
Covers everything needed to call it correctly without an output schema: direction handling, valid languages, size limits, external-server behavior and data retention, plus alternatives. No output schema means return value is implied by the example, which is adequate for a text-in/text-out tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond it by defining the language universe for targetLanguage (22 scheduled languages or 'en'), pointing to list_languages for valid codes, and stating the 2,000-character ceiling on text; it does not explain how 'auto' detection resolves ambiguity.
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 plus precise scope: translation between English and the 22 scheduled Indian languages, or Indic-to-Indic, with a concrete input/output example. This is far more specific than the name alone and cleanly delimits it from script 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?
Explicitly routes the agent away from a sibling: for romanised spelling by sound, use transliterate instead. It also tells the caller to get target codes from list_languages, and gives an operational ceiling (2,000 chars/call) that determines when to split work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transliterateTransliterate romanised textARead-onlyIdempotentInspect
Writes romanised (Latin-letter) text in an Indian script by sound, e.g. 'namaste' → 'नमस्ते' for Hindi or 'vaNakkam' → 'வணக்கம்' for Tamil. This is transliteration, not translation: spell the words as they sound in the target language. Keys follow ITRANS/Baraha conventions: capitals for long vowels and retroflex consonants (A I U E O, T D N L Sh), M = anusvara, H = visarga. Use get_keymap for a language's exact keys.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Romanised text to transliterate. Punctuation, digits and spaces are kept. | |
| language | Yes | Target language code or name, e.g. 'hi', 'ta', 'kn', 'Bengali', 'sat' (Santali, Ol Chiki). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false. The description adds genuine behavioral context beyond that: the input key conventions (ITRANS/Baraha, capitals for long vowels/retroflex, M=anusvara, H=visarga) and the sound-based rather than meaning-based interpretation. It does not describe the return format, but annotations carry the safety 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?
Front-loads the purpose and examples before the key-convention details. Dense but each sentence contributes; only minor verbosity in listing conventions that could be looked up via get_keymap.
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, no-output-schema tool this is nearly complete: purpose, examples, input conventions, and a pointer to get_keymap. The main gap is that it doesn't hint at error/fallback behavior for unsupported languages or the expected return shape.
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 both parameters are already documented. The description still adds value by explaining the key conventions governing how the 'text' parameter is interpreted and giving language examples ('hi', 'ta', 'sat'), going beyond the schema's raw param descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (writes/transliterates) and resource (romanised Latin text → Indian script), and provides concrete examples for Hindi and Tamil. It explicitly distinguishes itself from translation and its purpose is clearly separable from siblings like convert_script.
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?
Clarifies the key semantic distinction ('transliteration, not translation: spell the words as they sound'), which tells the agent when this tool applies. It routes to get_keymap for exact per-language keys, but does not explicitly contrast with convert_script or list_languages.
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.
1 tool update
- Added
translate
5 tool updates
- First observed
convert_script - First observed
get_keymap - First observed
list_languages - First observed
native_digits - First observed
transliterate
Related MCP Connectors
Indic transliteration plus Indian name, address, PIN, PAN, GSTIN normalization.
Exact Hindi, Marathi, Gujarati and English calligraphy as editable artwork, from real fonts.
AI for Tally Prime and Tally ERP 9. Hosted MCP server to ask your accounts in any language.
Bambara AI over MCP: text-to-speech, transcription and translation (Bamanankan + more).
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server empowering LLM clients with Indic language processing: translation, transliteration, language identification, and chat with Sarvam AI models.MIT
- AlicenseNot gradedqualityDmaintenanceEnables Indic-language transliteration and normalization of Indian names and addresses using Wikidata, Aksharamukha, and OpenStreetMap.MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLM-based clients to perform Indic language processing including translation, transliteration, language identification, and chat with the SarvamAI-M model.1MIT
- AlicenseNot gradedqualityDmaintenanceA type-safe MCP server for the Sarvam AI API that enables chat, translation, transliteration, language detection, speech-to-text, and text-to-speech across 10 Indic languages and English.73 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.