MCP server

Give your AI assistant a transcription tool

Dokitscript runs a remote Model Context Protocol server. Connect it once and your assistant can transcribe a video, pull the text back, and search everything you have transcribed before, without you leaving the conversation.

Set it up See the tools
Overview

What this actually gives you

MCP is the open protocol AI clients use to talk to outside tools. Our server lives at https://dokitscript.com/mcp. Once your client knows about it, you can write "transcribe this TikTok and pull out the three claims worth checking" and the assistant does the whole chain itself: it calls the transcription tool, waits for the text, then works on it.

Five tools, one key

Submit a URL for transcription, fetch a transcript, list your history, search across it, and ask a question about any one transcript. Every tool is scoped to your own account and nothing else: the key identifies you, and a transcript that belongs to another account is simply not found.

Same key as the API. If you already use the Dokitscript API, your existing key works here unchanged. Nothing new to generate, nothing extra to pay for.
Access

What you need before you start

Programmatic access opens with an API key, and you can create one two ways: on a paid plan (Starter, Pro or Business), or with a balance of API tokens bought as a one-off, with no subscription at all.

What you doWhat it costs
Reading tools
get_transcript, list_transcripts, search_transcripts
Nothing beyond the daily request limit. A valid key is all it takes.
Transcribing
transcribe_url
Billed to your API tokens: 1 token per started 15 minutes, so a 40-minute video costs 3. On Business, programmatic use is included in the subscription as fair use, with no tokens deducted.
Asking a question
ask_question
Counts against your monthly AI allowance and needs a Pro or Business plan, exactly like in the web app.
Length limit per video. When usage is billed in API tokens the cap is 45 minutes per video or file. On Business it goes up to 5 hours. See pricing for plans and token packs.
Step 1

Get your key

  1. Sign in, then open the API panel in your account.
  2. Buy a pack of API tokens there if you are not on a paid plan yet.
  3. Create a key and give it a label you will recognise later, such as the machine it will live on.
  4. Copy the secret immediately. It is shown once, at creation, and never again. If you lose it, revoke the key and make a new one.
Treat it like a password. A key spends your transcription balance. Keep it out of shared repositories, screenshots and chat messages. You can hold up to 10 active keys and revoke any of them instantly from the same panel, which is the fastest fix if one leaks.
Step 2

Add the server to your client

Pick your client below, paste the block into the file it reads, replace dks_live_YOUR_KEY with your own key, and restart the app. The server address is always the same: https://dokitscript.com/mcp.

Claude Code .mcp.json

The quickest route is the command line, run from the folder you work in:

claude mcp add --transport http dokitscript https://dokitscript.com/mcp \
  --header "Authorization: Bearer dks_live_YOUR_KEY"
Or edit the file by hand

Create .mcp.json at the root of your project, so the whole team shares the same server definition:

{
  "mcpServers": {
    "dokitscript": {
      "type": "http",
      "url": "https://dokitscript.com/mcp",
      "headers": {
        "Authorization": "Bearer dks_live_YOUR_KEY"
      }
    }
  }
}

Check it with /mcp inside a session: the server should be listed as connected, with its five tools.

Cursor .cursor/mcp.json

Create .cursor/mcp.json in your project for a single project, or ~/.cursor/mcp.json to make the server available everywhere.

{
  "mcpServers": {
    "dokitscript": {
      "url": "https://dokitscript.com/mcp",
      "headers": {
        "Authorization": "Bearer dks_live_YOUR_KEY"
      }
    }
  }
}

Open Settings, then MCP to confirm the server shows up. If the toggle is off, switch it on there.

VS Code .vscode/mcp.json

VS Code uses servers rather than mcpServers, and it can prompt you for the key instead of storing it in the file, which is what you want in a repository that gets committed.

{
  "inputs": [
    {
      "type": "promptString",
      "id": "dokitscript-key",
      "description": "Dokitscript API key",
      "password": true
    }
  ],
  "servers": {
    "dokitscript": {
      "type": "http",
      "url": "https://dokitscript.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:dokitscript-key}"
      }
    }
  }
}

VS Code asks for the key the first time the server starts and remembers it after that. The tools then appear in agent mode, under the tools picker.

Claude Desktop claude_desktop_config.json

Claude Desktop has two doors, and neither takes a Bearer key on its own. Its Connectors panel does accept the address of a remote server, but it signs in over OAuth and offers no field for a fixed key. The configuration file, claude_desktop_config.json, starts local commands rather than calling a URL. So the route that works today is a small relay running on your machine: Claude Desktop launches it as a command, and it forwards every exchange to https://dokitscript.com/mcp over HTTPS, carrying your key in the header.

