Avoma MCP server for AI agents

Live

BEARER TOKEN

MEETING NOTES

Transcription

Read Avoma meeting notes and transcripts with a bearer token, scoped to the signed-in user.

  • Per-user credentials. each call uses the actual user's Avoma bearer token, never a shared bot.
  • Encrypted per-tenant vault. AES-256, resolved at request time, never in LLM context.
  • Scoped before every call. pre-call scope check, 90-day SIEM-exportable audit chain.
Avoma
agent · Acme Q3
Run
Which discovery calls last week have Avoma notes I can review?
S
avoma_meetings_list
94ms
Avoma agent
7 meetings since Sep 15. Acme discovery 41m, Globex pricing 27m, Initech demo 33m. Acme has no next-step note yet.
Sources: 7 meetings, 4 reps, Sep 15 to Sep 21
avoma
7 meetings
18:29
Message Claude...

Tools your meeting agent reaches for on Avoma, scoped per user.

CALL ANY TOOL
List Avoma meeting notes, transcripts, scorecards, and recordings with a bearer token, scoped per user.
avoma_call_create
Create call
Ingest a call record into Avoma from an external dialer or CRM system, so Avoma can process its recording. Creates and returns a call record with its processing state; Avoma downloads the recording from the given URL and processes it like a meeting. Use avoma_call_create when a call happened outside Avoma (e.g. in HubSpot, Twilio, RingCentral) and you want Avoma to transcribe and analyze it; use avoma_call_update to change an existing call's metadata afterward. Requires an Avoma user's email (whose license processes the call) and a publicly downloadable recording_url.
Parameters
Name
Type
Required
Description
direction
string
Required
Direction of the call: 'Inbound' or 'Outbound'. One of: `Inbound`, `Outbound`.
external_id
string
Required
Unique id of the call from the external dialer/CRM system (e.g. HubSpot, Twilio, Zoom). Combined with 'source', this must be unique per organization, creating a call with a duplicate external_id/source pair fails. Example: 1234567890
frm
string
Required
Phone number the call was made from, in E.164-like format. Example: +11234567890
participants
array
Required
List of participants on the call. Put the prospect or lead the call was with first, Avoma uses the first entry to build the call's subject. Each participant needs an email, and may include a name and CRM associations. Example: [{"email": "prospect@customer.com", "name": "Jane Prospect"}]
recording_url
string
Required
Publicly reachable URL of the call recording. Avoma downloads the audio from this URL to transcribe and process the call, so it must be accessible without additional authentication. Example: https://example.com/recording.mp3
source
string
Required
Lowercase string identifying the dialer/system the call came from, e.g. zoom, zoomphone, twilio, phoneburner, ringcentral, aircall. Combined with 'external_id', this must be unique per organization.
start_at
string
Required
Start time of the call, as an ISO 8601 date-time. Example: 2024-01-15T14:30:00Z
to
string
Required
Phone number the call was made to, in E.164-like format. Example: +12234567890
user_email
string
Required
Email of the Avoma user who made or received the call. This must be an existing, active Avoma user in your organization with the dialer feature enabled, their license is used to process the call. Example: rep@company.com
additional_details
string
Optional
Additional metadata about the call, as a JSON-encoded string.
answered
boolean
Optional
Whether the call was answered.
crm_association
array
Optional
CRM records linked to this call as a whole (e.g. a Salesforce or HubSpot contact, account, or opportunity). Example: [{"crm_obj_id": "30447071570", "crm_obj_type": "account"}]
end_at
string
Optional
End time of the call, as an ISO 8601 date-time.
frm_name
string
Optional
Name of the caller who made the call.
is_voicemail
boolean
Optional
Whether this call is a voicemail. Defaults to false. Default: `false`.
to_name
string
Optional
Name of the person the call was made to.
avoma_call_get
Get call
avoma_call_update
Update call
avoma_calls_list
List calls
avoma_engagement_metrics_list
List engagement metrics
avoma_engagement_summary_get
Get engagement summary
avoma_meeting_drop
Meeting drop
avoma_meeting_get
Get meeting
avoma_meeting_outcome_create
Create meeting outcome
avoma_meeting_outcome_delete
Delete meeting outcome
avoma_meeting_outcome_get
Get meeting outcome
avoma_meeting_outcome_update
Update meeting outcome
avoma_meeting_outcomes_list
List meeting outcomes
avoma_meeting_recording_get
Get meeting recording
avoma_meeting_type_get
Get meeting type
avoma_meeting_types_list
List meeting types
avoma_meetings_list
List meetings
avoma_recording_get
Get recording
avoma_revenue_intel_timeline_details_list
List revenue intel timeline details
avoma_scorecard_evaluations_list
List scorecard evaluations
avoma_scorecard_get
Get scorecard
avoma_smart_categories_list
List smart categories
avoma_smart_category_create
Create smart category
avoma_smart_category_get
Get smart category
avoma_smart_category_update
Update smart category
avoma_snippets_list
List snippets
avoma_transcription_get
Get transcription
avoma_transcriptions_list
List transcriptions
avoma_user_engagement_list
List user engagement
avoma_user_engagement_summary_get
Get user engagement summary

