Toggl 2.0

io.github.togglPublished by GitHub account togglv1.13.194Updated Nov 8, 2026

Toggl 2.0 MCP server for tasks, projects, time entries, and workspace operations.

Overview

AI-generated overview

Toggl 2.0 MCP server that lets an assistant manage workspaces, projects, tasks, time entries, timesheets and reports.

What you can do
  • List, switch and manage workspaces, profiles and authentication state
  • Create, update, archive or delete projects, tasks, clients, tags, milestones, goals and custom fields
  • Log, bulk-create, archive and review time entries, capacities, time off and timesheet approvals
  • Run and schedule reports, custom reports, saved views and shared reports
  • Search across Toggl entities and read audit logs, alerts and subscription details
When to use it
Useful when you want an assistant to log or clean up time entries, keep projects and tasks organized, or pull time and profitability reports from Toggl 2.0 without switching apps.
Requirements
Runs locally over stdio, typically via npx. Requires a Toggl 2.0 account: authenticate through the auth tool, which opens a browser and stores credentials locally, or run with the TOGGL_API_TOKEN environment variable. Credentials and profiles are kept in a local config file shared with the Toggl CLI.
Before you install
Many tools create, update, archive or delete data, including bulk operations; mutations use a confirm_token handshake and support dry_run, so review before confirming. profile-remove deletes stored credentials and also affects the Toggl CLI. The auth tool opens a browser login and stores credentials on disk. Audit logs, rates and subscription data are exposed.

Installation

In SourceWeft

  1. Open Toggl 2.0 in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Tools

56

workspace-list

List Workspaces

List workspaces for the active MCP profile. Pass refresh: true to refetch from Accounts when a workspace is missing from cache.

Parametersrefresh

workspace-switch

Switch Workspace

Switch the active workspace by updating the stored configuration. The new workspace takes effect on the next tool call. Use workspace-list to see available workspace IDs.

Parametersworkspace_idrequired

profile-list

List MCP profiles

List saved credential profiles from ~/.toggl/focus-tools.json. The row where active is true is the MCP active profile (active.mcp). Profiles may be shared with the Toggl CLI.

Takes no parameters.

profile-switch

Switch MCP profile

Set active.mcp to an existing profile name so subsequent entity calls use that credential row.

Parametersprofile_namerequired

profile-remove

Remove saved profile

Delete a profile row from ~/.toggl/focus-tools.json. If it was the MCP active profile, active.mcp moves to another remaining profile when possible. This affects both MCP and shared storage; removing a profile used by the CLI removes it for the CLI too. Destructive: call without confirm_token first to receive confirm_required + confirm_token, then repeat with the same profile_name and confirm_token (same pattern as entity mutations).

Parametersprofile_namerequiredconfirm_token

auth

Authenticate MCP

Authenticate this MCP server with Toggl 2.0 via OAuth. Opens browser login and stores credentials locally. Optionally pass workspace_id to pick a specific workspace when multiple are available. When the server runs with TOGGL_API_TOKEN, reports the API-key identity instead and never opens a browser.

Parametersworkspace_idfocus_api_urlaccounts_api_url

logout

Logout MCP

Clear local MCP authentication state. Removes stored credentials so subsequent tool calls require auth again.

Takes no parameters.

ai

Ai

