Clockify Time Tracking
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLOCKIFY_REGION | No | Region for API endpoint: global (default) | euc1 | use2 | euw2 | apse2. | global |
| CLOCKIFY_API_KEY | Yes | Your Clockify API key (required). Obtain from Profile Settings > API. | |
| CLOCKIFY_BASE_URL | No | Override base URL for subdomain workspaces, e.g. https://acme.clockify.me. | |
| CLOCKIFY_TELEMETRY | No | Enable OpenTelemetry (default false). | false |
| CLOCKIFY_ACCESS_MODE | No | Access mode: read (default) | time-tracking (read + log hours) | full (all writes). | read |
| CLOCKIFY_ENABLE_WRITES | No | Back-compat alias: true = access_mode=full. CLOCKIFY_ACCESS_MODE takes precedence. | |
| CLOCKIFY_TELEMETRY_DETAIL | No | Span detail: metadata (default), ids, or full. | metadata |
| CLOCKIFY_DEFAULT_WORKSPACE_ID | No | Fallback workspace ID when a tool call omits workspace_id. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_current_userA | Get the currently logged-in user's info (id, email, default workspace). |
| list_workspacesA | List all workspaces the authenticated user belongs to. |
| get_workspaceA | Get info for one workspace (defaults to the configured workspace). |
| list_usersA | List workspace users, optionally filtered by name/email/status (paginated). fetch_all=True follows pagination and returns every page concatenated. |
| get_user_member_profileC | Get a member's profile within the workspace. |
| find_user_team_managerC | Find a user's team manager(s). |
| list_user_groupsB | List user groups on the workspace, optionally filtered by name (paginated). |
| list_clientsA | List clients on the workspace, optionally filtered by name (paginated). fetch_all=True follows pagination and returns every page concatenated. |
| get_clientB | Get a single client by id. |
| list_projectsC | List projects on the workspace with optional filters (paginated). fetch_all=True follows pagination and returns every page concatenated. |
| get_projectC | Get a single project by id. |
| list_tagsA | List tags on the workspace, optionally filtered by name (paginated). fetch_all=True follows pagination and returns every page concatenated. |
| get_tagC | Get a single tag by id. |
| list_tasksA | List tasks on a project, optionally filtered by name/active state (paginated). fetch_all=True follows pagination and returns every page concatenated. |
| get_taskB | Get a single task by id (within its project). |
| list_time_entriesB | List a user's time entries on the workspace (paginated). fetch_all=True follows pagination and returns every page concatenated. |
| get_time_entryC | Get a single time entry by id. |
| generate_detailed_reportC | Generate a detailed report (one row per time entry) for a date range. |
| generate_summary_reportB | Generate a summary report (totals grouped by one or more keys) for a date range. |
| generate_weekly_reportC | Generate a weekly report for a date range. |
| generate_attendance_reportB | Generate an attendance report (per user/day: work, break, capacity, overtime, time off) for a date range. Requires the attendance/time-tracking add-on. |
| generate_expense_reportA | Generate a detailed expense report ({"expenses": [...], "totals": {...}}) for a date range. Requires the Expenses add-on. |
| export_reportC | Export a report as a file (PDF/CSV/XLSX). report_type is detailed/summary/ weekly/attendance/expenses; fmt is PDF/CSV/XLSX; bytes are written to save_path. |
| list_shared_reportsB | List the workspace's shared reports. shared_reports_filter is ALL (default), CREATED_BY_ME, or SHARED_WITH_ME. |
| get_shared_reportC | Generate (fetch the data of) a shared report by id. Optional params override the saved range/sort/format; export_type is JSON/PDF/CSV/XLSX/ZIP. |
| list_time_off_policiesB | List time-off policies on the workspace (paginated). |
| get_time_off_policyB | Get a single time-off policy by id. |
| list_time_off_balances_by_policyC | List per-user time-off balances for a policy (paginated). |
| list_time_off_balances_by_userB | List a user's time-off balances across policies (paginated). |
| list_time_off_requestsC | List/filter time-off requests (filter sent as a POST body). |
| list_holidaysC | List holidays on the workspace, optionally filtered to a user. |
| list_holidays_in_periodC | List holidays overlapping a date range for a user. |
| list_expensesB | List expenses on the workspace (paginated), optionally for one user. |
| get_expenseB | Get a single expense by id. |
| list_expense_categoriesC | List expense categories (paginated). |
| download_expense_receiptB | Download an expense's receipt file to a local path. |
| list_approval_requestsC | List approval requests (paginated). |
| list_workspace_custom_fieldsB | List workspace custom fields (status INACTIVE/VISIBLE/INVISIBLE). |
| list_project_custom_fieldsC | List a project's custom fields (status INACTIVE/VISIBLE/INVISIBLE). |
| list_scheduled_assignmentsC | List scheduled assignments in a date range (start/end ISO-8601, required). sort_column is PROJECT/USER/ID; sort_order is ASCENDING/DESCENDING. |
| get_project_scheduling_totalsB | Get scheduled-assignment totals per project (POST filter body). start/end required. status_filter is PUBLISHED/UNPUBLISHED/ALL. |
| get_user_scheduling_totalsC | Get users' scheduling capacity totals (POST filter body). start/end required. status_filter is PUBLISHED/UNPUBLISHED/ALL. |
| list_invoicesC | List invoices (paginated). |
| get_invoiceC | Get a single invoice by id. |
| get_invoice_paymentsB | List an invoice's payments (paginated). |
| list_webhooksC | List webhooks. type filters by USER_CREATED, SYSTEM, or ADDON. |
| get_webhookB | Get a single webhook by id. |
| get_webhook_logsB | Get a webhook's delivery logs (POST filter body; page/size are query params). from_/to are ISO-8601. status filters by ALL/SUCCEEDED/FAILED. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 48 tools
Most tools map cleanly to a specific resource and action (list/get per entity), so an agent can usually tell them apart. A few borderline overlaps exist, such as list_holidays vs list_holidays_in_period and list_time_entries vs generate_detailed_report, but the descriptions clarify the intended use.
The dominant list_* and get_* pattern is clear and predictable, with generate_*_report used consistently for report generation. Minor deviations like find_user_team_manager, download_expense_receipt, and generic export_report keep it from being perfectly consistent.
48 tools is far beyond the typical well-scoped MCP surface, and many cover peripheral resources like webhook logs, invoice payments, and scheduled assignments. The breadth makes tool selection heavier for an agent than the core time-tracking purpose seems to justify.
The tool set is almost entirely read-only: it provides list/get and report generation but no create, update, delete, or timer-control operations. For a server named 'Clockify Time Tracking', the absence of any way to actually start, stop, or modify time entries is a severe gap.