Remote MCP server for sentence-by-sentence alternating bilingual listening audio.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Given two publicly reachable audio URLs (same content in two languages), transcribes both with Whisper and aligns them semantically into sentence pairs with timestamps and a similarity score. Use this when the user already has recordings rather than text. Free tier limits apply (2 runs / 20 min per day anonymous, ≤10 min combined per run).
Public https URL of the first audio file (mp3/m4a/wav, ≤50MB).
Public https URL of the second audio file.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http bilingual-mix https://bilingualmix.com/mcp
Given two publicly reachable audio URLs (same content in two languages), transcribes both with Whisper and aligns them semantically into sentence pairs with timestamps and a similarity score. Use this when the user already has recordings rather than text. Free tier limits apply (2 runs / 20 min per day anonymous, ≤10 min combined per run).
| Argument | Type | Description |
|---|---|---|
| lang_a | string | |
| lang_b | string | |
| audio_a_url* | string | Public https URL of the first audio file (mp3/m4a/wav, ≤50MB). |
| audio_b_url* | string | Public https URL of the second audio file. |
{
"type": "object",
"required": [
"audio_a_url",
"audio_b_url"
],
"properties": {
"lang_a": {
"enum": [
"zh",
"en",
"ja",
"ko",
"es",
"fr",
"de",
"it",
"pt",
"ru"
],
"type": "string",
"default": "zh"
},
"lang_b": {
"enum": [
"zh",
"en",
"ja",
"ko",
"es",
"fr",
"de",
"it",
"pt",
"ru"
],
"type": "string",
"default": "en"
},
"audio_a_url": {
"type": "string",
"description": "Public https URL of the first audio file (mp3/m4a/wav, ≤50MB)."
},
"audio_b_url": {
"type": "string",
"description": "Public https URL of the second audio file."
}
},
"additionalProperties": false
}Turn parallel sentences (language A + language B) into one alternating practice track. Each sentence is spoken by the same neural voices used on bilingualmix.com, then stitched A1→B1→A2→B2 with configurable gaps. Returns a 6-hour download URL (WAV) plus a per-sentence timeline in seconds. Use dry_run=true first to preview the pair list and the cost without spending quota. Free tier: 2 runs / 20 min per day (anonymous, per IP), up to 8 pairs. Signing in doubles it; members get 500 min/month.
| Argument | Type | Description |
|---|---|---|
| text | string | Alternative to pairs: one sentence per line for language A. |
| pairs | array | Sentence pairs. a = first language, b = second language. Leave one side empty to auto-translate (members only). |
| gap_ms | number | Silence between a and b of the same pair, milliseconds. |
| lang_a | string | ISO language of side a. |
| lang_b | string | ISO language of side b. |
| text_b | string | Optional second column, one sentence per line, same line count as text. |
| dry_run | boolean | Preview pairs and estimated cost only. Free, no quota used. |
| pair_gap_ms | number | Silence between consecutive pairs, milliseconds. |
Report sign-in state, plan, minutes used and remaining, and per-run limits. Free, unlimited.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Pricing tiers, minute allowances and per-run limits. Free, unlimited.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Translate a list of lines between Chinese and English, keeping order and line count. Member feature — anonymous and free accounts get an auth prompt. For free usage, pass both sides yourself to create_bilingual_audio instead.
| Argument | Type | Description |
|---|---|---|
| from | string | Source language. |
| lines* | array | Up to 40 lines, one sentence each. |
{
"type": "object",
"required": [
"lines"
],
"properties": {
"from": {
"enum": [
"zh",
"en"
],
"type": "string",
"default": "zh",
"description": "Source language."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 40 lines, one sentence each."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Alternative to pairs: one sentence per line for language A."
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Sentence pairs. a = first language, b = second language. Leave one side empty to auto-translate (members only)."
},
"gap_ms": {
"type": "number",
"default": 550,
"description": "Silence between a and b of the same pair, milliseconds."
},
"lang_a": {
"enum": [
"zh",
"en",
"ja",
"ko",
"es",
"fr",
"de",
"it",
"pt",
"ru"
],
"type": "string",
"default": "zh",
"description": "ISO language of side a."
},
"lang_b": {
"enum": [
"zh",
"en",
"ja",
"ko",
"es",
"fr",
"de",
"it",
"pt",
"ru"
],
"type": "string",
"default": "en",
"description": "ISO language of side b."
},
"text_b": {
"type": "string",
"description": "Optional second column, one sentence per line, same line count as text."
},
"dry_run": {
"type": "boolean",
"default": false,
"description": "Preview pairs and estimated cost only. Free, no quota used."
},
"pair_gap_ms": {
"type": "number",
"default": 750,
"description": "Silence between consecutive pairs, milliseconds."
}
},
"additionalProperties": false
}