Clockify ACTION
Start Timer
Starts a running timer for a new time entry in Clockify — no end time is set. Use Stop Timer to stop it, or Update Time Entry to set an end time later. Use Log Time Entry instead if you already know both the start and end time. See the documentation, or starting for another member when
User is set- Action
- Writes data
- API key
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Clockify account once, then configure and run Start Timer 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: "clockify-start-timer",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
clockify: { authProvisionId: "apn_xxxxxxx" },
workspaceId: "Workspace",
projectId: "Project",
},
})
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": "clockify-start-timer",
"configured_props": {
"clockify": { "authProvisionId": "apn_xxxxxxx" },
"workspaceId": "Workspace",
"projectId": "Project"
}
}'// 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": "clockify",
},
},
},
)
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: "clockify-start-timer",
arguments: {
workspaceId: "Workspace",
projectId: "Project",
},
})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 |
|---|---|---|
workspaceId Workspace | string | Identifier of a workspace Required Dynamic |
projectId Project | string | Identifier of a project Optional Dynamic |
taskId Task | string | Identifier of a task Optional Dynamic |
userId User | string | Starts the timer for this workspace member instead of yourself. Leave blank to start the timer for your own account. Optional Dynamic |
start Start | string | Start date and time of the timer, in ISO 8601 format. Example: 2026-08-05T09:00:00Z. Defaults to the current time if left blank. Optional |
timeEntryDescription Description | string | Description of the time entry Optional |
billable Billable | boolean | Whether the time entry is billable Optional |
tagIds Tags | string[] | Array of tag identifiers Optional Dynamic |
timeEntryType Type | string | The type of the time entry 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
- clockify-start-timer
- Version
- 0.0.2
- App
- Clockify
- Authentication
- API key
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