CONNECT APP
Build with Zoho Projects
Productivity
- OAuth
MCP
Give your agent Zoho Projects tools
Every Zoho Projects 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 Zoho Projects 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": "zoho_projects",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Add Log Time:
const result = await mcp.callTool({
name: "zoho_projects-add-log-time",
arguments: {
portalId: "Portal ID",
projectId: "Project 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": "zoho_projects",
}
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 Log Time:
result = await session.call_tool("zoho_projects-add-log-time", {
"portalId": "Portal ID",
"projectId": "Project ID",
})API PROXY
Call the Zoho Projects API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Zoho Projects 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 Zoho Projects 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 Zoho Projects actions from your backend
Connect a user's Zoho Projects account once, then run Add Log Time 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: "zoho_projects-add-log-time",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
zoho_projects: { authProvisionId: "apn_xxxxxxx" },
portalId: "Portal ID",
projectId: "Project 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="zoho_projects-add-log-time",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"zoho_projects": {"authProvisionId": "apn_xxxxxxx"},
"portalId": "Portal ID",
"projectId": "Project 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": "zoho_projects-add-log-time",
"configured_props": {
"zoho_projects": { "authProvisionId": "apn_xxxxxxx" },
"portalId": "Portal ID",
"projectId": "Project ID"
}
}'TOOLS
Zoho Projects actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Add Log Time
actionAdd Time for a General Log. Adds the time log to other tasks. See the docs hereWritev0.0.3 -
Create Bug
actionCreates a bug. See the docs hereWritev0.0.3 -
Create Milestone
actionCreates a milestone. See the docs hereWritev0.0.3 -
Create Project
actionCreates a project. See the docs hereWritev0.0.3 -
Create Task
actionCreates a task. See the docs hereWritev0.0.3 -
Create Task List
actionCreates a task list. See the docs hereWritev0.0.3 -
Find Project
actionLists the modules across the portal based on the search term. The API returns both active and archived projects for the users having admin privileges. See the docs hereWritev0.0.3 -
List Portal ID Options
actionRetrieves available options for the Portal ID field.Read-onlyv0.0.1 -
Update Project
actionUpdates a project. See the docs hereWritev0.0.3 -
Upload File
actionAdd a document. See the docs hereWritev0.0.3
EVENTS
Zoho Projects triggers
Event sources your backend can deploy for users and receive through a webhook.
-
New Bug
triggerEmit new event when a new bug is created. See the docs herev0.0.3 -
New Log Time
triggerEmit new event when a log time is created. See the docs herev0.0.3 -
New Milestone
triggerEmit new event when a new milestone is created. See the docs herev0.0.3 -
New Project
triggerEmit new event when a new project is created. See the docs herev0.0.3 -
New Task
triggerEmit new event when a new task is created. See the docs herev0.0.3 -
New Task List
triggerEmit new event when a task list is created. See the docs herev0.0.3
- App slug
- zoho_projects
- Authentication
- OAuth
- Categories
- Productivity
- Actions
- 10
- Triggers
- 6
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Zoho Projects OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- ZohoProjects.portals.all
- ZohoProjects.projects.all
- ZohoProjects.activities.create
- ZohoProjects.status.read
- ZohoProjects.milestones.all
- ZohoProjects.tasklists.all
- ZohoProjects.tasks.all
- ZohoProjects.timesheets.all
- ZohoProjects.bugs.all
- ZohoProjects.tags.all
- ZohoProjects.events.all
- ZohoProjects.forums.all
- ZohoProjects.users.all
- ZohoProjects.documents.CREATE
- ZohoPC.files.CREATE
- ZohoProjects.search.read
- ZohoProjects.documents.READ
- WorkDrive.team.ALL
- WorkDrive.workspace.ALL
- WorkDrive.files.ALL
- ZohoProjects.custom_fields.READ