Developers

Transcrib in ChatGPT and Claude

The service already speaks MCP over streamable HTTP with four tools and an OAuth 2.1 authorisation that never sees a password. The plugin packages for the two directories are written and live in the repository, but they have not been submitted yet, and the public hostname the reviewer needs is still being brought up. This page says exactly what works, what does not, and what you can do with it today.

Updated 2026-10-24 · Author: Mark Vesyoly · 13 minutes

Works today

The MCP server, OAuth 2.1 with PKCE, the four tools, the challenge route for the domain check. All of it was called live on 24 October 2026 — the transcript of the run is in the repository.

Ready, not submitted

The OpenAI plugin package and the Anthropic plugin package pass the format the documentation asks for. Nobody has sent them to review yet, and neither listing exists.

The blocker

The public host api.transcrib.si does not resolve yet. A directory reviewer cannot connect a server that has no address, so this is the first thing that has to be fixed.

Three ways in, one service

The same engine sits behind three doors. They differ in who has to write code and in what the client can do with the result.

MCP, GPT Actions and the REST API compared
Path What it is Who writes the code Where it stands on 24 October 2026
MCP An open protocol over HTTP. The client sees a list of tools with JSON schemas and calls them itself. The service never receives a prompt, only a tool call. Nobody. The client already knows how to speak MCP. Live and verified: the server answers initialize, tools/list and the tool calls.
GPT Actions The old OpenAPI format, where a custom GPT calls a REST endpoint described by a schema. You: an OpenAPI description of one endpoint. Not the way forward. OpenAI is retiring custom GPTs — the standard date is 11 December 2026 for every plan, and 11 February 2027 only for an affected Enterprise workspace with an approved deferral — and it states that GPT custom actions do not carry over to plugins, so a new service should not plan around this format.
REST API Plain HTTP endpoints under /v1: upload, list, read, export. You, in any language. Live. Same engine, same limits, same prices as the app.

Sources for the column on the right: the OpenAI plugin documentation at developers.openai.com/plugins (read on 24 October 2026) and the OpenAI help centre article 20001519, “Custom GPT retirement and migration FAQ”, read through the help centre search result on 24 October 2026: “Custom GPTs are scheduled to retire on Dec 11, 2026. For affected Enterprise workspaces with an approved deferral, the retirement date is Feb 11, 2027.” The article itself sits behind a Cloudflare check and could not be opened directly. The same dates appear in the ChatGPT release notes of 11 September 2026.

How to connect it right now

If you run any MCP client — Claude Desktop, Cursor, Codex, or your own script — this is the whole procedure. It takes four steps and about ten minutes.

  1. Create an account

    Sign up at transcrib.si/signup.html. MCP access is part of the Pro plan: $10 a month billed yearly ($120 a year) or $20 a month paid monthly, with a fair use of 1,500 minutes of audio a month. The pricing page has the full table.

  2. Point the client at the endpoint

    Every MCP client reads a small JSON file. For the OpenAI and Anthropic plugin packages the file is mcp.json; for a local client it is usually .mcp.json or a settings entry. The content is the same:

    {
      "mcpServers": {
        "transcrib": {
          "type": "streamable-http",
          "url": "https://api.transcrib.si/mcp"
        }
      }
    }
  3. Let the client ask for permission

    The server uses OAuth 2.1 with PKCE. The client registers itself through POST /oauth/register, sends you to /oauth/authorize, and exchanges the code at /oauth/token. You approve the request in a browser; the client receives a token that is bound to your account and never sees your password.

  4. Ask the assistant for a transcript

    Ask for a summary of a meeting recording, or attach an audio file. The assistant calls the tool, and the tool works on your own transcripts and your own uploads.

Or call it yourself

Prefer to call the endpoint yourself?

The same four tools are available over plain HTTP with an API key. The API page has the request bodies, the error codes and the export formats.

What the assistant can do

Four tools, and only four. The names are exact — the assistant matches on them, so a rename would break every prompt.

The four tools of the MCP server
Tool What it does Key arguments
transcribe_audio Transcribes an audio file and returns the text with timed segments. Diarization is optional and labels the speakers. audio_url or audio_base64, filename, language (ru or en), diarize
summarize_transcript Summarises a transcript and lists the key points. It works on a transcript id or on the text itself. transcript_id or text
extract_actions Pulls the action items out of a transcript, with the owner and the deadline when they are spoken. transcript_id or text
list_transcripts Lists the transcripts of the account the token belongs to, with their status and their duration. limit

The table is copied from the live answer of tools/list on 24 October 2026, not from an intention. The MCP reference has the full schemas.

Four requests, four real answers

What a person types, what the assistant sends to the server, and what the server sends back. Every request and every answer below comes from a live run of the server on 24 October 2026. The script that made the run lives in the repository as apps/api/tools/mcp_examples_check.py; it prints the whole exchange as it goes, so any of it can be repeated.

Example 1 · transcribe_audio

“Transcribe this recording and tell me who spoke.”

The assistant calls
{"jsonrpc":"2.0","id":1,"method":"tools/call",
  "params":{"name":"transcribe_audio","arguments":{
    "audio_url":"https://transcrib.si/assets/demo/sample.mp3",
    "filename":"sample.mp3",
    "language":"en",
    "diarize":true}}}
The answer is the text, split into timed segments
0.0 – 8.4 Speaker 1: Good morning. Let us go through the plan for the week.
8.4 – 16.2 Speaker 1: Maya, please finish the pricing page before Thursday.
16.2 – 24.9 Speaker 2: I will send the customer list to the sales team tomorrow.
24.9 – 33.5 Speaker 2: The main risk is the migration window, so we need a test run by Friday.

