> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Webex

The Webex connector lets your AI agent act in each user's Webex account. Each user signs in to Webex once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 49 tools.

**Authentication:** OAuth 2.0
**Categories:** Communication, Collaboration
**Tools:** 49: 31 read, 18 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Webex app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=WEBEX)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Webex connection

   In **AgentKit > Connections**, create a Webex connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Webex connections use your own OAuth app. Register one with Webex and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Webex connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'webex'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Webex:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'webex_direct_messages_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "webex"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Webex:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="webex_direct_messages_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'webex_attachment_action_get',
  toolInput: {
    attachment_action_id: '<attachment_action_id>',
  },
  connector: 'webex',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="webex_attachment_action_get",
    tool_input={
        "attachment_action_id": "<attachment_action_id>",
    },
    connection_name="webex",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `webex_attachment_action_get`

Get Card Submission · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attachment_action_id` (`string`, required): ID of the attachment action (card submission). Example: Y2lzY29zcGFyazovL3VzL0FUVEFDSE1FTlRfQUNUSU9OLzU0MUFFMzBFLUUyQzUtNERENi04NTM4LTgzOTRDODYzM0I3MQ

Example input: `{"attachment_action_id":"<attachment_action_id>"}`

### `webex_direct_messages_list`

List Direct Messages · Read-only

List the messages in the 1:1 (direct) conversation between the connected user and one person, newest first.
Returns an items array of messages with id, roomId, text, markdown, files, attachments, personEmail, parentId and created.
Use webex_direct_messages_list when you know the other person but not the space ID. Use webex_messages_list for group spaces. Pass person_id or person_email.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `parent_id` (`string`, optional): Only list replies to this parent message (one thread). Example: Y2lzY29zcGFyazovL3VzL01FU1NBR0UvZWM1ZTIzZjAtN2RhMS0xMWU5LTg2NTgtZTkzYzNiODZjZmFm
- `person_email` (`string`, optional): Email of the other person in the 1:1 conversation. Provide this or person_id. Example: john.andersen@example.com
- `person_id` (`string`, optional): ID of the other person in the 1:1 conversation. Provide this or person_email. Get it from webex_people_list or webex_me_get. Example: Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIzNjE4Ny1jOGRkLTQ3MjctOGIyZi1mOWM0NDdmMjkwNDY

Example input: `{}`

### `webex_me_get`

Get My Profile · Read-only

Get the Webex profile of the connected user.
Returns the user's id, emails, displayName, firstName, lastName, avatar, orgId, created and status.
Use webex_me_get to learn who is connected, for example to get their person ID. Use webex_person_get for anyone else.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `webex_meeting_get`

Get Meeting · Read-only

Get one Webex meeting series, scheduled meeting or meeting instance by its ID.
Returns the meeting's id, meetingNumber, title, agenda, start, end, timezone, recurrence, state, meetingType, hostEmail, webLink, sipAddress and dial-in details.
Use webex_meeting_get when you have the meeting ID. Use webex_meetings_list to find meetings.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_id` (`string`, required): ID of the meeting series, scheduled meeting or meeting instance. Get it from webex_meetings_list. Example: 870f51ff287b41be84648412901e0402
- `current` (`boolean`, optional): For a meeting series: true returns the current scheduled occurrence, false or empty returns the whole series. Example: true
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `password` (`string`, optional): Meeting password, sent as the password request header. Needed only when the meeting is password protected and the connected user is not its host, cohost or invitee. Example: BgJep@4323
- `timezone` (`string`, optional): IANA time zone used for the timestamps in the response, sent as the timezone request header. Defaults to UTC when empty. Example: America/Los_Angeles

Example input: `{"meeting_id":"<meeting_id>"}`

### `webex_meeting_invitee_get`

Get Meeting Invitee · Read-only

Get one meeting invitee by ID.
Returns id, email, displayName, coHost, meetingId and panelist.
Use webex_meeting_invitee_get when you have the invitee ID. Use webex_meeting_invitees_list to find it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_invitee_id` (`string`, required): ID of the meeting invitee. Get it from webex_meeting_invitees_list. Example: 870f51ff287b41be84648412901e0402_2628962
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com

Example input: `{"meeting_invitee_id":"<meeting_invitee_id>"}`

### `webex_meeting_invitees_list`

List Meeting Invitees · Read-only

List the invitees of a Webex meeting series, scheduled meeting or meeting instance.
Returns an items array of invitees with id, email, displayName, coHost, meetingId and panelist.
Use webex_meeting_invitees_list to see who is invited or to find an invitee ID. Use webex_meeting_participants_list for who actually joined.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_id` (`string`, required): ID of the meeting. Get it from webex_meetings_list. Example: 870f51ff287b41be84648412901e0402
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `max` (`integer`, optional): Maximum number of results to return in one response. Up to 100; Webex returns 10 when empty. Example: 50
- `panelist` (`string`, optional): Webinars only: true lists panelists, false lists attendees; empty lists both. Example: true. One of: `true`, `false`.

Example input: `{"meeting_id":"<meeting_id>"}`

### `webex_meeting_participant_get`

Get Meeting Participant · Read-only

Get one participant of a live or ended Webex meeting.
Returns id, email, displayName, host, coHost, state, joinedTime, leftTime, video, muted and devices.
Use webex_meeting_participant_get when you have the participant ID from webex_meeting_participants_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `participant_id` (`string`, required): ID of the participant; it combines the meeting ID and the participant. Example: 560d7b784f5143e3be2fc3064a5c4999_3c2e2338-e950-43bf-b588-573773ee43d1
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com

Example input: `{"participant_id":"<participant_id>"}`

### `webex_meeting_participants_list`

List Meeting Participants · Read-only

