← Back to home

Documentation

Everything you can do with EchoBrief

EchoBrief sends a recording bot to your meetings, transcribes them into English, and turns each one into a summary, a decision log, and a set of action items you can actually chase. This guide covers setup, day-to-day use, and what to do when something looks wrong.

What is EchoBrief?

EchoBrief is an AI meeting intelligence platform. A recording bot joins your Google Meet, Zoom, or Microsoft Teams call, records the conversation, and afterwards produces a written record you can search, share, and act on.

You get, for every meeting:

  • An executive summary and a longer detailed summary
  • Action items with an owner, a priority, and what success looks like
  • Explicit decisions and commitments
  • Risks, blockers, and open questions
  • A timestamped timeline of the conversation
  • Conversation metrics — talk time, who held the floor, questions, turn-taking
  • A full transcript with real participant names

Recording is bot-based

EchoBrief does not record from your browser and never asks for microphone access. A visible bot joins the call as a participant, which means everyone in the meeting can see that it is being recorded.

How it works

01

The bot joins

You paste a meeting link, or your calendar triggers it automatically. The bot asks to be admitted and starts recording.

02

Audio is transcribed

After the call ends, the recording is transcribed into English — whatever language was spoken.

03

Speakers are named

Segments are matched against who was actually talking, so the transcript reads with real names.

04

Insights are generated

A summary, decisions, risks and action items are extracted and saved to your dashboard.

05

It lands in your inbox

If email summaries are on, the report is delivered automatically.

06

You can ask questions

Ask searches across every meeting you have recorded and answers with citations.

Most meetings finish processing within a few minutes of the call ending. Longer meetings take proportionally longer, because the audio is split into chunks and transcribed in parallel.

Account setup

  1. 1Sign in at echobrief.in with your email and password — or with Google, when the Continue with Google option is shown. Do not have an account yet? EchoBrief is in invite-only beta — request access from the homepage and we will set one up. You pick a plan in Settings → Billing. Recording stops when a plan's monthly hours are used up; a meeting already in progress finishes.
  2. 2Complete onboarding: connect Google Calendar or Outlook (optional), choose whether the notetaker joins your calendar meetings automatically, and send it to your first call.
  3. 3Open Settings to name your bot, pick its colour, and confirm email summaries are on.
  4. 4Record your first meeting.

Passwords must be at least 10 characters with letters and numbers, and are checked against known data-breach lists when you set one. The check is private: only a 5-character fragment of a hash is sent, so your password never leaves your browser.

Connecting Google Calendar is optional

Without it you can still record any meeting by pasting its link. With it, EchoBrief can see your upcoming meetings and — if you enable auto-join — send the bot for you.

Your first meeting

  1. 1On the dashboard, click Start New Recording.
  2. 2Enter a meeting title and paste the meeting URL (Google Meet, Zoom, or Teams).
  3. 3Start the recording. The bot will request to join the call.
  4. 4Admit the bot when it appears in the waiting room. If nobody admits it, the meeting is marked cancelled and nothing is recorded.
  5. 5Hold your meeting as normal. The dashboard shows live status.
  6. 6End the call. Processing begins automatically and the meeting moves to Completed.

Recording a meeting

There are two ways to get a bot into a meeting:

MethodWhen to use it
Paste a linkAd-hoc calls, meetings not on your calendar, or someone else's invite.
Calendar auto-joinRecurring and scheduled meetings you always want recorded.

Supported platforms: Google Meet, Zoom, and Microsoft Teams.

Someone has to let the bot in

The bot joins as a participant and usually lands in the waiting room. If it is not admitted before the meeting starts, it gives up and the meeting is marked cancelled — no audio is captured. Tell your host to expect it, or give the bot a recognisable name in Settings.

Calendar auto-join

With Google Calendar connected and auto-join enabled, EchoBrief checks your calendar every few minutes and dispatches a bot to meetings that are about to start — roughly five to seven minutes ahead of time.

  • Only events with a recognisable meeting link are eligible.
  • Each calendar event gets at most one bot, even across multiple checks.
  • Turn it off any time in Settings or from the status chip on the Calendar page; existing recordings are unaffected.
  • The Calendar page shows, for each event, whether the bot will record it, is recording it, or recorded it (with a link to the notes) — and why not when it won't. Meetings it will miss are listed at the top with the fix.
  • Open any event for its own page: the people on it, the account brief and your past meetings with each external guest, and — once recorded — the summary and outcome.
  • Connect more than one account: Settings → Integrations → Connect another Google account (or Outlook account). Every account's calendars merge into one calendar, and the same meeting invited to two of your accounts still gets one bot. Each account shows its own status, and one that needs reconnecting does not stop the others.
  • A calendar shared with you shows only as busy time when its owner shared free/busy only — common for a work account whose admin blocks sharing outside the company. If it is your own account, connect it directly instead. If Google says your organisation's admin has not allowed EchoBrief, the admin approves it in Admin console → Security → API controls.
  • Disconnecting an account removes its calendars and upcoming events. Meetings already recorded stay.

Auto-join records everything it can

If it is on your calendar and it has a link, the bot will try to join it — including one-to-ones and interviews. Review what is on your calendar before enabling it.

