GLC-TTS — canonical payload contracts
Hungarian text-to-speech (GLC-TTS, CPU, zero-shot voice clone). Async: tts_list_voices → tts_job_start → tts_job_status → tts_job_result. Output WAV via staging URL. ref_text via platform Whisper when transcribe_ref=true.
Service id: tts
Docs: https://mcp.glc-rag.hu/guide/tts
Markdown docs: https://mcp.glc-rag.hu/guide/tts.md
MCP resource: docs://tts/payload
POST https://mcp.glc-rag.hu/mcp. Values below are type slots from the live input schema (e.g. <string, required>), not example data. Fill them from the user task.
RPC result wrapper: result.structuredContent is the object in Output schema. result.isError mirrors structuredContent.is_error.
tts_list_languages
List supported GLC-TTS languages (hu, en).
Required arguments: (none)
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "tts_list_languages",
"arguments": {}
}
}
Input schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"default": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"languages"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}
tts_list_voices
List preset voices (id, language, label). For presets call tts_job_start with voice_id only — do not pass ref_audio_url for listed presets.
Required arguments: (none)
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "tts_list_voices",
"arguments": {
"language": "<string, optional>"
}
}
}
Input schema
{
"type": "object",
"properties": {
"language": {
"type": "string",
"description": "Optional filter, e.g. hu"
}
},
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"voices": {
"type": "array",
"items": {
"type": "object"
}
},
"count": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"voices",
"count"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}
tts_job_start
Start async Hungarian TTS. Returns {job_id} — not the WAV. Provide gen_text + (voice_id OR ref_audio_url with ref_text OR ref_audio_url with transcribe_ref=true). Optional speed 0.3–2.0 (default 1.0; lower=slower). Then tts_job_status → tts_job_result.
Required arguments: gen_text
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "tts_job_start",
"arguments": {
"gen_text": "<string, required>",
"voice_id": "<string, optional>",
"ref_audio_url": "<string, optional>",
"ref_text": "<string, optional>",
"transcribe_ref": "<boolean, optional, default False>",
"language": "<string, optional, default 'hu'>",
"speed": "<number, optional, default 1.0, minimum 0.3, maximum 2.0>"
}
}
}
Input schema
{
"type": "object",
"properties": {
"gen_text": {
"type": "string",
"description": "Text to speak (match voice language: hu or en). Not the reference transcript. Long text (up to 100000 chars) is split into sentences server-side and returned as one WAV."
},
"voice_id": {
"type": "string",
"description": "Preset from tts_list_voices (e.g. pattila, jack)."
},
"ref_audio_url": {
"type": "string",
"description": "Public https URL of reference speech (5–15s). Large/local: POST /staging/upload first."
},
"ref_text": {
"type": "string",
"description": "Exact transcript of ref_audio (not gen_text). Omit only if transcribe_ref=true or preset default."
},
"transcribe_ref": {
"type": "boolean",
"description": "If true, platform Whisper (mcp.glc-rag.hu) produces ref_text from ref_audio_url. Default false unless preset says otherwise.",
"default": false
},
"language": {
"type": "string",
"description": "hu or en — selects the TTS checkpoint (hu fine-tune vs en base). If omitted with voice_id, taken from the preset (pattila→hu, jack→en).",
"default": "hu"
},
"speed": {
"type": "number",
"description": "Speech rate. Default 1.0. 0.3 = slowest, 1.0 = default/normal, higher = faster (up to 2.0).",
"default": 1.0,
"minimum": 0.3,
"maximum": 2.0
}
},
"required": [
"gen_text"
],
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Hex job id from tts_job_start"
},
"status": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"job_id"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}
tts_job_status
Poll TTS job. status: queued|running|completed|failed. Backoff 15–60s.
Required arguments: job_id
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "tts_job_status",
"arguments": {
"job_id": "<string, required>"
}
}
}
Input schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "From tts_job_start"
}
},
"required": [
"job_id"
],
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Hex job id from tts_job_start"
},
"status": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"job_id",
"status"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}
tts_job_result
Fetch completed TTS result: {url, bytes, sample_rate, …}. url is staging public WAV. Not ready while queued/running.
Required arguments: job_id
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "tts_job_result",
"arguments": {
"job_id": "<string, required>"
}
}
}
Input schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "From tts_job_start"
}
},
"required": [
"job_id"
],
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Hex job id from tts_job_start"
},
"status": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"job_id",
"status"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}