Harvest ACTION
List Tasks
List tasks in the Harvest account, automatically following pagination up to 200 tasks. Use this to discover task IDs for Create Task Assignment, Create Timesheet Entry, and other tools that accept a Task ID. Example: call with isActive=true to find the ID for the "Fence Maintenance" task before assigning it to a project. See the documentation.
- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Harvest account once, then configure and run List Tasks from your backend or agent.
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: "harvest-list-tasks",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
harvest: { authProvisionId: "apn_xxxxxxx" },
accountId: "Account ID",
isActive: true,
},
})
console.log(result)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": "harvest-list-tasks",
"configured_props": {
"harvest": { "authProvisionId": "apn_xxxxxxx" },
"accountId": "Account ID",
"isActive": true
}
}'// 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": "harvest",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "harvest-list-tasks",
arguments: {
accountId: "Account ID",
isActive: true,
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
accountId Account ID | string | Your Harvest account ID, e.g. 1234567. Run List Account ID Options to find it. Required |
isActive Is Active | boolean | Only return active or inactive tasks. Optional |
updatedSince Updated Since | string | Only return records updated since this UTC datetime, e.g. 2019-06-25T15:30:00Z. Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- harvest-list-tasks
- Version
- 0.0.1
- App
- Harvest
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