The bot in your call

There is nothing to set up. Every notetaker works the same way:

  • Name — it joins as “your first name's EchoBrief Notetaker”, so people know whose it is and admit it faster.
  • Recording notice and /stop — when the bot joins, it posts in the meeting chat whose notetaker it is and that it is recording (pinned on Google Meet). Anyone in the call can type /stop in the chat: the bot confirms and leaves, and nothing after that is recorded. What was recorded before goes to the bot's owner only: no reviewer copies, Slack, ClickUp, Notion or Zoho posts, webhooks, workspace sharing or follow-up invites, and the summary email says who typed it.
  • Gallery view — the recording shows everyone at once (up to 16 people on Zoom and Meet, 9 on Teams), with faces beside a shared screen.
  • Auto-join — Settings → Bot, together with how early you get a heads-up before it joins.

Meeting statuses

Every meeting carries a status. The dashboard only labels a meeting that is still on its way or did not finish; a completed one shows its outcome instead, when it has one. What each status means:

StatusMeaning
ScheduledPicked up from your calendar. The bot has not been sent yet.
JoiningThe bot is asking to be admitted to the call.
RecordingThe bot is in the meeting and capturing audio.
ProcessingThe call ended. Audio is being transcribed and analysed.
CompletedTranscript, summary, and insights are ready.
CancelledThe bot never got into the meeting — usually not admitted, or removed from the waiting room. Nothing was recorded and nothing went wrong on our side. Dropped from the dashboard automatically.
FailedSomething needs your attention — most often an invalid or expired meeting link. Dropped from the dashboard automatically; search for the title to open the meeting and see the reason.

Summaries & insights

Open any completed meeting to see the full report. It is deliberately more than a summary:

  • Executive summary — why the meeting happened, what changed, what happens next.
  • Notes by topic — the longer write-up, grouped the way Fireflies-style notes are, with speaker names.
  • Action items — verb-first commitments, with an owner and a due date only when those were spoken.
  • Decisions — only explicit agreement, not “we should” or “maybe”.
  • Open questions and risks — unresolved concerns, so silence is not mistaken for alignment.
  • Outline — chapter headings whose timestamps come from the transcript clock, not a guess.
  • Numbers & asks — every hard number spoken (revenue, volumes, rates), what the other party explicitly asked for, and each objection with whether it was addressed — each with the verbatim quote and a timestamp that jumps into the recording.
  • Coaching — on external calls, a Coaching section benchmarks your talk ratio, longest monologue, questions and hedge words against discovery-call guidelines, flags moments (an objection you talked past, a next step left vague) and charts the other side's engagement over the call. Every check is colour coded — green for a strength, amber to watch, red for needs work — and Open full coaching takes you to that call's own coaching page.

The page opens on the answer: the summary with the call's outcome, risks and key numbers, then the action items, decisions and next steps. Everything else — the deal card, highlights, chapters, coaching, facts and quotes, conversation metrics and email deliveries — sits below in sections that show a one-line preview and open when you click them; the page remembers which ones you keep open. On a wide screen the recording and transcript stay beside the notes; on an iPad or phone, the Transcript button slides it in over the page.

Every timestamp on the page — in the outline, the transcript, action items and coaching evidence — is a link into the recording at that moment.

Two actions in the header act on the report: Draft follow-up writes the follow-up email from the extracted facts (their own words for what they need, the commitments both ways, the agreed time — nothing invented) for you to edit and send; Regenerate, in the header's … menu, rebuilds the whole report from the stored transcript with the current pipeline, which is how older meetings gain the Numbers & asks and Coaching sections.

Grounded in the transcript, twice over

The report is written in passes: first the facts are extracted with the exact words that support them (including what actually happened on the call — held, no-show, declined, conditional), then the summary is written from those facts alone, opening with that outcome. A final check reads each sentence against the transcript, and any claim it cannot support is removed before the report is saved — you will see a small note on the summary saying how many were removed.

Accuracy over completeness

The analysis is instructed not to invent detail, not to assign an owner unless it was stated or strongly implied, and to prefer an open question over a guess. A shorter, correct report is the intended outcome.

Action items

Each action item carries a task description, an owner (where one was named), a priority, a confidence level, and what success looks like. When a due date was spoken as a day (“Tuesday”, “next week”), it is resolved against the meeting's own date — so you see Tue, Sep 1, not a word that means nothing a week later. Items with a resolved date get an Add to calendar button that creates the follow-up in your Google Calendar at the original meeting's time — on the account the original meeting came from, when you have several connected; attendees are invited only if you tick the box. If you connected Google Calendar before September 2026 the connection is read-only — reconnect it once under Settings → Integrations to allow event creation.

Turn on Schedule agreed follow-ups automatically (Settings → Integrations) and a follow-up call agreed for a specific day and time — “Thursday at 4 pm” — is created for you when the meeting finishes: on your Google Calendar, with a Meet link, inviting the people on the original invite. A call with no attendee list gets the event on your calendar only. Nothing is created when no time was agreed, when two different times were, when the meeting was a no-show or a reschedule, or when you already have something in that slot. Each meeting is scheduled at most once, even if it is reprocessed.