The relay is not ours. mcp-remote is an open-source package under the MIT licence, published on npm by its own maintainers; npx fetches it the first time and keeps it in cache. Its authors present it as a temporary bridge for clients that cannot yet reach an authenticated remote server by themselves, so the day Claude Desktop can, you delete the block and point it at our address. The three other clients on this page install nothing.
Before you start

Node.js 18 or later, which is what brings npx along. Check in a terminal:

node -v

On Windows, npm also has to be installed globally, otherwise npx refuses to start. One command settles it: npm install -g npm.

Where the file lives
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json, on the community builds; the official app covers macOS and Windows.

Quickest way there: Settings, then Developer, then Edit Config. That opens the file, and creates it if it does not exist yet.

The block to paste
{
  "mcpServers": {
    "dokitscript": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://dokitscript.com/mcp",
        "--transport",
        "http-only",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer dks_live_YOUR_KEY"
      }
    }
  }
}

If the file already holds an mcpServers object, add "dokitscript" inside it instead of replacing the whole file.

Two details that are not decoration

The key travels through env. On Windows, Claude Desktop passes args to npx without protecting the spaces. Written inline, "Authorization: Bearer dks_live_…" is cut at the space: the relay then reads an empty header, the rest of the key is left dangling as a stray argument, and the server answers 401 while the key itself is perfectly valid. Keeping the space inside the variable puts it out of reach of whatever does the splitting. The argument names the header before the colon, and the variable carries Bearer, a space, then your key.

--transport http-only removes a guess. Our server answers POST and returns 405 to anything else, on purpose. Left to choose the transport by itself, the relay treats a 405 as its cue to fall back to a server-sent-event mode that we deliberately do not implement, a dead end that has nothing to do with your key. Naming the transport takes that branch off the table.

Check that it worked
  1. Quit the app completely, not just its window: Cmd + Q on macOS, quit from the system tray on Windows. The configuration is only read at startup.
  2. Reopen it, then open the Connectors list from the control at the bottom left of the message box. dokitscript should be sitting there with its five tools.
  3. Ask for something ordinary, such as list my last three transcripts. It should reach for list_transcripts on its own, without you naming the tool.
When it does not connect

The relay stands between you and us, so the client reports a server that will not start and never shows our HTTP status. Two commands tell you which half is at fault. This one talks to us with no relay involved, and a good key answers with the five tool definitions:

curl -X POST https://dokitscript.com/mcp \
  -H "Authorization: Bearer dks_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

And this one runs the relay by hand, where its real error is printed instead of swallowed. Spaces are harmless here, because a terminal is not what was splitting them:

npx -y mcp-remote https://dokitscript.com/mcp \
  --transport http-only --debug \
  --header "Authorization: Bearer dks_live_YOUR_KEY"
What you seeWhat to do
Nothing in the list, and no error anywhere Either the file is not valid JSON, in which case the app ignores it in silence, or it was never fully quit. Run the file through a JSON validator, then quit and reopen.
npx not found, or ENOENT Node is missing, or missing from the PATH the app inherits. Install Node 18+, add npm install -g npm on Windows, then log out and back in so the app picks up the new PATH.
Connects, then 401 on the first call The key is wrong, truncated or revoked. The curl above settles it in a second: if curl works and the relay does not, the key was cut in transit, so check that AUTH_HEADER reads Bearer then a space then the key.
429 API_DAILY_CAP_EXCEEDED The key hit its daily ceiling. Every call counts, tool listings included, and an assistant caught in a loop gets there fast. Retry-After gives the wait in seconds and the count resets at midnight, Europe/Paris time.
503 Public API is unavailable Programmatic access is switched off on our side. Nothing to change locally. The status page says when it is back.
An old key keeps coming back The relay caches connection data in ~/.mcp-auth. Delete that folder, then restart the client.

The relay writes its own errors to the client log: ~/Library/Logs/Claude/mcp-server-dokitscript.log on macOS, %APPDATA%\Claude\logs\mcp-server-dokitscript.log on Windows. For the codes the server itself returns, see the table further down.

Any other client JSON-RPC 2.0 over HTTP

Any client that speaks MCP over HTTP and lets you set a header will work. The server takes POST requests carrying JSON-RPC 2.0 and answers as application/json. There are no sessions and no server-initiated stream, so GET and DELETE return 405 by design. To check your key by hand:

