Clockify ACTION
Update Time Entry
Updates an existing time entry in Clockify — change its start/end time, project, task, description, billable status, or tags. Clockify's update endpoint replaces the entire entry, so this action first fetches the current entry and merges your changes into it before saving — fields you don't set are left unchanged. Use List Time Entries to find the ID of the entry to update. See the documentation
- Action
- Writes data
- API key
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Clockify account once, then configure and run Update Time Entry 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-update-time-entry",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
clockify: { authProvisionId: "apn_xxxxxxx" },
workspaceId: "Workspace",
timeEntryId: "Time Entry ID",
},
})
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-update-time-entry",
"configured_props": {
"clockify": { "authProvisionId": "apn_xxxxxxx" },
"workspaceId": "Workspace",
"timeEntryId": "Time Entry ID"
}
}'// 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-update-time-entry",
arguments: {
workspaceId: "Workspace",
timeEntryId: "Time Entry ID",
},
})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 |
timeEntryId Time Entry ID | string | Identifier of a time entry, for example 6a72db27a231b34fe8361aeb. Use the List Time Entries action to find the ID of the entry you want to update. Required |
projectId Project | string | Identifier of a project Optional Dynamic |
taskId Task | string | Identifier of a task Optional Dynamic |
start Start | string | Start date and time of the time entry, in ISO 8601 format. Example: 2026-08-05T09:00:00Z Optional |
end End | string | End date and time of the time entry, in ISO 8601 format. Example: 2026-08-05T17:00:00Z 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-update-time-entry
- Version
- 0.0.2
- App
- Clockify
- Authentication
- API key
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