VX Agents

OpenAPI Marketplace · Messaging & SMS

RingCentral SMS & Calls

v1.0.0 · 8 endpoints · 0 connections · shared by vx.ai

Let an agent text customers and review phone activity in RingCentral: send SMS from a company number, read and search the SMS inbox by conversation, mark messages read, and check the call log for missed or recent calls. Curated from RingCentral's official OpenAPI specification.

Connect this API to an AI agent Browse all specs

What you can do with RingCentral SMS & Calls via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /restapi/v1.0/account/{accountId}/extension/{extensionId} getExtension Get the connected user's extension (name, number, status)
GET /restapi/v1.0/account/{accountId}/extension/{extensionId}/phone-number listExtensionPhoneNumbers List the user's phone numbers and which can send SMS
POST /restapi/v1.0/account/{accountId}/extension/{extensionId}/sms sendSms Send an SMS from one of the user's numbers
GET /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store listMessages List or filter SMS, voicemail and fax messages
GET /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId} getMessage Get one message
PATCH /restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId} updateMessageReadStatus Mark a message as read or unread
GET /restapi/v1.0/account/{accountId}/extension/{extensionId}/call-log listCallLog List the user's recent calls (missed, inbound, outbound)
GET /restapi/v1.0/account/{accountId}/extension/{extensionId}/call-log/{callRecordId} getCallRecord Get one call record

Authentication

bearerAuth

Bearer token — sent as Authorization: Bearer <token>

RingCentral REST calls use an OAuth 2.0 access token sent as Authorization: Bearer <token>.

How to get a credential

  1. Sign in to https://developers.ringcentral.com/console and click Register App > REST API App.
  2. Choose auth type JWT auth flow, and add the app permissions SMS, Read Messages, Edit Messages, Read Call Log and Read Accounts.
  3. Under Credentials, create a JWT credential for the user whose number will send texts (the JWT acts as that user).
  4. Exchange it for a token: POST https://platform.ringcentral.com/restapi/oauth/token with HTTP Basic clientId:clientSecret and form body grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<JWT>. The access_token lasts 1 hour.
  5. Production apps need Apply for production (graduation) in the console first; sandbox tokens only work on platform.devtest.ringcentral.com.

Permissions used

App permission Operations
Read Accounts getExtension, listExtensionPhoneNumbers
SMS sendSms
Read Messages listMessages, getMessage
Edit Messages updateMessageReadStatus
Read Call Log listCallLog, getCallRecord

Common errors

  • 401 TokenExpired / TokenInvalid: the access token expired (1 hour); request a new one with the JWT.
  • 403 InsufficientPermissions / FeatureNotAvailable: the app lacks that permission, or the user's plan/number is not SMS-enabled (check listExtensionPhoneNumbers features).
  • 400 InvalidParameter / MSG-...: phone numbers must be E.164 (+14155550123) and from must be one of the user's SMS-enabled numbers.
  • 429 CMN-301 Request rate exceeded: wait for the Retry-After seconds; call-log reads are in the Heavy group (10 requests/min).

Store the access token as a VX Agents credential (bearer token) and attach it to the agent; never paste it into chat.

Usage guide

Setup

  • Connect a RingCentral access token from a JWT-flow app (see the authentication section). Tokens last 1 hour.
  • Preset accountId and extensionId to ~ (the account and user the token belongs to). Every operation needs both.
  • Optional preset: the company SMS number to send from, in E.164 (+14155550123).

Reply to customer texts

  1. listExtensionPhoneNumbers once: pick a number whose features include SmsSender (that is your from).
  2. listMessages with messageType=SMS, readStatus=Unread, dateFrom (ISO 8601 with time zone, e.g. 2026-10-12T00:00:00Z) and perPage. Use phoneNumber or conversationId to read one thread; follow navigation.nextPage / page for more.
  3. getMessage to read a single message in full (subject holds the SMS text).
  4. Draft the reply and show it to the user; send only after they confirm.
  5. sendSms with from: { "phoneNumber": "+1..." }, to: [{ "phoneNumber": "+1..." }], text (max 1000 characters).
  6. updateMessageReadStatus with { "readStatus": "Read" } on messages you handled. Do not set availability (that deletes messages).

Review calls

  1. listCallLog with dateFrom / dateTo (default: last 24 hours), direction=Inbound, type=Voice, view=Simple, perPage.
  2. Missed calls are records whose result is Missed (or Voicemail); call back or text the from.phoneNumber.
  3. getCallRecord for one call's details (duration, recording flag, legs with view=Detailed).

Good to know

  • Phone numbers are E.164 with + and country code.
  • Message and call record ids are strings; message direction is Inbound / Outbound.
  • SMS to US/CA numbers requires a registered (TCR / toll-free verified) sender number; unregistered numbers get delivery errors in messageStatus.
  • Rate limits: SMS is Medium (40 requests/min), call log is Heavy (10/min); wait Retry-After on 429.
  • Texts go to real customers and cost money: always confirm recipient and wording first.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “RingCentral SMS & Calls” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs