Proxylang website translation

Translate a website into other languages from one script tag. Free trial, no signup.

Should I use this

Quality & Safety

B
Description quality
95%
Schema completeness
100%
Naming quality
80%
Poisoning risk
60%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin proxylang_style
  • LOWTool 'proxylang_status' description lacks action verbin proxylang_status
  • LOWTool description contains role marker that could confuse chat modelsin proxylang_next

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,053Tokens (tool definitions)
~995 BTypical response size
Moderate attention impact (0.82% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "translate": {
      "url": "https://proxylang.dev/mcp"
    }
  }
}

Remote endpoints

https://proxylang.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡proxylang_start(domain, languages, source_lang)

Set up Proxylang on a website with no signup: returns the script tag, install steps for the site's platform, an agent_token for the other tools, and claim_url (sent once; save it). If the user named a language, use it; otherwise pick the one their customers most likely speak and say why. The free trial shows the first language; list other recommended languages after it.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "The website hostname, e.g. \"example.com\"."
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Language codes, most important first, e.g. [\"ja\", \"ko\"]."
    },
    "source_lang": {
      "type": "string",
      "description": "Optional. The site's own language; read from the page when left out."
    }
  },
  "required": [
    "domain",
    "languages"
  ]
}
🟢proxylang_check(agent_token)

Is the Proxylang tag on the live site, and have words been translated? If words_translated is 0, a real browser visit to preview_url is needed first.

Input Schema

{
  "type": "object",
  "properties": {
    "agent_token": {
      "type": "string",
      "description": "The agent_token from proxylang_start."
    }
  },
  "required": [
    "agent_token"
  ]
}
🟢proxylang_next(agent_token)

Returns message_for_user: the message to end setup with (the site works, the link to keep it, and only the Proxylang features that fit this site). Show it as it is, in the user's language, with <claim_url> replaced by the saved claim_url.

Input Schema

{
  "type": "object",
  "properties": {
    "agent_token": {
      "type": "string",
      "description": "The agent_token from proxylang_start."
    }
  },
  "required": [
    "agent_token"
  ]
}
🟢proxylang_status(agent_token)

Free words left, trial expiry, and whether the user claimed or paid.

Input Schema

{
  "type": "object",
  "properties": {
    "agent_token": {
      "type": "string",
      "description": "The agent_token from proxylang_start."
    }
  },
  "required": [
    "agent_token"
  ]
}
🟡proxylang_change_site(agent_token, domain, action)

Use when the trial was started for the wrong website (action "move": the old site stops), or the tag must also work on a test or staging site (action "add": both work). Same agent_token, script tag, claim_url and free words; all sites share one limit. Not needed for localhost: use localhost_script_tag.

Input Schema

{
  "type": "object",
  "properties": {
    "agent_token": {
      "type": "string",
      "description": "The agent_token from proxylang_start."
    },
    "domain": {
      "type": "string",
      "description": "The other website hostname, e.g. \"test.example.com\"."
    },
    "action": {
      "type": "string",
      "enum": [
        "move",
        "add"
      ],
      "description": "\"move\" (default): replace the site. \"add\": keep the site and also allow this test site (up to 3)."
    }
  },
  "required": [
    "agent_token",
    "domain"
  ]
}
🟡proxylang_style(agent_token, style)

Restyle the language menu so it looks like part of the site. Read the site's brand color, background, text color, button roundness and dark mode first, then send only the fields to change in `style`. Colors: #hex, rgb(), hsl() or a CSS color name; each has a Light and a Dark version. Full field list: https://proxylang.dev/agents.md step 7.

Input Schema

{
  "type": "object",
  "properties": {
    "agent_token": {
      "type": "string",
      "description": "The agent_token from proxylang_start."
    },
    "style": {
      "type": "object",
      "description": "Fields to change, e.g. {\"accent\": \"#0a7cff\", \"triggerBgLight\": \"#ffffff\", \"triggerTextLight\": \"#111827\", \"borderRadius\": \"pill\"}. Fields: triggerBg/triggerText/triggerHover/dropdownBg/dropdownText/bg/text/border + Light|Dark, accent, accentText, borderRadius (rounded|pill|square), size (small|medium|large), dropdownSize, shadowStrength (none|light|medium|strong), glassmorphism, position, displayFormat (code|native|both), flagStyle (none|rectangle|square|circle), animation, darkModeMethod (auto|class), darkModeClass."
    }
  },
  "required": [
    "agent_token",
    "style"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded4 tools