Video meetings your AI can run and join: speaker-attributed transcripts, notes, tasks, recordings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Books a time on someone's Meetful booking link for the person using the assistant. Returns the meeting link, a calendar file and a private link to move or cancel; the owner is told an assistant made the booking. If the time was taken meanwhile, the error lists the nearest open times. No sign-in needed.
The start time, in ISO 8601 (like 2026-11-12T15:00:00Z) or epoch milliseconds.
The booking link, or just the name in it.
Who will be in the meeting — your person's name.
Your own name (Grok, ChatGPT, Claude…), so the owner knows which assistant booked.
What they want to cover. It becomes the first item in the meeting.
Their email: the confirmation, the calendar file and the link to move it go there. Recommended.
Answers to the booking page's own questions, by question id.
How long, if the page offers more than one length.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http meetful https://meetful.com/mcp
Books a time on someone's Meetful booking link for the person using the assistant. Returns the meeting link, a calendar file and a private link to move or cancel; the owner is told an assistant made the booking. If the time was taken meanwhile, the error lists the nearest open times. No sign-in needed.
| Argument | Type | Description |
|---|---|---|
| at* | string | The start time, in ISO 8601 (like 2026-11-12T15:00:00Z) or epoch milliseconds. |
| via | string | Your own name (Grok, ChatGPT, Claude…), so the owner knows which assistant booked. |
| link* | string | The booking link, or just the name in it. |
| name* | string | Who will be in the meeting — your person's name. |
| about | string | What they want to cover. It becomes the first item in the meeting. |
| string | Their email: the confirmation, the calendar file and the link to move it go there. Recommended. | |
| answers | object | Answers to the booking page's own questions, by question id. |
| minutes | number | How long, if the page offers more than one length. |
{
"type": "object",
"required": [
"link",
"at",
"name"
],
"properties": {
"at": {
"type": "string",
"description": "The start time, in ISO 8601 (like 2026-11-12T15:00:00Z) or epoch milliseconds."
},
"via": {
"type": "string",
"description": "Your own name (Grok, ChatGPT, Claude…), so the owner knows which assistant booked."
},
"link": {
"type": "string",
"description": "The booking link, or just the name in it."
},
"name": {
"type": "string",
"description": "Who will be in the meeting — your person's name."
},
"about": {
"type": "string",
"description": "What they want to cover. It becomes the first item in the meeting."
},
"email": {
"type": "string",
"description": "Their email: the confirmation, the calendar file and the link to move it go there. Recommended."
},
"answers": {
"type": "object",
"description": "Answers to the booking page's own questions, by question id."
},
"minutes": {
"type": "number",
"description": "How long, if the page offers more than one length."
}
}
}Reports whether a booking page is live (claimed by its owner), still waiting, or gone, with the code to embed it.
| Argument | Type | Description |
|---|---|---|
| setup* | string | The setup key (stp_…) returned when the page was made. |
{
"type": "object",
"required": [
"setup"
],
"properties": {
"setup": {
"type": "string",
"description": "The setup key (stp_…) returned when the page was made."
}
}
}Lists open times on someone's Meetful booking link (meetful.com/<name>), as exact UTC instants and in the owner's time zone, with the meeting lengths and any questions the page asks. No sign-in needed.
| Argument | Type | Description |
|---|---|---|
| days | number | How many days to look across, 1 to 30. Default 7. |
| from | string | The first day to look at, YYYY-MM-DD in the owner's calendar. Default: today. |
| link* | string | The booking link, or just the name in it: "meetful.com/jack" or "jack". |
| minutes | number | How long, when the page offers more than one length. |
{
"type": "object",
"required": [
"link"
],
"properties": {
"days": {
"type": "number",
"description": "How many days to look across, 1 to 30. Default 7."
},
"from": {
"type": "string",
"description": "The first day to look at, YYYY-MM-DD in the owner's calendar. Default: today."
},
"link": {
"type": "string",
"description": "The booking link, or just the name in it: \"meetful.com/jack\" or \"jack\"."
},
"minutes": {
"type": "number",
"description": "How long, when the page offers more than one length."
}
}
}Returns the verified commitments from one finished recording the signed-in person owns: each action, its owner, its status and a link to the line it came from.
| Argument | Type | Description |
|---|---|---|
| recording* | string | The recording's ID, or its meetful.com/m/ link. |
{
"type": "object",
"required": [
"recording"
],
"properties": {
"recording": {
"type": "string",
"description": "The recording's ID, or its meetful.com/m/ link."
}
}
}Returns the signed-in person's profile as Meetful holds it, in the Protext format (protext.org): name, verified email, booking link, time zone and recent meetings, each with its source.
No arguments.
{
"type": "object",
"properties": {}
}Returns what the room has drawn from the conversation so far: decisions, open questions, actions and disagreements, each with a verbatim quote from the transcript. Items that fail that check are marked unverified.
| Argument | Type | Description |
|---|---|---|
| meeting* | string |
{
"type": "object",
"required": [
"meeting"
],
"properties": {
"meeting": {
"type": "string"
}
}
}Returns one task handed over from a call in full: the request in the asker's words, who asked, the lines of the call just before it, and any Meetful fix request it concerns.
| Argument | Type | Description |
|---|---|---|
| task* | string | The task id, tmt_… |
{
"type": "object",
"required": [
"task"
],
"properties": {
"task": {
"type": "string",
"description": "The task id, tmt_…"
}
}
}Returns the full transcript of a meeting with the speaker on every line. Each microphone is transcribed on its own, so the name on a line is the person whose microphone it came from.
| Argument | Type | Description |
|---|---|---|
| since | number | Only lines after this epoch-ms timestamp. |
| meeting* | string | The meeting code, like abc-defg-hij. |
{
"type": "object",
"required": [
"meeting"
],
"properties": {
"since": {
"type": "number",
"description": "Only lines after this epoch-ms timestamp."
},
"meeting": {
"type": "string",
"description": "The meeting code, like abc-defg-hij."
}
}
}Hands a task to another participant's agent in the current call. The task appears in the call for that person to accept.
| Argument | Type | Description |
|---|---|---|
| to* | string | The person's name as it shows in the call. |
| task* | string | What their agent should do, in plain words. |
| meeting* | string |
{
"type": "object",
"required": [
"meeting",
"to",
"task"
],
"properties": {
"to": {
"type": "string",
"description": "The person's name as it shows in the call."
},
"task": {
"type": "string",
"description": "What their agent should do, in plain words."
},
"meeting": {
"type": "string"
}
}
}Imports a meeting transcript or chat log from another tool into the signed-in person's Meetful dashboard: .vtt or .srt captions, plain-text transcripts, Read AI JSON, JSON lists of turns, Google Meet and Zoom chat logs, or a WhatsApp export. Speaker labels are kept as written. Returns the new meeting's id and link.
| Argument | Type | Description |
|---|---|---|
| name* | string | The file name, with its extension — it says what format this is and often carries the date. |
| text* | string | The whole file as text. |
| title | string | A title for the meeting, if the file name is not one. |
| started_at | string | ISO 8601 start time, if the file does not say. |
{
"type": "object",
"required": [
"name",
"text"
],
"properties": {
"name": {
"type": "string",
"description": "The file name, with its extension — it says what format this is and often carries the date."
},
"text": {
"type": "string",
"description": "The whole file as text."
},
"title": {
"type": "string",
"description": "A title for the meeting, if the file name is not one."
},
"started_at": {
"type": "string",
"description": "ISO 8601 start time, if the file does not say."
}
}
}Emails the link to a running meeting to up to 10 people, from the signed-in person's name, and returns a message with the link.
| Argument | Type | Description |
|---|---|---|
| about | string | What the meeting is about, in a few words. |
| emails* | array | |
| meeting* | string | The meeting code, like abc-defg-hij, or its link. |
{
"type": "object",
"required": [
"meeting",
"emails"
],
"properties": {
"about": {
"type": "string",
"description": "What the meeting is about, in a few words."
},
"emails": {
"type": "array",
"items": {
"type": "string"
}
},
"meeting": {
"type": "string",
"description": "The meeting code, like abc-defg-hij, or its link."
}
}
}Joins a Meetful call the signed-in person is in or started, as their agent. The agent appears in the call under the person's name, is announced in the chat, and anyone in the call can remove it.
| Argument | Type | Description |
|---|---|---|
| meeting* | string | The meeting code, like abc-defg-hij, or its link. |
{
"type": "object",
"required": [
"meeting"
],
"properties": {
"meeting": {
"type": "string",
"description": "The meeting code, like abc-defg-hij, or its link."
}
}
}Lists the signed-in person's meetings that are still running, with how many people are in each.
No arguments.
{
"type": "object",
"properties": {}
}Lists the signed-in person's recordings and clips, newest first, with their links, optionally for one meeting. Each link opens for whoever that recording's sharing setting allows.
| Argument | Type | Description |
|---|---|---|
| meeting | string |
{
"type": "object",
"properties": {
"meeting": {
"type": "string"
}
}
}Returns what happens next in a call the agent has joined: new transcript lines with their speakers, new chat messages and tasks handed to the agent. It returns as soon as something new arrives, or after wait_seconds, with a "next" value marking where it stopped. An agent that has not read for 90 seconds leaves the call.
| Argument | Type | Description |
|---|---|---|
| since | number | The "next" value from the previous read. Omit for the last few minutes. |
| meeting* | string | |
| wait_seconds | number | How long to wait for something new, up to 45. Default 25. |
{
"type": "object",
"required": [
"meeting"
],
"properties": {
"since": {
"type": "number",
"description": "The \"next\" value from the previous read. Omit for the last few minutes."
},
"meeting": {
"type": "string"
},
"wait_seconds": {
"type": "number",
"description": "How long to wait for something new, up to 45. Default 25."
}
}
}Lists the tasks handed to the signed-in person from their calls: who asked, what they asked for, which call, and the status of each. Open tasks come first.
| Argument | Type | Description |
|---|---|---|
| all | boolean | Include finished and declined ones too. |
{
"type": "object",
"properties": {
"all": {
"type": "boolean",
"description": "Include finished and declined ones too."
}
}
}Files feedback about Meetful (a bug, a confusing moment or an idea) on the list the product is built from, and returns a link to follow it. With fix set, it becomes a fix request that a person reviews before anything changes.
| Argument | Type | Description |
|---|---|---|
| fix | boolean | True when the person wants the platform itself changed. |
| kind | string | |
| page | string | The URL or path where you noticed it. |
| text* | string | What you noticed, in one or a few sentences. |
| actual | string | |
| expected | string | |
| severity | integer | 5 = blocks the task, 1 = polish |
{
"type": "object",
"required": [
"text"
],
"properties": {
"fix": {
"type": "boolean",
"description": "True when the person wants the platform itself changed."
},
"kind": {
"enum": [
"bug",
"idea",
"confusing",
"praise",
"question"
],
"type": "string"
},
"page": {
"type": "string",
"description": "The URL or path where you noticed it."
},
"text": {
"type": "string",
"description": "What you noticed, in one or a few sentences."
},
"actual": {
"type": "string"
},
"expected": {
"type": "string"
},
"severity": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "5 = blocks the task, 1 = polish"
}
}
}Posts a message in a meeting's chat under the agent's own name. Everyone in the call sees it.
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| meeting* | string |
{
"type": "object",
"required": [
"meeting",
"text"
],
"properties": {
"text": {
"type": "string"
},
"meeting": {
"type": "string"
}
}
}Sends the Meetful notetaker to a Zoom, Google Meet, Microsoft Teams or Webex meeting. It joins as a participant and records; when the call ends, the transcript, recap and action items appear in the signed-in person's dashboard. Requires signing in; usage is counted in minutes per month by plan.
| Argument | Type | Description |
|---|---|---|
| url* | string | The meeting link. |
| name | string | What the bot is called in the call. Default "Meetful notetaker". |
| join_at | string | ISO 8601 time to join, for a meeting later today. Omit to join now. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The meeting link."
},
"name": {
"type": "string",
"description": "What the bot is called in the call. Default \"Meetful notetaker\"."
},
"join_at": {
"type": "string",
"description": "ISO 8601 time to join, for a meeting later today. Omit to join now."
}
}
}Creates a Meetful booking page (meetful.com/<handle>) and returns the code to put it on a website: a one-line button, the page inline, an iframe, or a plain link. Every booking gets its own video room. For a signed-in person the page is theirs and live at once; otherwise the result includes a claim link, and the page goes live when its owner signs in.
| Argument | Type | Description |
|---|---|---|
| name* | string | Whose booking page this is — shown on it. |
| site | string | The website it goes on — shown to the person when they claim it. |
| blurb | string | A sentence or two under the heading. |
| string | The person's address — shown on the claim page so they know it was made for them. Nothing is sent to it. | |
| hours | string | Open hours, like "Mon-Fri 09:00-17:00" or "Mon-Thu 9am-5pm; Fri 9am-1pm". Default Monday to Friday, 9 to 5. |
| title | string | The page's heading, like "Book a call with Ada". |
| handle | string | The address wanted: meetful.com/<handle>. Optional — one is made from the name. |
| lengths |
Starts a new Meetful video meeting and returns its link. The link opens in any browser with no account and no download. Meetful can email the link to up to 10 addresses.
| Argument | Type | Description |
|---|---|---|
| mode | string | What the room does with what is said: "meet" keeps live notes, "agenda" follows the topics given, "align" runs a decision protocol. Default "meet". |
| about | string | What the meeting is about, in a few words, for the invitation. |
| invite | array | Email addresses Meetful sends the link to, up to 10. Requires signing in. |
| topics | array | Agenda topics, if mode is agenda. |
{
"type": "object",
"properties": {
"mode": {
"enum": [
"meet",
"agenda",
"align"
],
"type": "string",
"description": "What the room does with what is said: \"meet\" keeps live notes, \"agenda\" follows the topics given, \"align\" runs a decision protocol. Default \"meet\"."
},
"about": {
"type": "string",
"description": "What the meeting is about, in a few words, for the invitation."
},
"invite": {
"type": "array",
"items": {
"type": "string"
},
"description": "Email addresses Meetful sends the link to, up to 10. Requires signing in."
},
"topics": {
"type": "array",
"items": {
"type": "string"
},
"description": "Agenda topics, if mode is agenda."
}
}
}Opens a pull request against Meetful's source code: a unified diff for a fix request, either an existing one (feedback_id) or a new one described in text. Nothing is applied automatically; a person reviews and merges it.
| Argument | Type | Description |
|---|---|---|
| body | string | What changed and why, and how you checked it. |
| diff* | string | Unified diff against the source, with diff --git headers. |
| page | string | |
| text | string | If there is no feedback_id: what is being fixed, as a person would report it. |
| tests | object | |
| title | string | One line, like a commit subject. |
| feedback_id | string | The fix request this resolves. |
{
"type": "object",
"required": [
"diff"
],
"properties": {
"body": {
"type": "string",
"description": "What changed and why, and how you checked it."
},
"diff": {
"type": "string",
"description": "Unified diff against the source, with diff --git headers."
},
"page": {
"type": "string"
},
"text": {
"type": "string",
"description": "If there is no feedback_id: what is being fixed, as a person would report it."
},
"tests": {
"type": "object",
"properties": {
"failed": {
"type": "integer"
},
"passed": {
"type": "integer"
},
"command": {
"type": "string"
}
}
},
"title": {
"type": "string",
"description": "One line, like a commit subject."
},
"feedback_id": {
"type": "string",
"description": "The fix request this resolves."
}
}
}Sets a task's status (working, done or blocked) with a short note and links. The call the task came from sees the update in its chat.
| Argument | Type | Description |
|---|---|---|
| note | string | Two plain sentences at most. |
| task* | string | The task id, tmt_… |
| links | array | Links to what you made. |
| status* | string |
{
"type": "object",
"required": [
"task",
"status"
],
"properties": {
"note": {
"type": "string",
"description": "Two plain sentences at most."
},
"task": {
"type": "string",
"description": "The task id, tmt_…"
},
"links": {
"type": "array",
"items": {
"type": "string"
},
"description": "Links to what you made."
},
"status": {
"enum": [
"working",
"done",
"blocked"
],
"type": "string"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.
| array |
| How long a meeting can be, in minutes — any of 15, 30, 45, 60, 90. The person booking picks one; the first is shown first. Default 30. |
| timezone | string | IANA time zone the hours are in, like America/New_York. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Whose booking page this is — shown on it."
},
"site": {
"type": "string",
"description": "The website it goes on — shown to the person when they claim it."
},
"blurb": {
"type": "string",
"description": "A sentence or two under the heading."
},
"email": {
"type": "string",
"description": "The person's address — shown on the claim page so they know it was made for them. Nothing is sent to it."
},
"hours": {
"type": "string",
"description": "Open hours, like \"Mon-Fri 09:00-17:00\" or \"Mon-Thu 9am-5pm; Fri 9am-1pm\". Default Monday to Friday, 9 to 5."
},
"title": {
"type": "string",
"description": "The page's heading, like \"Book a call with Ada\"."
},
"handle": {
"type": "string",
"description": "The address wanted: meetful.com/<handle>. Optional — one is made from the name."
},
"lengths": {
"type": "array",
"items": {
"type": "number"
},
"description": "How long a meeting can be, in minutes — any of 15, 30, 45, 60, 90. The person booking picks one; the first is shown first. Default 30."
},
"timezone": {
"type": "string",
"description": "IANA time zone the hours are in, like America/New_York."
}
}
}