curl -X POST https://dokitscript.com/mcp \
  -H "Authorization: Bearer dks_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

A working key returns the five tool definitions. Calling one looks like this:

curl -X POST https://dokitscript.com/mcp \
  -H "Authorization: Bearer dks_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"list_transcripts","arguments":{"limit":5}}}'
Reference

The five tools

Your assistant picks these itself, from the descriptions below. You never have to name a tool: asking in plain language is enough.

ToolWhat it doesArguments
transcribe_url Submits a video or audio URL from TikTok, Instagram, YouTube, Facebook, X or LinkedIn. Returns an id straight away and runs the transcription in the background. url (required) · language, a hint or auto · format: timestamps, plain, srt or vtt
get_transcript Fetches a transcript by id, either the one transcribe_url just returned or one from your history. While a transcription is still running it reports progress instead of text. transcriptId (required) · format
list_transcripts Lists the transcriptions on your account, newest first, with a short text preview for each. page, from 1 · limit, up to 50 · platform filter
search_transcripts Full-text search across everything you have transcribed. Useful for "what did I say about pricing in that interview". query (required, up to 200 characters) · page · limit
ask_question Asks a free-form question about one transcript and comes back with a researched answer and its sources. transcriptId (required) · question (required, up to 500 characters)
Transcription is asynchronous. transcribe_url hands back an id immediately; the assistant then calls get_transcript with that same id until the text is ready. One id follows the whole job, so there is nothing for you to track by hand.
Limits

Request limits

An AI agent that gets stuck in a loop is a normal failure mode, not necessarily an attack, so the server caps the number of requests a single key can make in a day.

LimitValue
Requests per key1,000 per day by default, counting every call including tool listings. Resets at midnight, Europe/Paris time.
Active keysUp to 10 per account, revocable at any time.
Video length45 minutes per item when billed in API tokens, up to 5 hours on Business.
Search queryUp to 200 characters.
Question lengthUp to 500 characters.
Troubleshooting

When it does not work

What you seeWhat it means
No tools at all in the client The client did not reload the file. Quit it completely and reopen it. Then check the URL is https://dokitscript.com/mcp, with no trailing path.
401 Missing or invalid API key The header must read exactly Authorization: Bearer dks_live_…. A single missing space, a truncated paste or a revoked key all land here.
403 requires a paid plan or API tokens The account behind the key has neither a paid plan nor a token balance. Buy a pack or upgrade from your account. A suspended account also returns 403.
402 API_CREDITS_INSUFFICIENT Not enough API tokens for a video of that length. Remember it is one token per started 15 minutes, so a long file costs several at once.
429 API_DAILY_CAP_EXCEEDED The key hit its daily request limit. The Retry-After header gives the wait in seconds; the counter resets at midnight, Europe/Paris time.
503 Public API is unavailable Programmatic access is temporarily switched off. Nothing to change on your side. Check the status page.
405 on a GET request Expected, not a fault. The server only answers POST and never opens a stream of its own.
"Transcript not found" The id is wrong, or it belongs to another account. Keys only ever see their own account's transcriptions.
"Still processing" Normal on a long video. The assistant should call get_transcript again with the same id shortly after.
Still stuck? Write to [email protected] with the tool name and the exact error text. Never send us your key.
FAQ

Common questions

Do I need a separate key for MCP?

No. The MCP server and the REST API share the same keys, the same access rules and the same balance. One key covers both.

Does Claude Desktop need something installed?

Yes, and it is the only one of the four that does. Claude Desktop cannot yet send a fixed key to a remote server, so it goes through mcp-remote, an open-source relay published on npm by third-party maintainers and fetched by npx on first run. It needs Node.js 18 or later. Claude Code, Cursor and VS Code call our address directly and install nothing.

Can my assistant see transcripts from other accounts?

No. Every tool filters on the account that owns the key, and an id from elsewhere simply comes back as not found.

Does connecting the server cost anything by itself?

No. Listing the tools and reading your own history are free. Only transcribing and asking questions consume anything.

Can I use it on several machines?

Yes. Create one key per machine, up to ten, and revoke a single one if a laptop is lost without disturbing the others.

Which languages does it handle?

The same 90+ languages as the web app. Leave language on auto and it is detected for you.

Available now

Connect it in two minutes

Create a key, paste one block, restart your client. Your assistant gets a transcription tool it can use on its own.