Webex MCP server for AI agents

Live

OAUTH 2.0

VIDEO MEETINGS

Communication

Webex gives your agent video meetings and team messaging: schedule meetings and invite people, read AI meeting summaries, transcripts, and recordings, and send messages in spaces and direct conversations.

  • Per-user credentials: each call uses the actual user's 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.
Webex
agent · Acme Q3
Run
What did we decide in yesterday's roadmap review?
S
webex_meeting_summary_get
134ms
Meetings agent
The team moved SSO to the November release and cut the reporting redesign from Q4. Dana owns the revised timeline by Friday.
Sources: 1 meeting, AI summary
webex
1 meeting
18:29
Message Claude...

Tools your meetings agent reaches for on Webex, scoped per user.

CALL ANY TOOL
49 tools for video meetings in Webex: schedule and update meetings, invite people, read AI summaries, transcripts, and recordings, send and edit messages, and manage spaces, teams, memberships, and tabs.
webex_attachment_action_get
Get attachment action
Get the data a person submitted from an Adaptive Card (an attachment action), by its ID. Returns id, type, messageId, personId, roomId, inputs (the submitted form values) and created. Use webex_attachment_action_get to read a card response; the ID arrives in an attachmentActions webhook event.
Parameters
Name
Type
Required
Description
attachment_action_id
string
Required
ID of the attachment action (card submission). Example: Y2lzY29zcGFyazovL3VzL0FUVEFDSE1FTlRfQUNUSU9OLzU0MUFFMzBFLUUyQzUtNERENi04NTM4LTgzOTRDODYzM0I3MQ
webex_direct_messages_list
List direct messages
webex_me_get
Get me
webex_meeting_create
Create meeting
webex_meeting_invitee_create
Create meeting invitee
webex_meeting_invitee_get
Get meeting invitee
webex_meeting_invitee_update
Update meeting invitee
webex_meeting_invitees_list
List meeting invitees
webex_meeting_participant_get
Get meeting participant
webex_meeting_sites_list
List meeting sites
webex_meeting_template_get
Get meeting template
webex_meeting_transcript_download
Download meeting transcript
webex_meeting_transcript_snippets_list
List meeting transcript snippets
webex_meeting_transcripts_list
List meeting transcripts
webex_meeting_update
Update meeting
webex_membership_get
Get membership
webex_memberships_list
List memberships
webex_message_create
Create message
webex_message_update
Update message
webex_people_list
List people
webex_person_get
Get person
webex_recordings_query
Query recordings
webex_room_create
Create room
webex_room_get
Get room
webex_room_tab_update
Update room tab
webex_room_tabs_list
List room tabs
webex_team_create
Create team
webex_team_get
Get team
webex_team_membership_update
Update team membership
webex_team_memberships_list
List team memberships

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Webex tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["webex"], toolNames: [
    "webex_meetings_list",
    "webex_meeting_summary_get",
    "webex_message_create"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Summarize yesterday's roadmap review and post it in the Engineering space" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["webex"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Summarize yesterday's roadmap review and post it in the Engineering space" }],
  tools,
});

// Execute the tool call with the user's vaulted Webex OAuth token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["webex"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Summarize yesterday's roadmap review and post it in the Engineering space" }],
  tools,
});

// Tool call runs with the user's vaulted Webex OAuth token
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["webex"] }, pageSize: 100,
});

const agent = new Agent({
  name: "meetings_agent",
  model: "gemini-2.5-pro",
  instruction: "Webex tools scoped to this user",
  tools,
});

await agent.run("Summarize yesterday's roadmap review and post it in the Engineering space");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Webex tool. Click to copy, paste into your agent, done.
Meetings
Copy the prompt
Copied
Schedule a Webex meeting called Q4 Planning for Tuesday at 10am and invite dana@acme.com.
Copy the prompt
Copied
List my Webex meetings for this week.
Copy the prompt
Copied
Get join links for the 2pm customer call.
Summaries and transcripts
Copy the prompt
Copied
Summarize yesterday's roadmap review.
Copy the prompt
Copied
Download the transcript of Monday's all-hands as plain text.
Copy the prompt
Copied
Find recordings of the design reviews I hosted this month.
Spaces and messages
Copy the prompt
Copied
Post the release notes in the Engineering space.
Copy the prompt
Copied
List the latest messages in the Launch Team space.
Copy the prompt
Copied
Create a space called Acme Onboarding and add priya@acme.com.
SEE HOW AUTH WORKS
Each user signs in to Webex once, and Scalekit stores and refreshes their tokens. Credentials stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Webex
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
Webex
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
Webex
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
Webex
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
See the same per-user auth pattern across other communication and collaboration connectors.
Support and Ops Teams
Meeting prep
Pulls agenda, participant context, and open action items before every meeting.
Engineering Teams
Engineering standup agent
Pulls commits from GitHub and GitLab, tracks issue movement in Jira, and posts a per-engineer standup brief to Slack. Each engineer's activity is read on their own delegated OAuth.
Engineering Teams
Slack triage
Polls Slack for new messages, classifies bugs and support requests with a LangGraph router, files GitHub issues or Zendesk tickets, and confirms in the thread.
Test other agents
See the same per-user auth pattern across other communication and collaboration connectors.
OPS
Meeting prep agent
Assemble the agenda, HubSpot attendee history, and open action items from Gmail before every meeting on the calendar.
ENGINEERING
Engineering standup agent
Pull commits from GitHub and GitLab, track Jira issue movement, and post a per-engineer standup brief to Slack.
ENGINEERING
Slack triage agent
Classify new Slack messages as bugs or support requests, file the GitHub issue or Zendesk ticket, and reply in the thread.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Webex token looks fine in a demo. In production every meeting and message looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Webex today. Ten connectors 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 Webex as the user or through a shared token?
As the user. Each user signs in to Webex once, and Scalekit stores and refreshes their tokens. Meetings the agent schedules and messages it sends are attributed to that user in your audit trail, not a shared service account.
Where is the Webex OAuth token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Webex?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example the meeting, summary, and transcript tools without webex_message_create or webex_meeting_create. None of the 49 tools delete data. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Webex access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Can the agent read Webex meeting summaries and transcripts?
Yes, for the connected user's meetings. webex_meeting_summary_get returns the AI-generated summary of an ended meeting, and webex_meeting_transcript_download returns the full transcript as WebVTT or plain text. webex_meeting_transcript_snippets_list returns speaker-attributed lines.
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"": {
""webex"": {
""url"": ""https://mcp.scalekit.com/webex"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.webex]
url = ""https://mcp.scalekit.com/webex""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""webex"": {
""url"": ""https://mcp.scalekit.com/webex"",
""type"": ""http""
}
}
}