Get Transcription Job Status
get_transcription_statusPoll transcription progress and retrieve completed results using the job ID returned by transcribe_audio_url.
Instructions
Poll GhostMinutes for transcription progress and results using job_id returned by transcribe_audio_url.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | job_id returned by transcribe_audio_url |
Implementation Reference
- src/tools/get-status.ts:19-26 (handler)The handler function for get_transcription_status. Calls client.getJobStatus(job_id) and returns the result as both text and structured content.
async ({ job_id }) => { const body = await client.getJobStatus(job_id); return { content: [{ type: 'text', text: JSON.stringify(body, null, 2) }], structuredContent: jsonStructured(body), }; }, ); - src/tools/get-status.ts:8-27 (registration)Registration of the tool 'get_transcription_status' on the MCP server with input schema requiring a job_id string.
server.registerTool( 'get_transcription_status', { title: 'Get Transcription Job Status', description: 'Poll GhostMinutes for transcription progress and results using job_id returned by transcribe_audio_url.', inputSchema: z.object({ job_id: z.string().min(1).describe('job_id returned by transcribe_audio_url'), }), annotations: { readOnlyHint: true, openWorldHint: true }, }, async ({ job_id }) => { const body = await client.getJobStatus(job_id); return { content: [{ type: 'text', text: JSON.stringify(body, null, 2) }], structuredContent: jsonStructured(body), }; }, ); } - src/tools/get-status.ts:14-16 (schema)Input schema for get_transcription_status: requires a single 'job_id' string parameter.
inputSchema: z.object({ job_id: z.string().min(1).describe('job_id returned by transcribe_audio_url'), }), - src/client.ts:94-105 (helper)Helper method on GhostMinutesClient that makes a GET request to /mcp/status/{jobId} to retrieve transcription status.
async getJobStatus(jobId: string): Promise<unknown> { try { const res = await this.http.get(`/mcp/status/${encodeURIComponent(jobId)}`, { headers: this.hasApiKey() ? { Authorization: `Bearer ${this.apiKey}` } : {}, }); return this.ensureOk(res); } catch (e) { this.handleThrown(e); } } - src/json-structured.ts:2-12 (helper)Utility function that coerces arbitrary JSON-compatible values into MCP structuredContent shape.
export function jsonStructured(body: unknown): Record<string, unknown> { try { const cloned: unknown = JSON.parse(JSON.stringify(body)); if (cloned && typeof cloned === 'object' && !Array.isArray(cloned)) { return cloned as Record<string, unknown>; } return { value: cloned }; } catch { return { result: String(body) }; } }