Who promised the pilot list, and when?
whozit.find_lines(words="pilot list", since="2026-10-01")
Dev Patel, by Thursday. Rosa Alvarez checks who meets in person by Wednesday.
- Team sync · 4:31 · Dev Patel · confirmed
- Team sync · 4:40 · Rosa Alvarez · confirmed
- Team sync · 5:02 · Speaker 4? · unconfirmed, left out
Only an example: the names and meetings are made up, and are not the sample team.
Your agent can't do much with Speaker 3. Give it names.
Whozit turns any meeting recording into Markdown with the right person on every line, and serves it to your AI tools over MCP. Name each person once. Unsure names are marked, so your agent never treats a guess as fact.
Works today with Claude Code, Claude Desktop, Cursor, VS Code and any MCP client that can send a header. Set yours up below.
Quick start
-
Make a token
Sign up or sign in at /account, then create a token there. It is shown once, so copy it straight away. You can revoke it any time.
-
Paste the command
In Claude Code, run this with your token in place of
YOUR_TOKEN. Other clients are in the next section.Claude Codeterminal claude mcp add --transport http whozit https://whozit.io/mcp --header "Authorization: Bearer YOUR_TOKEN" -
Ask about a meeting
Try “List my meetings”, or ask about a person or a topic. Your agent only sees names you have given. Until you name people in Whozit, every voice is just Speaker 1, Speaker 2 and so on.
Try it with the sample team. Load it, name the four people in the first meeting (Fiona Lane, Mark Diaz, Ed Park and Dan Cole; it takes about a minute), then ask Claude “What did Fiona Lane commit to?”
Set up your client
Whozit is a hosted MCP server at https://whozit.io/mcp (streamable HTTP). It works with any MCP client that can send a header.
Claude Code
The command from the quick start. It uses Claude Code's default local scope, which needs no approval. With --scope project the server shows “Pending approval” in claude mcp list until you run claude and approve it.
claude mcp add --transport http whozit https://whozit.io/mcp --header "Authorization: Bearer YOUR_TOKEN"
Claude Desktop
Claude Desktop reaches Whozit through mcp-remote, which needs Node.js. Add this to claude_desktop_config.json, then restart Claude Desktop.
{
"mcpServers": {
"whozit": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://whozit.io/mcp",
"--header", "Authorization: Bearer ${WHOZIT_TOKEN}"],
"env": { "WHOZIT_TOKEN": "YOUR_TOKEN" }
}
}
}
On Windows, Claude Desktop can split the header at the space. If that happens, set WHOZIT_TOKEN to Bearer YOUR_TOKEN and pass Authorization:${WHOZIT_TOKEN} instead.
Cursor and VS Code
Both take a URL and headers. In Cursor, add this to ~/.cursor/mcp.json.
{
"mcpServers": {
"whozit": {
"url": "https://whozit.io/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
In VS Code, add this to .vscode/mcp.json.
{
"servers": {
"whozit": {
"type": "http",
"url": "https://whozit.io/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
Any other MCP client
Point it at this URL, with streamable HTTP and one header.
https://whozit.io/mcp
Authorization: Bearer YOUR_TOKEN
To check a token works, put it in WHOZIT_TOKEN and ask for the tool list. You should get the five tools back as JSON.
curl -s https://whozit.io/mcp -H "Authorization: Bearer $WHOZIT_TOKEN" -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
The five tools
Four tools only read. One writes, and it is marked destructive: clients that follow the hint ask before running it, and you can set yours to always ask for name_voice. The hints are standard MCP tool annotations. Every tool returns JSON.
-
list_meetingsread-onlyYour meetings, newest first: id, title, date, length, status and who is named. Filter by person or by date.
person, since, limit, offset
-
list_peopleread-onlyThe people Whozit knows: how many meetings each is named in, their latest meeting, and whether Whozit has learned their voice.
-
get_meetingread-onlyOne meeting as Markdown. The JSON has
meeting_id,page,pagesand the Markdown in amarkdownfield. A long meeting comes in pages: ask for the next page untilpageequalspages.meeting_id, timestamps, page
-
find_linesread-onlyLines by who said them, by words in them, or both. Each line has its meeting, time and speaker, and says whether that name is confirmed. Each line is an object with
meeting_id,title,date,time,speaker,name_confirmedandtext.person, words, meeting_id, since, limit
-
name_voicedestructivePuts a name on one voice in one meeting, for example “Speaker 4” as “Kai Tanaka”. It replaces the name that voice has there now, even one you confirmed, and marks the new name confirmed. It touches only that meeting.
meeting_id, speaker, name
The Markdown
In get_meeting the Markdown is the markdown field of the JSON answer. It has a header, then every line under the name of the person who said it. The header lists the people named, how many voices are still unnamed, which names nobody has confirmed, and the file it came from. Each line carries the time it starts. This example has made-up names.
---
title: "Team sync"
date: 2026-10-02
duration: "12:40"
participants:
- "Dev Patel"
- "Rosa Alvarez"
- "Sam Ortiz"
unnamed_speakers: 1
unconfirmed_names:
- "Sam Ortiz"
source: "team-sync.m4a"
generated_by: Whozit
---
# Team sync
**Dev Patel** (4:31): I'll send the pilot list by Thursday.
**Rosa Alvarez** (4:40): I'll check who meets in person by Wednesday.
**Speaker 4** (5:02, might be Kai Tanaka): Does the pilot list include the Denver team?
**Sam Ortiz** (5:20, name unconfirmed): It should, yes.
How names are marked
Whozit never passes a guess off as a name. There are three cases, and your agent can tell them apart.
Confirmed
**Dev Patel** (4:31)
A person put this name on the voice, or checked it. In find_lines the line has name_confirmed: true. Safe to quote.
Unconfirmed
**Sam Ortiz** (5:20, name unconfirmed)
Whozit filled the name in from a voice it knows, and nobody has checked it. The header lists it under unconfirmed_names, and find_lines says name_confirmed: false. Treat it as likely, not certain.
Speaker N, with a hint
**Speaker 4** (5:02, might be Kai Tanaka)
Nobody has named this voice. The hint is a suggestion, never a name. A voice Whozit isn't sure about is marked “?” and is not guessed.
A good rule for an agent: state confirmed names as fact, say “probably” for unconfirmed ones, leave hints out of answers, and ask the person before using name_voice.
Tokens and limits
- Each user makes a personal token on the account page. It is shown once and can be revoked.
- A token only reads that user's own data.
- 120 calls a minute per account, all its tokens together.
- A result stays under 150,000 characters. Long meetings come in pages, and a search that matches too much tells you to narrow it.
Coming next
OAuth sign-in. The Claude.ai and ChatGPT connector directories need it, and Whozit doesn't have it yet, so it isn't in them. Until then, use a client from the list above.
Want to know when it's ready? Write to hello@whozit.io and we'll tell you.