The Action Items page collects them across every meeting, grouped by when they are due — Overdue, Today, Next 7 days, Later and No date — or by meeting if you prefer. Search by task, owner or meeting, narrow to items assigned to you (matched against the name on your profile, since owners are the names spoken in the call), and tick items off; a tick can be undone from the confirmation, and completed items collect in a folded section at the bottom. Each item's timestamp opens the meeting at the moment it was said. A tick made here shows on the meeting page too, and completion state is yours alone.

You don't have to come back to the page to keep up. With ClickUp connected and a task list chosen, the action items you own become ClickUp tasks after each call (see ClickUp), and on any morning one of your items is due or overdue, a short email at 8 am lists them with a Done button that ticks the item off without signing in. Days with nothing due send nothing. Turn the email off under Settings → Account → Due today email.

Deal card

On sales calls, the meeting page shows a Deal card with seven rows: outcome, budget, decision maker, timeline, pain points, objections and next step. Each item links to the moment it was said, and a row nobody raised reads “Not discussed” — which is often the most useful thing the card can tell you.

The summary email carries the card too. Share links do not include it.

EchoBrief detects the meeting type for you. If it got it wrong, the owner can change it from the type shown under the meeting title; the card appears for sales discovery and sales proposal calls. Meetings processed before the card existed show no card until you Regenerate them.

Conversation metrics

Each meeting includes measured conversation statistics. These are calculated arithmetically from the timing of every speech segment — they are measurements, not estimates from a language model.

  • Talk time per speaker — seconds and share of total speech, plus turns, questions asked, words, and speaking pace.
  • Airtime — who held the floor, as a share of speech. Shown when two or more people spoke.
  • Questions and back-and-forth — how many questions were asked, and how often the floor changed per minute.
  • Silence — how much of the meeting had nobody speaking, including dead air before the first word and after the last.
  • Longest monologue — the longest genuinely uninterrupted stretch. A pause of more than fifteen seconds ends it, so this is not simply “total time this person spoke”.
  • Participation balance — how evenly speaking time was shared, where 1.00 is perfectly even.

Solo meetings hide the balance card

Balance describes a relationship between speakers. With only one speaker there is nothing to compare, so the card is hidden rather than showing a meaningless perfect score.

Transcripts & speakers

Every completed meeting stores a full transcript with timestamps and speaker labels. Where EchoBrief can match a speech segment to a participant, the transcript uses their real name.

Occasionally you will see generic labels like SPEAKER_00. That means participant information was not available for that recording — the transcript is still accurate, only the names are missing.

Your pre-call and post-call chatter stays private

The bot joins before your guests and keeps recording after they leave. EchoBrief reads when your first guest joined the call and when the last one left, where a guest is anyone who is not you or a member of your workspace, and treats speech outside that window as internal. Internal segments are excluded from the summary, the email and anything an AI tool reads through the connector; you can reveal them on the transcript with Show internal audio, where they are marked Internal — not shared. Meetings with only your own team have no trimming.

Company, product and client names the transcription keeps misspelling can be fixed for good under Settings → Custom vocabulary: add the correct spelling once and it is enforced in every future transcript and summary. If a speaker was mislabelled, click their name in the transcript to rename them — the change applies to the metrics, action items, facts and coaching too, and survives a regeneration.

Contacts & account briefs

Everyone from outside your company who attends a recorded meeting becomes a contact automatically — name, email, company from their domain — with every meeting, number and commitment attached to their timeline. After every call, each guest's account brief is rewritten from the facts of that call and the ones before it: a two-minute read of where things stand, their pain points, what to bring, open commitments on both sides, objections never resolved, and the numbers that matter. Refresh rewrites it on demand.

The same person on two email addresses — a work address on one invite, a personal one on the next — shows up as a possible duplicate. Press Merge to join their meetings into one contact with one brief, or Not the same to stop the suggestion. Merge… on a contact's page merges any two people by hand. After a merge, calls from either address land on the same contact.

Edit on a contact's page corrects their name and company and adds a phone number, job title, LinkedIn or website link, and your own notes. Your edits are kept when the same person joins later calls, and the corrected name is used across EchoBrief, including their brief. Phone numbers and notes are private to you: they are not used in briefs or sent to any connected app. On a phone, tap the number to call. The list can be sorted by most recent, next call, most met or company, and a contact you have a calendar event with shows that call at the top of their page.

Coaching scorecard

The Coaching page rolls your external calls up into four colour-coded habits: talk ratio, hedge-word density, how often a next step was secured and how often objections were handled. Green is on target, amber is close, red needs work, and the info button on each explains what it measures and what good looks like. Tap a habit to see its week-by-week trend, filter by date range or meeting type, and open any call underneath for its own coaching page.

A call's coaching page (also reached from Open full coaching on the meeting) leads with how many checks were on target and what to do more of or try next time, then shows each habit against its target, who talked, the flagged moments on a timeline of the call and the other side's engagement. Every timestamp opens the meeting at that moment. Reports exist for calls processed after 31 August 2026; press Regenerate on an older meeting to add it.

Watching the recording

