{"server":{"name":"com.polytranslator/translator","title":"Polytranslator","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://www.polytranslator.com/api/mcp","type":"streamable-http","headers":[{"name":"Authorization","isSecret":true,"description":"Optional API-key mode: Bearer followed by your Polytranslator API key. OAuth clients discover sign-in automatically."}]}],"version":"1.1.1","repository":{"url":"https://github.com/enismaxim1/polytranslator-api","source":"github"},"websiteUrl":"https://www.polytranslator.com/developers/","description":"Translate PDFs, scans, Office files and EPUB across 475 languages and styles, preserving layout."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-24T01:42:47.968735Z","publishedAt":"2026-09-24T01:42:47.968735Z","statusChangedAt":"2026-09-24T01:42:47.968735Z"},"dev.protogrid/connectability":{"class":"R2","autonomous":false,"human_steps":["oauth_consent_once"],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://www.polytranslator.com/api/mcp","transport":"streamable-http","templated":false,"headers":[{"name":"Authorization","required":false,"secret":true,"value":null,"secret_names":["TRANSLATOR_TOKEN"]}],"auth":{"type":"oauth2","location":{"header":"Authorization","scheme":"Bearer"},"secret_name":null,"oauth":{"scopes":["translation"],"grant_types":["authorization_code","refresh_token"],"dcr_supported":true,"cimd_supported":true,"authorization_servers":["https://www.polytranslator.com/api/oauth"],"resource_metadata_url":"https://www.polytranslator.com/.well-known/oauth-protected-resource/api/mcp","code_challenge_methods":["S256"],"authorization_server_metadata_url":"https://www.polytranslator.com/.well-known/oauth-authorization-server/api/oauth"}},"protocol":{"supported_versions":[],"stateless":null},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":308,"consecutive_failures":0,"last_probe_at":"2026-10-20T05:04:31.057Z","last_ok_at":"2026-10-20T05:04:31.057Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"get_credit_balance","title":"Check credits","description":"The account's purchased credit balance available to the API.","annotations":{"readOnlyHint":true,"openWorldHint":false},"source":"probe","observed_at":"2026-09-23T23:29:17.113Z"},{"name":"get_document","title":"Get a document's status","description":"Status of a document started with translate_document; waits up to wait_seconds for it to finish. Completed documents include download links valid for 24 hours.","annotations":{"readOnlyHint":true,"openWorldHint":false},"source":"probe","observed_at":"2026-09-23T23:29:17.113Z"},{"name":"list_languages","title":"Find language codes","description":"Search the 474+ supported languages by name or code.","annotations":{"readOnlyHint":true,"openWorldHint":false},"source":"probe","observed_at":"2026-09-23T23:29:17.113Z"},{"name":"quote_document","title":"Price a document (free)","description":"Price a document in credits without translating or charging anything, and compare with the account balance.","annotations":{"readOnlyHint":true,"openWorldHint":true},"source":"probe","observed_at":"2026-09-23T23:29:17.113Z"},{"name":"translate_document","title":"Translate a document","description":"Translate a PDF (native or scanned), Word, PowerPoint, Excel, EPUB or image file and get the same file type back with its layout preserved. Also accepts DOC, ODT, RTF, TXT, Markdown, HTML, subtitles, CSV and ebooks. Up to 50 MB and 1,000 PDF pages. Waits up to wait_seconds; if the document is still running, call get_document with the returned id. Charges the quoted credits once; failed documents are refunded.","annotations":{"title":"Translate a document","readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-09-23T23:29:17.113Z"},{"name":"translate_text","title":"Translate text","description":"Translate up to 50,000 characters of text. Costs 1 credit per 1,000 characters (fast) or 3 (advanced).","annotations":{"readOnlyHint":false,"openWorldHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-09-23T23:29:17.113Z"}],"dev.protogrid/trust":{"score":96,"components":{"hygiene":100,"liveness":100,"freshness":100,"provenance":85},"drivers":["+repository","+dns-namespace","+website","+reachable","+uptime-100%","+updated-26d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-20T06:14:24.617Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":96,"label":"strong","components":{"auth":100,"hygiene":93,"protocol":null,"stability":100,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.stateless","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.list_ttl","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"auth.prm","detail":"Protected Resource Metadata (RFC 9728) published","status":"pass","category":"auth"},{"id":"auth.as_metadata","detail":"authorization server metadata reachable","status":"pass","category":"auth"},{"id":"auth.cimd","detail":"Client ID Metadata Documents supported","status":"pass","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"6 of 6 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"1 of 6 tools declare all four hints; missing: get_document (destructiveHint, idempotentHint); quote_document (destructiveHint, idempotentHint); translate_text (idempotentHint); …","status":"warn","category":"hygiene"},{"id":"tools.token_cost","detail":"about 1,099 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"no tool changes in 30 days","status":"pass","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["~tools.directory_hints"],"flags":[],"tool_count":6,"token_estimate":1099,"tools_hash":"b2d64648d6ba71d645d11cc41180a7e9","tools_changed_at":null,"computed_at":"2026-10-20T06:17:32.356Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"com.polytranslator/translator","aliases":[],"alias_count":0,"repository_key":"github:enismaxim1/polytranslator-api","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/com.polytranslator%2Ftranslator/tools","arguments":{"name":"com.polytranslator/translator"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/com.polytranslator%2Ftranslator/connection?target=mcpServers","arguments":{"name":"com.polytranslator/translator","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}