CONNECT APP
Build with Cursor
Artificial Intelligence (AI)
- API key
MCP
Give your agent Cursor tools
Every Cursor 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 Cursor 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": "cursor",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Add Followup to Agent:
const result = await mcp.callTool({
name: "cursor-add-followup-to-agent",
arguments: {
agentId: "Agent ID",
prompt: "Prompt",
},
})# 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": "cursor",
}
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 Add Followup to Agent:
result = await session.call_tool("cursor-add-followup-to-agent", {
"agentId": "Agent ID",
"prompt": "Prompt",
})API PROXY
Call the Cursor API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Cursor 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.cursor.com/v0/agents",
})
// Any allowed Cursor 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.cursor.com/v0/agents
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuY3Vyc29yLmNvbS92MC9hZ2VudHM?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Cursor actions from your backend
Connect a user's Cursor account once, then run Add Followup to Agent 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: "cursor-add-followup-to-agent",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
cursor: { authProvisionId: "apn_xxxxxxx" },
agentId: "Agent ID",
prompt: "Prompt",
},
})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="cursor-add-followup-to-agent",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"cursor": {"authProvisionId": "apn_xxxxxxx"},
"agentId": "Agent ID",
"prompt": "Prompt",
},
)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": "cursor-add-followup-to-agent",
"configured_props": {
"cursor": { "authProvisionId": "apn_xxxxxxx" },
"agentId": "Agent ID",
"prompt": "Prompt"
}
}'TOOLS
Cursor actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Add Followup to Agent
actionAdd a followup to an agent. See the documentationWritev0.0.2 -
Get Agent Conversation
actionRetrieve the conversation history of a cloud agent, including all user prompts and assistant responses. See the documentationRead-onlyv0.0.2 -
Get Agent Status
actionGets the status of an agent. See the documentationRead-onlyv0.0.2 -
Launch Agent
actionLaunch a Cursor agent. See the documentationWritev0.0.2 -
List Agents
actionList all available Cursor agents. See the documentationRead-onlyv0.0.2 -
List Models
actionList all available Cursor models. See the documentationRead-onlyv0.0.2 -
List Source Repository Options
actionRetrieves available options for the Source Repository field.Read-onlyv0.0.1 -
Stop Agent
actionStop a running agent. You can only stop agents that are currently running. See the documentationWritev0.0.2
No Cursor triggers are available yet.
MULTI-APP
Use Cursor with other popular apps
Most products don't stop at one integration. Pair Cursor with the other apps your users rely on, and ship use cases that span both.
- App slug
- cursor
- Authentication
- API key
- Categories
- Artificial Intelligence (AI)
- Actions
- 8
- Triggers
- 0
- API proxy
- Available