Open a meeting and use the player (or the Recording chip) to play back what the notetaker captured — video where it is available, otherwise the meeting audio.

Recordings are available for 30 days after the meeting as video. After that the meeting audio stays playable for as long as your plan keeps the transcript, summary and action items. Meetings recorded before video playback was introduced have audio only, and that audio is cleared sooner.

Ask: chat with your meetings

Dashboard → Ask

Ask answers questions across your entire meeting history in plain language. Useful for the things a search box cannot answer:

  • “What did we decide about pricing?”
  • “Who owns the migration work?”
  • “Has the client raised the deadline concern before?”

Every answer comes with citations — the specific meetings it drew from — so you can jump straight to the source. If the answer is not in your transcripts, it will say so rather than guess.

Ask only sees your own meetings

Retrieval is scoped to your account at the database level. Meetings that captured no usable speech are excluded, because quoting an empty recording back at you is worse than saying nothing.

Connect Claude & other AI tools

Settings → Developer

Your meetings do not have to stay inside EchoBrief. Claude on the web and in the mobile app connects through Add custom connector with the address below and a one-click approval. Claude Code, Claude Desktop, Cursor and any other tool that speaks MCP can do the same, or use a token from Settings → Developer — so you can ask about a past decision without leaving the document you are writing.

  1. 1Go to Settings → Developer and create an access token. It is shown once — copy it then.
  2. 2Add EchoBrief to your tool. In Claude Code that is a single command, shown on the same page.
  3. 3Ask away. “What did we decide about pricing last quarter?” now works wherever you are.

Once connected, the assistant can:

  • Search across every transcript and summary you have
  • Read a specific meeting's transcript, decisions and risks
  • Pull your open action items — and tick them off

It only ever sees your own meetings

A token stands in for you and nobody else. Scoping is enforced by the database, not by the tool asking nicely, and you can revoke a token at any time from the same page. Apart from ticking an action item, reading is all it can do — it cannot start recordings, spend anything, or delete a meeting.

Languages

Speak any of these — read English

Transcription runs in translate mode: whatever language is spoken, the transcript and the summary come back in English. Mixed-language meetings — Hinglish, or switching mid-sentence — are handled the same way.

English · Hindi · Hinglish · Tamil · Telugu · Bengali · Kannada · Marathi · Malayalam · Gujarati · Punjabi · Assamese · Odia · Konkani · Santali · Maithili · Dogri · Manipuri · Urdu · Sanskrit · Sindhi · Kashmiri

The spoken language is detected automatically, per segment — a meeting header shows the honest mix (“English 78% · Hindi 22%”) rather than a single label. Lines the transcription left untranslated are translated afterwards, so the transcript reads in English end to end.

Email summaries

When a meeting finishes processing, EchoBrief emails you a formatted report — summary, key points, decisions, and action items. This is on by default and can be turned off in Settings → Email summaries.

Reports are always available in the dashboard, whether or not email is enabled.

Your guests get a recap too. About 15 minutes after your summary, everyone on the calendar invite (except you) gets a short email with a short thank-you note in your name, then the decisions, the action items and the agreed next step, from the part of the call they were in. It comes from EchoBrief on your behalf, and replies go to you. Your summary email and the meeting page say who it goes to and when, with Don't send and Send now.

What guests never get

The recording, the transcript, your summary (which leads with how the call went), the deal card, coaching and risks stay with you. No-shows and rescheduled calls get no recap, and nor do meetings without an invite list (a notetaker sent to a pasted link). Guests can unsubscribe from the email itself.

Slack

Connect a Slack workspace under Settings → Integrations → Slack and EchoBrief posts each finished meeting to a channel: the summary, one highlight, the decisions, the action items and the next steps, with a link back to the full report. Sections a meeting does not have are left out rather than printed empty — most meetings decide nothing, and a daily "Decisions: none" teaches a channel to stop reading.

Connecting the workspace and choosing the channel are two separate steps. Nothing is posted until you pick a channel from the list — EchoBrief will not guess a destination. The list shows every public channel plus any private channel you have invited EchoBrief to; if a private channel is missing, invite the app to it in Slack and reopen the picker.

The transcript never goes to Slack

A channel is a room full of people, so only the summary, decisions and action items are posted, and only from the meeting itself — anything said before the first external participant joined or after the last one left is excluded, the same boundary the summary email uses. Coaching notes, the underlying quotes and attendee email addresses are never sent.

To choose which meetings reach the channel, turn off Post every meeting automatically under the channel picker. Nothing is posted after that until you press Post to Slack on a meeting's page. That button also works with automatic posting on, for a meeting that finished before you picked a channel.

Each meeting posts once. Regenerating a meeting's insights does not re-post it. Disconnecting removes EchoBrief's access to the workspace immediately.

ClickUp

Connect ClickUp under Settings → Integrations → ClickUp and EchoBrief posts each finished meeting to a ClickUp Chat channel — the same message Slack gets: the summary, one highlight, the decisions, the action items and the next steps, with a link back to the full report. Sections a meeting does not have are left out.

ClickUp asks which workspaces to grant when you connect; the channel picker lists the Chat channels in every workspace you ticked (direct messages are never offered). Nothing is posted until you pick one. If you change which workspaces the grant covers, reconnect and pick the channel again.

