← GLC-TTS docs · Markdown · All payloads · Home

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
}