RingCentral SMS & Calls
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.
| Method | Path | Operation | Description |
|---|---|---|---|
| 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
- Sign in to https://developers.ringcentral.com/console and click Register App > REST API App.
- Choose auth type JWT auth flow, and add the app permissions SMS, Read Messages, Edit Messages, Read Call Log and Read Accounts.
- Under Credentials, create a JWT credential for the user whose number will send texts (the JWT acts as that user).
- Exchange it for a token:
POST https://platform.ringcentral.com/restapi/oauth/tokenwith HTTP BasicclientId:clientSecretand form bodygrant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<JWT>. Theaccess_tokenlasts 1 hour. - 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 (checklistExtensionPhoneNumbersfeatures). - 400
InvalidParameter/MSG-...: phone numbers must be E.164 (+14155550123) andfrommust be one of the user's SMS-enabled numbers. - 429
CMN-301Request rate exceeded: wait for theRetry-Afterseconds; 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
accountIdandextensionIdto~(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
listExtensionPhoneNumbersonce: pick a number whosefeaturesincludeSmsSender(that is yourfrom).listMessageswithmessageType=SMS,readStatus=Unread,dateFrom(ISO 8601 with time zone, e.g.2026-10-12T00:00:00Z) andperPage. UsephoneNumberorconversationIdto read one thread; follownavigation.nextPage/pagefor more.getMessageto read a single message in full (subjectholds the SMS text).- Draft the reply and show it to the user; send only after they confirm.
sendSmswithfrom: { "phoneNumber": "+1..." },to: [{ "phoneNumber": "+1..." }],text(max 1000 characters).updateMessageReadStatuswith{ "readStatus": "Read" }on messages you handled. Do not setavailability(that deletes messages).
Review calls
listCallLogwithdateFrom/dateTo(default: last 24 hours),direction=Inbound,type=Voice,view=Simple,perPage.- Missed calls are records whose
resultisMissed(orVoicemail); call back or text thefrom.phoneNumber. getCallRecordfor one call's details (duration, recording flag, legs withview=Detailed).
Good to know
- Phone numbers are E.164 with
+and country code. - Message and call record ids are strings; message
directionisInbound/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-Afteron 429. - Texts go to real customers and cost money: always confirm recipient and wording first.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “RingCentral SMS & Calls” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.