Action items as tasks. Under the channel picker, choose a ClickUp list. From then on, every action item you own in a new meeting is created there as a task assigned to you, with the due date that was spoken, a High priority when it was flagged, and links back to the meeting and the second it was said. Close the task in ClickUp and it is ticked off in EchoBrief within about 15 minutes; tick it in EchoBrief and the task moves to the list's finished status. Items other people own are not sent unless you send them from the Action items page, and items from before you chose a list can be sent there in one go with Send open items. Choose a list made for this rather than a pipeline board: EchoBrief moves a finished task to that list's closing status.

The transcript never goes to ClickUp

Exactly the Slack boundary: only the meeting-zone summary, decisions and action items are posted, and a task carries only the action item, its owner and due date, and the meeting it came from. Coaching notes, the underlying quotes and attendee email addresses are never sent.

The same choice as Slack: turn off Post every meeting automatically and only meetings you send with Post to ClickUp on their page are posted.

Each meeting posts once; regenerating insights does not re-post it. Disconnecting removes the connection from EchoBrief. ClickUp keeps its own record of authorised apps — to revoke on that side too, remove EchoBrief under ClickUp → Settings → Apps.

Notion

Connect Notion under Settings → Integrations → Notion and every finished meeting becomes a row in a Notion database. The row's page holds the summary, the highlight, the decisions, the action items as to-do checkboxes and the next steps, with a link back to the full report.

Notion asks which pages to share when you connect, and EchoBrief can only see what you tick there. Tick the database you already track meetings in, or a page you want a new EchoBrief meetings database created inside. In your own database EchoBrief fills the title, the date and a URL column, plus any column whose name says what it is (Type, Outcome, Duration, Attendees, Summary). Every other column is left alone.

The transcript is off unless you turn it on

With Include the transcript on, the page gets the transcript under a collapsed heading. Only the meeting itself goes in, never the talk before guests join or after they leave. Coaching notes, the underlying quotes and attendee email addresses are never sent.

Unlike a chat post, a Notion page can be kept up to date. Regenerating a meeting's insights updates the same page: EchoBrief replaces only the blocks it wrote, and anything you added to the page stays. Turn off Add every meeting automatically and only meetings you send with Send to Notion on their page are added.

Disconnecting removes the connection from EchoBrief, and pages already written stay in Notion. To revoke access on Notion's side too, remove EchoBrief under Notion → Settings → Connections.

Sharing a meeting

Open a meeting and press Share to create a link anyone can open — no EchoBrief account, no sign-in. The link shows the summary, the notes chapter by chapter with the numbers, asks and decisions said in each, the next steps and the action items — every one stamped with the moment in the call it came from. You choose how long it lives: 24 hours, 7 days, 30 days, or never expiring. A meeting has one live link: it is copied to your clipboard when you create it, and opening Share again shows that same link, so you can copy it again or change what it carries. You can replace it with a new address, or revoke it at any time, after which it shows an expired page.

Two switches decide how much of the meeting travels with the link:

  • Include the transcript — the reader gets the full transcript of the meeting itself. Your pre-call and post-call chatter is left out exactly as it is in the summary. A reader who signs in to EchoBrief can also ask the meeting a question and get the answer with the moment it was said; nobody is asked to sign in just to read.
  • Include the recording — the reader can play the recording back in their browser for as long as it exists (the video is kept for 30 days; after that the reader hears the saved audio instead).

The recording plays from your guest's arrival

On a shared link the recording starts when your guest joined and stops when they left, and the page's clock starts at 0:00 from their arrival. The Share dialog shows those times before you send the link, or tells you no guest was detected, in which case the whole call is shared. The player keeps the reader inside that window, but the file behind it is the full call, so share the recording only with people you would trust with all of it.

Both switches are off unless you turn them on, and you can change them later on a link you have already sent. Timestamps on the page jump into the recording when the link carries it, and to the transcript when it carries only that. Everything else stays inside your account: attendee email addresses, the coaching scorecard, the word-for-word quotes behind the notes, and every other meeting you own.

Sharing with your workspace

If you are in a workspace, the same Share dialog has a Share with your workspace switch at the top. It needs no link and no expiry: everyone in the workspace sees the meeting in their own dashboard, with the summary, the transcript of the meeting itself and the recording. Your pre-call and post-call chatter is left out of the transcript here too — but the recording, as above, is the whole call.

To stop deciding this meeting by meeting, open Workspace and turn on Share my new meetings. Every meeting you record from then on is shared with your colleagues automatically. It applies to new meetings only — turning it on never shares meetings you have already had — and you can still switch off any single meeting from its Share dialog.

Meetings are private until one of these is on. Joining a workspace by itself shares nothing, in either direction.

Team workspaces

