CONNECT APP
Build with Tuya
Global AI Cloud Platform Service Provider
Smart Home Automation
- API key
MCP
Give your agent Tuya tools
Every Tuya 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 Tuya 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": "tuya",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run List Devices:
const result = await mcp.callTool({
name: "tuya-list-devices",
arguments: {
userId: "User ID",
homeId: "Home ID",
},
})# 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": "tuya",
}
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 List Devices:
result = await session.call_tool("tuya-list-devices", {
"userId": "User ID",
"homeId": "Home ID",
})SDK
Run Tuya actions from your backend
Connect a user's Tuya account once, then run List Devices 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: "tuya-list-devices",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
tuya: { authProvisionId: "apn_xxxxxxx" },
userId: "User ID",
homeId: "Home ID",
},
})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="tuya-list-devices",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"tuya": {"authProvisionId": "apn_xxxxxxx"},
"userId": "User ID",
"homeId": "Home ID",
},
)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": "tuya-list-devices",
"configured_props": {
"tuya": { "authProvisionId": "apn_xxxxxxx" },
"userId": "User ID",
"homeId": "Home ID"
}
}'TOOLS
Tuya actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
List Devices
actionGet a list of devices associated with a home. See the documentationRead-onlyv0.0.2 -
List Homes
actionBased on the user ID, query the list of homes where the specified user belongs. See the documentationRead-onlyv0.0.2 -
Send Instructions to Device
actionSend an instruction to the specified device. See the documentationWritev0.0.2
MULTI-APP
Use Tuya with other popular apps
Most products don't stop at one integration. Pair Tuya with the other apps your users rely on, and ship use cases that span both.
- App slug
- tuya
- Authentication
- API key
- Categories
- Smart Home Automation
- Actions
- 3
- Triggers
- 1
- API proxy
- Not available