Skip to main content
Glama

Translate a webpage or documentation

translate_page
Read-onlyIdempotent

Use this when the user wants to translate a public webpage, documentation or public-domain text that they own or have the rights to translate. Input tips: url of the page (http or https), target_lang as a language code such as vi, es, fr, de, ja, zh, pt, ko, and confirm_rights true only after the user confirms the rights. Returns: clean Markdown with headings, lists and code kept, usually in 5 to 15 seconds for a page of up to 8,000 characters, plus characters left today. Not for: copyrighted fiction, manga, manhwa or commercial comics, pasted text, local files or pages behind a login. Errors and next step: rights_not_confirmed (ask the user, then set confirm_rights true); page_too_large over 12,000 characters (offer a shorter page, such as one chapter on its own URL); fetch_failed or no_content (check the URL opens without a login, or pick a page whose text is in the HTML); daily_translation_spent (the daily character limit is used up; try again after 00:00 UTC); translation_failed (try again in a minute).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesPublic webpage URL to fetch and translate, such as https://example.com/docs/start (http or https; local and private addresses are blocked).
source_langNoOptional ISO 639-1 code of the page language, such as en. Read from the page HTML (or en) when omitted.
target_langYesISO 639-1 code of the language to translate into, such as vi (Vietnamese), es, fr, de, ja, zh, pt, ko, ru, ar or hi. A few are 3 letters: ast, ceb, ilo.
confirm_rightsYesSet true only after the user has confirmed they own this page or have the rights to translate it (docs, public domain, or user-owned content). Must not be used for copyrighted fiction or comics.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe page address that was fetched.
as_ofYesWhen the translation was made (ISO 8601 UTC).
modelYesThe translation model used.
notesYesFacts to pass on, such as a reminder to check machine translation before publishing.
titleNoThe page title as written on the page, not translated.
usageYes
statusYesAlways ok: errors come back as error text, not as a result.
markdownYesClean translated Markdown containing headings, paragraphs, and lists.
source_langYesLanguage code the page was translated from.
target_langYesLanguage code the page was translated into.
character_countYesCharacters of page text that were translated.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • changedInput schema / properties / source_lang / description
      Previous value: -"Optional two-letter language code of the source text. Detected from the page HTML if omitted."New value: +"Optional ISO 639-1 code of the page language, such as en. Read from the page HTML (or en) when omitted."
    • changedInput schema / properties / target_lang / description
      Previous value: -"Two-letter language code to translate into, such as vi, es, fr, de, ja, zh."New value: +"ISO 639-1 code of the language to translate into, such as vi (Vietnamese), es, fr, de, ja, zh, pt, ko, ru, ar or hi. A few are 3 letters: ast, ceb, ilo."
    • changedInput schema / properties / url / description
      Previous value: -"Public webpage URL to fetch and translate (HTTP or HTTPS only; local, private, and internal addresses are blocked)."New value: +"Public webpage URL to fetch and translate, such as https://example.com/docs/start (http or https; local and private addresses are blocked)."
    • addedInput schema / properties / url / format
      Added value: +"uri"
    • addedInput schema / properties / url / maxLength
      Added value: +2048
    • addedOutput schema / description
      Added value: +"A finished translation. A refused or failed call has no result in this shape: it comes back as an error whose text starts with its code (rights_not_confirmed, invalid_url, blocked_url, fetch_failed, no_content, page_too_large, daily_translation_spent or translation_failed) and says what to do next."
    • addedOutput schema / properties / as_of / description
      Added value: +"When the translation was made (ISO 8601 UTC)."
    • addedOutput schema / properties / character_count / description
      Added value: +"Characters of page text that were translated."
    • addedOutput schema / properties / model / description
      Added value: +"The translation model used."
    • addedOutput schema / properties / notes / description
      Added value: +"Facts to pass on, such as a reminder to check machine translation before publishing."
    • addedOutput schema / properties / source_lang / description
      Added value: +"Language code the page was translated from."
    • addedOutput schema / properties / status / description
      Added value: +"Always ok: errors come back as error text, not as a result."
    • addedOutput schema / properties / target_lang / description
      Added value: +"Language code the page was translated into."
    • addedOutput schema / properties / title / description
      Added value: +"The page title as written on the page, not translated."
    • addedOutput schema / properties / url / description
      Added value: +"The page address that was fetched."
    • addedOutput schema / properties / usage / properties / characters_charged / description
      Added value: +"Characters this call took from today's limit."
    • addedOutput schema / properties / usage / properties / characters_left_today / description
      Added value: +"Characters still free to translate today; the limit resets at 00:00 UTC."
  2. Changed1 schema field changed
    • removedOutput schema / properties / note_from_openkrill
      Removed value: -{
      -  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      -  "type": "string"
      -}
  3. Changed1 schema field changed
    • addedOutput schema / properties / note_from_openkrill
      Added value: +{
      +  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      +  "type": "string"
      +}
  4. Added
  5. Removed
  6. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly/openWorld/idempotent/non-destructive), and the description adds substantive behavior beyond that: expected latency of 5-15s, per-page size ceiling of 8,000 characters, a hard 12,000-character limit, a daily character quota that resets at 00:00 UTC, and the rights-confirmation gate. It also enumerates named failure modes with recovery actions, which is exactly the operational context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger, then cleanly partitioned into Input tips / Returns / Not for / Errors and next step, so an agent can scan to the relevant section. It is long and repeats some schema-level parameter detail, but nearly every sentence carries actionable content (limits, timings, error codes), so the length is largely earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a networked, quota-limited translation tool the description covers trigger, exclusions, size/latency/quota limits, rights gate, and every documented error with a next step. With an output schema present it does not need to explain return shape, and the brief return summary it does give is a bonus rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents url, source_lang, target_lang and confirm_rights in detail, and the description largely restates that (http/https, example language codes, confirm_rights only after user confirmation). Baseline 3 is appropriate; the description adds little parameter meaning the schema does not already carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb (translate) and resource (public webpage/documentation/public-domain text) with the ownership precondition attached. It also implicitly separates itself from the sibling file/text tools (count_text, make_csv_file) by scoping strictly to a fetched URL rather than pasted text or local files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit positive trigger ('Use this when the user wants to translate a public webpage...') and an explicit exclusion list ('Not for: copyrighted fiction, manga, manhwa or commercial comics, pasted text, local files or pages behind a login'). The rights condition is spelled out, and the error-recovery section routes the agent to the correct next step in each failure case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.