A workspace is the people you work with. Meetings you share with it appear in every member's Meetings list, read-only, with the summary, the transcript and the recording, and everyone in it records against one shared pool of hours. Open Workspace in the sidebar to create one; you can be in one workspace at a time.

  • Inviting. The owner and admins invite by email. The link works only for that address and expires after 14 days; an invite that expired, or one that never arrived, can be sent again from the members list, and a pending invite can be cancelled.
  • Roles. The owner and admins can invite and remove people; an admin can remove members but not other admins. A role is set when the person is invited and cannot be changed afterwards yet.
  • Hours and seats. Everyone records against the owner's plan, and the hours are pooled, so joining someone else's workspace means your recordings count against their plan, not yours. On Sales Team, which is priced per seat, each seat adds 12 hours to the pool and you can invite as many people as you have seats; pending invites hold a seat until they are accepted or cancelled. The Workspace page shows seats in use and the pooled hours for the month.
  • Leaving. A member can leave at any time and an admin can remove them. Meetings they already shared stay visible to the workspace, so unshare any you want back from their Share dialog first. The owner cannot leave, and handing over or deleting a workspace is done for you by support at hello@echobrief.in.

Scheduled digests

Weekly and monthly recaps

A digest aggregates everything across a period — meetings held, decisions made, and outstanding action items — into a single email. Configure the frequency, the day and time, and who receives it. You can also send one on demand with Send Digest Now.

Search & history

The Meetings dashboard opens with your last seven days against the seven before (meetings, hours recorded, calls with external attendees), your open action items with how many are overdue, and anything that needs attention. These count only meetings you recorded, not ones shared with you. Below that, Next up shows your next calendar meeting with a countdown, who is on it, whether EchoBrief will record it, and for external guests a one-line prep note from their contact brief and when you last met; the rest of today and tomorrow is listed under it. Due soon lists action items that are overdue or due this week, and you can tick them off there. Recent meetings lists your recordings and meetings shared with you, grouped by day, with each meeting’s outcome, action-item count and length; hover a row for its one-line summary. Filter by the last seven days, external attendees, or action items. Meetings that failed to process in the last week appear separately under Needs attention; dismissing one (or all) hides it without deleting it. Old Recordings links open the dashboard.

Use the search button or Cmd/Ctrl+K to find meeting titles, transcript passages, action items, and contacts. Arrow keys select a result; Enter opens it. Transcript matches open at the matching timestamp, and contact matches open that contact. Action item matches cover your 100 most recent accessible summaries. If a search cannot finish, use Retry; available matches remain visible.

Nothing is kept forever

Video is kept for 30 days. An audio copy for playback, and the transcript, summary and insights, are kept for your plan's retention window — 30 days on Starter, 90 on Pro, 365 on Sales Team — then deleted automatically. See the privacy policy for the full schedule.

Developer overview

Build on your own meetings

EchoBrief exposes your meetings two ways, and both are scoped to your own account at the database level:

  • Pull — an MCP endpoint at https://www.echobrief.in/api/mcp, which any MCP client (Codex, Claude, Cursor, your own agent) can read with an access token.
  • Push — a signed webhook fired at your endpoint when a meeting's insights are ready, for n8n, Make, Zapier or a CRM bridge.

There is no separate REST API yet

Everything a program can read today, it reads through the MCP endpoint — it is a plain HTTP JSON-RPC service, so a non-agent script can call it too (there is a curl example below). If you need a conventional REST surface, tell us at hello@echobrief.in and it will be built against real use, not guessed at.

Access tokens

Settings → Developer

A personal access token stands in for you and nobody else. Create one under Settings → Developer; it looks like eb_live_… and is shown once. Only a SHA-256 digest is stored, so a lost token cannot be recovered — revoke it and mint another.

Send it as a bearer token:

http
Authorization: Bearer eb_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • Up to 10 active tokens per account.
  • Revocation takes effect on the next request — there is no cache to wait out.
  • Each token's last use is shown on the same page, refreshed at most hourly, so an unused token is easy to spot and retire.
  • A token carries your permissions, not more: it reads your meetings and can tick an action item. It cannot start a recording, spend money, or delete anything.

Treat it like a password

Anyone holding the token can read every meeting in your account. Keep it in an environment variable or a secret store, never in a committed file, and revoke it the moment a laptop or a CI job goes missing.

MCP endpoint

https://www.echobrief.in/api/mcp

One stateless Streamable-HTTP MCP server. Point any MCP client at it with a token, or connect Codex and compatible clients over OAuth without creating a token manually.

Codex

Open Settings → Developer → Connect Codex for app/IDE instructions, or run this with the Codex CLI installed:

shell
codex mcp add echobrief --url https://www.echobrief.in/api/mcp

Approve access in the browser. If sign-in doesn’t open automatically, run codex mcp login echobrief. Start a new Codex session and use /mcp to check the connection. You can also choose Codex under Connect a client for token-based setup.

Claude Code

shell
claude mcp add --transport http echobrief https://www.echobrief.in/api/mcp \
  --header "Authorization: Bearer eb_live_..."

Claude Desktop / Cursor

In the MCP config file:

json
{
  "mcpServers": {
    "echobrief": {
      "type": "http",
      "url": "https://www.echobrief.in/api/mcp",
      "headers": { "Authorization": "Bearer eb_live_..." }
    }
  }
}

claude.ai web & mobile — no token needed

