CONNECT APP
Build with RingCentral
Communication
- OAuth
MCP
Give your agent RingCentral tools
Every RingCentral action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's RingCentral account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "ringcentral",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Create Contact:
const result = await mcp.callTool({
name: "ringcentral-create-contact",
arguments: {
accountId: "Account ID",
extensionId: ["Extensions"],
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "ringcentral",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Create Contact:
result = await session.call_tool("ringcentral-create-contact", {
"accountId": "Account ID",
"extensionId": ["Extensions"],
})API PROXY
Call the RingCentral API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the RingCentral API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.example.com/v1/me",
})
// Any allowed RingCentral endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.example.com/v1/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvbWU?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run RingCentral actions from your backend
Connect a user's RingCentral account once, then run Create Contact on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "ringcentral-create-contact",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
ringcentral: { authProvisionId: "apn_xxxxxxx" },
accountId: "Account ID",
extensionId: ["Extensions"],
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="ringcentral-create-contact",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"ringcentral": {"authProvisionId": "apn_xxxxxxx"},
"accountId": "Account ID",
"extensionId": ["Extensions"],
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "ringcentral-create-contact",
"configured_props": {
"ringcentral": { "authProvisionId": "apn_xxxxxxx" },
"accountId": "Account ID",
"extensionId": ["Extensions"]
}
}'TOOLS
RingCentral actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Create Contact
actionCreates a user personal contact. See the documentationWritev0.0.2 -
Create Meeting
actionCreates a new meeting. See the API docs here.Writev0.2.2 -
Download Recording
actionGets a recording and downloads it to the /tmp directory. See the documentationRead-onlyv0.0.4 -
Get Message
actionGet message from the Message Store. See the API docs hereWritev0.0.2 -
List Country ID Options
actionRetrieves available options for the Country ID field.Read-onlyv0.0.1 -
List Extensions Options
actionRetrieves available options for the Extensions field.Read-onlyv0.0.1 -
Make CallOut
actionCreates a new outbound call out session. See the API docs hereWritev0.4.2 -
Send SMS
actionCreates and sends a new text message. See the API docs hereWritev0.5.3
EVENTS
RingCentral triggers
Event sources your backend can deploy for users and receive through a webhook.
-
New Call Recording
triggerEmit new events when a call recording is createdv0.1.5 -
New Event (Instant)
triggerEmit new event for each notification from RingCentral of a specified typeInstantv0.1.4 -
New Inbound Call (Instant)
triggerEmit new event on each incoming callInstantv0.1.5 -
New Inbound Fax (Instant)
triggerEmit new event on each incoming faxInstantv0.1.5 -
New Inbound Message Event (Instant)
triggerEmit new event for each status change of inbound messages of a specific typeInstantv0.1.4 -
New Inbound SMS (Instant)
triggerEmit new event on each incoming SMSInstantv0.1.5 -
New Missed Inbound Call (Instant)
triggerEmit new event each time an incoming call is missedInstantv0.1.5 -
New Outbound Call (Instant)
triggerEmit new event on each outgoing callInstantv0.1.5 -
New Outbound Message Event (Instant)
triggerEmit new event for each outbound message event. This only includes the event, not the actual message.Instantv0.1.4 -
New Voicemail Message (Instant)
triggerEmit new event when a new voicemail message is receivedInstantv0.1.5
MULTI-APP
Use RingCentral with other popular apps
Most products don't stop at one integration. Pair RingCentral with the other apps your users rely on, and ship use cases that span both.
- App slug
- ringcentral
- Authentication
- OAuth
- Categories
- Communication
- Actions
- 8
- Triggers
- 10
- API proxy
- Available