Webex Bot MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WEBEX_ACCESS_TOKEN | Yes | Your Webex bot access token |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_webex_roomsA | List Webex rooms that the authenticated bot belongs to. Args: team_id: Optional team ID to filter rooms by team room_type: Optional room type filter ('direct' or 'group') sort_by: Optional sort order ('id', 'lastactivity', 'created') max_results: Optional maximum number of rooms to return (default 100, max 1000) Returns: Standardized response dictionary with success/error information |
| create_webex_roomB | Create a new Webex room. Args: title: Title of the room (required) team_id: Team ID to create room in (optional) classification_id: Classification for the room (optional) is_locked: Whether the room is locked (optional; same property as is_moderated) is_moderated: Whether the room is moderated (optional; same property as is_locked) is_public: Whether the room is public (optional) is_announcement_only: Whether only moderators can post (optional) description: Description of the room (optional) Returns: Standardized response dictionary with success/error information |
| update_webex_roomA | Update an existing Webex room. Args: room_id: Room ID to update (required) title: New title for the room (optional) classification_id: New classification for the room (optional) is_locked: Whether the room should be locked (optional; same property as is_moderated) is_moderated: Whether the room should be moderated (optional; same property as is_locked) is_public: Whether the room should be public (optional) is_announcement_only: Whether only moderators can post (optional) description: New description for the room (optional) Returns: Standardized response dictionary with success/error information |
| get_webex_roomA | Get detailed information about a specific Webex room. Args: room_id: Room ID to get details for (required) Returns: Standardized response dictionary with success/error information |
| delete_webex_roomA | Delete a Webex room. Args: room_id: Room ID to delete (required) Returns: Standardized response dictionary with success/error information |
| list_webex_spacesA | List Webex spaces that the authenticated bot belongs to. Note: This is an alias for list_webex_rooms — "room" and "space" are synonymous in Webex. Args: team_id: Optional team ID to filter spaces by team space_type: Optional space type filter ('direct' or 'group') sort_by: Optional sort order ('id', 'lastactivity', 'created') max_results: Optional maximum number of spaces to return (default 100, max 1000) Returns: Standardized response dictionary with success/error information |
| create_webex_spaceA | Create a new Webex space. Note: This is an alias for create_webex_room — "room" and "space" are synonymous in Webex. Args: title: Title of the space (required) team_id: Team ID to create space in (optional) classification_id: Classification for the space (optional) is_locked: Whether the space is locked (optional; same property as is_moderated) is_moderated: Whether the space is moderated (optional; same property as is_locked) is_public: Whether the space is public (optional) is_announcement_only: Whether only moderators can post (optional) description: Description of the space (optional) Returns: Standardized response dictionary with success/error information |
| update_webex_spaceA | Update an existing Webex space. Note: This is an alias for update_webex_room — "room" and "space" are synonymous in Webex. Args: space_id: Space ID to update (required) title: New title for the space (optional) classification_id: New classification for the space (optional) is_locked: Whether the space should be locked (optional; same property as is_moderated) is_moderated: Whether the space should be moderated (optional; same property as is_locked) is_public: Whether the space should be public (optional) is_announcement_only: Whether only moderators can post (optional) description: New description for the space (optional) Returns: Standardized response dictionary with success/error information |
| get_webex_spaceB | Get detailed information about a specific Webex space. Note: This is an alias for get_webex_room — "room" and "space" are synonymous in Webex. Args: space_id: Space ID to get details for (required) Returns: Standardized response dictionary with success/error information |
| delete_webex_spaceA | Delete a Webex space. Note: This is an alias for delete_webex_room — "room" and "space" are synonymous in Webex. Args: space_id: Space ID to delete (required) Returns: Standardized response dictionary with success/error information |
| send_webex_messageB | Send a message to a Webex room or person. Args: room_id: Room ID to send the message to (use this OR to_person_id/to_person_email) to_person_id: Person ID to send a direct message to to_person_email: Person email to send a direct message to text: Plain text message content markdown: Markdown formatted message content html: HTML formatted message content (for buttons/cards) files: URL to attach (single file URL as a string) parent_id: Parent message ID for threaded replies Returns: Standardized response dictionary with success/error information Examples: # Send to room result = send_webex_message( room_id="Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIx", text="Hello team!" ) |
| send_webex_message_with_mentionsA | Send a message to a Webex room or person with proper mention support. Args: room_id: Room ID to send the message to (use this OR to_person_id/to_person_email) to_person_id: Person ID to send a direct message to to_person_email: Person email to send a direct message to text: Plain text message content markdown: Markdown formatted message content html: HTML formatted message content (for buttons/cards) files: URL to attach (single file URL as a string) parent_id: Parent message ID for threaded replies mentions: List of mention dicts with keys: - type: "email", "person_id", or "all" - value: email address or person ID (not needed for "all") - display_name: optional display name Returns: Standardized response dictionary with success/error information |
| list_webex_messagesB | List messages from a Webex room. Args: room_id: Room ID to get messages from (required) mentioned_people: Person ID to filter messages that mention them before: Get messages before this date (ISO 8601 format) before_message: Get messages before this message ID max_results: Maximum number of messages to return (default 50, max 1000) Returns: Standardized response dictionary with success/error information |
| delete_webex_messageA | Delete a Webex message. Args: message_id: ID of the message to delete (required) Returns: Standardized response dictionary with success/error information |
| update_webex_messageA | Edit an existing Webex message. Only the bot or user that sent the original message may edit it. At least one of text or markdown must be provided. Args: message_id: ID of the message to edit (required) text: New plain text content markdown: New markdown content Returns: Standardized response dictionary with success/error information |
| get_webex_attachment_actionA | Retrieve the form data submitted when a user clicks an Adaptive Card button. This MCP server makes outbound calls to Webex — it does NOT receive inbound webhook events. The action_id must be obtained externally: your own bot application (a separate HTTP server with a public HTTPS endpoint) receives the webhook POST from Webex, extracts the "id" field from the payload, and then supplies that action_id here so this tool can fetch the full submission. Flow: 1. User clicks a card button in Webex. 2. Webex POSTs the event to your bot's registered webhook endpoint. 3. Your bot extracts action_id from payload["data"]["id"]. 4. Your bot (or an AI agent) calls this tool with that action_id. 5. This tool calls GET /attachment/actions/{id} and returns the inputs. A webhook must be registered via create_webex_webhook with resource="attachmentActions" and event="created" for step 2 to occur — without it, card submissions are silently dropped by Webex. Args: action_id: ID of the attachment action to retrieve (required). Comes from payload["data"]["id"] in the webhook POST your bot application receives from Webex. Returns: Standardized response dictionary with success/error information. The data dict contains the submitted form inputs under the "inputs" key, along with the associated messageId, roomId, and personId. |
| send_webex_space_messageA | Send a message to a Webex space or person. Note: This is an alias for send_webex_message — "room" and "space" are synonymous in Webex. Args: space_id: Space ID to send the message to (use this OR to_person_id/to_person_email) to_person_id: Person ID to send a direct message to to_person_email: Person email to send a direct message to text: Plain text message content markdown: Markdown formatted message content html: HTML formatted message content (for buttons/cards) files: URL to attach (single file URL as a string) parent_id: Parent message ID for threaded replies Returns: Standardized response dictionary with success/error information |
| list_webex_space_messagesA | List messages from a Webex space. Note: This is an alias for list_webex_messages — "room" and "space" are synonymous in Webex. Args: space_id: Space ID to get messages from (required) mentioned_people: Person ID to filter messages that mention them before: Get messages before this date (ISO 8601 format) before_message: Get messages before this message ID max_results: Maximum number of messages to return (default 50, max 1000) Returns: Standardized response dictionary with success/error information |
| send_webex_adaptive_cardA | Send an Adaptive Card message to a Webex room or person. Adaptive Cards are rich, interactive message attachments. Clients that do not support cards will display fallback_text instead. IMPORTANT — Webhook limitation: Card action submissions (Action.Submit) are delivered to the bot only if a webhook is registered for the "attachmentActions" resource on the Webex platform. Without that webhook, submissions are silently dropped and the bot never receives them. Inform the user of this limitation whenever the card includes interactive actions. To receive submissions, a webhook must be created at developer.webex.com or via the Webex Webhooks API targeting the bot's public HTTPS endpoint. Args: room_id: Room ID to send the card to (use this OR to_person_id/to_person_email) to_person_id: Person ID to send a direct card to to_person_email: Person email to send a direct card to card_body: List of Adaptive Card body elements (required, non-empty). Each element must have a "type" field (e.g. "TextBlock", "Image", "ColumnSet"). Use build_webex_adaptive_card to generate this from high-level inputs. fallback_text: Plain-text fallback shown to clients that do not support cards (required) card_actions: Optional list of action objects (Action.OpenUrl, Action.Submit, etc.) card_version: Adaptive Card schema version — one of "1.0", "1.1", "1.2", "1.3" (default "1.3") parent_id: Parent message ID for threaded replies Returns: Standardized response dictionary with success/error information Examples: result = send_webex_adaptive_card( room_id="Y2lzY29zcGFyazovL3VzL1JPT00v...", fallback_text="Build passed", card_body=[ {"type": "TextBlock", "text": "Build Passed", "weight": "Bolder", "size": "Medium"}, {"type": "TextBlock", "text": "All 42 tests green", "color": "Good"}, ], card_actions=[ {"type": "Action.OpenUrl", "title": "View Logs", "url": "https://ci.example.com"} ], ) |
| send_webex_space_adaptive_cardA | Send an Adaptive Card to a Webex space or person. Note: This is an alias for send_webex_adaptive_card — "room" and "space" are synonymous in Webex. IMPORTANT — Webhook limitation: Card action submissions (Action.Submit) are delivered to the bot only if a webhook is registered for the "attachmentActions" resource on the Webex platform. Without that webhook, submissions are silently dropped and the bot never receives them. Inform the user of this limitation whenever the card includes interactive actions. Args: space_id: Space ID to send the card to (use this OR to_person_id/to_person_email) to_person_id: Person ID to send a direct card to to_person_email: Person email to send a direct card to card_body: List of Adaptive Card body elements (required, non-empty) fallback_text: Plain-text fallback for clients that do not support cards (required) card_actions: Optional list of action objects card_version: Adaptive Card schema version — "1.0", "1.1", "1.2", or "1.3" (default "1.3") parent_id: Parent message ID for threaded replies Returns: Standardized response dictionary with success/error information |
| build_webex_adaptive_cardA | Build an Adaptive Card from high-level inputs without hand-crafting the schema. Returns card_body and card_actions ready to pass directly to send_webex_adaptive_card. Makes no API calls — pure construction only. Args: title: Card title displayed as bold text (required) body_text: Optional body paragraph displayed below the title/subtitle subtitle: Optional subtitle displayed below the title in muted text image_url: Optional image URL displayed in the card facts: Optional list of {"title": "...", "value": "..."} key-value pairs displayed as a FactSet table actions: Optional list of action dicts. Each must have "type" ("url" or "submit") and "title". URL actions also need "url"; submit actions accept optional "data". Example: [{"type": "url", "title": "Open", "url": "https://example.com"}] style: Container accent color — "default", "emphasis", "good", "warning", or "attention" Returns: Dict with "card_body" and "card_actions" keys ready for send_webex_adaptive_card, or a standardized error response dict if validation fails. Examples: card = build_webex_adaptive_card( title="Deployment Complete", subtitle="Production • v2.3.1", body_text="All health checks passed.", facts=[{"title": "Region", "value": "us-east-1"}, {"title": "Duration", "value": "4m 12s"}], actions=[{"type": "url", "title": "View Dashboard", "url": "https://dash.example.com"}], style="good", ) result = send_webex_adaptive_card(room_id="...", fallback_text="Deployment Complete", **card) |
| list_webex_membershipsC | List memberships for a room or person. Args: room_id: Room ID to get memberships for person_id: Person ID to get memberships for person_email: Person email to get memberships for max_results: Maximum number of memberships to return (default 100, max 1000) Returns: Standardized response dictionary with success/error information |
| add_webex_membershipC | Add a person to a Webex room. Args: room_id: Room ID to add person to (required) person_id: Person ID to add (use this OR person_email) person_email: Person email to add (use this OR person_id) is_moderator: Whether to make the person a moderator (optional) Returns: Standardized response dictionary with success/error information |
| update_webex_membershipA | Update an existing Webex membership (change moderator/monitor status). Args: membership_id: Membership ID to update (required) is_moderator: Whether the person should be a moderator (optional) is_monitor: Whether the person should be a monitor (optional) Returns: Standardized response dictionary with success/error information |
| delete_webex_membershipA | Remove a person from a Webex room by deleting their membership. Args: membership_id: Membership ID to delete (required). Use list_webex_memberships to find the membership ID for a person in a room. Returns: Standardized response dictionary with success/error information |
| list_webex_space_membershipsA | List memberships for a space or person. Note: This is an alias for list_webex_memberships — "room" and "space" are synonymous in Webex. Args: space_id: Space ID to get memberships for person_id: Person ID to get memberships for person_email: Person email to get memberships for max_results: Maximum number of memberships to return (default 100, max 1000) Returns: Standardized response dictionary with success/error information |
| add_webex_space_membershipA | Add a person to a Webex space. Note: This is an alias for add_webex_membership — "room" and "space" are synonymous in Webex. Args: space_id: Space ID to add person to (required) person_id: Person ID to add (use this OR person_email) person_email: Person email to add (use this OR person_id) is_moderator: Whether to make the person a moderator (optional) Returns: Standardized response dictionary with success/error information |
| get_webex_meA | Get information about the authenticated Webex bot. Returns: Standardized response dictionary with success/error information |
| list_webex_peopleA | List people in the organization or search for specific people. Args: email: Email address to search for display_name: Display name to search for person_id: Person ID to look up a specific person org_id: Organization ID to filter by calling_data: Include calling data in response location_id: Location ID to filter by max_results: Maximum number of people to return (default 100, max 1000) Returns: Standardized response dictionary with success/error information |
| list_webex_teamsA | List Webex teams the bot belongs to. Bot access note: only teams the bot has been explicitly added to are returned. If the list is empty, a human user must invite the bot to one or more teams first. Teams cannot be created by a bot — use a user/integration token for that. Args: display_name: Filter teams by display name (optional) max_results: Maximum number of teams to return (default 100, max 1000) Returns: Standardized response dictionary with success/error information |
| get_webex_teamA | Get detailed information about a specific Webex team. Bot access note: the bot must be a member of the team. If the team exists but the bot has not been added to it, this will return a not-found error. Args: team_id: Team ID to get details for (required) Returns: Standardized response dictionary with success/error information |
| update_webex_teamA | Update an existing Webex team's name and/or description. Bot access note: the bot must be a team moderator. If the bot is only a regular member, this operation will fail with a forbidden error. Args: team_id: Team ID to update (required) name: New name for the team (optional) description: New description for the team (optional) Returns: Standardized response dictionary with success/error information |
| delete_webex_teamA | Delete a Webex team. Bot access note: the bot must be a team moderator. If the bot is only a regular member, this operation will fail with a forbidden error. Args: team_id: Team ID to delete (required) Returns: Standardized response dictionary with success/error information |
| list_webex_team_membershipsA | List members of a Webex team. Bot access note: the bot must be a member of the team. If the bot has not been added to the team, this will return a not-found error. Args: team_id: Team ID to list members for (required) max_results: Maximum number of memberships to return (default 100, max 1000) Returns: Standardized response dictionary with success/error information |
| add_webex_team_membershipA | Add a person to a Webex team. Bot access note: the bot must be a team moderator to add members. If the bot is only a regular member, this operation will fail with a forbidden error. Args: team_id: Team ID to add person to (required) person_id: Person ID to add (use this OR person_email) person_email: Person email to add (use this OR person_id) is_moderator: Whether to make the person a team moderator (optional) Returns: Standardized response dictionary with success/error information |
| delete_webex_team_membershipA | Remove a person from a Webex team by deleting their team membership. Bot access note: the bot must be a team moderator to remove members. If the bot is only a regular member, this operation will fail with a forbidden error. Use list_webex_team_memberships to find the membership ID for a person. Args: membership_id: Team membership ID to delete (required) Returns: Standardized response dictionary with success/error information |
| webex_health_checkA | Validate Webex connectivity and return a structured diagnostic status. Checks the bot token (identity + API reachability) and, optionally, lists visible rooms to confirm room-access permissions. Designed for agents that need to self-diagnose before starting a workflow. Args: include_rooms: When True (default), also verify room-list access. Returns:
Standardized success response whose |
| list_webex_webhooksC | List all webhooks registered to the bot. Args: max_results: Maximum number of webhooks to return (default 100, max 100) Returns: Standardized response dictionary with success/error information |
| create_webex_webhookA | Register a new webhook with the Webex API. Args: name: A user-friendly name for the webhook (required) target_url: The URL that receives POST requests from Webex (required). Must be a publicly reachable HTTPS endpoint. resource: The Webex resource type to watch (required). Valid values: - "messages" — message events in a room - "rooms" — room created/updated/deleted - "memberships" — room membership changes - "attachmentActions" — Adaptive Card form submissions - "meetings" — meeting lifecycle events event: The event type to listen for (required). Valid values: - "created" — resource was created - "updated" — resource was updated - "deleted" — resource was deleted - "all" — all event types for the resource filter: Optional filter expression to narrow the events received, e.g. "roomId=" for message events in a specific room secret: Optional secret used by Webex to sign webhook payloads (X-Spark-Signature header). Use this to verify authenticity. Returns: Standardized response dictionary with success/error information |
| get_webex_webhookB | Get details for a specific webhook. Args: webhook_id: The webhook ID to retrieve (required) Returns: Standardized response dictionary with success/error information |
| update_webex_webhookA | Update an existing webhook. The Webex API requires both name and target_url on every update, even when only one field is changing. Args: webhook_id: The webhook ID to update (required) name: Updated display name for the webhook (required by Webex API) target_url: Updated HTTPS target URL (required by Webex API) secret: Updated signing secret (optional); pass an empty string to clear it status: Updated status — "active" to re-enable or "inactive" to disable (optional) Returns: Standardized response dictionary with success/error information |
| delete_webex_webhookA | Delete a webhook by ID. Args: webhook_id: The webhook ID to delete (required). Use list_webex_webhooks to find the webhook ID. Returns: Standardized response dictionary with success/error information |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| webex-send-announcement | Send an announcement to a Webex room |
| webex-create-team-room | Create a new team room with proper setup |
| webex-bulk-message | Send messages to multiple rooms or people |
| webex-room-management | Comprehensive room management workflow |
| webex-incident-response | Create incident response room and coordinate team response |
| webex-bot-health-check | Comprehensive bot health and capability assessment |
| webex-compliance-audit | Audit bot usage for compliance and governance |
| webex-design-adaptive-card | Design and send an Adaptive Card for a specific use case |
| webex-handle-card-submission | Process an Adaptive Card form submission received by the bot application |
| webex-edit-message | Correct or update an existing Webex message by its ID |
| webex-setup-webhook | Register a new Webex webhook for a specific resource and event |
| webex-rotate-webhook-secret | Rotate the signing secret on an existing Webex webhook |
| webex-audit-webhooks | Audit all registered webhooks and surface cleanup recommendations |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| webex_getting_started | Getting started guide for Webex Bot MCP |
| webex_message_formatting | Guide for formatting Webex messages |
| webex_adaptive_cards_guide | Guide for creating and sending Adaptive Cards in Webex |
| webex_teams_guide | Bot access model and guidance for Webex Teams tools |
| webex_current_config | Current Webex bot configuration and status |
| webex_troubleshooting | Common issues and troubleshooting guide |
| webex_security_best_practices | Security best practices for Webex bot deployment |
| webex_use_cases | Real-world use cases and implementation examples |
| server_version | Server version and compatibility information |
| changelog | Version changelog and migration guide |
| tools_schema | Complete schema documentation for all available tools |
| error_codes_reference | Complete reference for all error codes |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WebexCommunity/webex-bot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server