Add a custom connector with the URL above and leave the client ID and secret empty. Claude discovers the authorization server, registers itself, and sends you to an EchoBrief consent screen to approve. What it receives is an ordinary access token, listed in Settings → Developer as Claude (OAuth), revocable from the same place.

For your own OAuth client: the issuer is https://www.echobrief.in, metadata lives at /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource, dynamic registration is open (RFC 7591, public clients), PKCE S256 is mandatory, and resource must be the MCP URL. Authorization codes are single-use with a 5-minute life, access tokens last 30 days, and refresh tokens rotate on every use — replaying one revokes the grant.

MCP tool reference

Eight tools, one write
ToolArgumentsReturns
list_meetingsstatus?, from?, to?, query? (title substring), limit ≤ 100Metadata rows, newest first. No transcript or summary text. Cancelled meetings are left out unless you ask for that status.
list_calendar_eventsfrom? (default now), to?, limit ≤ 100Events from every connected calendar account, merged, soonest first, with attendees, the invite description and which account each came from. For preparing before a call.
get_meetingmeeting_idMetadata, the short summary, and counts of decisions, action items and segments.
get_meeting_insightsmeeting_idThe full analysis: summary, key points, decisions, risks, timeline, conversation metrics.
search_meetingsquery, limit ≤ 25Ranked snippets, each with a meeting_id to fetch. Full-text over transcripts and summaries.
get_transcriptmeeting_id, format (text | segments), include_internal?, speaker?, offset?, limit?text is [m:ss] Speaker: paragraphs; segments is structured. Both drop the internal pre- and post-meeting zones unless include_internal is true, and say how many were excluded.
get_action_itemsmeeting_id?, status (open | done | all), from?, to?, limit ≤ 50Items addressed by the (meeting_id, index) pair, with owner, due date and completion state.
complete_action_itemmeeting_id, index, completedThe new completion state. The only write in the whole surface, and reversible.
get_meeting_factsmeeting_idThe verbatim-grounded facts — every number spoken, commitments with dates, objections, explicit asks — each with a quote and a timestamp, plus the coaching report. This is what the summary was written from.

Calling it directly

It is ordinary JSON-RPC over HTTP, so you do not need an MCP client to script against it:

shell
curl -s -X POST https://www.echobrief.in/api/mcp \
  -H "Authorization: Bearer $ECHOBRIEF_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "list_meetings",
      "arguments": { "status": "completed", "limit": 5 }
    }
  }'

Use "method": "tools/list" to read the live schemas — they are the authority if this table ever falls behind.

Errors and paging

  • Failures come back as tool content with isError: true and a readable message, not as protocol errors — an agent can read it and recover instead of losing its turn.
  • A meeting that is not yours is indistinguishable from one that does not exist. Both answer “it does not exist, or it is not yours”.
  • No response is unbounded. get_transcript caps a reply at 40,000 characters and returns truncated: true with a next_offset — it never cuts off silently.

Transcripts are untrusted input

A transcript is whatever someone said into a meeting, and it lands straight in a model's context. Transcript and snippet payloads arrive wrapped in a delimited block labelled untrusted, but if you build on this, keep treating that text as data — never as instructions.

Automation webhook

Settings → Developer

Give EchoBrief an HTTPS URL and it POSTs a JSON payload there within a minute of a meeting's insights being ready. A signing secret is minted the first time you save a URL; every delivery attempt is logged on the same card with its status code.

EventWhenNotes
meeting.insights_readyThe first time a meeting finishes processingThe normal case.
meeting.insights_regeneratedInsights were rebuilt for a meeting you already receivedFires on a speaker rename or a manual regenerate. Same shape — upsert on meeting.id rather than inserting again.

Payload

json
{
  "event": "meeting.insights_ready",
  "occurred_at": "2026-09-08T11:31:07.914Z",
  "meeting": {
    "id": "f09a4803-....",
    "title": "Acme — pricing review",
    "start_time": "2026-09-08T10:30:00Z",
    "end_time": "2026-09-08T11:12:00Z",
    "duration_seconds": 2520,
    "attendees": ["priya@acme.com"],
    "languages": { "en": 0.78, "hi": 0.22 },
    "url": "https://www.echobrief.in/meeting/f09a4803-...."
  },
  "summary_short": "Acme agreed to the annual plan ...",
  "action_items": [
    { "task": "Send the revised quote", "owner": "You", "due_date": "2026-09-10" }
  ],
  "decisions": ["Move to annual billing from October"],
  "facts": {
    "meeting_type": "sales_call",
    "numbers": [{ "value": "18%", "context": "discount asked for", "quote": "...", "ts": 742 }],
    "commitments": [],
    "explicit_asks": [],
    "objections": []
  },
  "coaching_summary": "Strong discovery; the next step was not dated."
}

The transcript is never sent. The payload is deliberately compact: enough to file a CRM note or open a ticket, not a copy of the meeting. Fetch the rest over MCP if you need it.

Verifying the signature

Deliveries are signed with Standard Webhooks headers, so most libraries verify them out of the box:

HeaderExampleMeaning
webhook-idmsg_3f9a…Unique per delivery. Use it to de-duplicate.
webhook-timestamp1757330267Unix seconds. Reject anything far from now.
webhook-signaturev1,base64…HMAC-SHA256 of {id}.{timestamp}.{body} using your secret.
javascript
import crypto from 'node:crypto';

