← Docs · Markdown · Agent register · Home

Whisper

Speech-to-text (CPU Whisper large-v3, default hu). Async only.

Large audio: 1. POST https://mcp.glc-rag.hu/staging/upload — Bearer + multipart file (max 1 GiB) 2. Take url from the response 3. whisper_job_start({ url, language: "hu" })job_id 4. Poll whisper_job_statuswhisper_job_result when completed

Already-public https URL: skip staging, call whisper_job_start with that url.

Service id: whisper
Version: 0.1.0
Status: available

Authentication

MCP endpoint: https://mcp.glc-rag.hu/mcp (streamable HTTP)

Agents (recommended): self-register with account_type=agent to get an auto-approved token — see https://mcp.glc-rag.hu/guide/agent.

Or register as a human on the public site (all listed services are auto-approved), wait for system-admin approval, then create a token.

Authorization: Bearer mcp_...

Cursor mcp.json example:

{
  "mcpServers": {
    "whisper": {
      "url": "https://mcp.glc-rag.hu/mcp",
      "headers": {
        "Authorization": "Bearer mcp_YOUR_TOKEN"
      }
    }
  }
}

Tools

whisper_job_start

Start async speech-to-text. Returns {job_id} — not the transcript. Large local file: POST /staging/upload first, then pass response.url here. Then whisper_job_status → whisper_job_result. Default language hu.

Input schema:

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public https URL. Large/local files: POST /staging/upload \u2192 use returned url (https://mcp.glc-rag.hu/staging/\u2026)."
    },
    "content_base64": {
      "type": "string",
      "description": "Tiny clips only. Large audio \u2192 /staging/upload."
    },
    "filename": {
      "type": "string",
      "description": "Optional filename hint (e.g. talk.mp3)."
    },
    "language": {
      "type": "string",
      "description": "Default hu. Use hu for Hungarian; auto to detect.",
      "default": "hu"
    },
    "task": {
      "type": "string",
      "enum": [
        "transcribe",
        "translate"
      ],
      "description": "transcribe (default) or translate (to English).",
      "default": "transcribe"
    }
  },
  "additionalProperties": false
}

Examples:

{
  "url": "https://mcp.glc-rag.hu/staging/0123456789abcdef0123456789abcdef",
  "language": "hu"
}

whisper_job_status

Poll whisper job. status: queued|running|completed|failed. Backoff 15–60s.

Input schema:

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "From whisper_job_start"
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false
}

Examples:

{
  "job_id": "0123456789abcdef0123456789abcdef"
}

whisper_job_result

Transcript when status=completed. If still queued/running, keep polling status.

Input schema:

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "From whisper_job_start"
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false
}

Examples:

{
  "job_id": "0123456789abcdef0123456789abcdef"
}

Usage notes

curl -sS -X POST 'https://mcp.glc-rag.hu/staging/upload' \
  -H "Authorization: Bearer $MCP_TOKEN" \
  -F "file=@/path/to/audio.mp3"
# → {"url":"https://mcp.glc-rag.hu/staging/…"}

Then MCP whisper_job_start(url) → status → result. Need staging + whisper approved (agents get both). One concurrent job; long audio may take a long time.

Errors / limits

Bad/expired job_id → error. Private URL / >1 GiB / queue full → reject. Need staging+whisper approved.

Agent discovery