Server definition
- Hash
- sha256:2cdfcc3cab74a92a1313182be9b8578520099b869daf4b413ccd78ce1da9da6e
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "Translation that never breaks structure. translate_srt keeps every cue number and timestamp byte-identical (cues are anchored and refilled in code — the usual failure mode when handing a whole .srt to a model cannot happen). translate_i18n_json keeps the key tree and placeholders like {name} intact, and can translate only the keys missing from an existing locale. translate_pdf preserves layout (async, poll check_job).",
"tools": [
{
"description": "Check text for grammar, spelling and style issues in 30+ languages (self-hosted LanguageTool). Returns each issue with a suggested replacement — apply them to produce corrected text. Example — GET https://ainetcafe.com/t/check_grammar?text=Their+going+to+the+park",
"inputSchema": {
"properties": {
"language": {
"description": "Language code like \"en-US\", \"zh-CN\"; default \"auto\".",
"type": "string"
},
"text": {
"description": "The text to check (≤10000 chars).",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "check_grammar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Get the status or result of a job started by deep_research, translate_pdf, or make_slides. Poll every 15-30 seconds until status is \"done\" or \"error\". While work is pending, follow retry_after_seconds and next_action; when complete, prefer structured_result when present. Example — GET https://ainetcafe.com/t/check_job?job_id=<id-from-a-job-tool>",
"inputSchema": {
"properties": {
"job_id": {
"description": "The job_id returned when the task was started.",
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
},
"name": "check_job",
"outputSchema": {
"properties": {
"error": {
"type": "string"
},
"is_terminal": {
"type": "boolean"
},
"job_id": {
"type": "string"
},
"kind": {
"type": "string"
},
"next_action": {
"type": [
"object",
"null"
]
},
"result": {},
"retry_after_seconds": {
"type": "integer"
},
"status": {
"type": "string"
},
"structured_result": {}
},
"required": [
"job_id",
"status"
],
"type": "object"
}
},
{
"description": "Translate an i18n JSON locale file, keeping the key structure identical and placeholders ({name}, {{count}}, %s, HTML tags) intact. Pass existing_json to translate only the keys that are missing from it — the incremental sync people usually hand-roll a script for.",
"inputSchema": {
"properties": {
"existing_json": {
"description": "Existing target locale; only missing keys get translated.",
"type": "string"
},
"json": {
"description": "Source locale file content (JSON).",
"type": "string"
},
"to": {
"description": "Target language.",
"type": "string"
},
"url": {
"description": "Or a link to the source JSON.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "translate_i18n_json",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Translate a PDF from a URL while preserving the original layout — formulas, figures and two-column academic typesetting stay intact, unlike ordinary translators that flatten the document. Returns a job_id; poll check_job for the download links (translated-only and bilingual side-by-side). Typically 20-60 seconds for a few pages. Powered by PDFMathTranslate (36k stars) hosted at AI NetCafé. Example — tools/call translate_pdf {\"url\":\"<pdf-url>\",\"target\":\"zh\"} → poll check_job",
"inputSchema": {
"properties": {
"lang_to": {
"description": "Target language, e.g. \"Simplified Chinese\", \"Japanese\". Default Simplified Chinese.",
"type": "string"
},
"pages": {
"description": "How much to translate. first = 1 page, first5 = first 5 pages (default), all = whole document (slow and expensive).",
"enum": [
"first",
"first5",
"all"
],
"type": "string"
},
"url": {
"description": "Direct URL to the PDF (e.g. an arXiv PDF link).",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "translate_pdf",
"outputSchema": {
"properties": {
"job_id": {
"type": "string"
},
"poll_interval_seconds": {
"type": "integer"
},
"status": {
"type": "string"
}
},
"required": [
"job_id",
"status"
],
"type": "object"
}
},
{
"description": "Translate an .srt subtitle file into another language while keeping every timestamp and cue number byte-identical. Cues are anchored by index and refilled in code, so the timeline cannot drift — the usual failure mode when you hand a whole .srt to a model.",
"inputSchema": {
"properties": {
"srt": {
"description": "The .srt file content.",
"type": "string"
},
"to": {
"description": "Target language, e.g. \"English\", \"日本語\".",
"type": "string"
},
"url": {
"description": "Or a link to the .srt file.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "translate_srt",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Translate text between languages using a self-hosted LibreTranslate engine (fully offline, no big-tech API). For whole PDFs with layout preserved, use translate_pdf instead. Example — GET https://ainetcafe.com/t/translate_text?text=hello+world&to=zh",
"inputSchema": {
"properties": {
"source": {
"description": "Source language code; default \"auto\".",
"type": "string"
},
"target": {
"description": "Target language code, e.g. \"zh\", \"en\", \"ja\".",
"type": "string"
},
"text": {
"description": "Text to translate (≤5000 chars).",
"type": "string"
}
},
"required": [
"text",
"target"
],
"type": "object"
},
"name": "translate_text",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Describe a task in plain language (any language) and get back exactly which tools on this server do it, with ready-to-run example calls — instead of reading the whole catalogue and guessing. Also returns multi-step recipes when a task needs several tools chained (invoices to a ledger, a bank statement reconciled, a messy CSV turned into a deliverable). Deterministic and free: it calls no model, costs nothing, and never runs out of quota. Call this FIRST when you are not sure what this server offers.",
"inputSchema": {
"properties": {
"task": {
"description": "What you are trying to do, e.g. \"reconcile a bank statement against my books\" or \"把一堆发票整理成能入账的表格\"",
"type": "string"
}
},
"required": [
"task"
],
"type": "object"
},
"name": "what_can_you_do",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:2cdfcc3cab74a92a1313182be9b8578520099b869daf4b413ccd78ce1da9da6e | sha256sum