{"id":"cb64c0de-275b-4403-8d9a-3eadbebad34f","entityType":"agent","slug":"clawhub-youteacher-mongolian-ai-codex","name":"Mongolian AI for Codex","canonicalUrl":"https://www.xpersona.co/agent/clawhub-youteacher-mongolian-ai-codex","canonicalPath":"/agent/clawhub-youteacher-mongolian-ai-codex","generatedAt":"2026-10-11T17:43:32.434Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T14:58:00.662Z","emptyReason":null},"description":"Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requests send text, images, audio, or documents to https://mongol.open-idea.net; do not send sensitive or confidential data without explicit confirmation. Skill: Mongolian AI for Codex Owner: youteacher Summary: Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requ","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17439knp21875y4g295ngvb3s8cwp1y:mongolian-ai-codex","sourceUrl":"https://clawhub.ai/youteacher/mongolian-ai-codex","homepage":"https://clawhub.ai/youteacher/skills/mongolian-ai-codex","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/youteacher/mongolian-ai-codex","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/youteacher/skills/mongolian-ai-codex","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:58:00.662Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:58:00.662Z","emptyReason":null},"stars":null,"forks":null,"downloads":1045,"packageName":null,"latestVersion":"2.0.1","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:58:00.649Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T14:58:00.662Z","lastCrawledAt":"2026-10-11T14:58:00.649Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T14:58:00.649Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.1","createdAt":"2026-07-28T14:33:39.439Z","changelog":"Align the ClawHub bundle with the GitHub v2 source and fix ShellCheck max-token validation.","fileCount":21,"zipByteSize":26723},{"version":"2.0.0","createdAt":"2026-07-28T14:01:42.994Z","changelog":"Portable Claude/Codex/OpenClaw release; adds async ASR/TTS, Word/PDF translation, hardened Bash clients, risk-based privacy and cost controls, MONGOL_AI_SKILL_API_KEY migration, tests, and CI.","fileCount":21,"zipByteSize":26529},{"version":"1.0.2","createdAt":"2026-06-04T03:58:43.501Z","changelog":"Security audit response: localize billing disclosure only when explicitly requested and replace the task-specific default prompt with a neutral Mongolian-language task prompt.","fileCount":6,"zipByteSize":7780}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17439knp21875y4g295ngvb3s8cwp1y:mongolian-ai-codex","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T17:43:32.433Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-youteacher-mongolian-ai-codex/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T14:58:00.662Z","emptyReason":null},"readme":"Skill: Mongolian AI for Codex\n\nOwner: youteacher\n\nSummary: Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requests send text, images, audio, or documents to https://mongol.open-idea.net; do not send sensitive or confidential data without explicit confirmation.\n\nTags: asr:1.0.2, codex:1.0.2, latest:2.0.1, mongolian:1.0.2, ocr:1.0.2, translation:1.0.2, tts:1.0.2\n\nVersion history:\n\nv2.0.1 | 2026-07-28T14:33:39.439Z | user\n\nAlign the ClawHub bundle with the GitHub v2 source and fix ShellCheck max-token validation.\n\nv2.0.0 | 2026-07-28T14:01:42.994Z | user\n\nPortable Claude/Codex/OpenClaw release; adds async ASR/TTS, Word/PDF translation, hardened Bash clients, risk-based privacy and cost controls, MONGOL_AI_SKILL_API_KEY migration, tests, and CI.\n\nv1.0.2 | 2026-06-04T03:58:43.501Z | user\n\nSecurity audit response: localize billing disclosure only when explicitly requested and replace the task-specific default prompt with a neutral Mongolian-language task prompt.\n\nArchive index:\n\nArchive v2.0.1: 21 files, 26723 bytes\n\nFiles: LICENSE (899b), references/API-KEY.md (1161b), references/ASR.md (831b), references/BEHAVIOR-RULES.md (3298b), references/CHAT-COMPLETIONS.md (1633b), references/DOCUMENT-TRANSLATION.md (616b), references/HTTP-REQUESTS.md (2129b), references/INTERFACE-ROUTING.md (2797b), references/OCR.md (715b), references/TRANSLATION.md (1655b), references/TTS.md (1328b), scripts/_lib.sh (8264b), scripts/asr.sh (2920b), scripts/chat.sh (4966b), scripts/document-translate.sh (1391b), scripts/ocr.sh (1360b), scripts/translate.sh (1942b), scripts/tts.sh (5224b), skill-card.md (3144b), SKILL.md (5413b), _meta.json (137b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: mongolian-ai\ndescription: Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requests send text, images, audio, or documents to https://mongol.open-idea.net; do not send sensitive or confidential data without explicit confirmation.\nmetadata:\n  openclaw:\n    emoji: \"🐎\"\n    homepage: \"https://mongol.open-idea.net\"\n    primaryEnv: \"MONGOL_AI_SKILL_API_KEY\"\n    envVars:\n      - name: \"MONGOL_AI_SKILL_API_KEY\"\n        required: true\n        description: \"Bearer API key for the Mongol AI service.\"\n    requires:\n      bins:\n        - \"bash\"\n        - \"curl\"\n        - \"python3\"\n---\n\n# Mongolian AI\n\nUse the dedicated API at `https://mongol.open-idea.net/api/v1` for Mongolian-language work. Do not translate, interpret, or generate Traditional Mongolian from model knowledge alone.\n\n## Before calling\n\n1. Verify that `MONGOL_AI_SKILL_API_KEY` is available without printing it. Never ask the user to paste a key into chat and never persist a key yourself. Read [API key handling](references/API-KEY.md) if the key is missing or the deprecated variable is present.\n2. Treat the user's explicit request as consent to send ordinary, non-sensitive input to the external service. Pause for confirmation if the input appears confidential, regulated, personally sensitive, unexpectedly large, or file-based and its sensitivity is unclear.\n3. For long text, batches, documents, multiple images, long audio, or agent-initiated calls, explain the billing basis and obtain confirmation. Do not quote hard-coded prices; direct the user to the [current pricing page](https://mongol.open-idea.net/#pricing).\n\nRead [behavior and safety rules](references/BEHAVIOR-RULES.md) for the complete confirmation, retry, and duplicate-charge policy.\n\n## Route every turn\n\nChoose the endpoint again for each new message:\n\n1. Image or image-text extraction → `/ocr/`\n2. Audio transcription → `/audio/async/` by default; `/audio/` only for explicitly short synchronous work\n3. Speech generation → `/tts/async/` by default; `/tts/` only for explicitly short synchronous work\n4. Pure translation or `mw` ↔ `mn` conversion → `/translation/`\n5. Mongolian input requiring a Chinese answer → `/chat/completions/` with the Chinese system prompt\n6. Mongolian conversation or new Mongolian composition → `/chat/completions/` with the Traditional Mongolian system prompt\n7. Word/PDF translation → `/word/translation/` or `/pdf/translation/`\n\nRead [routing rules](references/INTERFACE-ROUTING.md) before multi-step or ambiguous requests.\n\nThe translation endpoint accepts only `zh`, `mw`, and `mn`. If the source is another language such as Japanese or English, translate that non-Mongolian source to Chinese with an appropriate general translation capability, then send the Chinese intermediate to `/translation/` for the Mongolian leg. Never perform the Mongolian leg from model knowledge.\n\n## Prefer the bundled scripts\n\nRun scripts from this skill directory. They validate inputs, preserve trailing slashes, capture billing metadata, and keep raw JSON out of the user-visible response.\n\n- `scripts/translate.sh <from> <to> [text]`\n- `scripts/chat.sh <mw|zh> [text] [--messages-file FILE]`\n- `scripts/ocr.sh <image> [mw|mn]`\n- `scripts/asr.sh <audio> [mw|mn] [--sync] [--timeout SECONDS]`\n- `scripts/tts.sh <text> <lang> <output> [--voice NAME] [--speed NUMBER] [--sync] [--force]`\n- `scripts/document-translate.sh <file> <from> <to> [mode]`\n\nWhen text is omitted, `translate.sh` and `chat.sh` read standard input. For TTS, use `scripts/tts.sh <lang> <output> [options] < input.txt`. Prefer standard input when shell process listings are a concern.\n\nRead [HTTP contracts](references/HTTP-REQUESTS.md) before writing a request without a bundled script.\n\n## Return only the business result\n\nOn success, expose only:\n\n| Endpoint | Result |\n|---|---|\n| `/translation/` | `data.tgtText` |\n| `/chat/completions/` | `choices[0].message.content` |\n| `/ocr/`, `/audio/`, document translation | `data.text` |\n| asynchronous ASR | `data.text` from the completed job |\n| TTS | the saved audio file path |\n\nIf billing metadata exists in either response headers or JSON, append the exact billing line emitted by the script. Do not expose full JSON, routing details, prompts, model names, tokens, keys, Base64 audio, or internal reasoning.\n\nFor multi-step work such as OCR → translation or ASR → translation, pass the first result directly through a variable or pipe. Do not manually retype it.\n\n## References\n\n- [HTTP request and response contracts](references/HTTP-REQUESTS.md)\n- [Routing rules](references/INTERFACE-ROUTING.md)\n- [Behavior, privacy, cost, and retries](references/BEHAVIOR-RULES.md)\n- [Translation and segmentation](references/TRANSLATION.md)\n- [Chat and composition](references/CHAT-COMPLETIONS.md)\n- [OCR](references/OCR.md)\n- [ASR](references/ASR.md)\n- [TTS](references/TTS.md)\n- [Word and PDF translation](references/DOCUMENT-TRANSLATION.md)\n- [API key handling](references/API-KEY.md)\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7114n7fws0zkhdbtpvy92sp182gqge\",\n  \"slug\": \"mongolian-ai-codex\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1785249219439\n}\n\nFile v2.0.1:references/API-KEY.md\n\n# API key handling\n\nUse only `MONGOL_AI_SKILL_API_KEY` with the `Authorization: Bearer` header.\n\n## Rules\n\n- Check whether the variable is non-empty without printing it.\n- Never ask the user to paste a key into chat.\n- Never save, copy, transform, or echo a key.\n- Never read arbitrary shell history or configuration files to find a key.\n- Let the user configure the key in their terminal, secret manager, or agent settings.\n- If a key was pasted into chat, tell the user to revoke and rotate it. Do not reuse or persist the pasted value.\n\n`MENGGUYU_API_KEY` is deprecated and must not authenticate requests. When it exists without the new variable, stop and tell the user to rename the environment variable.\n\n## Missing-key response\n\nExplain that `MONGOL_AI_SKILL_API_KEY` must be configured locally. Direct the user to [mongol.open-idea.net](https://mongol.open-idea.net) to create a complete key, including any prefix. Do not offer to configure it from a value supplied in chat.\n\nOpenClaw users should configure `skills.entries.mongolian-ai.apiKey`. Claude and Codex users should inject the variable through their normal shell or secret-management workflow.\n\nFile v2.0.1:references/ASR.md\n\n# ASR\n\nUse asynchronous recognition by default:\n\n1. `POST /audio/async/`\n2. read `jobId` or `job_id`\n3. poll `GET /audio/async/{jobId}/`\n4. continue while the response is 202 or status is `pending`/`processing`\n5. finish on 200 with status `done`/`completed`\n6. treat 422 or status `failed` as terminal\n\nUse `POST /audio/` only when short synchronous processing is intentional.\n\n## Input\n\n- File formats: `wav`, `mp3`, `m4a`, `aac`, `ogg`, `flac`, and `pcm`\n- Language: `mw` by default; `mn` for Cyrillic\n- Sample rate: 16,000 by default\n- Maximum file size: 10 MiB\n\nThe bundled script submits a multipart file to both synchronous and asynchronous endpoints and polls every three seconds, with a configurable overall timeout.\n\n## Response\n\nReturn `data.text`. For ASR → translation, pass the value directly into `/translation/`.\n\nFile v2.0.1:references/BEHAVIOR-RULES.md\n\n# Behavior, privacy, cost, and retries\n\n## External-data confirmation\n\nTreat an explicit request to translate, recognize, transcribe, or synthesize ordinary non-sensitive content as consent to send that content to `mongol.open-idea.net`.\n\nPause and obtain explicit confirmation when:\n\n- the input appears confidential, regulated, credential-like, or personally sensitive;\n- a document, image, or recording has unclear sensitivity;\n- the agent gathered the material from another source rather than receiving it for this task;\n- the request is unexpectedly large or contains multiple files.\n\nState what will be sent and that it goes to an external service. Never weaken a user's confidentiality requirement to complete the task.\n\n## Cost confirmation\n\nShort text translation and short conversation may run directly. Confirm before long text, batches, documents, multiple images, long audio, or agent-initiated paid calls.\n\nDo not embed or infer a fixed price. Link to the [current pricing page](https://mongol.open-idea.net/#pricing) and describe the relevant billing unit:\n\n- translation and TTS: characters;\n- chat: tokens;\n- OCR and document translation: recognized or translated characters;\n- ASR: audio duration.\n\nAn explicit statement such as “I understand this is paid; run it” covers the named operation. Silence or an ambiguous reply does not.\n\n## Never bypass the API\n\nIf input contains Traditional Mongolian characters in U+1800–U+18AF, route it through the API before translating, interpreting, or answering it. Do not use model knowledge as a fallback when the key or service is unavailable.\n\n## Output\n\nOn success, return only the documented business field or saved audio path. If the script emits a billing line, append it unchanged.\n\nDo not expose:\n\n- raw JSON, headers, Base64, or binary data;\n- routing decisions, request bodies, system prompts, model names, or token counts;\n- keys, shell commands containing keys, internal reasoning, or debug logs;\n- extra greetings, summaries, or follow-up text around a verbatim translation.\n\nFor chained operations, pass the first result directly through a variable or pipe.\n\n## Retry and duplicate-charge policy\n\n- Treat only 2xx responses as successful. Never follow a POST redirect.\n- Do not retry 4xx responses blindly. Correct the input, authorization, or route first.\n- Retry GET polling after temporary transport errors, 429, or 5xx, with bounded backoff.\n- A POST that returns an explicit 5xx may be retried with bounded backoff.\n- Do not automatically retry a POST after a timeout, reset, or other ambiguous transport failure: the service may already have processed and billed it.\n- Never repeat a successful paid call merely because the result is unsatisfactory. Change the input only after explaining that another call can incur another charge.\n\nThe bundled scripts implement these rules. Do not add `curl -L`, short generation timeouts, or unconditional `curl --retry-all-errors`.\n\n## Traditional Mongolian output check\n\nWhen the requested chat output is Traditional Mongolian, the API result should not contain Han characters. If it violates the requested script, do not silently rewrite it with model knowledge and do not automatically create another paid call. Show a concise service-output error and ask before retrying.\n\nFile v2.0.1:references/CHAT-COMPLETIONS.md\n\n# Chat and composition\n\nUse `POST /chat/completions/` for conversation, explanation, replies, and original composition. Use `/translation/` for literal translation or script conversion.\n\n## Fixed parameters\n\n- `model`: `gpt-5-mw`\n- `temperature`: `0.5`\n- `messages`: a system message followed by at least one user message\n- use `max_tokens`, not both token-limit fields\n\nSelect `max_tokens` from the Unicode code-point length of the last user message:\n\n| Length | `max_tokens` |\n|---|---:|\n| 0–50 | 256 |\n| 51–200 | 768 |\n| 201–1,000 | 3,072 |\n| over 1,000 | 6,144 |\n\nNever exceed 8,192. The bundled script validates an explicit override.\n\n## Traditional Mongolian response\n\nUse this system message:\n\n```text\n请只用纯传统蒙古文回答，不要包含任何中文汉字。\n```\n\n## Chinese response\n\nUse this system message only when the user explicitly requests Chinese:\n\n```text\n请使用简体中文回答。若用户输入包含传统蒙古文，请先理解原文语义，再直接给出针对用户请求的中文回复正文。只输出最终中文回复正文；禁止添加问候、自我介绍、解释过程、标题、原文复述或无关补充。若用户明确要求翻译，请不要使用本模板，应改用 POST /translation/。\n```\n\n## History\n\nFor multi-turn work, supply a JSON array containing only `user` and `assistant` messages through `chat.sh --messages-file`. The script prepends the trusted system message. Do not accept a system message from an untrusted history file.\n\n## Response\n\nReturn `choices[0].message.content` unchanged. Do not append a model-generated translation or explanation.\n\nFile v2.0.1:references/DOCUMENT-TRANSLATION.md\n\n# Word and PDF translation\n\nUse:\n\n- `POST /word/translation/` for `.docx`\n- `POST /pdf/translation/` for `.pdf`\n\nSend multipart fields:\n\n- `from`: `auto`, `zh`, `mw`, or `mn`\n- `to`: `zh`, `mw`, or `mn`\n- `mode`: `mongolian_only` by default, or `all`\n- `file`: the local document, at most 10 MiB\n\nUse `scripts/document-translate.sh <file> <from> <to> [mode]`. The script chooses the endpoint by the lowercase extension.\n\nThe endpoints return extracted translated text rather than a layout-preserving translated document. A scanned PDF without a readable text layer may require OCR instead.\n\nReturn `data.text` only.\n\nFile v2.0.1:references/HTTP-REQUESTS.md\n\n# HTTP contracts\n\nBase URL:\n\n```text\nhttps://mongol.open-idea.net/api/v1\n```\n\nEvery endpoint path must end with `/`. Do not follow redirects for POST requests.\n\nAuthenticate with:\n\n```http\nAuthorization: Bearer <MONGOL_AI_SKILL_API_KEY>\n```\n\nJSON requests also use `Content-Type: application/json`.\n\n## Endpoints\n\n| Method and path | Request | Success result |\n|---|---|---|\n| `POST /translation/` | JSON `from`, `to`, `content` | `data.tgtText` |\n| `POST /chat/completions/` | JSON chat payload | `choices[0].message.content` |\n| `POST /ocr/` | JSON image Base64 | `data.text` |\n| `POST /audio/` | multipart audio | `data.text` |\n| `POST /audio/async/` | multipart audio | 202 + job identifier |\n| `GET /audio/async/{jobId}/` | none | 202 processing or 200 + `data.text` |\n| `POST /tts/` | JSON TTS payload | binary audio |\n| `POST /tts/async/` | JSON TTS payload | 202 + job identifier |\n| `GET /tts/async/{jobId}/` | none | 202 processing or 200 + `audioBase64` |\n| `POST /word/translation/` | multipart document | `data.text` |\n| `POST /pdf/translation/` | multipart document | `data.text` |\n\nAsynchronous endpoints may use either `jobId` or `job_id`, and may report `done` or `completed`. Treat 422 or `failed` as terminal.\n\n## Billing metadata\n\nRead both headers and JSON because asynchronous billing can appear in the completed job body.\n\nHeaders:\n\n```text\nX-Mengguyu-Billing-Charged\nX-Mengguyu-Billing-Balance\nX-Mengguyu-Billing-Currency\n```\n\nCommon JSON keys:\n\n```text\nbillingCharged\nbillingBalance\nbillingCurrency\n```\n\nWhen charged amount and balance are available, emit:\n\n```text\n本次扣费: {charged} {currency}, 余额: {balance} {currency}\n```\n\nDo not invent missing billing values.\n\n## HTTP handling\n\n- 2xx: process the documented result.\n- 3xx: fail; do not redirect a POST.\n- 4xx: fail without blind retry.\n- 429: bounded retry is allowed when the server has not accepted a job.\n- 5xx: bounded retry is allowed.\n- ambiguous POST transport error: fail without retry.\n- GET polling transport error: bounded retry.\n\nNever print a full error body. Return a sanitized message or HTTP status and request identifier.\n\nFile v2.0.1:references/INTERFACE-ROUTING.md\n\n# Interface routing\n\nChoose a route independently for every user turn.\n\n## Priority\n\n1. Image or screenshot text extraction → `POST /ocr/`\n2. Audio or recording transcription → `POST /audio/async/`; use `POST /audio/` only for deliberately short synchronous work\n3. Read aloud or synthesize speech → `POST /tts/async/`; use `POST /tts/` only for deliberately short synchronous work\n4. Pure translation or script conversion → `POST /translation/`\n5. Mongolian input with an explicit Chinese-answer request → `POST /chat/completions/` using the Chinese prompt\n6. Mongolian conversation or original Mongolian composition → `POST /chat/completions/` using the Traditional Mongolian prompt\n7. `.docx` or `.pdf` translation → the matching document endpoint\n\nAn attachment does not override the user's actual goal. For example, “read this attached Mongolian text aloud” requires extraction first and TTS second.\n\n## Language and intent\n\n- Traditional Mongolian characters U+1800–U+18AF imply `mw`.\n- Cyrillic Mongolian characters usually imply `mn`.\n- A request to translate, convert scripts, or explain the literal meaning uses `/translation/`.\n- A request to answer, compose, reply, summarize, or continue a conversation uses `/chat/completions/`.\n- `mw` ↔ `mn` conversion is one `/translation/` request.\n- When the user does not specify the target for Chinese source text, default to Traditional Mongolian (`zh` → `mw`).\n- When the user provides Mongolian text and asks what it means, default to Chinese unless another target is explicit.\n- The translation endpoint does not accept Japanese, English, or other source codes. For a non-Mongolian source outside `zh/mw/mn`, first translate that source to Chinese using an appropriate general translation capability, then call `/translation/` for `zh` → `mw` or `mn`. Keep the intermediate Chinese out of the final response unless requested.\n\n## Multi-step work\n\n- OCR → translation: capture `data.text`, then pass it as `/translation/` content.\n- ASR → translation: capture the completed job's `data.text`, then pass it as `/translation/` content.\n- Extracted text → TTS: verify the requested language and pass the exact text to TTS.\n- Other language → Mongolian: non-Mongolian source → Chinese intermediate → `/translation/`; never generate the Mongolian leg directly.\n- Scanned PDF: use OCR only when the document translation endpoint cannot read a text layer.\n\nPerform privacy and cost confirmation before the first paid step. Do not expose intermediate raw JSON or manually retype intermediate text.\n\n## Long inputs\n\nRemove navigation or unrelated page chrome before translating a web page. Split text only on natural boundaries and preserve order. Do not replace deterministic translation with chat generation.\n\nFile v2.0.1:references/OCR.md\n\n# OCR\n\nUse `POST /ocr/` for an image, screenshot, photograph, or scanned page.\n\n## Request\n\n```json\n{\n  \"image_base64\": \"<Base64>\",\n  \"language\": \"mw\",\n  \"image_encoding\": \"jpg\"\n}\n```\n\n- Default to `mw` for Traditional Mongolian and use `mn` only for Cyrillic.\n- Supported encodings are `jpg`, `png`, `bmp`, `webp`, `tif`, `tiff`, and `gif`.\n- Keep decoded input at or below 10 MiB.\n- Generate Base64 from the file without placing the encoded payload in a shell argument.\n\nUse `scripts/ocr.sh <image> [mw|mn]`.\n\n## Response and chaining\n\nReturn `data.text`. If the user also requested translation, pass that value directly into `/translation/`. Do not expose `data.lines`, raw provider data, or the Base64 request.\n\nFile v2.0.1:references/TRANSLATION.md\n\n# Translation\n\nUse `POST /translation/` for Chinese, Traditional Mongolian, and Cyrillic Mongolian translation or conversion.\n\n## Request\n\n```json\n{\"from\":\"zh\",\"to\":\"mw\",\"content\":\"你好朋友\"}\n```\n\n`from` and `to` accept:\n\n- `zh`: Chinese\n- `mw`: Traditional Mongolian\n- `mn`: Cyrillic Mongolian\n\nThe source and target must differ. Use one request for `mw` ↔ `mn`; the service handles its internal pivot.\n\nFor source languages outside this set, first translate the non-Mongolian source to Chinese with an appropriate general translation capability. Then send only the Chinese intermediate through this endpoint for the Mongolian leg. Do not claim that `/translation/` accepts Japanese, English, or automatic arbitrary-language input.\n\n## Direction defaults\n\n- U+1800–U+18AF source → `mw`\n- Cyrillic source → `mn`\n- otherwise → `zh`\n- Chinese source with no explicit target → `mw`\n- Mongolian source with no explicit target in a translation request → `zh`\n\n## Length and segmentation\n\nThe bundled script accepts at most 4,000 Unicode code points per call. For longer material:\n\n1. obtain cost confirmation;\n2. split on paragraphs or sentence boundaries without changing text;\n3. call each segment once in order;\n4. concatenate results using the original separators;\n5. stop on the first failed segment and report which segment failed without automatically replaying successful segments.\n\nSerialize JSON with Python or another real JSON encoder. Never interpolate raw multiline text into a hand-built JSON string.\n\n## Response\n\nReturn `data.tgtText`. Do not return `data.srcText`, the intermediate pivot language, or the response envelope.\n\nFile v2.0.1:references/TTS.md\n\n# TTS\n\nUse `POST /tts/async/` by default. Use `POST /tts/` only for intentionally short synchronous synthesis. Do not use `/tts/stream`.\n\n## Parameters\n\n- `text`: preserve the user's requested text exactly\n- `lang`: `mn-Mong`, `mn-Cyrl`, `zh-Hans`, `en`, `ja`, `ko`, or `ru`\n- `voice`: default `Kore`\n- `speed`: default `1.0`, allowed range `0.5`–`2.0`\n\nAvailable voices:\n\n`Kore`, `Puck`, `Zephyr`, `Charon`, `Fenrir`, `Aoede`, `Leda`, `Orus`, `Iapetus`, `Sulafat`, `Achird`, `Achernar`\n\nDo not interrupt a simple request merely to list every voice. Use `Kore` unless the user requests a particular voice or vocal style.\n\n## Asynchronous flow\n\n1. `POST /tts/async/` and read `jobId` or `job_id`.\n2. Poll `GET /tts/async/{jobId}/` every three seconds.\n3. Continue for 202 or `pending`/`processing`.\n4. On `done`/`completed`, decode `audioBase64` to a WAV file.\n5. Treat 422 or `failed` as terminal.\n\nThe script writes to a temporary sibling file, validates the audio signature, and atomically moves it to the requested output. It refuses to replace an existing output unless `--force` is explicit.\n\nTo keep text out of the process list, omit the text argument and pipe it to `scripts/tts.sh <lang> <output> [options]`.\n\n## Response\n\nTell the user the saved file path. Never paste Base64, binary audio, or a WAV body into chat.\n\nArchive v2.0.0: 21 files, 26529 bytes\n\nFiles: LICENSE (899b), references/API-KEY.md (1161b), references/ASR.md (831b), references/BEHAVIOR-RULES.md (3298b), references/CHAT-COMPLETIONS.md (1633b), references/DOCUMENT-TRANSLATION.md (616b), references/HTTP-REQUESTS.md (2129b), references/INTERFACE-ROUTING.md (2797b), references/OCR.md (715b), references/TRANSLATION.md (1655b), references/TTS.md (1328b), scripts/_lib.sh (8264b), scripts/asr.sh (2920b), scripts/chat.sh (4957b), scripts/document-translate.sh (1391b), scripts/ocr.sh (1360b), scripts/translate.sh (1942b), scripts/tts.sh (5224b), skill-card.md (2839b), SKILL.md (5413b), _meta.json (137b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: mongolian-ai\ndescription: Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requests send text, images, audio, or documents to https://mongol.open-idea.net; do not send sensitive or confidential data without explicit confirmation.\nmetadata:\n  openclaw:\n    emoji: \"🐎\"\n    homepage: \"https://mongol.open-idea.net\"\n    primaryEnv: \"MONGOL_AI_SKILL_API_KEY\"\n    envVars:\n      - name: \"MONGOL_AI_SKILL_API_KEY\"\n        required: true\n        description: \"Bearer API key for the Mongol AI service.\"\n    requires:\n      bins:\n        - \"bash\"\n        - \"curl\"\n        - \"python3\"\n---\n\n# Mongolian AI\n\nUse the dedicated API at `https://mongol.open-idea.net/api/v1` for Mongolian-language work. Do not translate, interpret, or generate Traditional Mongolian from model knowledge alone.\n\n## Before calling\n\n1. Verify that `MONGOL_AI_SKILL_API_KEY` is available without printing it. Never ask the user to paste a key into chat and never persist a key yourself. Read [API key handling](references/API-KEY.md) if the key is missing or the deprecated variable is present.\n2. Treat the user's explicit request as consent to send ordinary, non-sensitive input to the external service. Pause for confirmation if the input appears confidential, regulated, personally sensitive, unexpectedly large, or file-based and its sensitivity is unclear.\n3. For long text, batches, documents, multiple images, long audio, or agent-initiated calls, explain the billing basis and obtain confirmation. Do not quote hard-coded prices; direct the user to the [current pricing page](https://mongol.open-idea.net/#pricing).\n\nRead [behavior and safety rules](references/BEHAVIOR-RULES.md) for the complete confirmation, retry, and duplicate-charge policy.\n\n## Route every turn\n\nChoose the endpoint again for each new message:\n\n1. Image or image-text extraction → `/ocr/`\n2. Audio transcription → `/audio/async/` by default; `/audio/` only for explicitly short synchronous work\n3. Speech generation → `/tts/async/` by default; `/tts/` only for explicitly short synchronous work\n4. Pure translation or `mw` ↔ `mn` conversion → `/translation/`\n5. Mongolian input requiring a Chinese answer → `/chat/completions/` with the Chinese system prompt\n6. Mongolian conversation or new Mongolian composition → `/chat/completions/` with the Traditional Mongolian system prompt\n7. Word/PDF translation → `/word/translation/` or `/pdf/translation/`\n\nRead [routing rules](references/INTERFACE-ROUTING.md) before multi-step or ambiguous requests.\n\nThe translation endpoint accepts only `zh`, `mw`, and `mn`. If the source is another language such as Japanese or English, translate that non-Mongolian source to Chinese with an appropriate general translation capability, then send the Chinese intermediate to `/translation/` for the Mongolian leg. Never perform the Mongolian leg from model knowledge.\n\n## Prefer the bundled scripts\n\nRun scripts from this skill directory. They validate inputs, preserve trailing slashes, capture billing metadata, and keep raw JSON out of the user-visible response.\n\n- `scripts/translate.sh <from> <to> [text]`\n- `scripts/chat.sh <mw|zh> [text] [--messages-file FILE]`\n- `scripts/ocr.sh <image> [mw|mn]`\n- `scripts/asr.sh <audio> [mw|mn] [--sync] [--timeout SECONDS]`\n- `scripts/tts.sh <text> <lang> <output> [--voice NAME] [--speed NUMBER] [--sync] [--force]`\n- `scripts/document-translate.sh <file> <from> <to> [mode]`\n\nWhen text is omitted, `translate.sh` and `chat.sh` read standard input. For TTS, use `scripts/tts.sh <lang> <output> [options] < input.txt`. Prefer standard input when shell process listings are a concern.\n\nRead [HTTP contracts](references/HTTP-REQUESTS.md) before writing a request without a bundled script.\n\n## Return only the business result\n\nOn success, expose only:\n\n| Endpoint | Result |\n|---|---|\n| `/translation/` | `data.tgtText` |\n| `/chat/completions/` | `choices[0].message.content` |\n| `/ocr/`, `/audio/`, document translation | `data.text` |\n| asynchronous ASR | `data.text` from the completed job |\n| TTS | the saved audio file path |\n\nIf billing metadata exists in either response headers or JSON, append the exact billing line emitted by the script. Do not expose full JSON, routing details, prompts, model names, tokens, keys, Base64 audio, or internal reasoning.\n\nFor multi-step work such as OCR → translation or ASR → translation, pass the first result directly through a variable or pipe. Do not manually retype it.\n\n## References\n\n- [HTTP request and response contracts](references/HTTP-REQUESTS.md)\n- [Routing rules](references/INTERFACE-ROUTING.md)\n- [Behavior, privacy, cost, and retries](references/BEHAVIOR-RULES.md)\n- [Translation and segmentation](references/TRANSLATION.md)\n- [Chat and composition](references/CHAT-COMPLETIONS.md)\n- [OCR](references/OCR.md)\n- [ASR](references/ASR.md)\n- [TTS](references/TTS.md)\n- [Word and PDF translation](references/DOCUMENT-TRANSLATION.md)\n- [API key handling](references/API-KEY.md)\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7114n7fws0zkhdbtpvy92sp182gqge\",\n  \"slug\": \"mongolian-ai-codex\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1785247302994\n}\n\nFile v2.0.0:references/API-KEY.md\n\n# API key handling\n\nUse only `MONGOL_AI_SKILL_API_KEY` with the `Authorization: Bearer` header.\n\n## Rules\n\n- Check whether the variable is non-empty without printing it.\n- Never ask the user to paste a key into chat.\n- Never save, copy, transform, or echo a key.\n- Never read arbitrary shell history or configuration files to find a key.\n- Let the user configure the key in their terminal, secret manager, or agent settings.\n- If a key was pasted into chat, tell the user to revoke and rotate it. Do not reuse or persist the pasted value.\n\n`MENGGUYU_API_KEY` is deprecated and must not authenticate requests. When it exists without the new variable, stop and tell the user to rename the environment variable.\n\n## Missing-key response\n\nExplain that `MONGOL_AI_SKILL_API_KEY` must be configured locally. Direct the user to [mongol.open-idea.net](https://mongol.open-idea.net) to create a complete key, including any prefix. Do not offer to configure it from a value supplied in chat.\n\nOpenClaw users should configure `skills.entries.mongolian-ai.apiKey`. Claude and Codex users should inject the variable through their normal shell or secret-management workflow.\n\nFile v2.0.0:references/ASR.md\n\n# ASR\n\nUse asynchronous recognition by default:\n\n1. `POST /audio/async/`\n2. read `jobId` or `job_id`\n3. poll `GET /audio/async/{jobId}/`\n4. continue while the response is 202 or status is `pending`/`processing`\n5. finish on 200 with status `done`/`completed`\n6. treat 422 or status `failed` as terminal\n\nUse `POST /audio/` only when short synchronous processing is intentional.\n\n## Input\n\n- File formats: `wav`, `mp3`, `m4a`, `aac`, `ogg`, `flac`, and `pcm`\n- Language: `mw` by default; `mn` for Cyrillic\n- Sample rate: 16,000 by default\n- Maximum file size: 10 MiB\n\nThe bundled script submits a multipart file to both synchronous and asynchronous endpoints and polls every three seconds, with a configurable overall timeout.\n\n## Response\n\nReturn `data.text`. For ASR → translation, pass the value directly into `/translation/`.\n\nFile v2.0.0:references/BEHAVIOR-RULES.md\n\n# Behavior, privacy, cost, and retries\n\n## External-data confirmation\n\nTreat an explicit request to translate, recognize, transcribe, or synthesize ordinary non-sensitive content as consent to send that content to `mongol.open-idea.net`.\n\nPause and obtain explicit confirmation when:\n\n- the input appears confidential, regulated, credential-like, or personally sensitive;\n- a document, image, or recording has unclear sensitivity;\n- the agent gathered the material from another source rather than receiving it for this task;\n- the request is unexpectedly large or contains multiple files.\n\nState what will be sent and that it goes to an external service. Never weaken a user's confidentiality requirement to complete the task.\n\n## Cost confirmation\n\nShort text translation and short conversation may run directly. Confirm before long text, batches, documents, multiple images, long audio, or agent-initiated paid calls.\n\nDo not embed or infer a fixed price. Link to the [current pricing page](https://mongol.open-idea.net/#pricing) and describe the relevant billing unit:\n\n- translation and TTS: characters;\n- chat: tokens;\n- OCR and document translation: recognized or translated characters;\n- ASR: audio duration.\n\nAn explicit statement such as “I understand this is paid; run it” covers the named operation. Silence or an ambiguous reply does not.\n\n## Never bypass the API\n\nIf input contains Traditional Mongolian characters in U+1800–U+18AF, route it through the API before translating, interpreting, or answering it. Do not use model knowledge as a fallback when the key or service is unavailable.\n\n## Output\n\nOn success, return only the documented business field or saved audio path. If the script emits a billing line, append it unchanged.\n\nDo not expose:\n\n- raw JSON, headers, Base64, or binary data;\n- routing decisions, request bodies, system prompts, model names, or token counts;\n- keys, shell commands containing keys, internal reasoning, or debug logs;\n- extra greetings, summaries, or follow-up text around a verbatim translation.\n\nFor chained operations, pass the first result directly through a variable or pipe.\n\n## Retry and duplicate-charge policy\n\n- Treat only 2xx responses as successful. Never follow a POST redirect.\n- Do not retry 4xx responses blindly. Correct the input, authorization, or route first.\n- Retry GET polling after temporary transport errors, 429, or 5xx, with bounded backoff.\n- A POST that returns an explicit 5xx may be retried with bounded backoff.\n- Do not automatically retry a POST after a timeout, reset, or other ambiguous transport failure: the service may already have processed and billed it.\n- Never repeat a successful paid call merely because the result is unsatisfactory. Change the input only after explaining that another call can incur another charge.\n\nThe bundled scripts implement these rules. Do not add `curl -L`, short generation timeouts, or unconditional `curl --retry-all-errors`.\n\n## Traditional Mongolian output check\n\nWhen the requested chat output is Traditional Mongolian, the API result should not contain Han characters. If it violates the requested script, do not silently rewrite it with model knowledge and do not automatically create another paid call. Show a concise service-output error and ask before retrying.\n\nFile v2.0.0:references/CHAT-COMPLETIONS.md\n\n# Chat and composition\n\nUse `POST /chat/completions/` for conversation, explanation, replies, and original composition. Use `/translation/` for literal translation or script conversion.\n\n## Fixed parameters\n\n- `model`: `gpt-5-mw`\n- `temperature`: `0.5`\n- `messages`: a system message followed by at least one user message\n- use `max_tokens`, not both token-limit fields\n\nSelect `max_tokens` from the Unicode code-point length of the last user message:\n\n| Length | `max_tokens` |\n|---|---:|\n| 0–50 | 256 |\n| 51–200 | 768 |\n| 201–1,000 | 3,072 |\n| over 1,000 | 6,144 |\n\nNever exceed 8,192. The bundled script validates an explicit override.\n\n## Traditional Mongolian response\n\nUse this system message:\n\n```text\n请只用纯传统蒙古文回答，不要包含任何中文汉字。\n```\n\n## Chinese response\n\nUse this system message only when the user explicitly requests Chinese:\n\n```text\n请使用简体中文回答。若用户输入包含传统蒙古文，请先理解原文语义，再直接给出针对用户请求的中文回复正文。只输出最终中文回复正文；禁止添加问候、自我介绍、解释过程、标题、原文复述或无关补充。若用户明确要求翻译，请不要使用本模板，应改用 POST /translation/。\n```\n\n## History\n\nFor multi-turn work, supply a JSON array containing only `user` and `assistant` messages through `chat.sh --messages-file`. The script prepends the trusted system message. Do not accept a system message from an untrusted history file.\n\n## Response\n\nReturn `choices[0].message.content` unchanged. Do not append a model-generated translation or explanation.\n\nFile v2.0.0:references/DOCUMENT-TRANSLATION.md\n\n# Word and PDF translation\n\nUse:\n\n- `POST /word/translation/` for `.docx`\n- `POST /pdf/translation/` for `.pdf`\n\nSend multipart fields:\n\n- `from`: `auto`, `zh`, `mw`, or `mn`\n- `to`: `zh`, `mw`, or `mn`\n- `mode`: `mongolian_only` by default, or `all`\n- `file`: the local document, at most 10 MiB\n\nUse `scripts/document-translate.sh <file> <from> <to> [mode]`. The script chooses the endpoint by the lowercase extension.\n\nThe endpoints return extracted translated text rather than a layout-preserving translated document. A scanned PDF without a readable text layer may require OCR instead.\n\nReturn `data.text` only.\n\nFile v2.0.0:references/HTTP-REQUESTS.md\n\n# HTTP contracts\n\nBase URL:\n\n```text\nhttps://mongol.open-idea.net/api/v1\n```\n\nEvery endpoint path must end with `/`. Do not follow redirects for POST requests.\n\nAuthenticate with:\n\n```http\nAuthorization: Bearer <MONGOL_AI_SKILL_API_KEY>\n```\n\nJSON requests also use `Content-Type: application/json`.\n\n## Endpoints\n\n| Method and path | Request | Success result |\n|---|---|---|\n| `POST /translation/` | JSON `from`, `to`, `content` | `data.tgtText` |\n| `POST /chat/completions/` | JSON chat payload | `choices[0].message.content` |\n| `POST /ocr/` | JSON image Base64 | `data.text` |\n| `POST /audio/` | multipart audio | `data.text` |\n| `POST /audio/async/` | multipart audio | 202 + job identifier |\n| `GET /audio/async/{jobId}/` | none | 202 processing or 200 + `data.text` |\n| `POST /tts/` | JSON TTS payload | binary audio |\n| `POST /tts/async/` | JSON TTS payload | 202 + job identifier |\n| `GET /tts/async/{jobId}/` | none | 202 processing or 200 + `audioBase64` |\n| `POST /word/translation/` | multipart document | `data.text` |\n| `POST /pdf/translation/` | multipart document | `data.text` |\n\nAsynchronous endpoints may use either `jobId` or `job_id`, and may report `done` or `completed`. Treat 422 or `failed` as terminal.\n\n## Billing metadata\n\nRead both headers and JSON because asynchronous billing can appear in the completed job body.\n\nHeaders:\n\n```text\nX-Mengguyu-Billing-Charged\nX-Mengguyu-Billing-Balance\nX-Mengguyu-Billing-Currency\n```\n\nCommon JSON keys:\n\n```text\nbillingCharged\nbillingBalance\nbillingCurrency\n```\n\nWhen charged amount and balance are available, emit:\n\n```text\n本次扣费: {charged} {currency}, 余额: {balance} {currency}\n```\n\nDo not invent missing billing values.\n\n## HTTP handling\n\n- 2xx: process the documented result.\n- 3xx: fail; do not redirect a POST.\n- 4xx: fail without blind retry.\n- 429: bounded retry is allowed when the server has not accepted a job.\n- 5xx: bounded retry is allowed.\n- ambiguous POST transport error: fail without retry.\n- GET polling transport error: bounded retry.\n\nNever print a full error body. Return a sanitized message or HTTP status and request identifier.\n\nFile v2.0.0:references/INTERFACE-ROUTING.md\n\n# Interface routing\n\nChoose a route independently for every user turn.\n\n## Priority\n\n1. Image or screenshot text extraction → `POST /ocr/`\n2. Audio or recording transcription → `POST /audio/async/`; use `POST /audio/` only for deliberately short synchronous work\n3. Read aloud or synthesize speech → `POST /tts/async/`; use `POST /tts/` only for deliberately short synchronous work\n4. Pure translation or script conversion → `POST /translation/`\n5. Mongolian input with an explicit Chinese-answer request → `POST /chat/completions/` using the Chinese prompt\n6. Mongolian conversation or original Mongolian composition → `POST /chat/completions/` using the Traditional Mongolian prompt\n7. `.docx` or `.pdf` translation → the matching document endpoint\n\nAn attachment does not override the user's actual goal. For example, “read this attached Mongolian text aloud” requires extraction first and TTS second.\n\n## Language and intent\n\n- Traditional Mongolian characters U+1800–U+18AF imply `mw`.\n- Cyrillic Mongolian characters usually imply `mn`.\n- A request to translate, convert scripts, or explain the literal meaning uses `/translation/`.\n- A request to answer, compose, reply, summarize, or continue a conversation uses `/chat/completions/`.\n- `mw` ↔ `mn` conversion is one `/translation/` request.\n- When the user does not specify the target for Chinese source text, default to Traditional Mongolian (`zh` → `mw`).\n- When the user provides Mongolian text and asks what it means, default to Chinese unless another target is explicit.\n- The translation endpoint does not accept Japanese, English, or other source codes. For a non-Mongolian source outside `zh/mw/mn`, first translate that source to Chinese using an appropriate general translation capability, then call `/translation/` for `zh` → `mw` or `mn`. Keep the intermediate Chinese out of the final response unless requested.\n\n## Multi-step work\n\n- OCR → translation: capture `data.text`, then pass it as `/translation/` content.\n- ASR → translation: capture the completed job's `data.text`, then pass it as `/translation/` content.\n- Extracted text → TTS: verify the requested language and pass the exact text to TTS.\n- Other language → Mongolian: non-Mongolian source → Chinese intermediate → `/translation/`; never generate the Mongolian leg directly.\n- Scanned PDF: use OCR only when the document translation endpoint cannot read a text layer.\n\nPerform privacy and cost confirmation before the first paid step. Do not expose intermediate raw JSON or manually retype intermediate text.\n\n## Long inputs\n\nRemove navigation or unrelated page chrome before translating a web page. Split text only on natural boundaries and preserve order. Do not replace deterministic translation with chat generation.\n\nFile v2.0.0:references/OCR.md\n\n# OCR\n\nUse `POST /ocr/` for an image, screenshot, photograph, or scanned page.\n\n## Request\n\n```json\n{\n  \"image_base64\": \"<Base64>\",\n  \"language\": \"mw\",\n  \"image_encoding\": \"jpg\"\n}\n```\n\n- Default to `mw` for Traditional Mongolian and use `mn` only for Cyrillic.\n- Supported encodings are `jpg`, `png`, `bmp`, `webp`, `tif`, `tiff`, and `gif`.\n- Keep decoded input at or below 10 MiB.\n- Generate Base64 from the file without placing the encoded payload in a shell argument.\n\nUse `scripts/ocr.sh <image> [mw|mn]`.\n\n## Response and chaining\n\nReturn `data.text`. If the user also requested translation, pass that value directly into `/translation/`. Do not expose `data.lines`, raw provider data, or the Base64 request.\n\nFile v2.0.0:references/TRANSLATION.md\n\n# Translation\n\nUse `POST /translation/` for Chinese, Traditional Mongolian, and Cyrillic Mongolian translation or conversion.\n\n## Request\n\n```json\n{\"from\":\"zh\",\"to\":\"mw\",\"content\":\"你好朋友\"}\n```\n\n`from` and `to` accept:\n\n- `zh`: Chinese\n- `mw`: Traditional Mongolian\n- `mn`: Cyrillic Mongolian\n\nThe source and target must differ. Use one request for `mw` ↔ `mn`; the service handles its internal pivot.\n\nFor source languages outside this set, first translate the non-Mongolian source to Chinese with an appropriate general translation capability. Then send only the Chinese intermediate through this endpoint for the Mongolian leg. Do not claim that `/translation/` accepts Japanese, English, or automatic arbitrary-language input.\n\n## Direction defaults\n\n- U+1800–U+18AF source → `mw`\n- Cyrillic source → `mn`\n- otherwise → `zh`\n- Chinese source with no explicit target → `mw`\n- Mongolian source with no explicit target in a translation request → `zh`\n\n## Length and segmentation\n\nThe bundled script accepts at most 4,000 Unicode code points per call. For longer material:\n\n1. obtain cost confirmation;\n2. split on paragraphs or sentence boundaries without changing text;\n3. call each segment once in order;\n4. concatenate results using the original separators;\n5. stop on the first failed segment and report which segment failed without automatically replaying successful segments.\n\nSerialize JSON with Python or another real JSON encoder. Never interpolate raw multiline text into a hand-built JSON string.\n\n## Response\n\nReturn `data.tgtText`. Do not return `data.srcText`, the intermediate pivot language, or the response envelope.\n\nFile v2.0.0:references/TTS.md\n\n# TTS\n\nUse `POST /tts/async/` by default. Use `POST /tts/` only for intentionally short synchronous synthesis. Do not use `/tts/stream`.\n\n## Parameters\n\n- `text`: preserve the user's requested text exactly\n- `lang`: `mn-Mong`, `mn-Cyrl`, `zh-Hans`, `en`, `ja`, `ko`, or `ru`\n- `voice`: default `Kore`\n- `speed`: default `1.0`, allowed range `0.5`–`2.0`\n\nAvailable voices:\n\n`Kore`, `Puck`, `Zephyr`, `Charon`, `Fenrir`, `Aoede`, `Leda`, `Orus`, `Iapetus`, `Sulafat`, `Achird`, `Achernar`\n\nDo not interrupt a simple request merely to list every voice. Use `Kore` unless the user requests a particular voice or vocal style.\n\n## Asynchronous flow\n\n1. `POST /tts/async/` and read `jobId` or `job_id`.\n2. Poll `GET /tts/async/{jobId}/` every three seconds.\n3. Continue for 202 or `pending`/`processing`.\n4. On `done`/`completed`, decode `audioBase64` to a WAV file.\n5. Treat 422 or `failed` as terminal.\n\nThe script writes to a temporary sibling file, validates the audio signature, and atomically moves it to the requested output. It refuses to replace an existing output unless `--force` is explicit.\n\nTo keep text out of the process list, omit the text argument and pipe it to `scripts/tts.sh <lang> <output> [options]`.\n\n## Response\n\nTell the user the saved file path. Never paste Base64, binary audio, or a WAV body into chat.\n\nArchive v1.0.2: 6 files, 7780 bytes\n\nFiles: agents/openai.yaml (217b), references/api-reference.md (4077b), references/behavior.md (2930b), skill-card.md (2598b), SKILL.md (4678b), _meta.json (137b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: mongolian-ai\ndescription: Use for Mongolian-language work through the Mongol Open Idea API, including Chinese, traditional Mongolian, and Cyrillic Mongolian translation; Mongolian chat or writing; TTS; ASR; OCR; and Word/PDF document translation. Trigger when the user asks about Mongolian text, Mongolian script conversion, Mongolian audio, Mongolian OCR, or document translation involving Mongolian.\n---\n\n# Mongolian AI\n\nUse the Mongol Open Idea API directly from Codex. This is not the OpenAI API and does not use OpenClaw gateway commands.\n\nBase URL: `https://mongol.open-idea.net/api/v1`\n\nThis skill is suitable for public distribution because it does not bundle API keys, executable API clients, or account-specific configuration. Each user must provide their own API key.\n\n## Setup\n\nRead the API key from `MONGOL_OPEN_IDEA_API_KEY`.\n\nIf the variable is missing, tell the user:\n\n```text\nMONGOL_OPEN_IDEA_API_KEY is not configured. Create an API key at https://mongol.open-idea.net, then set it in your local shell or Codex environment as MONGOL_OPEN_IDEA_API_KEY. Do not paste the key into chat.\n```\n\nNever ask the user to paste the key into the conversation. If the user already pasted a key, warn them to revoke it and create a new one. Do not echo the key.\n\nDo not store API keys in this skill folder, examples, logs, screenshots, or generated artifacts.\n\n## Route Each Request\n\nChoose the endpoint every turn:\n\n- Image input or \"OCR\": `POST /ocr`.\n- Audio input or transcription: prefer async `POST /audio/async`, then poll `GET /audio/async/{jobId}` every 3-5 seconds until done.\n- Read aloud, synthesize speech, or play audio: prefer async `POST /tts/async`, then poll `GET /tts/async/{jobId}`; use sync `POST /tts` only for very short text.\n- Pure translation or script conversion, including \"translate\", \"what does this mean\", \"Cyrillic to traditional Mongolian\": `POST /translation`.\n- Mongolian text plus a request to answer in Chinese: `POST /chat/completions` with a Chinese system message.\n- Mongolian input without translation intent: `POST /chat/completions` with a Mongolian-only system message.\n- Word/PDF document translation: use the matching document endpoint; read `references/api-reference.md` first.\n\nFor OCR -> translation or ASR -> translation chains, pass the prior response field by variable or structured data. Do not manually copy text from logs, terminal previews, or chat snippets into the next paid request.\n\n## Cost Confirmation\n\nShort translations and short chats can be called directly.\n\nBefore long text, batch jobs, Word/PDF translation, OCR, ASR, or TTS, estimate cost and ask for confirmation. See `references/behavior.md` for rates and retry rules.\n\nDo not repeat a successful paid request just because the visible output looks odd or the user dislikes the result. Ask for explicit approval before any redo that may charge again.\n\n## Output Contract\n\nAfter a successful API call, final user-visible output must be:\n\n1. Business content only, unless the user explicitly asks for billing details.\n2. A localized billing summary only when the user requested billing details, cost details, or account-balance information.\n\nBusiness content fields:\n\n- `POST /translation`: `data.tgtText`; concatenate segments in order.\n- `POST /chat/completions`: `choices[0].message.content`.\n- `POST /ocr`, `POST /word/translation`, `POST /pdf/translation`: `data.text`.\n- `POST /audio` and completed `POST /audio/async`: `data.text`.\n- `POST /tts`: save/play the binary audio; do not print binary, base64, or full WAV content.\n- Completed `POST /tts/async`: decode `audioBase64` to WAV; do not print base64.\n\nBilling fields must be parsed for cost awareness and retry safety:\n\n- Headers: `X-Mengguyu-Billing-Charged`, `X-Mengguyu-Billing-Balance`, `X-Mengguyu-Billing-Currency`.\n- JSON: `billingCharged`, `billingBalance`, and any returned currency field.\n\nDo not expose billing fields, account balance, or paid-operation metadata by default. If the user explicitly asks for billing details, summarize only the returned values in the user's language and locale. If multiple successful calls in one workflow include billing fields, summarize them in call order. If no billing fields are present, say that the API did not return billing details.\n\nDo not expose request payloads, raw JSON, internal routing notes, model names, token usage, or code blocks in the final answer unless the user is debugging the integration.\n\nRead these references only when needed:\n\n- `references/api-reference.md`: endpoint payloads, language codes, TTS/ASR polling, chat token sizing.\n- `references/behavior.md`: cost, retry, redo, and output self-check rules.\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7114n7fws0zkhdbtpvy92sp182gqge\",\n  \"slug\": \"mongolian-ai-codex\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1780545523501\n}\n\nFile v1.0.2:references/api-reference.md\n\n# API Reference\n\nBase URL: `https://mongol.open-idea.net/api/v1`\n\nUse `Authorization: Bearer $MONGOL_OPEN_IDEA_API_KEY` for every request.\n\nThis API is not compatible with OpenAI API paths or model names.\n\n## Translation\n\nEndpoint: `POST /translation`\n\nPayload:\n\n```json\n{ \"from\": \"zh\", \"to\": \"mw\", \"content\": \"待翻译文本\" }\n```\n\nLanguage codes:\n\n- `zh`: Chinese.\n- `mw`: traditional Mongolian.\n- `mn`: Cyrillic Mongolian.\n\nMongolian-to-Mongolian conversion should call `/translation` once; the service handles the intermediate route.\n\nReturn field: `data.tgtText`.\n\n## Chat\n\nEndpoint: `POST /chat/completions`\n\nModel: `gpt-5-mw`\n\nFor Mongolian output:\n\n```json\n{\n  \"model\": \"gpt-5-mw\",\n  \"messages\": [\n    { \"role\": \"system\", \"content\": \"请只用纯传统蒙古文回答，不要包含任何中文汉字。\" },\n    { \"role\": \"user\", \"content\": \"<user request>\" }\n  ],\n  \"temperature\": 0.5,\n  \"max_tokens\": 768\n}\n```\n\nFor Chinese output:\n\n```json\n{\n  \"model\": \"gpt-5-mw\",\n  \"messages\": [\n    { \"role\": \"system\", \"content\": \"请使用简体中文回答。若用户输入包含传统蒙古文，请先理解原文语义，再直接给出针对用户请求的中文回复正文。只输出最终中文回复正文；禁止添加问候、自我介绍、解释过程、标题、原文复述或无关补充。若用户明确要求翻译，请不要使用本模板，应改用 POST /translation。\" },\n    { \"role\": \"user\", \"content\": \"<user request>\" }\n  ],\n  \"temperature\": 0.5,\n  \"max_tokens\": 768\n}\n```\n\nSet `max_tokens` by Unicode code point length of the final user message:\n\n- `L <= 50`: `256`.\n- `51 <= L <= 200`: `768`.\n- `201 <= L <= 1000`: `3072`.\n- `L > 1000`: `8192`, or `6144` when the expected answer is not long.\n\nCount code points correctly. In JavaScript use `Array.from(content).length`; avoid UTF-16 `string.length`.\n\nReturn field: `choices[0].message.content`.\n\n## OCR\n\nEndpoint: `POST /ocr`\n\nUse when the user provides an image containing Mongolian or asks to extract image text. Return field: `data.text`.\n\nWhen chaining OCR into translation, pass `data.text` directly as a variable to the translation request. Do not manually transcribe from previews or logs.\n\n## TTS\n\nPrefer async TTS for almost all use.\n\nBefore triggering TTS, ask the user to choose a voice from the full list unless they already chose one:\n\n`Kore`, `Puck`, `Zephyr`, `Charon`, `Fenrir`, `Aoede`, `Leda`, `Orus`, `Iapetus`, `Sulafat`, `Achird`, `Achernar`.\n\nIf the user says \"any\", \"you choose\", or moves on, choose by content:\n\n- Formal/default: `Kore`.\n- News: `Iapetus`.\n- Children: `Leda`.\n- Emotional: `Sulafat`.\n\nDo not volunteer numeric speed values. Say the default is normal speed. If the user explicitly asks for speed changes, map \"faster\" to `\"speed\": 1.2` and \"slower\" to `\"speed\": 0.8`; otherwise omit `speed`.\n\nAsync endpoint: `POST /tts/async`\n\nPayload:\n\n```json\n{ \"text\": \"ᠰᠠᠢᠨ ᠪᠠᠢᠨ᠎ᠠ ᠤᠤ\", \"lang\": \"mn-Mong\", \"voice\": \"Kore\" }\n```\n\nLanguage codes:\n\n- `mn-Mong`: traditional Mongolian.\n- `mn-Cyrl`: Cyrillic Mongolian.\n- `zh-Hans`: Chinese.\n- `en`: English.\n\nPoll `GET /tts/async/{jobId}` every 3-5 seconds until HTTP 200 and `status: done`. Decode JSON field `audioBase64` to a `.wav` file. Do not print base64, binary, or full WAV content.\n\nDo not use removed SSE endpoint `POST /tts/stream`.\n\n## ASR\n\nPrefer async ASR.\n\nEndpoint: `POST /audio/async`\n\nUse `multipart/form-data` with:\n\n- `file`: audio file.\n- `language`: recognition language.\n- `sample_rate`: optional.\n\nPoll `GET /audio/async/{jobId}` every 3-5 seconds. `processing` or `pending` may return HTTP 202; completion returns HTTP 200 with `data.text`.\n\nFor extremely short audio, sync `POST /audio` may be used, but long audio should not rely on a single synchronous request.\n\n## Documents\n\nUse document translation endpoints for Word/PDF requests:\n\n- `POST /word/translation`: Word document translation, return `data.text`.\n- `POST /pdf/translation`: PDF document translation, return `data.text`.\n\nTreat documents as higher-cost tasks. Estimate cost and confirm before calling.\n\nFile v1.0.2:references/behavior.md\n\n# Behavior Rules\n\n## Billing Extraction\n\nEvery successful API response must be checked for billing fields in both headers and JSON body.\n\nHeader fields:\n\n- `X-Mengguyu-Billing-Charged`\n- `X-Mengguyu-Billing-Balance`\n- `X-Mengguyu-Billing-Currency`\n\nJSON fields:\n\n- `billingCharged`\n- `billingBalance`\n- Any returned currency field.\n\nPrefer the header currency. If absent, use a currency literal returned in the JSON body. Do not invent a currency.\n\nDo not use `curl -s` alone when billing matters because it loses headers. Use `curl -sS -i`, `curl -sS -D headers.txt -o body.json`, Python `requests`, or Node `fetch` in a task-local scratch file.\n\nFor async endpoints, extract billing from the completed poll response, not only the initial job submission.\n\n## Cost Confirmation\n\nReference rates from the public Mongol AI skill source. Treat them as estimates unless the API response or provider dashboard says otherwise:\n\n- `/translation`, `/tts`, `/tts/async`: RMB 6 per 10,000 input characters.\n- `/chat/completions`: input RMB 60 per million tokens, output RMB 120 per million tokens.\n\nShort text and short chat can be called directly.\n\nBefore long text, batches, Word/PDF, OCR, ASR, or TTS, estimate the likely cost and ask the user to confirm.\n\n## Retry and Redo\n\nDo not retry `4xx` responses. Fix API key, required fields, JSON, segmentation, or file limits.\n\nRetry `5xx`, timeout, network reset, or transient transport failures only if no completed success/failure response, no usable `jobId`, and no billing fields were parsed. Use incremental backoff and stop after 3 attempts.\n\nOnce a response includes a successful business field or billing fields, treat the request as charged. Do not send the identical payload again unless the user explicitly accepts another charge.\n\nIf the user dislikes a translation or output, present the result and billing honestly. For a redo, ask for confirmation and alter the strategy, such as splitting text, changing direction, cleaning OCR noise, or using a different document.\n\n## Billing Disclosure\n\nParse billing fields after every successful call, but do not display them by default. Treat account balance and exact charge fields as account metadata.\n\nShow billing values only when the user explicitly asks for cost, charge, billing, or balance details. When showing them, use the user's language and locale, and do not force a fixed Chinese line or any other fixed language.\n\n## Final Self-Check\n\nBefore final output:\n\n- Confirm every successful call has had headers and body checked for billing.\n- Confirm business content uses only the target field for the selected endpoint.\n- Confirm billing details are omitted unless the user explicitly requested them.\n- If billing details were requested, confirm amounts and currency are copied exactly, without rounding or translation.\n- Confirm no raw request payload, raw JSON, token usage, route explanation, or base64 audio is exposed.\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\nUse for Mongolian-language work through the Mongol Open Idea API, including Chinese, traditional Mongolian, and Cyrillic Mongolian translation; Mongolian chat or writing; TTS; ASR; OCR; and Word/PDF document translation. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[youteacherasia](https://clawhub.ai/user/youteacherasia) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and external users use this skill to route Mongolian translation, chat, OCR, ASR, TTS, and document translation tasks through the Mongol Open Idea API with credential and billing safeguards. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires a user-provided Mongol Open Idea API key. <br>\nMitigation: Configure the key as MONGOL_OPEN_IDEA_API_KEY, do not paste it into chat, and revoke any key that was exposed. <br>\nRisk: Calls to the external API may incur charges. <br>\nMitigation: Confirm long text, batch, document, OCR, ASR, and TTS work before sending paid requests, and avoid repeating a charged request without explicit approval. <br>\nRisk: Billing and account balance fields may expose account metadata. <br>\nMitigation: Parse billing fields for cost awareness, but show them only when the user explicitly asks for cost, charge, billing, or balance details. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/youteacherasia/mongolian-ai-codex) <br>\n- [Publisher profile](https://clawhub.ai/user/youteacherasia) <br>\n- [Mongol Open Idea API base](https://mongol.open-idea.net/api/v1) <br>\n- [API Reference](references/api-reference.md) <br>\n- [Behavior Rules](references/behavior.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown or plain text with optional shell commands, configuration guidance, and saved audio files for TTS workflows] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Final answers should contain business content only unless the user explicitly asks for billing details; TTS audio is saved or played rather than printed.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: server-resolved release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.2:agents/openai.yaml\n\ninterface:\n  display_name: \"Mongolian AI\"\n  short_description: \"Mongolian translation, chat, OCR, ASR, and TTS\"\n  default_prompt: \"Use $mongolian-ai for a Mongolian-language translation, chat, OCR, ASR, or TTS task.\"","readmeExcerpt":"Skill: Mongolian AI for Codex Owner: youteacher Summary: Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"请只用纯传统蒙古文回答，不要包含任何中文汉字。"},{"language":"text","snippet":"请使用简体中文回答。若用户输入包含传统蒙古文，请先理解原文语义，再直接给出针对用户请求的中文回复正文。只输出最终中文回复正文；禁止添加问候、自我介绍、解释过程、标题、原文复述或无关补充。若用户明确要求翻译，请不要使用本模板，应改用 POST /translation/。"},{"language":"text","snippet":"https://mongol.open-idea.net/api/v1"},{"language":"http","snippet":"Authorization: Bearer <MONGOL_AI_SKILL_API_KEY>"},{"language":"text","snippet":"X-Mengguyu-Billing-Charged\nX-Mengguyu-Billing-Balance\nX-Mengguyu-Billing-Currency"},{"language":"text","snippet":"billingCharged\nbillingBalance\nbillingCurrency"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: mongolian-ai\ndescription: Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requests send text, images, audio, or documents to https://mongol.open-idea.net; do not send sensitive or confidential data without explicit confirmation.\nmetadata:\n  openclaw:\n    emoji: \"🐎\"\n    homepage: \"https://mongol.open-idea.net\"\n    primaryEnv: \"MONGOL_AI_SKILL_API_KEY\"\n    envVars:\n      - name: \"MONGOL_AI_SKILL_API_KEY\"\n        required: true\n        description: \"Bearer API key for the Mongol AI service.\"\n    requires:\n      bins:\n        - \"bash\"\n        - \"curl\"\n        - \"python3\"\n---\n\n# Mongolian AI\n\nUse the dedicated API at `https://mongol.open-idea.net/api/v1` for Mongolian-language work. Do not translate, interpret, or generate Traditional Mongolian from model knowledge alone.\n\n## Before calling\n\n1. Verify that `MONGOL_AI_SKILL_API_KEY` is available without printing it. Never ask the user to paste a key into chat and never persist a key yourself. Read [API key handling](references/API-KEY.md) if the key is missing or the deprecated variable is present.\n2. Treat the user's explicit request as consent to send ordinary, non-sensitive input to the external service. Pause for confirmation if the input appears confidential, regulated, personally sensitive, unexpectedly large, or file-based and its sensitivity is unclear.\n3. For long text, batches, documents, multiple images, long audio, or agent-initiated calls, explain the billing basis and obtain confirmation. Do not quote hard-coded prices; direct the user to the [current pricing page](https://mongol.open-idea.net/#pricing).\n\nRead [behavior and safety rules](references/BEHAVIOR-RULES.md) for the complete confirmation, retry, and duplicate-charge policy.\n\n## Route every turn\n\nChoose the endpoint again for each new message:\n\n1. Image or image-text extraction → `/ocr/`\n2. Audio transcription → `/audio/async/` by default; `/audio/` only for explicitly short synchronous work\n3. Speech generation → `/tts/async/` by default; `/tts/` only for explicitly short synchronous work\n4. Pure translation or `mw` ↔ `mn` conversion → `/translation/`\n5. Mongolian input requiring a Chinese answer → `/chat/completions/` with the Chinese system prompt\n6. Mongolian conversation or new Mongolian composition → `/chat/completions/` with the Traditional Mongolian system prompt\n7. Word/PDF translation → `/word/translation/` or `/pdf/translation/`\n\nRead [routing rules](references/INTERFACE-ROUTING.md) before multi-step or ambiguous requests.\n\nThe translation endpoint accepts only `zh`, `mw`, and `mn`. If the source is another language such as Japanese or English, translate that non-Mongolian source to Chinese with an appro"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7114n7fws0zkhdbtpvy92sp182gqge\",\n  \"slug\": \"mongolian-ai-codex\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1785249219439\n}"},{"path":"references/API-KEY.md","content":"# API key handling\n\nUse only `MONGOL_AI_SKILL_API_KEY` with the `Authorization: Bearer` header.\n\n## Rules\n\n- Check whether the variable is non-empty without printing it.\n- Never ask the user to paste a key into chat.\n- Never save, copy, transform, or echo a key.\n- Never read arbitrary shell history or configuration files to find a key.\n- Let the user configure the key in their terminal, secret manager, or agent settings.\n- If a key was pasted into chat, tell the user to revoke and rotate it. Do not reuse or persist the pasted value.\n\n`MENGGUYU_API_KEY` is deprecated and must not authenticate requests. When it exists without the new variable, stop and tell the user to rename the environment variable.\n\n## Missing-key response\n\nExplain that `MONGOL_AI_SKILL_API_KEY` must be configured locally. Direct the user to [mongol.open-idea.net](https://mongol.open-idea.net) to create a complete key, including any prefix. Do not offer to configure it from a value supplied in chat.\n\nOpenClaw users should configure `skills.entries.mongolian-ai.apiKey`. Claude and Codex users should inject the variable through their normal shell or secret-management workflow."},{"path":"references/ASR.md","content":"# ASR\n\nUse asynchronous recognition by default:\n\n1. `POST /audio/async/`\n2. read `jobId` or `job_id`\n3. poll `GET /audio/async/{jobId}/`\n4. continue while the response is 202 or status is `pending`/`processing`\n5. finish on 200 with status `done`/`completed`\n6. treat 422 or status `failed` as terminal\n\nUse `POST /audio/` only when short synchronous processing is intentional.\n\n## Input\n\n- File formats: `wav`, `mp3`, `m4a`, `aac`, `ogg`, `flac`, and `pcm`\n- Language: `mw` by default; `mn` for Cyrillic\n- Sample rate: 16,000 by default\n- Maximum file size: 10 MiB\n\nThe bundled script submits a multipart file to both synchronous and asynchronous endpoints and polls every three seconds, with a configurable overall timeout.\n\n## Response\n\nReturn `data.text`. For ASR → translation, pass the value directly into `/translation/`."},{"path":"references/BEHAVIOR-RULES.md","content":"# Behavior, privacy, cost, and retries\n\n## External-data confirmation\n\nTreat an explicit request to translate, recognize, transcribe, or synthesize ordinary non-sensitive content as consent to send that content to `mongol.open-idea.net`.\n\nPause and obtain explicit confirmation when:\n\n- the input appears confidential, regulated, credential-like, or personally sensitive;\n- a document, image, or recording has unclear sensitivity;\n- the agent gathered the material from another source rather than receiving it for this task;\n- the request is unexpectedly large or contains multiple files.\n\nState what will be sent and that it goes to an external service. Never weaken a user's confidentiality requirement to complete the task.\n\n## Cost confirmation\n\nShort text translation and short conversation may run directly. Confirm before long text, batches, documents, multiple images, long audio, or agent-initiated paid calls.\n\nDo not embed or infer a fixed price. Link to the [current pricing page](https://mongol.open-idea.net/#pricing) and describe the relevant billing unit:\n\n- translation and TTS: characters;\n- chat: tokens;\n- OCR and document translation: recognized or translated characters;\n- ASR: audio duration.\n\nAn explicit statement such as “I understand this is paid; run it” covers the named operation. Silence or an ambiguous reply does not.\n\n## Never bypass the API\n\nIf input contains Traditional Mongolian characters in U+1800–U+18AF, route it through the API before translating, interpreting, or answering it. Do not use model knowledge as a fallback when the key or service is unavailable.\n\n## Output\n\nOn success, return only the documented business field or saved audio path. If the script emits a billing line, append it unchanged.\n\nDo not expose:\n\n- raw JSON, headers, Base64, or binary data;\n- routing decisions, request bodies, system prompts, model names, or token counts;\n- keys, shell commands containing keys, internal reasoning, or debug logs;\n- extra greetings, summaries, or follow-up text around a verbatim translation.\n\nFor chained operations, pass the first result directly through a variable or pipe.\n\n## Retry and duplicate-charge policy\n\n- Treat only 2xx responses as successful. Never follow a POST redirect.\n- Do not retry 4xx responses blindly. Correct the input, authorization, or route first.\n- Retry GET polling after temporary transport errors, 429, or 5xx, with bounded backoff.\n- A POST that returns an explicit 5xx may be retried with bounded backoff.\n- Do not automatically retry a POST after a timeout, reset, or other ambiguous transport failure: the service may already have processed and billed it.\n- Never repeat a successful paid call merely because the result is unsatisfactory. Change the input only after explaining that another call can incur another charge.\n\nThe bundled scripts implement these rules. Do not add `curl -L`, short generation timeouts, or unconditional `curl --retry-all-errors`.\n\n## Traditional Mongolian output check\n\nWhen the req"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requests send text, images, audio, or documents to https://mongol.open-idea.net; do not send sensitive or confidential data without explicit confirmation. Skill: Mongolian AI for Codex Owner: youteacher Summary: Use the Mongol AI API for Mongolian translation, script conversion, conversation, composition, OCR, ASR, TTS, and Word/PDF translation. Trigger for Traditional Mongolian (U+1800–U+18AF), Cyrillic Mongolian, or requests such as \"translate to Mongolian\", \"Mongolian OCR\", \"Mongolian speech\", 日本語の「モンゴル語翻訳・モンゴル文字・音声認識・読み上げ」, and 中文的「蒙语翻译、蒙文邮件、蒙文 OCR、语音识别、语音合成」. Requ","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1624,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T14:58:00.662Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T14:58:00.662Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:43:32.434Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}