CONNECT APP
Build with Alpaca
Web & App Development
- OAuth
MCP
Give your agent Alpaca tools
Every Alpaca 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 Alpaca 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": "alpaca",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Cancel All Orders:
const result = await mcp.callTool({
name: "alpaca-cancel-all-orders",
arguments: {
isPaperAPI: true,
},
})# 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": "alpaca",
}
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 Cancel All Orders:
result = await session.call_tool("alpaca-cancel-all-orders", {
"isPaperAPI": True,
})API PROXY
Call the Alpaca API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Alpaca 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.alpaca.markets/v2/account",
})
// Any allowed Alpaca 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.alpaca.markets/v2/account
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuYWxwYWNhLm1hcmtldHMvdjIvYWNjb3VudA?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Alpaca actions from your backend
Connect a user's Alpaca account once, then run Cancel All Orders 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: "alpaca-cancel-all-orders",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
alpaca: { authProvisionId: "apn_xxxxxxx" },
isPaperAPI: true,
},
})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="alpaca-cancel-all-orders",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"alpaca": {"authProvisionId": "apn_xxxxxxx"},
"isPaperAPI": True,
},
)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": "alpaca-cancel-all-orders",
"configured_props": {
"alpaca": { "authProvisionId": "apn_xxxxxxx" },
"isPaperAPI": true
}
}'TOOLS
Alpaca actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Cancel All Orders
actionAttempts to cancel all open orders. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server reject the request, See the docsWritev0.0.3 -
Cancel Order
actionAttempts to cancel an open order. If the order is no longer cancelable (example: status=filled), the server will reject the request, See the docsWritev0.0.3 -
Close All Positions
actionCloses (liquidates) all of the account’s open long and short positions. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will reject the request, See the docsWritev0.0.3 -
Close Position
actionCloses (liquidates) the account’s open position. Works for both long and short positions, See the docsWritev0.0.2 -
Get Account Info
actionReturns the account info, See the docsRead-onlyv0.0.3 -
List Orders
actionRetrieves a list of orders for the account, filtered by the supplied query parameters, if no filter given all will be returned, See the docsRead-onlyv0.0.3 -
List Positions
actionRetrieves a list of the account’s open positions, See the docsWritev0.0.2 -
Place Order
actionPlaces a new order for the given account. An order request may be rejected if the account is not authorized for trading, or if the tradable balance is insufficient to fill the order, See the docsWritev0.1.2
No Alpaca triggers are available yet.
MULTI-APP
Use Alpaca with other popular apps
Most products don't stop at one integration. Pair Alpaca with the other apps your users rely on, and ship use cases that span both.
- App slug
- alpaca
- Authentication
- OAuth
- Categories
- Web & App Development
- Actions
- 8
- Triggers
- 0
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Alpaca OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- account:write
- trading
- data