Those four segments are a real payload from the demo account — the same fields the tool returns, read back through GET /v1/transcripts/1. In the local check the call itself stopped at the provider with the message ASR отклонил ключ — проверьте POTOK_ASR_KEY: the engine key lives in the server environment and is not part of a local check. The other three answers below were produced by the local server from start to finish.

Example 2 · summarize_transcript

“Summarise my standup recording.”

The assistant calls
{"jsonrpc":"2.0","id":2,"method":"tools/call",
  "params":{"name":"summarize_transcript",
            "arguments":{"transcript_id":1}}}
The answer is a summary and the key points
Maya, please finish the pricing page before Thursday. I will send the customer list to the sales team tomorrow. The main risk is the migration window, so we need a test run by Friday.
  • The main risk is the migration window, so we need a test run by Friday.
  • Maya, please finish the pricing page before Thursday.
  • I will send the customer list to the sales team tomorrow.
  • Let us go through the plan for the week.
  • Good morning.

The id is sent as a number, the way an assistant sends it; the server takes a number and a string equally. The same tool takes the transcript text itself when there is no id yet.

Example 3 · extract_actions

“What are the action items, who owns them and when are they due?”

The assistant sends the text it has
{"jsonrpc":"2.0","id":3,"method":"tools/call",
  "params":{"name":"extract_actions","arguments":{
    "text":"Standup, Monday. Maya should finish the pricing page by Thursday. The migration window is the main risk, so we need a test run by Friday. Igor needs to send the customer list to the sales team tomorrow. Please create the rollout checklist before the release."}}}
The answer is the list of tasks, with the owner and the date when they were said out loud
- Maya should finish the pricing page by Thursday. (owner: Maya) (due: by Thursday) - Igor needs to send the customer list to the sales team tomorrow. (owner: Igor) (due: tomorrow) - Please create the rollout checklist before the release.

The third task has no owner and no date because nobody said them out loud: the tool reports what the text contains and does not invent the rest. It works the same way on a transcript_id — the owner and the date are only there when the recording contains them.

Example 4 · list_transcripts

“What recordings do I have?”

The assistant calls
{"jsonrpc":"2.0","id":4,"method":"tools/call",
  "params":{"name":"list_transcripts",
            "arguments":{"limit":5}}}
The answer is the list of the account, and nothing else
- demo-interview-ru.mp3 (done, 36.7s) - demo-standup.mp3 (done, 33.5s)

The token is bound to one account, and this is everything it can see. The same answer in structuredContent carries the id, the status and the duration of every recording.

What is still missing

Three things stand between the current state and a listing in a directory. None of them is a guess; each one has a concrete owner.

  1. The public host has no address yet

    On 24 October 2026 api.transcrib.si returned no DNS record, and the challenge file on the site answered 404. The route itself works — the local run answered 200 with the token — so the fix is a host record and one environment variable, OPENAI_CHALLENGE_TOKEN, on the server.

  2. The packages have not been sent to review

    Both packages sit in the repository, in the format the documentation asks for. Nobody has uploaded them yet. OpenAI wants five positive and three negative test cases, a walkthrough video and the reviewer credentials; Anthropic wants the plugin folder in a public GitHub repository and a validation run through its portal.

  3. The reviewer needs a test account

    Both directories ask for a dedicated account with sample data and no extra login steps. It has to be seeded with a demo password before the submission, and it must keep working after it.

Until the first two are done, no directory listing exists for this service. The page will say so as long as that is true.

Questions people ask

Can I use Transcrib in ChatGPT right now?

Not through a listing in the plugin directory: no package of ours has been submitted yet, so there is nothing to search for and nothing to install from there. Two other routes do work today. If your ChatGPT workspace allows it, you can add our MCP server as a custom connector in developer mode and drive it yourself. And any MCP client of your own — a script, an agent framework, a desktop app — can speak to the endpoint as described above, once the public host is up.

And in Claude?

The same answer. The Anthropic plugin package is written and in the repository, but it has not been submitted, so the Anthropic directory has no listing for it. The plugin folder can be loaded locally into Claude Code or Claude Desktop as a development plugin, which is how the package gets tested before any submission.

Is the old GPT Actions format still worth using?

No, not for a new service. OpenAI is retiring custom GPTs: the standard retirement date is 11 December 2026 for every plan, and the only exception is an affected Enterprise workspace with an approved deferral, where it is 11 February 2027. OpenAI also states that GPT custom actions do not carry over to plugins. A listing built on Actions would have no future. The MCP path is the one both directories now support.

Which account does the assistant see?

Only yours. The OAuth token is bound to one account, and list_transcripts returns the transcripts of that account and nothing else. The server does not read the conversation of the assistant and does not call other services on your behalf.

Do I need an API key for the MCP path?

No. The authorisation is OAuth 2.1 with PKCE, so the client asks for permission in a browser and never receives a password. A key still works for a server-to-server call over the REST API, and it is the right choice when no human is in the loop.

What does the service do with my audio?

The files go to the transcription engine and nowhere else. Exports come in six formats — TXT, Markdown, SRT, VTT, CSV and DOCX. The security page describes the retention and the deletion rules in full.

Try it now

The service works today. The listing does not exist yet.

Upload a recording and read the transcript with timecodes and speaker labels, or look at what a month of audio costs before you decide. The plugin packages, the MCP server, the OAuth routes and the live check script are all in the repository — if you would rather look than wait, the code is the shortest honest description of the state of this page.

The MCP reference and the REST API documentation live at mcp.html and api.html. Questions and corrections: support@transcrib.si.