For more tools, view docs.

Build your Agent
Same bearer token vault and scoped tool list across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from \"@scalekit-sdk/node\";
import { DynamicStructuredTool } from \"@langchain/core/tools\";
const sk = new ScalekitClient(
process.env.SCALEKIT_ENVIRONMENT_URL,
process.env.SCALEKIT_CLIENT_ID,
process.env.SCALEKIT_CLIENT_SECRET,
);
const page = await sk.tools.listScopedTools(\"user_123\", {
filter: { connectionNames: [\"avoma\"], toolNames: [
\"avoma_meetings_list\",
\"avoma_transcription_get\",
\"avoma_notes_list\",
]}, pageSize: 100,
});
import OpenAI from \"openai\";
import { ScalekitClient } from \"@scalekit-sdk/node\";
const sk = new ScalekitClient(
process.env.SCALEKIT_ENVIRONMENT_URL,
process.env.SCALEKIT_CLIENT_ID,
process.env.SCALEKIT_CLIENT_SECRET,
);
const page = await sk.tools.listScopedTools(\"user_123\", {
filter: { connectionNames: [\"avoma\"], toolNames: [
\"avoma_meetings_list\",
\"avoma_transcription_get\",
\"avoma_notes_list\",
]}, pageSize: 100,
});
const openai = new OpenAI();
import Anthropic from \"@anthropic-ai/sdk\";
import { ScalekitClient } from \"@scalekit-sdk/node\";
const sk = new ScalekitClient(
process.env.SCALEKIT_ENVIRONMENT_URL,
process.env.SCALEKIT_CLIENT_ID,
process.env.SCALEKIT_CLIENT_SECRET,
);
const page = await sk.tools.listScopedTools(\"user_123\", {
filter: { connectionNames: [\"avoma\"], toolNames: [
\"avoma_meetings_list\",
\"avoma_transcription_get\",
\"avoma_notes_list\",
]}, pageSize: 100,
});
const anthropic = new Anthropic();
import { ScalekitClient } from \"@scalekit-sdk/node\";
const sk = new ScalekitClient(
process.env.SCALEKIT_ENVIRONMENT_URL,
process.env.SCALEKIT_CLIENT_ID,
process.env.SCALEKIT_CLIENT_SECRET,
);
const page = await sk.tools.listScopedTools(\"user_123\", {
filter: { connectionNames: [\"avoma\"], toolNames: [
\"avoma_meetings_list\",
\"avoma_transcription_get\",
\"avoma_notes_list\",
]}, pageSize: 100,
});
Try these prompts
Copy a prompt into your agent. Each one maps to Avoma meeting notes for the signed-in user.
Coaching and next steps
Copy the prompt
Copied
Which discovery calls last week have Avoma notes I can review?
Copy the prompt
Copied
Summarize talk ratio and questions asked on the last Acme meeting.
Copy the prompt
Copied
What scorecard evaluations ran on yesterday's Globex call?
Transcripts and recall
Copy the prompt
Copied
Pull the transcript for yesterday's Globex pricing call.
Copy the prompt
Copied
What did the buyer say about budget on the Initech meeting?
Copy the prompt
Copied
List Avoma meetings from the last 14 days.
Notes and snippets
Copy the prompt
Copied
Show AI notes from the last Acme discovery meeting.
Copy the prompt
Copied
Which snippets were saved from the Umratech call?
Copy the prompt
Copied
Get the recording URL for the latest Initech demo.
SEE HOW AUTH WORKS
Your users connect once. Their Avoma bearer tokens stay vaulted, every call is checked, and every action is logged.
1
Authorize
Your user connects
Avoma
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Avoma
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Avoma
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Avoma
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
Reuse the same per-user bearer token vault and audit chain on other call intelligence and CRM connectors.
Support and Ops Teams
Meeting prep
Pulls agenda, participant context, and open action items before every meeting.
GTM and RevOps Teams
Sales call prep agent
Reads tomorrow's calls from Google Calendar, mines past Granola notes and Attio history for context, and delivers each rep a prep brief in Slack, scoped to the calls that rep actually owns.
GTM and RevOps Teams
Deal intelligence agent
Pulls recent Gong calls, scores deal risk with an LLM, cross-references the record in Attio, and DMs each owner their at-risk deals in Slack. Every read is scoped to that rep's own access.
GTM and RevOps Teams
Revenue forecast commentary
Pulls open pipeline from Salesforce and HubSpot, calculates coverage against quota, flags at-risk stages, posts commentary to Slack, and logs every snapshot to Google Sheets.
Test other agents
Reuse the same per-user bearer token vault and audit chain on other call intelligence and CRM connectors.
OPS
Meeting prep agent
Assemble the agenda, HubSpot attendee history, and open action items from Gmail before every meeting on the calendar.
SALES
Sales call prep agent
Read tomorrow's calls from Google Calendar, mine Granola notes and Attio history, and deliver each rep a prep brief in Slack.
SALES
Deal intelligence agent
Score Gong call risk with an LLM, cross-reference the Attio record, and DM each owner their at-risk deals in Slack.
GTM
Revenue forecast agent
Score pipeline coverage against quota across Salesforce and HubSpot, post forecast commentary to Slack, log snapshots to Sheets.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Avoma bearer token makes every transcript lookup look like a bot. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared key
audit → bot_acct

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Avoma today. Others tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Avoma as the user or a shared key?
Per-user resolution. Each tool call uses the signed-in user's Avoma bearer token, so meeting notes and transcripts attribute to that user in the audit log.
Where is the Avoma token stored?
In Scalekit's AES-256 vault, namespaced per tenant. You revoke access from one dashboard without rotating a shared secret across every agent.
Can I limit what the agent does in Avoma?
Yes. Filter tool names in listScopedTools (for example avoma_meetings_list only) and Scalekit checks that scope before the API call.
What happens when a user revokes access?
The next Avoma tool call fails closed for that user. Other users and other connectors are unaffected. The revoke is logged.
Does the agent see every recording in the workspace?
Only the meeting notes and recordings the authorized Avoma bearer token can already read. Scalekit does not broaden that access; it vaults and scopes the existing token.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""avoma"": {
""url"": ""https://mcp.scalekit.com/avoma"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.avoma]
url = ""https://mcp.scalekit.com/avoma""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""avoma"": {
""url"": ""https://mcp.scalekit.com/avoma"",
""type"": ""http""
}
}
}