CONNECT APP
Build with Nifty
Business Management
- OAuth
MCP
Give your agent Nifty tools
Every Nifty 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 Nifty 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": "nifty",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Assign Task to Team Member:
const result = await mcp.callTool({
name: "nifty-assign-task",
arguments: {
taskId: "Task ID",
assignees: ["Member 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": "nifty",
}
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 Assign Task to Team Member:
result = await session.call_tool("nifty-assign-task", {
"taskId": "Task ID",
"assignees": ["Member ID"],
})API PROXY
Call the Nifty API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Nifty 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://openapi.niftypm.com/api/v2.0/users/me",
})
// Any allowed Nifty 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://openapi.niftypm.com/api/v2.0/users/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9vcGVuYXBpLm5pZnR5cG0uY29tL2FwaS92Mi4wL3VzZXJzL21l?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Nifty actions from your backend
Connect a user's Nifty account once, then run Assign Task to Team Member 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: "nifty-assign-task",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
nifty: { authProvisionId: "apn_xxxxxxx" },
taskId: "Task ID",
assignees: ["Member 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="nifty-assign-task",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"nifty": {"authProvisionId": "apn_xxxxxxx"},
"taskId": "Task ID",
"assignees": ["Member 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": "nifty-assign-task",
"configured_props": {
"nifty": { "authProvisionId": "apn_xxxxxxx" },
"taskId": "Task ID",
"assignees": ["Member ID"]
}
}'TOOLS
Nifty actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Assign Task to Team Member
actionAssigns a specific task to a team member in Nifty. See the documentationWritev0.0.3 -
Create Message
actionSends a new message in a team's discussion. See the documentationWritev0.0.3 -
Create Project
actionCreates a new project in a designated portfolio. See the documentationWritev0.0.3 -
Create Task
actionCreates a new task. See the documentationWritev0.0.2 -
List App ID Options
actionRetrieves available options for the App ID field.Read-onlyv0.0.1 -
List Label IDs Options
actionRetrieves available options for the Label IDs field.Read-onlyv0.0.1 -
List Member ID Options
actionRetrieves available options for the Member ID field.Read-onlyv0.0.1 -
List Project ID Options
actionRetrieves available options for the Project ID field.Read-onlyv0.0.1 -
List Template ID Options
actionRetrieves available options for the Template ID field.Read-onlyv0.0.1
MULTI-APP
Use Nifty with other popular apps
Most products don't stop at one integration. Pair Nifty with the other apps your users rely on, and ship use cases that span both.
- App slug
- nifty
- Authentication
- OAuth
- Categories
- Business Management
- Actions
- 9
- Triggers
- 2
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Nifty OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- file
- doc
- message
- project
- task
- member
- label
- milestone
- subtask
- task_group
- subteam