List the people who joined an in-progress or ended Webex meeting the connected user hosts.
Returns an items array of participants with id, email, displayName, host, coHost, state, joinedTime, leftTime and devices.
Use webex_meeting_participants_list for attendance. Use webex_meeting_invitees_list for who was invited. Requires the meeting host or an admin.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_id` (`string`, required): ID of the meeting. For a series, the last instance is used. Personal room meeting IDs are not supported. Example: 0ed74a1c0551494fb7a04e2881bf50ae_I_166022169160077044
- `breakout_session_id` (`string`, optional): Ended meetings only: list who joined this breakout session. Example: c84ba778-2f46-4dc6-9459-398694732d70
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `join_time_from` (`string`, optional): Only participants who joined at or after this ISO 8601 time. The join window can be at most 7 days. Example: 2026-10-22T09:30:00Z
- `join_time_to` (`string`, optional): Only participants who joined before this ISO 8601 time. Example: 2026-10-25T09:30:00Z
- `max` (`integer`, optional): Maximum number of results to return in one response. Up to 100; Webex returns 10 when empty. Example: 50
- `meeting_start_time_from` (`string`, optional): Only instances that started after this ISO 8601 time (exclusive). Example: 2026-10-01T00:00:00Z
- `meeting_start_time_to` (`string`, optional): Only instances that started before this ISO 8601 time (exclusive). Example: 2026-10-31T00:00:00Z
- `timezone` (`string`, optional): IANA time zone used for the timestamps in the response, sent as the timezone request header. Defaults to UTC when empty. Example: America/Los_Angeles

Example input: `{"meeting_id":"<meeting_id>"}`

### `webex_meeting_sites_list`

List Meeting Sites · Read-only

List the Webex sites the connected user can schedule meetings on, and which one is their default.
Returns a sites array with siteUrl and default for each site.
Use webex_meeting_sites_list to get a site_url for the meeting, recording and transcript tools.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `site_url` (`string`, optional): Webex site to read the user from from, as a host name. Leave empty to use the user's default site(s). Get the sites with webex_meeting_sites_list. Example: example.webex.com
- `user_email` (`string`, optional): Admins only: list the sites of this user instead of the connected user. Example: john.andersen@example.com

Example input: `{}`

### `webex_meeting_summary_get`

Get Meeting Summary · Read-only

Get the AI-generated summary of an ended Webex meeting instance.
Returns the summary's id, meetingId, notes (the summary text) and actionItems.
Use webex_meeting_summary_get after a meeting ends. Find instances with summaries via webex_meetings_list has_summary true.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_id` (`string`, required): ID of an ended meeting instance. Series, scheduled, in-progress and personal room meeting IDs are not supported. Example: 0ed74a1c0551494fb7a04e2881bf50ae_I_166022169160077044

Example input: `{"meeting_id":"<meeting_id>"}`

### `webex_meeting_template_get`

Get Meeting Template · Read-only

Get one meeting template with its full meeting settings.
Returns id, name, locale, siteUrl, templateType, isDefault, isStandard and the meeting settings the template applies.
Use webex_meeting_template_get to inspect a template before using its ID in webex_meeting_create.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `template_id` (`string`, required): ID of the meeting template. Get it from webex_meeting_templates_list. Example: N2Q3ZWE1ZjQyYjkyMWVhY2UwNTM4NmNhMjRhZDczMGU6VS0yMDA5NzItTUMtZW5fVVM
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `timezone` (`string`, optional): IANA time zone used for the timestamps in the response, sent as the timezone request header. Defaults to UTC when empty. Example: America/Los_Angeles

Example input: `{"template_id":"<template_id>"}`

### `webex_meeting_templates_list`

List Meeting Templates · Read-only

List the meeting and webinar templates available to the connected user.
Returns an items array of templates with id, name, locale, siteUrl, templateType, isDefault and isStandard.
Use webex_meeting_templates_list to pick a template_id for webex_meeting_create. Use webex_meeting_template_get for the full template.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `is_default` (`boolean`, optional): true for only default templates, false for only non-default ones. Example: true
- `is_standard` (`boolean`, optional): true for only standard templates, false for only custom ones. Example: true
- `locale` (`string`, optional): Template locale. Webex uses en_US when empty. Example: en_US
- `site_url` (`string`, optional): Webex site to read templates from from, as a host name. Leave empty to use the user's default site(s). Get the sites with webex_meeting_sites_list. Example: example.webex.com
- `template_type` (`string`, optional): Only meeting or webinar templates. Example: meeting. One of: `meeting`, `webinar`.

Example input: `{}`

### `webex_meeting_transcript_download`

Download Meeting Transcript · Read-only

Download the full text of a Webex meeting transcript as WebVTT or plain text.
Returns the transcript file content as text.
Use webex_meeting_transcript_download for the whole transcript. Use webex_meeting_transcript_snippets_list for structured, speaker-tagged snippets.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `transcript_id` (`string`, required): ID of the transcript. Get it from webex_meeting_transcripts_list. Example: 5e01eeaadedb_M_0fc6ec11d9b6c909e04e1f6c76accda9
- `format` (`string`, optional): File format: vtt (WebVTT with timestamps, the Webex default) or txt (plain text). Example: txt. One of: `vtt`, `txt`.
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com

Example input: `{"transcript_id":"<transcript_id>"}`

### `webex_meeting_transcript_snippets_list`

List Transcript Snippets · Read-only

List the snippets (speaker-attributed lines) of a Webex meeting transcript.
Returns an items array of snippets with id, text, personName, personEmail, offsetMillisecond and durationMillisecond.
Use webex_meeting_transcript_snippets_list to know who said what. Use webex_meeting_transcript_download for the whole file.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `transcript_id` (`string`, required): ID of the transcript. Example: 5e01eeaadedb_M_0fc6ec11d9b6c909e04e1f6c76accda9
- `max` (`integer`, optional): Maximum number of snippets to return. Example: 100

Example input: `{"transcript_id":"<transcript_id>"}`

### `webex_meeting_transcripts_list`

List Meeting Transcripts · Read-only

List the transcripts of the connected user's ended Webex meetings, by time range or for one meeting instance.
Returns an items array of transcripts with id, meetingId, meetingTopic, startTime, status, vttDownloadLink and txtDownloadLink.
Use webex_meeting_transcripts_list to find a transcript ID. Then use webex_meeting_transcript_download for the full text or webex_meeting_transcript_snippets_list for speaker-tagged lines.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, optional): Start of the time range (inclusive), ISO 8601. Defaults to 7 days before to. Example: 2026-10-01T00:00:00Z
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `max` (`integer`, optional): Maximum number of results to return in one response. Between 1 and 100; Webex returns 10 when empty. Example: 50
- `meeting_id` (`string`, optional): ID of an ended meeting instance (not a series or scheduled meeting). Get it from webex_meetings_list with meeting_type meeting. Example: 0ed74a1c0551494fb7a04e2881bf50ae_I_166022169160077044
- `site_url` (`string`, optional): Webex site to read transcripts from from, as a host name. Leave empty to use the user's default site(s). Get the sites with webex_meeting_sites_list. Example: example.webex.com
- `to` (`string`, optional): End of the time range (exclusive), ISO 8601. Defaults to now. Example: 2026-10-08T00:00:00Z

Example input: `{}`

### `webex_meetings_list`

List Meetings · Read-only