Manage Focus ai with the following actions: - **accept-ai-change**: Accept Ai Change Ai. (data: conversation_id*, message_id*, view_id*) - **apply-ai-change**: Apply Ai Change Ai. (data: conversation_id*, message_id*, view_id*) - **connect-ai-source**: Connect Ai Source Ai. (data: payload*{redirect_uri*}, source_id*) - **day-rebuild-group**: Day Rebuild Group Ai. (data: payload*{evidence*}) - **day-rebuild-name**: Day Rebuild Name Ai. (data: payload*{evidence*}) - **day-rebuild-projects**: Day Rebuild Projects Ai. (data: payload*{evidence*}) - **day-rebuild-read-connected**: Day Rebuild Read Connected Ai. (data: payload*{now*, service*, since*, tools*, final, preferred_tools, turns}) - **discard-ai-change**: Discard Ai Change Ai. (data: conversation_id*, message_id*, view_id*) - **disconnect-ai-source**: Disconnect Ai Source Ai. (data: source_id*) - **finish-ai-source**: Finish Ai Source Ai. (data: payload*{code*, state*}, source_id*) - **get-conversations**: Get Conversations Ai. (data: before, limit, search) - **get-messages**: Get Messages Ai. (data: conversation_id*, limit) - **get-sources**: Get Sources Ai. (data: none) - **get-usage**: Get Usage Ai. (data: none) - **next-ai-actions**: Next Ai Actions Ai. (data: conversation_id*, message_id*) - **remove-ai-attachment**: Remove Ai Attachment Ai. (data: attachment_id*, conversation_id*) - **run-ai-view**: Run Ai View Ai. (data: payload*{input*, tool*}) - **search**: Search Ai. (data: q*) - **send-ai-message**: Send Ai Message Ai. (data: conversation_id*, payload*{text*, attachment_ids, page_context}) - **undo-ai-change**: Undo Ai Change Ai. (data: conversation_id*, message_id*, view_id*) - **upload-ai-attachment**: Upload Ai Attachment Ai. (data: conversation_id*, file*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: tru

Parametersdataactionrequireddry_runconfirm_token

alerts

Alerts

Manage Focus alerts with the following actions: - **create**: Create Alerts. (data: payload*{config*, rule_type*, project_id, recipient_group_ids, recipient_roles, recipient_user_ids}) - **delete**: Delete Alerts. (data: alert_id*) - **get**: Get Alerts. (data: alert_id*) - **list**: List Alerts. (data: rule_type, project_id, scope) - **partial-update**: Partial Update Alerts. (data: alert_id*, payload*{config, recipient_group_ids, recipient_roles, recipient_user_ids, rule_type}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

archived-clients

Archived-clients

Manage Focus archived-clients with the following actions: - **get**: Get Archived Clients. (data: client_id*) - **get-classic**: Get Classic Archived Clients. (data: name, page, per_page) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

archived-projects

Archived-projects

Manage Focus archived-projects with the following actions: - **get**: Get Archived Projects. (data: project_id*) - **get-classic**: Get Classic Archived Projects. (data: client_id, name, page, per_page) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

archived-tasks

Archived-tasks

Manage Focus archived-tasks with the following actions: - **get**: Get Archived Tasks. (data: task_id*) - **get-classic**: Get Classic Archived Tasks. (data: name, page, per_page, project_id) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

archived-time-entries

Archived-time-entries

Manage Focus archived-time-entries with the following actions: - **get**: Get Archived Time Entries. (data: date_from*, date_to*, page, per_page, project_id, task_id) - **get-get**: Get Get Archived Time Entries. (data: time_entry_id*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

attachments

Attachments

Manage Focus attachments with the following actions: - **get-workspace-attachment-storage**: Get Workspace Attachment Storage Attachments. (data: none) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

audit-log

Audit-log

Manage Focus audit-log with the following actions: - **get-organization**: Get Organization Audit Log. (data: action, custom_field_id, entity_id, entity_type, export, from*, page_number, page_size, project_id, to*, user_id, workspace_id) - **list**: List Audit Log. (data: action, custom_field_id, entity_id, entity_type, export, from*, page_number, page_size, project_id, to*, user_id) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

capacities

Capacities

Manage Focus capacities with the following actions: - **get-computations**: Compute user or ghost capacity for a date range. (data: end_date*, group*, include_drafts, include_task_estimates, private, start_date*, task_source, team_id, unit, user_id) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

clients

Clients

Manage Focus clients with the following actions: - **archive**: Archive Clients. (data: client_id*, payload*{project_count*}) - **create**: Create Clients. (data: name*, address, contact_email, currency, internal_reference) - **delete**: Delete Clients. (data: client_id*) - **get**: Get Clients. (data: client_id*) - **get-archive-preview**: Get Archive Preview Clients. (data: client_id*) - **list**: List Clients. Clients group billable work; projects can reference client_id. Filter projects with projects.list --client-id. (data: name, page, per_page) - **restore**: Restore Clients. (data: client_id*) - **unarchive**: Unarchive Clients. (data: client_id*) - **update**: Update Clients. (data: client_id*, payload*{name, address, contact_email, currency, internal_reference}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

projects

Projects

Manage Focus projects with the following actions: - **create-project**: Create a project with related data such as members, milestones, rates, and billable rates. Follow the create action's privacy and billable guidance. Project fields go under payload.project. Set rates through payload.billable_rates, not the legacy payload.rates (start_at/end_at). For payload.billable_rates: hourly_rate is in the currency's smallest unit, so it depends on the currency: two-decimal currencies like USD/EUR use cents (5000 = 50.00), zero-decimal ones like JPY/KRW use whole units (5000 = 5000), three-decimal ones like KWD/BHD use thousandths. Reads return the same unit. Omit end_date for an open-ended schedule; when set it must be on or after start_date. (data: payload*{project*, billable_rates, members, milestones, rates}) - **add-project-members**: Add Project Members Projects. (data: payload*{role_id*, group_ids, user_ids}, project_id*) - **archive**: Archive Projects. (data: project_id*) - **attachments-bulk-create**: Attachments Bulk Create Projects. Uploads several local files in one call. names and display_orders are optional parallel arrays; they default to the file basenames and array positions. (data: project_id*, file_paths*, names, display_orders) - **attachments-create**: Attachments Create Projects. Uploads a local file (file_path) as an attachment. The mime type is inferred from the extension and the API rejects disallowed types; uploads are capped at 20 MB. (data: project_id*, file_path*, name, display_order) - **attachments-delete**: Attachments Delete Projects. (data: attachment_id*, project_id*) - **attachments-list**: Attachments List Projects. Lists attachment metadata. Upload files with attachments-create (file_path), download with attachments-view (save_to). (data: order_by, project_id*) - **attachments-update**: Attachments Update Projects. Full update (PUT): both name and display_order are required; the response body is empty, verify via attachments-list. (da

Parametersdataactionrequireddry_runconfirm_token

tasks

Tasks

Manage Focus tasks with the following actions: - **create-task**: Create a task with related data such as subtasks and an initial time entry. For payload.task and each payload.subtasks[] item: Send start_date and end_date together, with end_date on or after start_date; for a single due date, send both as that day. (data: payload*{task*, estimate_allocations, subtasks, time_entry}) - **archive**: Archive Tasks. (data: from_recurring_task_id, scope, task_id*) - **attachments-bulk-create**: Attachments Bulk Create Tasks. Uploads several local files in one call. names and display_orders are optional parallel arrays; they default to the file basenames and array positions. (data: task_id*, file_paths*, names, display_orders) - **attachments-create**: Attachments Create Tasks. Uploads a local file (file_path) as an attachment. The mime type is inferred from the extension and the API rejects disallowed types; uploads are capped at 20 MB. (data: task_id*, file_path*, name, display_order) - **attachments-delete**: Attachments Delete Tasks. (data: attachment_id*, task_id*) - **attachments-list**: Attachments List Tasks. Lists attachment metadata. Upload files with attachments-create (file_path), download with attachments-view (save_to). (data: order_by, task_id*) - **attachments-update**: Attachments Update Tasks. Full update (PUT): both name and display_order are required; the response body is empty, verify via attachments-list. (data: attachment_id*, payload*{display_order*, name*}, task_id*) - **attachments-view**: Attachments View Tasks. Downloads the attachment's binary content to a local path (save_to). Refuses to replace an existing file unless overwrite is true. (data: task_id*, attachment_id*, save_to*, overwrite) - **bulk-archive**: Bulk Archive Tasks. (data: task_ids*) - **bulk-create**: Bulk Create Tasks. (data: tasks*) - **bulk-delete**: Bulk Delete Tasks. Deletes all listed task IDs in one HTTP call. Requires confirm flow like single delete. (data: ids*, outboun

Parametersdataactionrequireddry_runconfirm_token

custom-fields

Custom-fields

Manage Focus custom-fields with the following actions: - **bulk-patch-user-custom-field-values**: Bulk Patch User Custom Field Values Custom Fields. (data: payload*{user_ids*}) - **create**: Create Custom Fields. Requires workspace admin (403 otherwise). field_type is one of select, multi_select, text, number, date, checkbox, users; select/multi_select fields can be seeded with options inline. (data: payload*{entity_type*, field_type*, name*, description, integration_ext_id, integration_source, options}) - **delete**: Delete Custom Fields. Requires workspace admin. Soft-deletes the field and removes it from entities; this also discards stored values. (data: custom_field_id*) - **get**: Get Custom Fields. (data: custom_field_id*) - **get-allowed-users**: Get Allowed Users Custom Fields. (data: custom_field_id*) - **list**: List Custom Fields. Custom fields are workspace-level definitions attached to project or task entities. Reads work for all members; create/update/delete return 403 for non-admins. Reordering fields is not available through this tool yet. (data: entity_type, order_by, page, per_page) - **options-create**: Options Create Custom Fields. Requires workspace admin. Only valid for select and multi_select fields. (data: custom_field_id*, payload*{name*, color, description}) - **options-delete**: Options Delete Custom Fields. Requires workspace admin. Deleting an option clears it from entities that have it selected. (data: custom_field_id*, option_id*) - **options-list**: Options List Custom Fields. (data: custom_field_id*, name, order_by, page, per_page) - **options-update**: Options Update Custom Fields. Requires workspace admin. Full update (PUT) of the option's name/color/description. (data: custom_field_id*, option_id*, payload*{name*, color, description}) - **replace-custom-field-allowed-users**: Replace Custom Field Allowed Users Custom Fields. (data: custom_field_id*, payload*{user_ids*}) - **update**: Update Custom Fields. Requires workspace admin

Parametersdataactionrequireddry_runconfirm_token

customreports

Customreports

Manage Focus customreports with the following actions: - **create-acustom-report**: Create Acustom Report Customreports. (data: payload*{name*, params*}) - **delete-acustom-report**: Delete Acustom Report Customreports. (data: id*) - **get-acustom-report**: Get Acustom Report Customreports. (data: id*) - **get-custom-reports**: Get Custom Reports Customreports. (data: none) - **save-acustom-report**: Save Acustom Report Customreports. (data: id*, payload*{name*, params*}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

designations

Designations

Manage Focus designations with the following actions: - **bulk-create-workspace**: Bulk Create Workspace Designations. (data: payload*{designations*}) - **bulk-delete-workspace**: Bulk Delete Workspace Designations. (data: all_or_none, ids*) - **bulk-update-workspace**: Bulk Update Workspace Designations. (data: payload*{designations*, all_or_none}) - **create-project**: Create Project Designations. (data: payload*{designations*}, project_id*) - **create-project-designation-bookings**: Create Project Designation Bookings Designations. (data: payload*{bookings*}, project_id*) - **create-workspace**: Create Workspace Designations. (data: payload*{name*, member_ids}) - **delete-project**: Delete Project Designations. (data: payload*{ids*}, project_id*) - **delete-project-designation-bookings**: Delete Project Designation Bookings Designations. (data: payload*{ids*}, project_id*) - **delete-workspace**: Delete Workspace Designations. (data: designation_id*) - **get-project**: Get Project Designations. (data: order_by, project_id*) - **get-project-designation-bookings**: Get Project Designation Bookings Designations. (data: project_id*) - **get-workspace-designations**: Get Workspace Designations Designations. (data: designation_id, has_members, include_members, name, order_by, page, per_page) - **update-project**: Update Project Designations. (data: payload*{designations*}, project_id*) - **update-project-designation-bookings**: Update Project Designation Bookings Designations. (data: payload*{bookings*}, project_id*) - **update-workspace**: Update Workspace Designations. (data: designation_id*, payload*{name*}) - **update-workspace-designation-members**: Update Workspace Designation Members Designations. (data: payload*{add, remove}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_r

Parametersdataactionrequireddry_runconfirm_token

goals

Goals

Manage Focus goals with the following actions: - **create**: Create Goals. (data: payload*{...}) - **delete**: Delete Goals. (data: goal_id*) - **get**: Get Goals. (data: goal_id*) - **list**: List Goals. (data: none) - **preview-goal-tracked-time**: Preview Goal Tracked Time Goals. (data: payload*{...}) - **reorder**: Reorder Goals. (data: payload*{goal_ids*}) - **update**: Update Goals. (data: goal_id*, payload*{active, client_ids, comparison, icon, name, project_ids, recurrence, start_date, tag_ids, target_seconds, task_ids, weekdays}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

milestones

Milestones

Manage Focus milestones with the following actions: - **create**: Create Milestones. (data: payload*{color*, due_date*, name*, completed_at, project_ids, team_ids}) - **delete**: Delete Milestones. (data: milestone_id*) - **get**: Get Milestones. (data: milestone_id*) - **get-classic**: Get Classic Milestones. (data: due_date_from, due_date_to, order_by, page, per_page, project_id, team_id) - **get-stream**: Get Stream Milestones. (data: due_date_from, due_date_to, order_by, project_id, team_id) - **partial-update**: Partial Update Milestones. (data: milestone_id*, payload*{color, due_date, name, project_ids, team_ids}) - **restore**: Restore Milestones. (data: milestone_id*) - **update**: Update Milestones. (data: milestone_id*, payload*{color*, due_date*, name*, completed_at, project_ids, team_ids}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

organization

Organization

Manage Focus organization with the following actions: - **create-group**: Create an organization group. (data: payload*{name*, emoji, organization_users, workspaces}) - **create-workspace-invitations**: Create Workspace Invitations Organization. (data: payload*{emails*, focus_role_id}) - **delete-group**: Delete an organization group. (data: group_id*) - **get-member-tags**: Get Member Tags Organization. (data: workspace_id*) - **get-my-groups**: List organization groups for the current user. (data: none) - **get-roles**: List organization roles. (data: none) - **get-teams**: List organization teams. (data: active_members_only, filter, group_ids, has_designations, organization_user_id, page, per_page, query, sort_dir, workspace_id*) - **update-group**: Update an organization group. (data: group_id*, payload*{name*, emoji, organization_users, workspaces}) - **update-group-user-role**: Update Group User Role Organization. (data: group_id*, payload*{organization_user_id*, workspace_id*}) - **update-user-active-status**: Update User Active Status Organization. (data: organization_user_id*, status*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

public-holidays

Public-holidays

Manage Focus public-holidays with the following actions: - **get-by-user-ids**: Get By User Ids Public Holidays. (data: end_date*, start_date*, user_id*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

publicsharedreports

Publicsharedreports

Manage Focus publicsharedreports with the following actions: - **open-public-shared-report**: Open Public Shared Report Publicsharedreports. (data: token*) - **profitability-public-shared-report**: Profitability Public Shared Report Publicsharedreports. (data: include_dicts, payload*{chart_key}, response_format, token*) - **query-public-shared-report**: Query Public Shared Report Publicsharedreports. (data: include_dicts, payload*{chart_key}, response_format, token*) - **workload-public-shared-report**: Workload Public Shared Report Publicsharedreports. (data: payload*{chart_key}, token*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

rates

Rates

Manage Focus rates with the following actions: - **billable-bulk-check-workspace-user-billable-rate-conflicts**: Billable Bulk Check Workspace User Billable Rate Conflicts Rates. (data: payload*{currency*, hourly_rate*, start_date*, user_ids*, end_date}) - **billable-bulk-upsert-workspace-user**: Billable Bulk Upsert Workspace User Rates. (data: payload*{currency*, hourly_rate*, on_conflict*, start_date*, user_ids*, end_date}) - **billable-check-project-billable-rate-conflicts**: Billable Check Project Billable Rate Conflicts Rates. (data: payload*{currency*, hourly_rate*, start_date*, end_date}, project_id*) - **billable-check-project-user-billable-rate-conflicts**: Billable Check Project User Billable Rate Conflicts Rates. (data: payload*{currency*, hourly_rate*, start_date*, end_date}, project_id*, user_id*) - **billable-check-workspace-billable-rate-conflicts**: Billable Check Workspace Billable Rate Conflicts Rates. (data: payload*{currency*, hourly_rate*, start_date*, end_date}) - **billable-check-workspace-user-billable-rate-conflicts**: Billable Check Workspace User Billable Rate Conflicts Rates. (data: payload*{currency*, hourly_rate*, start_date*, end_date}, user_id*) - **billable-delete-by-id**: Billable Delete By Id Rates. (data: rate_id*) - **billable-delete-project-billable-rate-range**: Billable Delete Project Billable Rate Range Rates. (data: from*, project_id*, to) - **billable-delete-project-user-billable-rate-range**: Billable Delete Project User Billable Rate Range Rates. (data: from*, project_id*, to, user_id*) - **billable-delete-workspace-billable-rate-range**: Billable Delete Workspace Billable Rate Range Rates. (data: from*, to) - **billable-delete-workspace-user-billable-rate-range**: Billable Delete Workspace User Billable Rate Range Rates. (data: from*, to, user_id*) - **billable-get-all-project-user**: Billable Get All Project User Rates. (data: date, order_by, project_id, user_id) - **billable-get-all-workspace-user**: Billable Get All

Parametersdataactionrequireddry_runconfirm_token

recurring-budget-suggestions

Recurring-budget-suggestions

Manage Focus recurring-budget-suggestions with the following actions: - **accept-arecurring-project-budget-suggestion**: Accept Arecurring Project Budget Suggestion Recurring Budget Suggestions. (data: project_id*) - **accept-atemplate-estimate-suggestion**: Accept Atemplate Estimate Suggestion Recurring Budget Suggestions. (data: project_id*) - **dismiss-arecurring-project-budget-suggestion**: Dismiss Arecurring Project Budget Suggestion Recurring Budget Suggestions. (data: project_id*) - **dismiss-atemplate-estimate-suggestion**: Dismiss Atemplate Estimate Suggestion Recurring Budget Suggestions. (data: project_id*) - **get-recurring-project-budget-suggestion**: Get Recurring Project Budget Suggestion Recurring Budget Suggestions. (data: project_id*, target_period_start*) - **get-template-estimate-suggestion**: Get Template Estimate Suggestion Recurring Budget Suggestions. (data: project_id*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

reports

Reports

Manage Focus reports with the following actions: - **get-flexq-data**: Get Flexq Data Reports. (data: include_dicts, payload*{...}, response_format, xTogglReportExport) - **get-flexq-dictionary**: Get Flexq Dictionary Reports. (data: payload*) - **get-forecast-availability**: Get Forecast Availability Reports. (data: none) - **get-profitability**: Get Profitability Reports. (data: include_dicts, payload*{...}, response_format, xTogglReportExport) - **get-time-accounting**: Get Time Accounting Reports. (data: payload*{...}) - **get-workload**: Get Workload Reports. (data: payload*{...}, xTogglReportExport) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

reportschedules

Reportschedules

Manage Focus reportschedules with the following actions: - **delete-shared-report-schedule**: Delete Shared Report Schedule Reportschedules. (data: id*) - **upsert-saved-view-schedule**: Upsert Saved View Schedule Reportschedules. (data: id*, payload*{cadence*, charts*, time*, day, period, recipient_team_ids, recipient_user_ids, recipient_workspace_ids}) - **upsert-shared-report-schedule**: Upsert Shared Report Schedule Reportschedules. (data: id*, payload*{cadence*, time*, day, recipient_team_ids, recipient_user_ids, recipient_workspace_ids}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

saved-views

Saved-views

Manage Focus saved-views with the following actions: - **create**: Create Saved Views. Required: name, type, pinned, and params (the view's filter/layout state as an object, e.g. { project_id, filters }). Project-scoped types (project, project.tasks, project.board, project.timeline) expect the project context inside params. (data: payload*{name*, params*, type*, icon_name, pinned}) - **delete**: Delete Saved Views. Deletes the authenticated user's saved view; it cannot be restored. (data: id*) - **get**: Get Saved Views. id is the saved view ID (number) from saved-views list. (data: id*) - **list**: List Saved Views. Saved views are per-user, so results belong to the authenticated user. Filter by type (inbox, archive, board, timeline, project, project.tasks, project.board, project.timeline, projects) or by partial name match. pinned=true entries are the user's starred views. (data: name, order_by, type) - **update**: Update Saved Views. The payload requires the full updatable set (name, type, pinned, params), so fetch the view first and resend it with your changes to avoid clobbering params. Toggling pinned is how views are starred/unstarred. (data: id*, payload*{name*, params*, pinned*, type*, icon_name}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

sharedreports

Sharedreports

Manage Focus sharedreports with the following actions: - **add-shared-report-grants**: Add Shared Report Grants Sharedreports. (data: id*, payload*{grantees*}) - **get-member-owned-shared-reports**: Get Member Owned Shared Reports Sharedreports. (data: user_id*) - **get-saved-view-shared-report**: Get Saved View Shared Report Sharedreports. (data: id*) - **get-shared-report-dates**: Get Shared Report Dates Sharedreports. (data: id*) - **get-shared-report-for-viewer**: Get Shared Report For Viewer Sharedreports. (data: id*) - **get-shared-reports-shared-by-me**: Get Shared Reports Shared By Me Sharedreports. (data: none) - **get-shared-reports-shared-with-me**: Get Shared Reports Shared With Me Sharedreports. (data: none) - **mint-shared-report-link**: Mint Shared Report Link Sharedreports. (data: id*, payload*{expires_at}) - **revoke-shared-report-grant**: Revoke Shared Report Grant Sharedreports. (data: grant_id*, id*) - **revoke-shared-report-link**: Revoke Shared Report Link Sharedreports. (data: id*) - **rotate-shared-report-link**: Rotate Shared Report Link Sharedreports. (data: id*, payload*{expires_at}) - **set-shared-report-dates-lock**: Set Shared Report Dates Lock Sharedreports. (data: id*, payload*{locked*}) - **share-saved-view**: Share Saved View Sharedreports. (data: id*, payload*{charts*, period, team_id, user_id, workspace_id}) - **share-saved-view-many**: Share Saved View Many Sharedreports. (data: id*, payload*{charts*, grantees*, period}) - **take-over-member-shared-reports**: Take Over Member Shared Reports Sharedreports. (data: user_id*) - **unshare-shared-report**: Unshare Shared Report Sharedreports. (data: id*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

statuses

Statuses

Manage Focus statuses with the following actions: - **create-status**: Create a task status. (data: payload*{emoji*, name*, position*}) - **delete-status**: Delete a task status. (data: status_id*) - **get-status**: List task statuses with generated API filters. (data: status_id*) - **list**: List Statuses. Lists all task status options for the workspace. Use returned status IDs when creating or updating tasks via status_id. Statuses have types: todo, in_progress, done, blocked. (data: page, per_page) - **restore**: Restore Statuses. (data: status_id*) - **update-status**: Update a task status. (data: payload*{emoji*, name*, position*}, status_id*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

subscriptions

Subscriptions

Manage Focus subscriptions with the following actions: - **get-current**: Get Current Subscriptions. (data: none) - **get-current-trial**: Get Current Trial Subscriptions. (data: none) - **get-features-upsell**: Get Features Upsell Subscriptions. (data: none) - **get-plans**: Get Plans Subscriptions. (data: none) - **upsert-forced-trial**: Upsert Forced Trial Subscriptions. (data: payload*{plan_workspace_id}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

tags

Tags

Manage Focus tags with the following actions: - **archive**: Archive Tags. (data: tag_id*) - **bulk-archive**: Bulk Archive Tags. (data: payload*{tag_ids*}) - **bulk-create**: Bulk Create Tags. (data: payload*{tags*}) - **bulk-delete**: Bulk Delete Tags. (data: ids*) - **bulk-restore**: Bulk Restore Tags. (data: payload*{tag_ids*}) - **bulk-unarchive**: Bulk Unarchive Tags. (data: payload*{tag_ids*}) - **count-tag-time-entries**: Count Tag Time Entries Tags. (data: ids*, match*) - **create**: Create Tags. Both name and color are required by the API (hex color, e.g. #FF5733). (data: color*, name*) - **delete**: Delete Tags. (data: tag_id*) - **get**: Get Tags. (data: tag_id*) - **list**: List Tags. Workspace tags label tasks and projects. Use tag IDs with tasks (tag_ids) and organization user filters (tag_ids on users.list). (data: name, page, per_page) - **merge**: Merge Tags. (data: payload*{source_ids*, target_id*}) - **restore**: Restore Tags. (data: tag_id*) - **unarchive**: Unarchive Tags. (data: tag_id*) - **update**: Update Tags. (data: tag_id*, payload*{color, name}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

time-entries

Time-entries

Manage Focus time-entries with the following actions: - **archive**: Archive Time Entries. (data: time_entry_id*) - **bulk-create**: Bulk Create Time Entries. JSON array of entries with task_id, start, duration, type ('activity'|'break'). One HTTP request for many creates. Datetime fields (start, planned_start, planned_at, tracked_at) must be RFC3339 with a timezone (e.g. 2026-04-01T09:00:00Z or 2026-04-01T11:00:00+02:00), not YYYY-MM-DDTHH:MM. (data: array payload) - **bulk-delete**: Bulk Delete Time Entries. Soft-delete multiple time entries by id in one request. (data: ids*) - **bulk-edit**: Bulk Edit Time Entries. (data: payload*{changes*, ids*}) - **bulk-patch**: Bulk Patch Time Entries. JSON array of { id: timeEntryId, ...partial fields } for bulk partial update. Datetime fields (start, planned_start, planned_at, tracked_at) must be RFC3339 with a timezone, or null to clear. (data: array payload) - **bulk-restore**: Bulk Restore Time Entries. Restore deleted time entries by id in one request. (data: ids*) - **bulk-set-day-duration**: Bulk Set Day Duration Time Entries. (data: payload*) - **constraints-list**: Constraints List Time Entries. (data: none) - **constraints-upsert**: Constraints Upsert Time Entries. (data: payload*{enabled*, required_fields*, disallow_billable_override}) - **create**: Create a completed task time entry. payload.type defaults to 'activity' when omitted. Logs a completed task time entry. payload.type defaults to 'activity' when omitted; pass 'break' explicitly for a break. provide payload.start and payload.duration for completed tracked time. payload.start must be RFC3339 with a timezone (e.g. 2026-04-01T09:00:00Z or 2026-04-01T11:00:00+02:00), not YYYY-MM-DDTHH:MM. (data: from_recurring_task_id, payload*{...}, return_occurrence, task_id*) - **create-taskless**: Create a completed taskless time entry. payload.type defaults to 'activity' when omitted. Logs a completed taskless time entry. payload.type defaults to 'activity' when omitt

Parametersdataactionrequireddry_runconfirm_token

time-off

Time-off

Manage Focus time-off with the following actions: - **approve-timeoff-entry**: Approve Timeoff Entry Time Off. (data: entry_id*) - **archive-timeoff-category**: Archive Timeoff Category Time Off. (data: category_id*) - **cancel-timeoff-entry**: Cancel Timeoff Entry Time Off. (data: entry_id*) - **create-timeoff-balance-adjustment**: Create Timeoff Balance Adjustment Time Off. (data: payload*{amount*, time_off_category_id*, user_id*, date, note}) - **create-timeoff-category**: Create Timeoff Category Time Off. (data: payload*{allow_negative_balance*, auto_approve_under_days*, default_amount_per_year*, description*, emoji*, max_carry_over_amount*, name*, prorate*, accrual_frequency, allowance_type, carry_over_expiry_months, policy_link}) - **create-timeoff-for-user**: Create Timeoff For User Time Off. (data: payload*, user_id*) - **delete-timeoff-category**: Delete Timeoff Category Time Off. (data: category_id*) - **delete-timeoff-for-user**: Delete Timeoff For User Time Off. (data: payload*, user_id*) - **get-timeoff-absence-report**: Get Timeoff Absence Report Time Off. (data: category_id, end_date*, include_pending, start_date*, team_id, user_id) - **get-timeoff-balance-changes-for-user**: Get Timeoff Balance Changes For User Time Off. (data: category_id*, page, rows, user_id*, year) - **get-timeoff-balances**: Get Timeoff Balances Time Off. (data: category_id, date, user_id) - **get-timeoff-balances-for-user**: Get Timeoff Balances For User Time Off. (data: category_id, date, user_id*) - **get-timeoff-categories**: Get Timeoff Categories Time Off. (data: none) - **get-timeoff-category**: Get Timeoff Category Time Off. (data: category_id*) - **get-timeoff-entries**: Get Timeoff Entries Time Off. (data: category_id, from, page, rows, status, team_id, to, user_id) - **get-timeoff-entry**: Get Timeoff Entry Time Off. (data: entry_id*) - **get-timeoff-for-user**: Get Timeoff For User Time Off. (data: from*, to*, user_id*) - **get-timeoff-timeline**: Get Timeoff Timeli

Parametersdataactionrequireddry_runconfirm_token

timesheets

Timesheets

Manage Focus timesheets with the following actions: - **add-timesheet-flag**: Add Timesheet Flag Timesheets. (data: payload*{comment*, time_entry_id*}, setup_id*, start_date*, user_account_id*) - **approve**: Approve Timesheets. (data: setup_id*, start_date*, user_account_id*) - **bulk-approve**: Bulk Approve Timesheets. (data: payload*{keys*}) - **bulk-request-changes**: Bulk Request Changes Timesheets. (data: payload*{keys*, comment}) - **bulk-submit**: Bulk Submit Timesheets. (data: payload*{keys*}) - **bulk-withdraw**: Bulk Withdraw Timesheets. (data: payload*{keys*}) - **get**: Get Timesheets. (data: approver_user_account_ids, current_layer_approver_user_account_id, date_from*, date_to*, member_status, page, per_page, setup_id, statuses, team_ids, user_account_ids) - **get-approvers**: Get Approvers Timesheets. (data: none) - **get-details**: Get Details Timesheets. (data: setup_id*, start_date*, user_account_id*) - **get-flags**: Get Flags Timesheets. (data: setup_id*, start_date*, user_account_id*) - **get-history**: Get History Timesheets. (data: setup_id*, start_date*, user_account_id*) - **get-hours**: Get Hours Timesheets. (data: setup_id*, start_date*, user_account_id*) - **get-status-counts**: Get Status Counts Timesheets. (data: approver_user_account_ids, date_from*, date_to*, member_status, setup_id, team_ids, user_account_ids) - **remove-timesheet-flag**: Remove Timesheet Flag Timesheets. (data: flag_id*) - **request-changes**: Request Changes Timesheets. (data: payload*{comment*}, setup_id*, start_date*, user_account_id*) - **resubmit**: Resubmit Timesheets. (data: payload*{comment*}, setup_id*, start_date*, user_account_id*) - **setups-add-timesheet-setup-member**: Setups Add Timesheet Setup Member Timesheets. (data: payload*{started_at}, setup_id*, user_account_id*) - **setups-cancel-timesheet-setup-member-move**: Setups Cancel Timesheet Setup Member Move Timesheets. (data: setup_id*, user_account_id*) - **setups-create**: Setups Create Timesheet

Parametersdataactionrequireddry_runconfirm_token

track-team-invites

Track-team-invites

Manage Focus track-team-invites with the following actions: - **post**: Post Track Team Invites. (data: payload*{organization_user_ids*}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

usage-signals

Usage-signals

Manage Focus usage-signals with the following actions: - **list**: List Usage Signals. (data: none) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

users

Users

Manage Focus users with the following actions: - **list**: List Users. Lists organization users (members). Use returned IDs for assignee_user_ids on tasks. Invite or provision new users from the Toggl Track/Focus web UI or billing admin — this API lists existing users only. (data: page, per_page, filter, sort_dir, only_admins, include_working_hours, include_rates, workspaces, tag_ids, roles, active_status, groups, pinned_ids, user_account_ids, org_user_ids) - **settings-email-unsubscribe**: Settings Email Unsubscribe Users. (data: token*) - **settings-email-unsubscribe-page**: Settings Email Unsubscribe Page Users. (data: token*) - **settings-list**: Settings List Users. (data: none) - **settings-partial-update**: Settings Partial Update Users. (data: payload*{...}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

workspace-settings

Workspace-settings

Manage Focus workspace-settings with the following actions: - **workspace-settings-list**: List user workspace settings. (data: none) - **workspace-settings-partial-update**: Update user workspace settings. (data: payload*{has_opened_focus, onboarding_intent, onboarding_invited_user_ids, onboarding_project_id, onboarding_step, onboarding_task_id, onboarding_team_size, work_introduction_dismissed}) - **get-user-permissions**: Get User Permissions Workspace Settings. (data: none) - **get-workspace-currency**: Get Workspace Currency Workspace Settings. (data: none) - **get-workspace-export-branding**: Get Workspace Export Branding Workspace Settings. (data: none) - **get-workspace-watermark**: Get Workspace Watermark Workspace Settings. (data: none) - **list**: List Workspace Settings. (data: none) - **update**: Update Workspace Settings. (data: payload*{default_private, settings}) - **update-workspace-currency**: Update Workspace Currency Workspace Settings. (data: payload*{currency*}) - **update-workspace-watermark**: Update Workspace Watermark Workspace Settings. (data: payload*{show_watermark*}) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

version

Version

Manage Focus version with the following actions: - **service**: MCP package version plus the Focus API service revision. mcp.package is this published MCP package version (e.g. 1.8.0). focus_api is the Focus API process revision (git SHA / build number) — it does not change when you update the npm MCP package. (data: none) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

work-preparation

Work-preparation

Manage Focus work-preparation with the following actions: - **get**: Get Work Preparation. (data: page) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

working-hours

Working-hours

Manage Focus working-hours with the following actions: - **create-for-user**: Create For User Working Hours. (data: payload*, user_id*) - **delete-for-user**: Delete For User Working Hours. (data: payload*, user_id*) - **get-for-user**: Get For User Working Hours. (data: user_id*) - **replace-working-hours-for-users**: Replace Working Hours For Users Working Hours. (data: payload*{schedule*, user_ids*}) - **update-for-user**: Update For User Working Hours. (data: payload*, user_id*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

workspace

Workspace

Manage Focus workspace with the following actions: - **get-context**: Get Context Workspace. (data: none) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

org-invitations

Org-invitations

Manage Focus org-invitations with the following actions: - **list**: List pending invitations for the current user account. (data: none) - **create**: Send organization invitations (uses organization ID from your workspace profile). (data: initiating_product*, invitations*, skip_email*) - **get**: Get an invitation by ID. (data: invitation_id*) - **resend**: Resend an invitation email for an organization user record. (data: organization_user_id*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

org-members

Org-members

Manage Focus org-members with the following actions: - **get**: Get an organization user by organization user ID. (data: organization_user_id*) - **update**: Replace organization user settings (roles, groups, tags, etc.). (data: organization_user_id*, payload*{accounts_role_id*, active*, groups*, name*, tags*, workspaces*}) - **set-active**: Activate or deactivate an organization member. (data: organization_user_id*, status*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

org-workspaces

Org-workspaces

Manage Focus org-workspaces with the following actions: - **list**: List workspaces under the active organization. (data: none) - **my-roles**: Get your roles for a workspace (defaults to the CLI active workspace when omitted). (data: workspace_id) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

shared-status

Shared-status

Manage Focus shared-status with the following actions: - **get**: Health check for the Shared Data API. (data: none) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

shared-holidays

Shared-holidays

Manage Focus shared-holidays with the following actions: - **list**: List organization holiday calendar dates for a year (optional ISO country override). (data: year*, country) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

shared-working-hours

Shared-working-hours

Manage Focus shared-working-hours with the following actions: - **list**: Get your working hours entries for the active organization. (data: none) - **put**: Replace working hours by ID (JSON array of updates). (data: array payload) - **create**: Create working hour rows (JSON array). (data: array payload) - **delete**: Delete working hour rows by ID. (data: ids*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

org-time-off-me

Org-time-off-me

Manage Focus org-time-off-me with the following actions: - **list**: List your time off entries between two dates (YYYY-MM-DD). (data: from*, to*) - **update**: Update your time off entries (JSON array). (data: array payload) - **create**: Create your time off entries (JSON array). (data: array payload) - **delete**: Delete your time off entries by ID. (data: ids*) Pass the action-specific fields under `data` (required fields are marked with *). Mutations require a confirm_token handshake: call without confirm_token first to receive a token, then call again with the token to confirm. Optional dry_run: true validates input and returns { dry_run, operation, input } without calling the API.

Parametersdataactionrequireddry_runconfirm_token

Version history

108
  1. v1.13.194LatestNov 8, 2026
  2. v1.13.193Nov 7, 2026
  3. v1.13.181Nov 6, 2026
  4. v1.13.180Nov 6, 2026
  5. v1.13.175Nov 5, 2026
  6. v1.13.169Nov 5, 2026
  7. v1.13.161Nov 5, 2026
  8. v1.13.157Nov 4, 2026
  9. v1.13.149Nov 4, 2026
  10. v1.13.143Nov 4, 2026
  11. v1.13.140Nov 3, 2026
  12. v1.13.135Nov 3, 2026
  13. v1.13.131Nov 3, 2026
  14. v1.13.121Oct 30, 2026
  15. v1.13.118Oct 30, 2026
  16. v1.13.110Oct 30, 2026
  17. v1.13.108Oct 29, 2026
  18. v1.13.65Oct 26, 2026
  19. v1.13.62Oct 26, 2026
  20. v1.13.51Oct 26, 2026
  21. v1.13.50Oct 24, 2026
  22. v1.13.49Oct 23, 2026
  23. v1.13.45Oct 23, 2026
  24. v1.13.40Oct 23, 2026
  25. v1.13.39Oct 22, 2026
  26. v1.13.36Oct 22, 2026
  27. v1.13.32Oct 22, 2026
  28. v1.13.29Oct 21, 2026
  29. v1.13.28Oct 21, 2026
  30. v1.13.25Oct 21, 2026
  31. v1.13.20Oct 21, 2026
  32. v1.13.18Oct 20, 2026
  33. v1.13.15Oct 20, 2026
  34. v1.13.9Oct 20, 2026
  35. v1.13.6Oct 19, 2026
  36. v1.13.5Oct 19, 2026
  37. v1.13.2Oct 19, 2026
  38. v1.12.6Oct 16, 2026
  39. v1.12.5Oct 16, 2026
  40. v1.12.3Oct 16, 2026
  41. v1.11.227Oct 15, 2026
  42. v1.11.226Oct 15, 2026
  43. v1.11.220Oct 15, 2026
  44. v1.11.218Oct 15, 2026
  45. v1.11.216Oct 14, 2026
  46. v1.11.215Oct 14, 2026
  47. v1.11.213Oct 14, 2026
  48. v1.11.211Oct 13, 2026
  49. v1.11.210Oct 13, 2026
  50. v1.11.206Oct 13, 2026
  51. v1.11.202Oct 12, 2026
  52. v1.11.198Oct 9, 2026
  53. v1.11.197Oct 9, 2026
  54. v1.11.195Oct 9, 2026
  55. v1.11.194Oct 9, 2026
  56. v1.11.190Oct 8, 2026
  57. v1.11.184Oct 8, 2026
  58. v1.11.180Oct 8, 2026
  59. v1.11.176Oct 7, 2026
  60. v1.11.174Oct 7, 2026
  61. v1.11.169Oct 7, 2026
  62. v1.11.160Oct 7, 2026
  63. v1.11.159Oct 6, 2026
  64. v1.11.156Oct 6, 2026
  65. v1.11.153Oct 6, 2026
  66. v1.11.151Oct 6, 2026
  67. v1.11.147Oct 5, 2026
  68. v1.11.145Oct 5, 2026
  69. v1.11.142Oct 4, 2026
  70. v1.11.140Oct 4, 2026
  71. v1.11.139Oct 2, 2026
  72. v1.11.133Oct 2, 2026
  73. v1.11.128Oct 2, 2026
  74. v1.11.127Oct 1, 2026
  75. v1.11.122Oct 1, 2026
  76. v1.11.116Oct 1, 2026
  77. v1.11.112Oct 1, 2026
  78. v1.11.111Oct 1, 2026
  79. v1.11.106Sep 30, 2026
  80. v1.11.99Sep 30, 2026
  81. v1.11.94Sep 30, 2026
  82. v1.11.91Sep 30, 2026
  83. v1.11.89Sep 29, 2026
  84. v1.11.84Sep 29, 2026
  85. v1.11.82Sep 29, 2026
  86. v1.11.79Sep 29, 2026
  87. v1.11.73Sep 28, 2026
  88. v1.11.71Sep 28, 2026
  89. v1.11.66Sep 27, 2026
  90. v1.11.65Sep 27, 2026
  91. v1.11.64Sep 25, 2026
  92. v1.11.58Sep 25, 2026
  93. v1.11.57Sep 25, 2026
  94. v1.11.56Sep 24, 2026
  95. v1.11.50Sep 24, 2026
  96. v1.11.49Sep 24, 2026
  97. v1.11.45Sep 23, 2026
  98. v1.11.42Sep 23, 2026
  99. v1.11.40Sep 23, 2026
  100. v1.11.37Sep 23, 2026
  101. v1.11.34Sep 23, 2026
  102. v1.11.28Sep 22, 2026
  103. v1.11.27Sep 22, 2026
  104. v1.11.23Sep 22, 2026
  105. v1.11.19Sep 22, 2026
  106. v1.11.18Sep 21, 2026
  107. v1.11.5Sep 21, 2026
  108. v1.8.2Sep 16, 2026

Score

65% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • License10 pts

    Declare a license in the repository or the registry entry.