function verify(rawBody, headers, secret) {
  const id = headers['webhook-id'];
  const ts = headers['webhook-timestamp'];
  const expected =
    'v1,' +
    crypto.createHmac('sha256', secret)
      .update(`${id}.${ts}.${rawBody}`)
      .digest('base64');

  // Reject replays before comparing.
  if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;

  const a = Buffer.from(expected);
  const b = Buffer.from(headers['webhook-signature']);
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Sign over the raw request body, before any JSON parsing — re-serialising changes the bytes and the signature will never match.

One attempt, no retries

EchoBrief POSTs once, with a 10-second timeout, and records the outcome. It does not retry — a slow or sleeping endpoint misses that meeting. Answer 2xx immediately and do your work afterwards, and treat the webhook as a nudge: the meeting is always readable over MCP if a delivery was missed.

Limits & scoping

LimitValueWhat happens at the edge
MCP requests60 per minute per tokenApproximate rather than a hard global cap — you are identified and revocable, so it exists to catch runaway loops, not to ration you.
Active tokens10 per accountRevoke one to mint another.
list_meetings / search_meetings / get_action_items100 / 25 / 50 rowsPage with from and to rather than raising the limit.
get_transcript40,000 characters per replyReturns truncated: true and a next_offset.
Webhook delivery10-second timeout, no retryLogged with its status code in Settings → Developer.

Scoping is enforced by the database. A token is exchanged for a short-lived identity that is you, and every query runs under the same row-level rules the web app does — so a bug in a tool returns nothing rather than somebody else's meeting. Internal pre- and post-meeting zones stay out of anything shared or automated unless you explicitly ask for them.

Retention follows your plan: once a meeting's content passes the retention window it is removed from the API too, and the meeting row stays with a note that its content expired. See Privacy & data.

Troubleshooting

The bot never joined the meeting

It was probably not admitted from the waiting room in time, and the meeting is marked Cancelled. Give the bot a recognisable name in Settings and let your host know to expect it.

The meeting says Failed

Open the meeting — the reason is shown on the record. The usual cause is an invalid or expired meeting link. Check the link and start a new recording.

The transcript is empty or says no clear speech was detected

The recording captured silence. Common causes: everyone was on mute, the bot joined a call that never started, or the meeting used a device the platform did not route audio from.

Speakers show as SPEAKER_00 instead of names

Participant information was not available for that recording. The transcript and the analysis are still accurate — only the labels are generic.

A long meeting is still processing

Long recordings are split into chunks and transcribed in parallel, which takes longer than a short call. If a meeting has not completed after about twenty minutes, contact support with the meeting title.

I did not get the summary email

Check Settings → Email summaries is enabled, and look in spam for a message from hello@echobrief.in. The report is always in the dashboard regardless.

Privacy & data

What we store, and who sees it
  • Recording is visible. The bot joins as a named participant, so everyone in the call can see a recorder is present.
  • Your data is yours. Meetings, transcripts, and insights are scoped to your account and enforced at the database level — not merely filtered in the interface.
  • Audio is deleted after roughly 30 days. Transcripts and insights are retained until you delete them.
  • Processing partners. Delivering these features means meeting content passes through the recording, speech-to-text, AI analysis, and email providers named in our Privacy Policy. It is not sold or used for advertising.
  • Deleting works. Delete a meeting to remove its record, or delete your account from Settings to remove everything.

Full detail in the Privacy Policy and Terms.

Delete your account

Go to Settings → Security → Delete Account, type DELETE to confirm, and your account is removed along with every meeting, transcript, insight and recording it owned. You are signed out immediately.

This cannot be undone

Deletion is permanent — there is no grace period and no recovery. Export anything you want to keep first.

DPDP compliance

EchoBrief is built to operate under India's Digital Personal Data Protection Act, 2023. In practice that means:

  • Recording is never covert — the bot is a visible participant.
  • Data is encrypted in transit and at rest by our infrastructure providers.
  • Access to your meetings is restricted to your account.
  • You can access, export, and delete your data, including your whole account.
  • Processing partners are disclosed in the Privacy Policy.

Consent is a shared responsibility

Recording laws vary by jurisdiction and by the kind of conversation. EchoBrief makes the bot visible, but you are responsible for having whatever consent your meetings and your local law require.

FAQ

Do participants know they are being recorded?

Yes. The bot appears in the participant list with the name you set.

Does EchoBrief need microphone access?

No. Nothing is captured from your browser or device — the bot records from inside the meeting.

Can I record a meeting I did not organise?

Yes, if you have the link and someone admits the bot.

What happens if I leave early?

The bot stays until the meeting ends and records the whole call.

Can I edit a summary?

Not yet. The transcript is the source of record; you can copy from it.

Is there a limit on meeting length?

Long meetings are supported — they are split into chunks for transcription and take longer to process.

Contact support

When reporting a problem with a specific meeting, include the meeting title and roughly when it took place — that is enough for us to find it.

Last updated: 21 August 2026 · © 2026 Oltaflock AI. All rights reserved.