List the connected user's Webex meetings: series, scheduled occurrences or past meeting instances, filtered by time range, state or what they contain.
Returns an items array of meetings with id, meetingNumber, title, start, end, timezone, state, meetingType, hostEmail, webLink and sipAddress.
Use webex_meetings_list to find meetings or past instances (meeting_type meeting) for recordings and transcripts. Use webex_meeting_get for one known meeting ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `current` (`boolean`, optional): For a meeting series: true (Webex default) returns the current scheduled meeting of the series, false returns the whole series. Example: false
- `from` (`string`, optional): Start of the time range (inclusive), ISO 8601. Ignored with meeting_number, web_link or room_id. Example: 2026-10-01T00:00:00Z
- `has_chat` (`boolean`, optional): For ended meeting instances: true for only meetings with a chat log, false for only those without. Example: false
- `has_recording` (`boolean`, optional): For ended meeting instances: true for only recorded meetings, false for only unrecorded ones. Example: true
- `has_summary` (`boolean`, optional): For ended meeting instances: true for only meetings with an AI summary, false for only those without. Example: true
- `has_transcription` (`boolean`, optional): For ended meeting instances: true for only meetings with a transcript, false for only those without. Example: true
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `integration_tag` (`string`, optional): Only meetings carrying this external key, set by this integration when it created the meeting. Example: JIRA-1234
- `max` (`integer`, optional): Maximum number of results to return in one response. Up to 100; Webex returns 10 when empty. Ignored with meeting_number, web_link or room_id. Example: 50
- `meeting_number` (`string`, optional): Find the meeting with this meeting number. Cannot be combined with web_link or room_id; other filters are then ignored. Example: 123456789
- `meeting_series_id` (`string`, optional): List all occurrences and instances of this meeting series. Example: 870f51ff287b41be84648412901e0402
- `meeting_type` (`string`, optional): Kind of meeting objects to list: meetingSeries (default), scheduledMeeting (individual occurrences) or meeting (started or ended instances, needed for recordings, transcripts and summaries). Example: meeting. One of: `meetingSeries`, `scheduledMeeting`, `meeting`.
- `room_id` (`string`, optional): ID of the Webex space (room). Find meetings linked to this space. Cannot be combined with meeting_number or web_link. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `scheduled_type` (`string`, optional): Only meetings of this scheduled type: meeting, webinar or personalRoomMeeting. Example: meeting. One of: `meeting`, `webinar`, `personalRoomMeeting`.
- `site_url` (`string`, optional): Webex site to read meetings from, as a host name. Leave empty to use the user's default site(s). Get the sites with webex_meeting_sites_list. Example: example.webex.com
- `state` (`string`, optional): Only meetings in this state: active, scheduled, ready, lobby, inProgress, ended, missed or expired. Ended meetings appear about 15 minutes after they end. Example: ended. One of: `active`, `scheduled`, `ready`, `lobby`, `inProgress`, `ended`, `missed`, `expired`.
- `timezone` (`string`, optional): IANA time zone used for the timestamps in the response, sent as the timezone request header. Defaults to UTC when empty. Example: America/Los_Angeles
- `to` (`string`, optional): End of the time range (exclusive), ISO 8601. Ignored with meeting_number, web_link or room_id. Example: 2026-10-31T00:00:00Z
- `web_link` (`string`, optional): Find the meeting with this join page link (the URL itself, not encoded). Cannot be combined with meeting_number or room_id. Example: https://example.webex.com/example/j.php?MTID=m0123456789abcdef

Example input: `{}`

### `webex_membership_get`

Get Space Membership · Read-only

Get one space (room) membership by its ID.
Returns id, roomId, personId, personEmail, personDisplayName, isModerator, isMonitor, isRoomHidden and created.
Use webex_membership_get when you have the membership ID. Use webex_memberships_list to find it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `membership_id` (`string`, required): ID of the space membership. Get it from webex_memberships_list. Example: Y2lzY29zcGFyazovL3VzL01FTUJFUlNISVAvMGQwYzkxYjYtY2U2MC00NzI1LWI2ZDAtMzQ1NWQ1ZDExZWYzOmNkZTFkZDQwLTJmMGQtMTFlNS1iYTljLTdiNjU1NmQyMjA3Yg

Example input: `{"membership_id":"<membership_id>"}`

### `webex_memberships_list`

List Space Memberships · Read-only

List space (room) memberships: who is in a space, or whether a given person is in it.
Returns an items array of memberships with id, roomId, personId, personEmail, personDisplayName, isModerator, isMonitor and created.
Use webex_memberships_list to see a space's members or find a membership ID. Without room_id it lists the connected user's own memberships.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `max` (`integer`, optional): Maximum number of results to return in one response. Webex returns 100 when empty. Example: 50
- `person_email` (`string`, optional): Only the membership of the person with this email. Requires room_id. Example: john.andersen@example.com
- `person_id` (`string`, optional): Only this person's membership. Requires room_id. Get it from webex_people_list or webex_me_get. Example: Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIzNjE4Ny1jOGRkLTQ3MjctOGIyZi1mOWM0NDdmMjkwNDY
- `room_id` (`string`, optional): ID of the Webex space (room). List members of this space. Required when filtering by person. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0

Example input: `{}`

### `webex_message_get`

Get Message · Read-only

Get one Webex message by its ID.
Returns the message's id, roomId, roomType, text, markdown, html, files, attachments, personId, personEmail, mentionedPeople, parentId and created.
Use webex_message_get when you have the message ID. Use webex_messages_list to read a space.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `message_id` (`string`, required): ID of the message. Get it from webex_messages_list. Example: Y2lzY29zcGFyazovL3VzL01FU1NBR0UvOTJkYjNiZTAtNDNiZC0xMWU2LThhZTktZGQ1YjNkZmM1NjVk

Example input: `{"message_id":"<message_id>"}`

### `webex_messages_list`

List Messages · Read-only

List messages in a Webex space (room), newest first, optionally only replies to a thread or messages that mention the connected user.
Returns an items array of messages with id, roomId, text, markdown, files, attachments, personId, personEmail, parentId and created.
Use webex_messages_list for group spaces. Use webex_direct_messages_list for a 1:1 conversation with one person.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `room_id` (`string`, required): ID of the Webex space (room). Messages are listed from this space. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `before` (`string`, optional): Only list messages sent before this ISO 8601 time. Use it to page back through history. Example: 2016-04-21T19:01:55.966Z
- `before_message` (`string`, optional): Only list messages sent before this message ID. Pass the oldest ID from the previous page to page back. Example: Y2lzY29zcGFyazovL3VzL01FU1NBR0UvOTJkYjNiZTAtNDNiZC0xMWU2LThhZTktZGQ1YjNkZmM1NjVk
- `max` (`integer`, optional): Maximum number of results to return in one response. Webex returns 50 when empty; the limit is 100 when mentioned_people is set. Example: 50
- `mentioned_people` (`array`, optional): Only list messages that mention these people. Only me (the connected user) or the connected user's own person ID is allowed. Bots must set this to list messages in group spaces. Example: ["me"]
- `parent_id` (`string`, optional): Only list replies to this parent message (one thread). Example: Y2lzY29zcGFyazovL3VzL01FU1NBR0UvZWM1ZTIzZjAtN2RhMS0xMWU5LTg2NTgtZTkzYzNiODZjZmFm

