clockify_create_ invoice_ from_ timeCreate a draft invoice for a client and fill it with the billable time of a date range.
Start and stop timers from chat, log the hours you forgot, ask where the team's time went this week, and turn billable hours into a draft invoice, in the Clockify workspace you already use.
PopMCPClockify
Every documented operation in the Clockify API, with the everyday time-tracking tools loaded by default and the rest, from rates and scheduling to time off balances, shared reports and the audit log, one search away.
172 tools in the full catalog: 64 read and 108 write. 40 load by default, and the rest are found with tool search.
clockify_create_ invoice_ from_ timeCreate a draft invoice for a client and fill it with the billable time of a date range.
clockify_create_ time_ off_ requestAsk for time off for the connected user.
clockify_get_ invoiceGet an invoice by ID.
clockify_list_ invoicesList the workspace's invoices, newest first.
clockify_list_ time_ off_ requestsList time off requests in the workspace with who, when and status.
clockify_create_ time_ entryLog time for the connected user, or start a timer by leaving end out.
clockify_create_ time_ entry_ for_ userLog time for another person (owners, admins, or managers with permission).
clockify_delete_ time_ entryDelete one time entry.
clockify_get_ running_ timerIs a timer running, and on what? For the connected user unless userId is given.
clockify_get_ time_ entryGet one time entry by id.
clockify_list_ running_ timersList every timer running right now across the workspace (who is working on what).
clockify_list_ time_ entriesList one person's time entries, newest first (defaults to the connected user).
clockify_log_ timeLog a finished block of time: start plus end or durationMinutes, with project, task and tags as names or ids.
clockify_start_ timerStart a timer now for the connected user.
clockify_stop_ timerStop the running timer, now unless end is given.
clockify_update_ time_ entryReplace a time entry.
clockify_create_ projectCreate a project.
clockify_get_ detailed_ reportEvery time entry in a date range across the workspace, with project, task, user, duration and amounts.
clockify_get_ projectGet one project, its estimates and members.
clockify_get_ summary_ reportTotal time and money grouped the way you ask, for any people and projects: the fastest way to answer how many hours per project, client or person.
clockify_get_ weekly_ reportTime per day across a week-style grid.
clockify_list_ projectsList projects in the workspace.
clockify_time_ summaryHours in a date range grouped by project, client, task, tag, date or person, in hours (Clockify's reports answer in seconds), with totals and amounts in cents.
clockify_update_ projectChange a project's name, client, color, billable default, public access, note, or archive it.
clockify_create_ expenseRecord an expense.
clockify_list_ expensesGet all expenses on a workspace.
clockify_get_ current_ userWho this API key belongs to: id, name, email, status and time zone settings.
clockify_get_ workspaceThe connected workspace: name, plan, currencies, default rates and settings (including which fields a time entry must have: forceProjects, forceTasks, forceTags, forceDescription).
clockify_list_ usersList the workspace's members.
clockify_create_ webhookHave Clockify POST to your URL when something happens.
clockify_list_ webhooksList the workspace's webhooks.
clockify_create_ taskAdd a task to a project.
clockify_list_ custom_ fieldsList the custom fields of the workspace.
clockify_list_ tasksList a project's tasks.
clockify_list_ approval_ requestsList timesheet and expense approval requests.
clockify_update_ approval_ requestApprove, reject or withdraw an approval request: state is APPROVED, REJECTED, WITHDRAWN_SUBMISSION, WITHDRAWN_APPROVAL or PENDING.
clockify_create_ clientAdd a new client.
clockify_create_ tagAdd a new tag.
clockify_list_ clientsList clients in the workspace.
clockify_list_ tagsList tags in the workspace.
clockify_add_ invoice_ itemAdd one line to an invoice.
clockify_add_ invoice_ paymentAdd payment to an invoice.
clockify_create_ balance_ assignmentCreates a new balance assignment for an user in policy.
clockify_create_ invoiceCreate a draft invoice for a client.
clockify_create_ time_ off_ policyCreate a time off policy.
clockify_create_ time_ off_ request_ for_ userCreate a time off request for an user.
clockify_delete_ balance_ assignmentDeletes a specific balance assignment.
clockify_delete_ invoiceDelete an invoice.
clockify_delete_ invoice_ itemDelete item from an invoice.
clockify_delete_ invoice_ paymentDelete payment from an invoice.
clockify_delete_ time_ off_ policyDelete a policy.
clockify_delete_ time_ off_ requestDelete a time off request.
clockify_duplicate_ invoiceDuplicate an invoice.
clockify_export_ invoiceDownload an invoice as a PDF, returned as base64.
clockify_filter_ invoicesFilter out invoices.
clockify_get_ invoice_ settingsGet invoice settings.
clockify_get_ time_ off_ policyGet a time off policy.
clockify_import_ invoice_ itemsAdd the billable time (and optionally expenses) of a date range to an invoice as line items.
clockify_list_ balance_ assignmentsGet all balance assignments of an user in policy.
clockify_list_ invoice_ paymentsGet payments for an invoice.
clockify_list_ policy_ balancesGet balances for a policy.
clockify_list_ time_ off_ policiesGet policies on a workspace.
clockify_list_ user_ balancesHow much time off one person has left under each policy (defaults to the connected user).
clockify_update_ balance_ assignmentUpdates a specific balance assignment.
clockify_update_ invoiceUpdate an invoice.
clockify_update_ invoice_ settingsChange invoice settings.
clockify_update_ invoice_ statusMove an invoice to UNSENT, SENT, PAID, PARTIALLY_PAID, VOID or OVERDUE.
clockify_update_ policy_ balanceUpdate a balance.
clockify_update_ time_ off_ policyUpdate a policy.
clockify_update_ time_ off_ policy_ statusChange a policy status.
clockify_update_ time_ off_ request_ statusApprove or reject a time off request: status is APPROVED or REJECTED.
clockify_bulk_ delete_ time_ entriesDelete several of one person's time entries.
clockify_bulk_ update_ time_ entriesEdit many of one person's time entries at once.
clockify_duplicate_ time_ entryMake a copy of a time entry, with the same times and fields.
clockify_get_ time_ entries_ batchGet several time entries by id in one call.
clockify_set_ time_ entries_ invoicedMark time entries as invoiced or not invoiced.
clockify_stop_ running_ time_ entryStop the running timer of a person (defaults to the connected user).
clockify_assign_ project_ usersAdd people or user groups to a project, or take them off with remove=true.
clockify_create_ project_ from_ templateCreate project from a template.
clockify_create_ shared_ reportCreate a shared report.
clockify_delete_ projectDelete a project.
clockify_delete_ shared_ reportDelete a shared report.
clockify_get_ attendance_ reportWork, break, overtime and capacity per person per day in a date range.
clockify_get_ audit_ log_ reportWho changed what in the workspace, from the audit log.
clockify_get_ expense_ reportEvery expense in a date range with totals per category.
clockify_list_ shared_ reportsGet all my shared reports.
clockify_run_ shared_ reportRun a saved shared report by id.
clockify_set_ project_ templateUpdate a project template.
clockify_set_ project_ user_ billable_ rateUpdate a project user's billable rate.
clockify_set_ project_ user_ cost_ rateUpdate project user's cost rate.
clockify_update_ project_ estimateUpdate project estimate.
clockify_update_ project_ membershipsSet per-person rates on a project: this replaces the memberships listed.
clockify_update_ shared_ reportUpdate a shared report.
clockify_copy_ assignmentCopy a scheduled assignment.
clockify_create_ assignmentSchedule a person on a project: userId, projectId, start, end and hoursPerDay.
clockify_create_ expense_ categoryAdd an expense category.
clockify_delete_ assignmentDelete assignment.
clockify_delete_ expenseDelete an expense.
clockify_delete_ expense_ categoryDelete an expense category.
clockify_download_ expense_ receiptDownload an expense's receipt file, returned as base64.
clockify_get_ expenseGet an expense by ID.
clockify_get_ project_ schedule_ totalsGet all scheduled assignments on project.
clockify_get_ user_ capacity_ totalsGet total capacity of an user.
clockify_list_ assignmentsList scheduled assignments in a date range (start and end are required; dates work).
clockify_list_ expense_ categoriesGet all expense categories.
clockify_list_ project_ schedule_ totalsGet all scheduled assignments per project.
clockify_list_ user_ capacity_ totalsGet total of users' capacity on workspace.
clockify_publish_ assignmentsPublish assignments.
clockify_set_ expense_ category_ archivedArchive an expense category.
clockify_update_ assignmentUpdate assignment.
clockify_update_ assignment_ recurrenceChange the recurring period.
clockify_update_ expenseChange an expense.
clockify_update_ expense_ categoryUpdate an expense category.
clockify_add_ limited_ usersAdd limited users.
clockify_add_ user_ roleGive manager role to an user.
clockify_create_ workspaceCreate a separate Clockify workspace.
clockify_filter_ usersSearch the workspace's members with more filters than clockify_list_users: roles, account statuses, user groups, project.
clockify_get_ member_ profileGet a member's profile.
clockify_invite_ userAdd a person to the workspace by email.
clockify_list_ user_ managersFind user's team manager.
clockify_list_ workspacesThe connected workspace (this connection is pinned to one Clockify workspace; other workspaces of the same login are not shown).
clockify_remove_ user_ roleRemove user's manager role.
clockify_set_ user_ billable_ rateUpdate an user's hourly rate.
clockify_set_ user_ cost_ rateUpdate an user's cost rate.
clockify_set_ user_ custom_ field_ valueUpdate an user's custom field.
clockify_set_ workspace_ billable_ rateUpdate workspace billable rate.
clockify_set_ workspace_ cost_ rateUpdate workspace cost rate.
clockify_update_ member_ profileUpdate a member's profile.
clockify_update_ user_ statusActivate or deactivate a member of the workspace.
clockify_upload_ imageUpload a picture and get back its URL, used as a profile picture with clockify_update_member_profile.
clockify_delete_ webhookDelete a webhook.
clockify_get_ webhookGet one webhook.
clockify_list_ addon_ webhooksGet all webhooks for addon on a workspace.
clockify_list_ webhook_ event_ statusesGet webhook event statuses for a webhook.
clockify_list_ webhook_ logsGet logs for a webhook.
clockify_rotate_ webhook_ tokenIssue a new signing token for a webhook and cancel the old one.
clockify_update_ webhookChange a webhook's name, url, event or trigger.
clockify_create_ custom_ fieldCreate custom fields on a workspace.
clockify_delete_ custom_ fieldDelete a custom field.
clockify_delete_ taskDelete a task from a project.
clockify_get_ taskGet a task by id.
clockify_list_ project_ custom_ fieldsGet custom fields on a project.
clockify_remove_ project_ custom_ fieldRemove custom field from a project.
clockify_set_ task_ billable_ rateUpdate a task's billable rate.
clockify_set_ task_ cost_ rateUpdate a task's cost rate.
clockify_update_ custom_ fieldUpdate custom field on workspace.
clockify_update_ project_ custom_ fieldUpdate custom field on a project.
clockify_update_ taskReplace a task.
clockify_add_ user_ to_ groupAdd users to a group.
clockify_create_ user_ groupAdd a new group.
clockify_delete_ user_ groupDelete a group.
clockify_list_ user_ groupsList the workspace's user groups.
clockify_remove_ user_ from_ groupRemove an user from a group.
clockify_resubmit_ approval_ entriesSubmit non pending/approved entries/expenses for approval to an existing approval request.
clockify_resubmit_ approval_ entries_ for_ userRe-submit rejected/withdrawn entries/expenses for an approval of an user.
clockify_submit_ approval_ requestSubmit approval request with type.
clockify_submit_ approval_ request_ for_ userSubmit approval request for user with type.
clockify_update_ user_ groupUpdate a group.
clockify_create_ holidayCreate a holiday.
clockify_delete_ clientDelete a client.
clockify_delete_ holidayDelete a holiday.
clockify_delete_ tagDelete a tag.
clockify_get_ clientGet a client by ID.
clockify_get_ tagGet a tag by ID.
clockify_list_ holidaysList the workspace's holidays.
clockify_list_ holidays_ in_ periodList holidays in a date range for one person (assigned-to defaults to the connected user; dates work).
clockify_update_ clientChange a client.
clockify_update_ holidayUpdate a holiday.
clockify_update_ tagRename or archive a tag.
clockify_list_ created_ entitiesWhat was created in a date range, for keeping another system in sync.
clockify_list_ deleted_ entitiesWhat was deleted in a date range, for keeping another system in sync.
clockify_list_ updated_ entitiesWhat was updated in a date range, for keeping another system in sync.
Credentials off one Clockify screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
In Clockify open Profile settings, then Preferences, then the Advanced tab, click Manage API keys, then Generate new, and paste the key into PopMCP. Every plan can do this, free included, with no app or approval. PopMCP finds your data region, lists your workspaces and locks the connection to the one you choose.
••••••••••••3f7aStarting timers, logging and changing time, and everything else that edits Clockify are writes and wait until an owner or admin allows write actions; new connections start read-only. Clockify keys have no permission settings of their own, so read-only in PopMCP is what keeps a key from changing anything.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Clockify credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
How many hours did my team log this week, by project and by person?
clockify_time_summaryok
Then just ask for the work
“How many hours did my team log this week, by project and by person?”
“Start a timer on the Website project for the homepage copy”
“Am I tracking anything right now? If so, stop it”
“Log 90 minutes yesterday morning on the Acme project for the client call”
“Who has a timer running at the moment, and on what?”
“Create a draft invoice for Acme from last month's billable hours”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Clockify behind an AI client.
One API key. In Clockify open Profile settings, then Preferences, then the Advanced tab, click Manage API keys, then Generate new, name it, click Generate and copy it, because Clockify shows it only once. Paste it into PopMCP, which stores it encrypted and shows you your workspaces to choose from. The key never reaches your AI client.
Yes, with one limit that is Clockify's own: the free plan allows 30 API requests an hour per workspace, against 20 a second on paid plans. So PopMCP keeps connecting cheap, remembers who you are instead of asking each time, and offers tools such as time_summary that answer a whole question in one request. Reports on the free plan cover at most 31 days.
No. Clockify runs separate data regions and a key only works in its own, so PopMCP tries each region's address when you connect and remembers the one that accepts your key. Regular calls and reports then go to that region. Clockify documents its audit log on one global address only, so that one report may not reach a regional workspace.
A Clockify key can reach every workspace you belong to, so each PopMCP connection is locked to the one workspace you pick. The workspace is filled in on every call and a request for another one is refused, not answered with the wrong data. To work with several, connect each one.
No. start_timer and log_time take a project, task and tag by name and look up the id. If a name fits more than one project, the tool lists the matches for the AI to choose from instead of guessing. Plain dates work everywhere, and the AI can pass me for the person who made the key.
Yes. Every connection starts read-only, which keeps timesheets, reports and project lists readable and blocks every change. An owner or admin can allow write actions later. The role of the person who made the key still applies: Clockify refuses anything their role or plan does not allow.
PopMCP can register Clockify's own webhooks with your key, so a workflow can start when a timer starts or stops, a time entry changes, a project, task or client is added, an invoice changes, a timesheet is submitted or decided, or time off is requested. Only workspace owners and admins can create webhooks, and the free plan allows three.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Clockify in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Clockify on the consent screen. The Clockify tools are then available in that session, and no Clockify credential is stored on your machine.
Loading 172 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 40-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 172 here. A trigger is something PopMCP watches for you: 26 Clockify events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Clockify.
Launch a hosted MCP endpoint for Clockify, keep tool access under control, and start testing real workflow prompts right away.