Example input: `{"room_id":"<room_id>"}`

### `webex_people_list`

List People · Read-only

Search the connected user's Webex organization directory by email, display name prefix or person IDs.
Returns an items array of people with id, emails, displayName, firstName, lastName, avatar, orgId, status and lastActivity.
Use webex_people_list to find a person ID. Non-admin users must pass email or display_name. Use webex_person_get for one known ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `display_name` (`string`, optional): Find people whose display name starts with this text. Non-admin users must provide this or email. Example: John
- `exclude_status` (`boolean`, optional): When true, leave out presence status to make the query faster. Example: true
- `ids` (`string`, optional): Up to 85 person IDs separated by commas. Presence fields are not returned when this is set. Example: Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIzNjE4Ny1jOGRkLTQ3MjctOGIyZi1mOWM0NDdmMjkwNDY
- `max` (`integer`, optional): Maximum number of results to return in one response. Webex returns 100 when empty. Example: 50
- `person_email` (`string`, optional): Find the person with this email address. Non-admin users must provide this or display_name. Example: john.andersen@example.com

Example input: `{}`

### `webex_person_get`

Get Person · Read-only

Get one person's Webex profile by person ID.
Returns id, emails, displayName, nickName, firstName, lastName, avatar, orgId, created, status and lastActivity.
Use webex_person_get when you have the ID. Use webex_people_list to search by email or name, and webex_me_get for the connected user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `person_id` (`string`, required): ID of the person. Get it from webex_people_list or webex_me_get. Example: Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIzNjE4Ny1jOGRkLTQ3MjctOGIyZi1mOWM0NDdmMjkwNDY

Example input: `{"person_id":"<person_id>"}`

### `webex_recording_get`

Get Recording · Read-only

Get one Webex meeting recording, including its playback and download links.
Returns id, meetingId, topic, createTime, durationSeconds, sizeBytes, format, playbackUrl, password and temporaryDirectDownloadLinks.
Use webex_recording_get when you have the recording ID. Use webex_recordings_query to find recordings.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `recording_id` (`string`, required): ID of the recording. Get it from webex_recordings_query. Example: 4f914b1dfe3c4d11a61730f18c0f5387
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `site_url` (`string`, optional): Webex site the recording belongs to, sent as the siteUrl request header. Example: example.webex.com
- `timezone` (`string`, optional): IANA time zone used for the timestamps in the response, sent as the timezone request header. Defaults to UTC when empty. Example: America/Los_Angeles

Example input: `{"recording_id":"<recording_id>"}`

### `webex_room_get`

Get Space · Read-only

Get one Webex space (room) by its ID.
Returns the space's id, title, type, isLocked, isPublic, description, teamId, creatorId, lastActivity and created.
Use webex_room_get when you have the space ID. Use webex_rooms_list to find spaces.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `room_id` (`string`, required): ID of the Webex space (room). Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0

Example input: `{"room_id":"<room_id>"}`

### `webex_room_tab_get`

Get Space Tab · Read-only

Get one space tab by its ID.
Returns id, roomId, roomType, displayName, contentUrl, creatorId and created.
Use webex_room_tab_get when you have the tab ID. Use webex_room_tabs_list to find it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `room_tab_id` (`string`, required): ID of the space tab. Get it from webex_room_tabs_list. Example: Y2lzY29zcGFyazovL3VzL1JPT01fVEFCLzBkMGM5MWI2LWNlNjAtNDcyNS1iNmQwLTM0NTVkNWQxMWVmMw

Example input: `{"room_tab_id":"<room_tab_id>"}`

### `webex_room_tabs_list`

List Space Tabs · Read-only

List the tabs (pinned web pages) of a Webex space.
Returns an items array of tabs with id, roomId, roomType, displayName, contentUrl, creatorId and created.
Use webex_room_tabs_list to see a space's tabs or find a tab ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `room_id` (`string`, required): ID of the Webex space (room). Tabs of this space are listed. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0

Example input: `{"room_id":"<room_id>"}`

### `webex_rooms_list`

List Spaces · Read-only

List the Webex spaces (rooms) the connected user belongs to, optionally filtered by team or type.
Returns an items array of spaces with id, title, type (direct or group), isLocked, teamId, lastActivity and created.
Use webex_rooms_list to find a space ID. Use webex_room_get when you already have the ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, optional): With org_public_spaces, only list spaces made public at or after this ISO 8601 time. Example: 2022-10-10T17:00:00.000Z
- `max` (`integer`, optional): Maximum number of results to return in one response. Must be between 1 and 1000; Webex returns 100 when empty. Example: 50
- `org_public_spaces` (`boolean`, optional): When true, list the organization's public spaces, joined and not joined, sorted by when they were made public. Cannot be combined with team_id, type or sort_by. Example: true
- `sort_by` (`string`, optional): Sort order: id, lastactivity (most recent activity first) or created. Cannot be combined with org_public_spaces. Example: lastactivity. One of: `id`, `lastactivity`, `created`.
- `team_id` (`string`, optional): Only list spaces that belong to this team. Cannot be combined with org_public_spaces. Get team IDs from webex_teams_list. Example: Y2lzY29zcGFyazovL3VzL1RFQU0vMTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5
- `to` (`string`, optional): With org_public_spaces, only list spaces made public before this ISO 8601 time. Example: 2022-10-11T17:00:00.000Z
- `type` (`string`, optional): Only list spaces of this type: direct for 1:1 spaces, group for group spaces. Cannot be combined with org_public_spaces. Example: group. One of: `direct`, `group`.

Example input: `{}`

### `webex_team_get`

Get Team · Read-only

Get one Webex team by its ID.
Returns the team's id, name, description, creatorId and created.
Use webex_team_get when you have the team ID. Use webex_teams_list to find teams.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `team_id` (`string`, required): ID of the team. Get it from webex_teams_list. Example: Y2lzY29zcGFyazovL3VzL1RFQU0vMTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5

Example input: `{"team_id":"<team_id>"}`

### `webex_team_membership_get`

Get Team Membership · Read-only

Get one team membership by its ID.
Returns id, teamId, personId, personEmail, personDisplayName, isModerator and created.
Use webex_team_membership_get when you have the ID. Use webex_team_memberships_list to find it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `team_membership_id` (`string`, required): ID of the team membership. Get it from webex_team_memberships_list. Example: Y2lzY29zcGFyazovL3VzL1RFQU1fTUVNQkVSU0hJUC8wZmNmYTJiOC1hZGNjLTQ1ZWEtYTc4Mi1lNDYwNTkyZjgxZWY6MTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5

Example input: `{"team_membership_id":"<team_membership_id>"}`

### `webex_team_memberships_list`

List Team Memberships · Read-only

List the members of a Webex team.
Returns an items array of team memberships with id, teamId, personId, personEmail, personDisplayName, isModerator and created.
Use webex_team_memberships_list to see a team's members or find a team membership ID. Use webex_memberships_list for a space.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `team_id` (`string`, required): ID of the team. Get it from webex_teams_list. Example: Y2lzY29zcGFyazovL3VzL1RFQU0vMTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5
- `max` (`integer`, optional): Maximum number of results to return in one response. Webex returns 100 when empty. Example: 50

Example input: `{"team_id":"<team_id>"}`

### `webex_teams_list`

List Teams · Read-only

List the Webex teams the connected user belongs to.
Returns an items array of teams with id, name, description, creatorId and created.
Use webex_teams_list to find a team ID. Use webex_team_get for one known team.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `max` (`integer`, optional): Maximum number of results to return in one response. Webex returns 100 when empty. Example: 50

Example input: `{}`

### `webex_meeting_create`

Create Meeting · Write

Schedule a Webex meeting or recurring series, optionally with invitees, or start an instant meeting for a space.
Returns the created meeting with id, meetingNumber, title, start, end, webLink, sipAddress, password and hostEmail.
Use webex_meeting_create to schedule a meeting. Use webex_meeting_update to change an existing one and webex_meeting_invitee_create to invite more people later.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Meeting title, up to 128 characters. Example: Weekly sync
- `adhoc` (`boolean`, optional): Create an instant (ad-hoc) meeting for the space given in room_id. Requires room_id. Example: false
- `agenda` (`string`, optional): Meeting agenda, up to 1300 characters. Example: Review the Q4 roadmap
- `allow_any_user_to_be_co_host` (`boolean`, optional): Let any attendee with a host account on the site become a cohost when they join. Example: false
- `enabled_auto_record_meeting` (`boolean`, optional): Record the meeting automatically. Example: true
- `enabled_join_before_host` (`boolean`, optional): Let attendees join before the host. Example: true
- `end` (`string`, optional): End date and time, ISO 8601. Must be after start. Required unless template_id is set or adhoc is true. Example: 2026-11-02T17:30:00-08:00
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `integration_tags` (`array`, optional): External keys from your own system (for example a ticket ID) to attach to the meeting, so you can find it later with webex_meetings_list integration_tag. Example: ["JIRA-1234"]
- `invitees` (`array`, optional): People to invite, up to 1000. Each needs an email and can set a displayName and coHost. If room_id is set and this is empty, all members of the space are invited. Example: [{"email": "brenda.song@example.com", "displayName": "Brenda Song"}]
- `join_before_host_minutes` (`integer`, optional): How many minutes before the start attendees can join, when enabled_join_before_host is true. Allowed values: 0, 5, 10 or 15. Example: 5
- `meeting_options` (`object`, optional): In-meeting options for attendees, such as whether chat, video, notes or file transfer are allowed. Example: {"enabledChat": true, "enabledVideo": true}
- `password` (`string`, optional): Meeting password. Must meet the site's password rules; Webex generates one when empty on create. Example: BgJep@43
- `recurrence` (`string`, optional): Recurrence rule in RFC 2445 format, for a recurring meeting series. Example: FREQ=WEEKLY;INTERVAL=1;BYDAY=MO;COUNT=10
- `reminder_time` (`integer`, optional): Minutes before the start to email the host a reminder. Example: 15
- `room_id` (`string`, optional): ID of the Webex space (room). Link the meeting to this space. Requires the spark:all scope. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `scheduled_type` (`string`, optional): meeting (default), webinar (needs a webinar session type) or personalRoomMeeting (schedule in the user's personal room). Example: meeting. One of: `meeting`, `webinar`, `personalRoomMeeting`.
- `send_email` (`boolean`, optional): Whether Webex emails the host and invitees about this meeting. Webex defaults to true. Example: false
- `site_url` (`string`, optional): Webex site to read the meeting on from, as a host name. Leave empty to use the user's default site(s). Get the sites with webex_meeting_sites_list. Example: example.webex.com
- `start` (`string`, optional): Start date and time, ISO 8601. Must be in the future and before end. Required unless template_id is set or adhoc is true. Example: 2026-11-02T17:00:00-08:00
- `template_id` (`string`, optional): Meeting template to start from; start and end become optional. Get IDs from webex_meeting_templates_list. Example: N2Q3ZWE1ZjQyYjkyMWVhY2UwNTM4NmNhMjRhZDczMGU6VS0yMDA5NzItTUMtZW5fVVM
- `timezone` (`string`, optional): IANA time zone the meeting is scheduled in. Defaults to UTC. Example: America/Los_Angeles

Example input: `{"title":"<title>"}`

### `webex_meeting_invitee_create`

Invite to Meeting · Write

Invite one person, by email, to a scheduled Webex meeting or series.
Returns the new invitee with id, email, displayName, coHost, meetingId and panelist.
Use webex_meeting_invitee_create to add someone after the meeting exists. Use the invitees field of webex_meeting_create when scheduling.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `email` (`string`, required): Email address of the person to invite. Example: john.andersen@example.com
- `meeting_id` (`string`, required): ID of the meeting series or scheduled meeting. Inviting to a series invites to every occurrence. Example: 870f51ff287b41be84648412901e0402
- `co_host` (`boolean`, optional): Make the invitee an alternate host (cohost). Example: false
- `display_name` (`string`, optional): Display name of the invitee, up to 128 characters. Example: John Andersen
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `panelist` (`boolean`, optional): Webinars only: make the invitee a panelist. Example: false
- `send_email` (`boolean`, optional): Whether Webex emails the invitee. Webex defaults to true. Example: true

Example input: `{"email":"<email>","meeting_id":"<meeting_id>"}`

### `webex_meeting_invitee_update`

Update Meeting Invitee · Write

Change a meeting invitee's email, display name, cohost or panelist setting.
Returns the updated invitee.
Use webex_meeting_invitee_update for invitees of a scheduled meeting or series; it does not apply to ended or ongoing instances. The email is always required.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Invitee's email address. Required; pass the current email to keep it. Example: john.andersen@example.com
- `meeting_invitee_id` (`string`, required): ID of the meeting invitee. Example: 870f51ff287b41be84648412901e0402_2628962
- `co_host` (`boolean`, optional): Make the invitee an alternate host (cohost). Example: false
- `display_name` (`string`, optional): Display name of the invitee, up to 128 characters. Example: John Andersen
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `panelist` (`boolean`, optional): Webinars only: make the invitee a panelist. Example: false
- `send_email` (`boolean`, optional): Whether Webex emails the invitee. Webex defaults to true. Example: true

Example input: `{"email":"<email>","meeting_invitee_id":"<meeting_invitee_id>"}`

### `webex_meeting_join_links_get`

Get Meeting Join Links · Write

Generate start and join links for a Webex meeting that open it directly, without signing in or typing the password.
Returns joinLink, startLink (for the host) and expiration.
Use webex_meeting_join_links_get to hand someone a one-click link. Identify the meeting with exactly one of meeting_id, meeting_number or web_link.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `display_name` (`string`, optional): Participant display name for the link. Requires email. Example: Brenda Song
- `email` (`string`, optional): Generate the link for this participant's email instead of the connected user. Example: brenda.song@example.com
- `expiration_minutes` (`integer`, optional): How long the links stay valid, 1 to 60 minutes. Example: 30
- `host_email` (`string`, optional): Admins only: email of the host whose meeting this is. Example: john.andersen@example.com
- `meeting_id` (`string`, optional): ID of the meeting series or scheduled meeting. Provide exactly one of meeting_id, meeting_number or web_link. Example: 870f51ff287b41be84648412901e0402
- `meeting_number` (`string`, optional): Meeting number. Not valid for ended meetings. Provide exactly one of meeting_id, meeting_number or web_link. Example: 123456789
- `password` (`string`, optional): Meeting password, needed when the meeting is protected and the user is not its host, cohost or invitee. Example: BgJep@43
- `registration_id` (`string`, optional): Registration ID, required for a webinar that uses registration IDs. Example: 1111
- `web_link` (`string`, optional): The meeting's join page link. Provide exactly one of meeting_id, meeting_number or web_link. Example: https://example.webex.com/example/j.php?MTID=m0123456789abcdef

Example input: `{}`

### `webex_meeting_update`

Update Meeting · Write

Change a scheduled Webex meeting or series: title, time, agenda, password, recurrence or options. Only the fields you pass change.
Returns the updated meeting object.
Use webex_meeting_update for scheduled meetings and series; ended, in-progress and ad-hoc space meetings cannot be changed. Changing start, end or recurrence of a series cancels its exceptional occurrences.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_id` (`string`, required): ID of the meeting series or scheduled meeting to change. Example: 870f51ff287b41be84648412901e0402
- `agenda` (`string`, optional): Meeting agenda, up to 1300 characters. Example: Review the Q4 roadmap
- `allow_any_user_to_be_co_host` (`boolean`, optional): Let any attendee with a host account on the site become a cohost when they join. Example: false
- `enabled_auto_record_meeting` (`boolean`, optional): Record the meeting automatically. Example: true
- `enabled_join_before_host` (`boolean`, optional): Let attendees join before the host. Example: true
- `end` (`string`, optional): New end time, ISO 8601. Example: 2026-11-02T18:30:00-08:00
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `integration_tags` (`array`, optional): External keys from your own system (for example a ticket ID) to attach to the meeting, so you can find it later with webex_meetings_list integration_tag. Example: ["JIRA-1234"]
- `join_before_host_minutes` (`integer`, optional): How many minutes before the start attendees can join, when enabled_join_before_host is true. Allowed values: 0, 5, 10 or 15. Example: 5
- `meeting_options` (`object`, optional): In-meeting options for attendees, such as whether chat, video, notes or file transfer are allowed. Example: {"enabledChat": true, "enabledVideo": true}
- `password` (`string`, optional): Meeting password. Must meet the site's password rules; Webex generates one when empty on create. Example: BgJep@43
- `recurrence` (`string`, optional): Recurrence rule in RFC 2445 format, for a recurring meeting series. Example: FREQ=WEEKLY;INTERVAL=1;BYDAY=MO;COUNT=10
- `reminder_time` (`integer`, optional): Minutes before the start to email the host a reminder. Example: 15
- `send_email` (`boolean`, optional): Whether Webex emails the host and invitees about this meeting. Webex defaults to true. Example: false
- `start` (`string`, optional): New start time, ISO 8601. Example: 2026-11-02T18:00:00-08:00
- `timezone` (`string`, optional): IANA time zone the meeting is scheduled in. Defaults to UTC. Example: America/Los_Angeles
- `title` (`string`, optional): New title, up to 128 characters. Example: Weekly sync (moved)

Example input: `{"meeting_id":"<meeting_id>"}`

### `webex_membership_create`

Add Person to Space · Write

Add a person to a Webex space (room) by person ID or email, optionally as a moderator.
Returns the new membership with id, roomId, personId, personEmail, isModerator and created.
Use webex_membership_create to invite someone to a space. Use webex_team_membership_create for a team. Provide person_id or person_email.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `room_id` (`string`, required): ID of the Webex space (room). The person is added to this space. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `is_moderator` (`boolean`, optional): Make the person a moderator of the space. Example: false
- `person_email` (`string`, optional): Email of the person to add. Provide this or person_id. Example: john.andersen@example.com
- `person_id` (`string`, optional): ID of the person to add. Provide this or person_email. Get it from webex_people_list or webex_me_get. Example: Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIzNjE4Ny1jOGRkLTQ3MjctOGIyZi1mOWM0NDdmMjkwNDY

Example input: `{"room_id":"<room_id>"}`

### `webex_membership_update`

Update Space Membership · Write

Make a space member a moderator or not, and hide or show a direct space for the connected user.
Returns the updated membership.
Use webex_membership_update to change moderator status. Both flags are required, so pass the current value of the one you are not changing.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `is_moderator` (`boolean`, required): Whether the member is a moderator of the space. Example: true
- `is_room_hidden` (`boolean`, required): Hide a direct (1:1) space in the Webex app. A new message makes it visible again. Pass false to leave it visible. Example: false
- `membership_id` (`string`, required): ID of the space membership. Get it from webex_memberships_list. Example: Y2lzY29zcGFyazovL3VzL01FTUJFUlNISVAvMGQwYzkxYjYtY2U2MC00NzI1LWI2ZDAtMzQ1NWQ1ZDExZWYzOmNkZTFkZDQwLTJmMGQtMTFlNS1iYTljLTdiNjU1NmQyMjA3Yg

Example input: `{"is_moderator":true,"is_room_hidden":true,"membership_id":"<membership_id>"}`

### `webex_message_create`

Send Message · Write

Send a message to a Webex space or directly to one person, as plain text or Markdown, optionally as a thread reply, with a file URL or an Adaptive Card.
Returns the created message with id, roomId, text, markdown, files, personId and created.
Use webex_message_create to post. Use webex_message_update to edit a message you sent. Provide exactly one destination: room_id, to_person_id or to_person_email.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `attachments` (`array`, optional): One content attachment, such as an Adaptive Card. Each item needs a contentType of application/vnd.microsoft.card.adaptive and the card JSON as content. Also set text as a fallback for clients that cannot show cards. Example: [{"contentType": "application/vnd.microsoft.card.adaptive", "content": {"type": "AdaptiveCard", "version": "1.0", "body": [{"type": "TextBlock", "text": "Hello"}]}}]
- `files` (`array`, optional): Public URL of one file to attach. Webex downloads it and posts it to the space; only one file is allowed per message. Example: ["https://www.example.com/images/media.png"]
- `markdown` (`string`, optional): Message in Markdown, up to 7439 bytes. Example: **Project update** - the plan is published.
- `parent_id` (`string`, optional): Reply in the thread of this parent message. Example: Y2lzY29zcGFyazovL3VzL01FU1NBR0UvZWM1ZTIzZjAtN2RhMS0xMWU5LTg2NTgtZTkzYzNiODZjZmFm
- `room_id` (`string`, optional): ID of the Webex space (room). Post into this space. Provide this, to_person_id or to_person_email. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `text` (`string`, optional): Message in plain text, up to 7439 bytes. When markdown is also set, this is the fallback shown by clients that cannot render rich text. Provide text, markdown, files or attachments. Example: Project plan published.
- `to_person_email` (`string`, optional): Send a private 1:1 message to this email address instead of a space. Example: julie@example.com
- `to_person_id` (`string`, optional): Send a private 1:1 message to this person ID instead of a space. Example: Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIzNjE4Ny1jOGRkLTQ3MjctOGIyZi1mOWM0NDdmMjkwNDY

Example input: `{}`

### `webex_message_update`

Edit Message · Write

Edit the text or Markdown of a message the connected user sent; each message can be edited up to 10 times.
Returns the updated message object.
Use webex_message_update to fix a sent message. Messages with files or attachments cannot be edited. Use webex_message_create to send a new one.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `message_id` (`string`, required): ID of the message to edit. Example: Y2lzY29zcGFyazovL3VzL01FU1NBR0UvOTJkYjNiZTAtNDNiZC0xMWU2LThhZTktZGQ1YjNkZmM1NjVk
- `room_id` (`string`, required): ID of the Webex space (room). The space that contains the message. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `markdown` (`string`, optional): New Markdown content, up to 7439 bytes. Example: **Project update** - plan v2 is published.
- `text` (`string`, optional): New plain-text content, up to 7439 bytes. Provide text, markdown or both. Example: Project plan published (updated).

Example input: `{"message_id":"<message_id>","room_id":"<room_id>"}`

### `webex_recordings_query`

Search Recordings · Write

Search the Webex meeting recordings the connected user hosted or that were shared with them, by time range, meeting, topic or status.
Returns an items array of recordings with id, meetingId, topic, createTime, durationSeconds, format, playbackUrl, downloadUrl and status.
Use webex_recordings_query to find recordings. Use webex_recording_get for one recording's download links.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `format` (`string`, optional): Only recordings in this file format: MP4 or ARF. Example: MP4. One of: `MP4`, `ARF`.
- `from` (`string`, optional): Start of the time range (inclusive), ISO 8601. Defaults to 7 days before to. Example: 2026-10-01T00:00:00Z
- `host_email` (`string`, optional): Email of the meeting host to act on behalf of. Only works when the connected user is a Webex site admin with admin-level meeting scopes; leave empty for the connected user's own meetings. Example: john.andersen@example.com
- `integration_tag` (`string`, optional): Only recordings of meetings tagged with this external key by this integration. Example: JIRA-1234
- `max` (`integer`, optional): Maximum number of recordings to return, 1 to 100. Webex returns 10 when empty. Example: 20
- `meeting_id` (`string`, optional): Only recordings of this meeting series, scheduled meeting or meeting instance. Example: 0ed74a1c0551494fb7a04e2881bf50ae_I_166022169160077044
- `service_type` (`string`, optional): Only recordings from this Webex service: MeetingCenter, EventCenter, SupportCenter or TrainingCenter. Example: MeetingCenter. One of: `MeetingCenter`, `EventCenter`, `SupportCenter`, `TrainingCenter`.
- `site_url` (`string`, optional): Webex site to read recordings from from, as a host name. Leave empty to use the user's default site(s). Get the sites with webex_meeting_sites_list. Example: example.webex.com
- `status` (`string`, optional): available (default) for normal recordings, deleted for recordings in the recycle bin, purged (compliance officers only). Example: available. One of: `available`, `deleted`, `purged`.
- `timezone` (`string`, optional): IANA time zone used for the timestamps in the response, sent as the timezone request header. Defaults to UTC when empty. Example: America/Los_Angeles
- `to` (`string`, optional): End of the time range (exclusive), ISO 8601. Defaults to now. Example: 2026-10-08T00:00:00Z
- `topic` (`string`, optional): Only recordings whose topic matches this text (case-insensitive). Example: Weekly sync

Example input: `{}`

### `webex_room_create`

Create Space · Write

Create a Webex space (room); the connected user is added as its first member.
Returns the new space's id, title, type, isLocked, teamId and created.
Use webex_room_create for a group space. To start a 1:1 space, send a message with webex_message_create and to_person_email instead. Add people with webex_membership_create.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Name of the new space. Example: Project Unicorn - Sprint 0
- `classification_id` (`string`, optional): Data classification to apply to the space, if your organization uses space classifications. Bots cannot set this when creating a space. Example: Y2lzY29zcGFyazovL3VzL0NMQVNTSUZJQ0FUSU9OL2YyMDUyZTgyLTU0ZjgtMTFlYS1hMmUzLTJlNzI
- `description` (`string`, optional): Description of the space. Required when is_public is true. Example: Company Announcements
- `is_announcement_only` (`boolean`, optional): When true, only moderators can post (announcement mode). The space must also be locked (is_locked true). Example: false
- `is_locked` (`boolean`, optional): When true, the space is locked (moderated) and the creator becomes a moderator. Example: false
- `is_public` (`boolean`, optional): When true, the space is public and anyone in the organization can find and join it. A public space needs a description. Example: false
- `team_id` (`string`, optional): Create the space inside this team. Get team IDs from webex_teams_list. Example: Y2lzY29zcGFyazovL3VzL1RFQU0vMTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5

Example input: `{"title":"<title>"}`

### `webex_room_tab_create`

Add Space Tab · Write

Add a tab that pins a web page (HTTPS URL) to a Webex space.
Returns the new tab with id, roomId, displayName, contentUrl and created.
Use webex_room_tab_create to pin a link to a space. Use webex_room_tab_update to change an existing tab.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content_url` (`string`, required): HTTPS URL the tab opens. Example: https://www.example.com/dashboard
- `display_name` (`string`, required): Name shown on the tab. Example: Team dashboard
- `room_id` (`string`, required): ID of the Webex space (room). The tab is added to this space. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0

Example input: `{"content_url":"<content_url>","display_name":"<display_name>","room_id":"<room_id>"}`

### `webex_room_tab_update`

Update Space Tab · Write

Change the URL or name of a space tab.
Returns the updated tab.
Use webex_room_tab_update to edit a tab. All three fields are required, so pass the current values of those you keep.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `content_url` (`string`, required): HTTPS URL the tab opens. Example: https://www.example.com/dashboard-v2
- `display_name` (`string`, required): Name shown on the tab. Example: Team dashboard
- `room_id` (`string`, required): ID of the Webex space (room). The space that contains the tab. Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `room_tab_id` (`string`, required): ID of the space tab. Example: Y2lzY29zcGFyazovL3VzL1JPT01fVEFCLzBkMGM5MWI2LWNlNjAtNDcyNS1iNmQwLTM0NTVkNWQxMWVmMw

Example input: `{"content_url":"<content_url>","display_name":"<display_name>","room_id":"<room_id>","room_tab_id":"<room_tab_id>"}`

### `webex_room_update`

Update Space · Write

Update a Webex space (room): rename it, change its description, lock it, move it into a team or change public or announcement mode.
Returns the updated space object.
Use webex_room_update to change an existing space. The title is always required, so pass the current title to keep it. Use webex_room_create for a new space.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `room_id` (`string`, required): ID of the Webex space (room). Get it from webex_rooms_list. Example: Y2lzY29zcGFyazovL3VzL1JPT00vYmJjZWIxYWQtNDNmMS0zYjU4LTkxNDctZjE0YmIwYzRkMTU0
- `title` (`string`, required): Title of the space. Required on every update; pass the current title to keep it. Example: Project Unicorn - Sprint 1
- `classification_id` (`string`, optional): Data classification for the space. Example: Y2lzY29zcGFyazovL3VzL0NMQVNTSUZJQ0FUSU9OL2YyMDUyZTgyLTU0ZjgtMTFlYS1hMmUzLTJlNzI
- `description` (`string`, optional): New description. To remove the description, send a single space character. Example: Company Announcements
- `is_announcement_only` (`boolean`, optional): Turn announcement mode on (true) or off (false). The space must be locked first. Example: true
- `is_locked` (`boolean`, optional): Lock (true) or unlock (false) the space. Example: true
- `is_public` (`boolean`, optional): Make the space public (true) or private (false). Any member can make a space private; only a compliance officer can make it public, and it needs a description. Example: false
- `is_read_only` (`boolean`, optional): Compliance officers only: make a direct (1:1) space read-only so no new messages can be exchanged. Example: false
- `team_id` (`string`, optional): Move the space into this team. Only spaces not already in a team can be moved, and every moderator must be a member of the team. Example: Y2lzY29zcGFyazovL3VzL1RFQU0vMTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5

Example input: `{"room_id":"<room_id>","title":"<title>"}`

### `webex_team_create`

Create Team · Write

Create a Webex team; the connected user becomes its first member.
Returns the new team's id, name, description, creatorId and created.
Use webex_team_create for a new team. Add people with webex_team_membership_create and spaces with webex_room_create team_id.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the team. Example: Build Squad
- `description` (`string`, optional): Description of the team. Example: The A team

Example input: `{"name":"<name>"}`

### `webex_team_membership_create`

Add Person to Team · Write

Add a person to a Webex team by person ID or email, optionally as a moderator.
Returns the new team membership with id, teamId, personId, personEmail, isModerator and created.
Use webex_team_membership_create to add someone to a team. Use webex_membership_create for a single space. Provide person_id or person_email.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `team_id` (`string`, required): ID of the team. Example: Y2lzY29zcGFyazovL3VzL1RFQU0vMTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5
- `is_moderator` (`boolean`, optional): Make the person a team moderator. Example: false
- `person_email` (`string`, optional): Email of the person to add. Provide this or person_id. Example: john.andersen@example.com
- `person_id` (`string`, optional): ID of the person to add. Provide this or person_email. Get it from webex_people_list or webex_me_get. Example: Y2lzY29zcGFyazovL3VzL1BFT1BMRS9mNWIzNjE4Ny1jOGRkLTQ3MjctOGIyZi1mOWM0NDdmMjkwNDY

Example input: `{"team_id":"<team_id>"}`

### `webex_team_membership_update`

Update Team Membership · Write

Make a team member a moderator or remove their moderator role.
Returns the updated team membership.
Use webex_team_membership_update to change team moderator status. Use webex_membership_update for a space.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `is_moderator` (`boolean`, required): Whether the member is a team moderator. Example: true
- `team_membership_id` (`string`, required): ID of the team membership. Example: Y2lzY29zcGFyazovL3VzL1RFQU1fTUVNQkVSU0hJUC8wZmNmYTJiOC1hZGNjLTQ1ZWEtYTc4Mi1lNDYwNTkyZjgxZWY6MTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5

Example input: `{"is_moderator":true,"team_membership_id":"<team_membership_id>"}`

### `webex_team_update`

Update Team · Write

Rename a Webex team or change its description.
Returns the updated team.
Use webex_team_update to edit a team. The name is always required; pass the current name to keep it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, required): Team name. Required on every update; pass the current name to keep it. Example: Build Squad
- `team_id` (`string`, required): ID of the team. Example: Y2lzY29zcGFyazovL3VzL1RFQU0vMTNlMThmNDAtNDJmYy0xMWU2LWE5ZDgtMjExYTBkYzc5NzY5
- `description` (`string`, optional): New team description. Example: The A team

Example input: `{"name":"<name>","team_id":"<team_id>"}`

## Related

Other Communication connectors ([all 73](/agentkit/connectors/?category=communication)):

- [Crisp](/agentkit/connectors/crisp/): Scalekit connector, API key, 50 tools
- [Gmail](/agentkit/connectors/gmail/): Scalekit connector, OAuth, 48 tools
- [Google Calendar](/agentkit/connectors/googlecalendar/): Scalekit connector, OAuth, 30 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
