> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Timely

The Timely connector lets your AI agent act in each user's Timely account. Each user signs in to Timely once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 53 tools.

**Authentication:** OAuth 2.0
**Categories:** Productivity
**Tools:** 53: 31 read, 16 write, 6 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Timely app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=TIMELY)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Timely connection

   In **AgentKit > Connections**, create a Timely connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Timely connections use your own OAuth app. Register one with Timely and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Timely connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'timely'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Timely:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'timely_list_accounts',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "timely"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Timely:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="timely_list_accounts",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'timely_filter_reports',
  toolInput: {
    account_id: 1234567,
  },
  connector: 'timely',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="timely_filter_reports",
    tool_input={
        "account_id": 1234567,
    },
    connection_name="timely",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `timely_filter_reports`

Filter Reports · Read-only

Run a filtered Timely report grouped by client, user, tag, day, or team.
Returns aggregated totals, or individual entries when scope is events.
Use timely_get_report_totals for a simple per-client summary.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `billed` (`string`, optional): Filter by billed status: true or false. One of: `true`, `false`.
- `client_ids` (`string`, optional): Comma-separated client IDs to include. Example: 4521,4522.
- `group_by` (`string`, optional): Comma-separated grouping keys from clients, users, labels, days, teams. Example: users,days.
- `label_ids` (`string`, optional): Comma-separated tag IDs to include. Example: 301,302.
- `project_ids` (`string`, optional): Comma-separated project IDs to include. Example: 98765,98766.
- `scope` (`string`, optional): Result scope: totals for aggregated data or events for individual entries. One of: `totals`, `events`.
- `since` (`string`, optional): Start date of the report period as YYYY-MM-DD. Example: 2026-10-01.
- `state_ids` (`string`, optional): Comma-separated time entry state IDs to include. Example: 12,13.
- `team_ids` (`string`, optional): Comma-separated team IDs to include. Example: 7001,7002.
- `until` (`string`, optional): End date of the report period as YYYY-MM-DD. Example: 2026-10-31.
- `user_ids` (`string`, optional): Comma-separated user IDs to include. Example: 5001,5002.

Example input: `{"account_id":1234567}`

### `timely_get_client`

Get Client · Read-only

Retrieve one client in a Timely account by ID.
Returns the client's name, color, active status, and external references.
Use timely_list_clients to find the client ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the client. Get it from timely_list_clients. Example: 4521.

Example input: `{"account_id":1234567,"id":4521}`

### `timely_get_compliance`

Get Compliance · Read-only

Get per-user time-logging compliance metrics for a Timely account over a date window.
Returns per-user and per-team compliance figures and the window used.
Use for timesheet follow-up reviews.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `from_date` (`string`, optional): Inclusive start date as YYYY-MM-DD; defaults to 30 days before the end date. Example: 2026-09-15.
- `to_date` (`string`, optional): Inclusive end date as YYYY-MM-DD; defaults to today. Example: 2026-10-14.

Example input: `{"account_id":1234567}`

### `timely_get_current_user`

Get Current User · Read-only

Retrieve the connected user's own profile in a Timely account.
Returns the user's id, name, email, role, and time zone.
Use to learn the user_id for logging time as yourself.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.

Example input: `{"account_id":1234567}`

### `timely_get_insights`

Get Insights · Read-only

Get billable utilisation and where time went for a Timely account over a date window.
Returns logged, billable, non-billable and capacity minutes plus breakdowns by team or person, tag, and project.
The team and organisation views need the matching Timely permissions.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `from_date` (`string`, optional): Inclusive start date as YYYY-MM-DD; defaults to 30 days before the end date. Example: 2026-09-15.
- `grouping` (`string`, optional): How to group the utilisation card: team or person. One of: `team`, `person`.
- `project_scope` (`string`, optional): Narrow the by-project rows: all, billable or non_billable. One of: `all`, `billable`, `non_billable`.
- `tag_scope` (`string`, optional): Narrow the by-tag rows: all, billable or non_billable. One of: `all`, `billable`, `non_billable`.
- `to_date` (`string`, optional): Inclusive end date as YYYY-MM-DD; defaults to today. Example: 2026-10-14.
- `view` (`string`, optional): Whose hours to report on: mine, team or organisation. Team and organisation need permissions. One of: `mine`, `team`, `organisation`.

Example input: `{"account_id":1234567}`

### `timely_get_linked_work_item`

Get Linked Work Item · Read-only

Retrieve one linked work item in a Timely account by ID.
Returns the item's title, external code, url, project, assignee, and dates.
Use timely_list_linked_work_items to find the item ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the linked work item. Get it from timely_list_linked_work_items. Example: 9901.

Example input: `{"account_id":1234567,"id":9901}`

### `timely_get_project`

Get Project · Read-only

Retrieve one project in a Timely account by ID.
Returns the project's name, client, color, rates, budget, assigned users, and status.
Use timely_list_projects to find the project ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the project. Get it from timely_list_projects. Example: 98765.

Example input: `{"account_id":1234567,"id":98765}`

### `timely_get_report_totals`

Get Report Totals · Read-only

Get aggregated time and cost totals for a Timely account over a date range.
Returns duration, cost, billed and unbilled totals per client with nested projects.
Use timely_filter_reports for grouping, tag, team or state filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `client_ids` (`string`, optional): Comma-separated client IDs to include. Example: 4521,4522.
- `project_ids` (`string`, optional): Comma-separated project IDs to include. Example: 98765,98766.
- `since` (`string`, optional): Start date of the report period as YYYY-MM-DD. Example: 2026-10-01.
- `until` (`string`, optional): End date of the report period as YYYY-MM-DD. Example: 2026-10-31.
- `user_ids` (`string`, optional): Comma-separated user IDs to include. Example: 5001,5002.

Example input: `{"account_id":1234567}`

### `timely_get_tag`

Get Tag · Read-only

Retrieve one tag (label) in a Timely account by ID.
Returns the tag's name, parent, emoji, children, and active status.
Use timely_list_tags to find the tag ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the tag. Get it from timely_list_tags. Example: 301.

Example input: `{"account_id":1234567,"id":301}`

### `timely_get_task`

Get Task · Read-only

Retrieve one planned task (forecast) in a Timely account by ID.
Returns the task's title, dates, assignee, project, and estimated, planned, and logged duration.
Use timely_list_tasks to find the task ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the task. Get it from timely_list_tasks. Example: 8801.

Example input: `{"account_id":1234567,"id":8801}`

### `timely_get_task_summary`

Get Task Summary · Read-only

Summarize planned tasks (forecasts) in a Timely account grouped by user or project.
Returns task count plus estimated, planned, and logged totals per group.
Use timely_list_tasks for the individual tasks.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `resource` (`string`, required): Grouping for the summary: users or projects. One of: `users`, `projects`.
- `completed` (`string`, optional): Filter by completion status: true or false. One of: `true`, `false`.
- `project_ids` (`string`, optional): Comma-separated project IDs to include. Example: 98765,98766.
- `since` (`string`, optional): Only tasks from this date as YYYY-MM-DD. Example: 2026-10-01.
- `until` (`string`, optional): Only tasks up to this date as YYYY-MM-DD. Example: 2026-10-31.
- `user_ids` (`string`, optional): Comma-separated user IDs to include. Example: 5001,5002.

Example input: `{"account_id":1234567,"resource":"users"}`

### `timely_get_team`

Get Team · Read-only

Retrieve one team in a Timely account by ID.
Returns the team's name, color, members, and project IDs.
Use timely_list_teams to find the team ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the team. Get it from timely_list_teams. Example: 7001.

Example input: `{"account_id":1234567,"id":7001}`

### `timely_get_time_entry`

Get Time Entry · Read-only

Retrieve one time entry in a Timely account by ID.
Returns the entry's day, duration, note, project, user, tags, rates, and timer state.
Use timely_list_time_entries to find the entry ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the time entry. Get it from timely_list_time_entries. Example: 55501.

Example input: `{"account_id":1234567,"id":55501}`

### `timely_get_user`

Get User · Read-only

Retrieve one user in a Timely account by ID.
Returns the user's name, email, role, time zone, and capacity settings.
Use timely_list_users to find the user ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the user. Get it from timely_list_users. Example: 5001.

Example input: `{"account_id":1234567,"id":5001}`

### `timely_get_user_capacities`

Get User Capacities · Read-only

List the working-capacity periods for one Timely user.
Returns weekly and daily capacity, working days, and the start and end date of each period.
Use timely_list_user_capacities to compare several users.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `user_id` (`integer`, required): ID of the user. Get it from timely_list_users. Example: 5001.

Example input: `{"account_id":1234567,"user_id":5001}`

### `timely_list_accounts`

List Accounts · Read-only

List the Timely accounts (workspaces) the connected user belongs to.
Returns account id, name, and plan details for each account.
Use first to get the account_id every other Timely tool requires.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `timely_list_clients`

List Clients · Read-only

List clients in a Timely account.
Returns each client's id, name, color, and active status.
Use timely_get_client for one client.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `limit` (`integer`, optional): Maximum number of clients to return. Example: 50.
- `offset` (`integer`, optional): Number of clients to skip, for paging through results. Example: 0.
- `order` (`string`, optional): Sort order: asc (default) or desc. One of: `asc`, `desc`.
- `show` (`string`, optional): Which clients to return: all, active or archived. One of: `all`, `active`, `archived`.

Example input: `{"account_id":1234567}`

### `timely_list_current_user_permissions`

List Current User Permissions · Read-only

List the connected user's permissions in a Timely account.
Returns each resource with the permissions the user holds on it.
Use to check what the connected user may do before attempting a write.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.

Example input: `{"account_id":1234567}`

### `timely_list_day_properties`

List Day Properties · Read-only

List per-day properties such as locked days in a Timely account.
Returns each date with its user, locked flag, and timestamps.
Use to check whether a day is locked before logging time.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `dates` (`string`, optional): Comma-separated specific dates as YYYY-MM-DD. Example: 2026-10-14,2026-10-15.
- `since` (`string`, optional): Start date as YYYY-MM-DD. Example: 2026-10-01.
- `until` (`string`, optional): End date as YYYY-MM-DD. Example: 2026-10-31.

Example input: `{"account_id":1234567}`

### `timely_list_linked_work_items`

List Linked Work Items · Read-only

List linked work items (tickets or tasks from external systems) in a Timely account.
Returns each item's id, title, external code, url, project, assignee, and dates.
Use timely_get_linked_work_item for one item.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `assigned_user_id` (`integer`, optional): Only items assigned to this user ID. Example: 5001.
- `external_id` (`string`, optional): Only the item with this exact external_id. Example: 10042.
- `limit` (`integer`, optional): Maximum number of items to return. Example: 50.
- `offset` (`integer`, optional): Number of items to skip, for paging through results. Example: 0.
- `project_id` (`integer`, optional): Only items for this project ID. Example: 98765.
- `search` (`string`, optional): Search by title or external code. Example: login.
- `status` (`string`, optional): Filter by status: open or completed. One of: `open`, `completed`.

Example input: `{"account_id":1234567}`

### `timely_list_projects`

List Projects · Read-only

List projects in a Timely account, optionally filtered by state or relation to the user.
Returns project id, name, client, color, rate, budget, and active status.
Use timely_get_project for one project in full.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `limit` (`integer`, optional): Maximum number of projects to return. Example: 50.
- `offset` (`integer`, optional): Number of projects to skip, for paging through results. Example: 0.
- `order` (`string`, optional): Sort order by creation: asc or desc (Timely default is desc). One of: `asc`, `desc`.
- `relation` (`string`, optional): Filter by the user's relation to the project: assigned, created or all. One of: `all`, `assigned`, `created`.
- `state` (`string`, optional): Filter by project state: active, archived or all. One of: `all`, `active`, `archived`.
- `totals` (`boolean`, optional): Include per-project cost and duration totals (true by default). Set false for a faster, lighter response.
- `updated_after` (`string`, optional): Only return projects updated after this timestamp. Example: 2026-01-01T00:00:00Z.

Example input: `{"account_id":1234567}`

### `timely_list_roles`

List Roles · Read-only

List the user roles defined in a Timely account.
Returns each role's id, name, description, and permission scopes.
Use to see which roles users can hold.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.

Example input: `{"account_id":1234567}`

### `timely_list_states`

List States · Read-only

List the time entry states (such as billed or locked) defined in a Timely account.
Returns each state's id, name, color, and billed and locked flags.
Use to get state IDs for timely_create_time_entry.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.

Example input: `{"account_id":1234567}`

### `timely_list_tags`

List Tags · Read-only

List tags (labels) in a Timely account.
Returns each tag's id, name, parent, emoji, and active status.
Use timely_get_tag for one tag.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `filter` (`string`, optional): Filter by tag status: all, active or archived. One of: `all`, `active`, `archived`.
- `limit` (`integer`, optional): Maximum number of tags to return. Example: 50.
- `offset` (`integer`, optional): Number of tags to skip, for paging through results. Example: 0.
- `parent_id` (`integer`, optional): Only return child tags of this parent tag ID. Example: 301.

Example input: `{"account_id":1234567}`

### `timely_list_tasks`

List Tasks · Read-only

List planned tasks (forecasts) in a Timely account, filtered by date, user, project, or completion.
Returns each task's id, title, dates, assignee, project, and estimated and logged duration.
Use timely_get_task for one task.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `completed` (`string`, optional): Filter by completion status: true or false. One of: `true`, `false`.
- `order` (`string`, optional): Sort direction: asc or desc. One of: `asc`, `desc`.
- `page` (`integer`, optional): Page number, starting at 1. Example: 1.
- `per_page` (`integer`, optional): Results per page, up to 5000. Example: 100.
- `project_ids` (`string`, optional): Comma-separated project IDs, or active or archived. Example: 98765,98766.
- `since` (`string`, optional): Only tasks from this date as YYYY-MM-DD, inclusive. Example: 2026-10-01.
- `sort` (`string`, optional): Field to sort by: updated_at, created_at, from or to. One of: `updated_at`, `created_at`, `from`, `to`.
- `upto` (`string`, optional): Only tasks up to this date as YYYY-MM-DD, inclusive. Example: 2026-10-31.
- `user_ids` (`string`, optional): Comma-separated user IDs to include. Example: 5001,5002.

Example input: `{"account_id":1234567}`

### `timely_list_teams`

List Teams · Read-only

List teams in a Timely account.
Returns each team's id, name, color, member user IDs, and project IDs.
Use timely_search_teams to find a team by name.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `filter` (`string`, optional): Set to mine to only list teams the connected user belongs to. One of: `mine`.
- `limit` (`integer`, optional): Maximum number of teams to return. Example: 50.
- `offset` (`integer`, optional): Number of teams to skip, for paging through results. Example: 0.
- `order` (`string`, optional): Sort order: asc (default) or desc. One of: `asc`, `desc`.

Example input: `{"account_id":1234567}`

### `timely_list_time_entries`

List Time Entries · Read-only

List time entries in a Timely account, filtered by date range, project, or user.
Returns each entry's id, day, duration, note, project, user, and tags.
Use timely_get_time_entry for one entry in full.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `day` (`string`, optional): Return entries for one date as YYYY-MM-DD; ignored when since and upto are set. Timely defaults to today. Example: 2026-10-14.
- `order` (`string`, optional): Sort direction: asc or desc. One of: `asc`, `desc`.
- `page` (`integer`, optional): Page number, starting at 1. Example: 1.
- `per_page` (`integer`, optional): Results per page, up to 5000. Example: 100.
- `project_id` (`integer`, optional): Only return entries for this project ID. Example: 98765.
- `since` (`string`, optional): Start date of the range as YYYY-MM-DD, inclusive. Must be given together with upto. Example: 2026-10-01.
- `sort` (`string`, optional): Field to sort by: day, created_at or updated_at. One of: `day`, `created_at`, `updated_at`.
- `upto` (`string`, optional): End date of the range as YYYY-MM-DD, inclusive. Must be given together with since. Example: 2026-10-31.
- `user_id` (`integer`, optional): Only return entries for this user ID. Example: 5001.

Example input: `{"account_id":1234567}`

### `timely_list_user_capacities`

List User Capacities · Read-only

List working-capacity periods for multiple Timely users.
Returns each user's id with their capacity periods.
Use timely_get_user_capacities for a single user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `since` (`string`, optional): Only capacities after this date as YYYY-MM-DD. Example: 2026-10-01.
- `until` (`string`, optional): Only capacities before this date as YYYY-MM-DD. Example: 2026-10-31.
- `user_ids` (`string`, optional): Comma-separated user IDs to include. Example: 5001,5002.

Example input: `{"account_id":1234567}`

### `timely_list_users`

List Users · Read-only

List users in a Timely account.
Returns each user's id, name, email, role, time zone, and active status.
Use timely_search_users to find a user by name or email.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `filter` (`string`, optional): Set to deleted to list deleted users instead of active ones. One of: `deleted`.
- `limit` (`integer`, optional): Maximum number of users to return. Example: 50.
- `offset` (`integer`, optional): Number of users to skip, for paging through results. Example: 0.
- `order` (`string`, optional): Sort order: asc or desc. One of: `asc`, `desc`.

Example input: `{"account_id":1234567}`

### `timely_search_teams`

Search Teams · Read-only

Search teams in a Timely account by name.
Returns matching teams with id, name, color, and members.
Use timely_list_teams to browse every team.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `page` (`integer`, optional): Page number, starting at 1. Example: 1.
- `per_page` (`integer`, optional): Results per page. Example: 25.
- `q` (`string`, optional): Search text matched against team names. Example: design.

Example input: `{"account_id":1234567}`

### `timely_search_users`

Search Users · Read-only

Search users in a Timely account by name or email.
Returns matching users with id, name, email, and active status.
Use timely_list_users to browse every user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `q` (`string`, required): Search text matched against user names and emails. Example: jane.
- `page` (`integer`, optional): Page number, starting at 1. Example: 1.
- `per_page` (`integer`, optional): Results per page. Example: 25.

Example input: `{"account_id":1234567,"q":"<q>"}`

### `timely_create_client`

Create Client · Write

Create a client in a Timely account.
Returns the created client with its id and name.
Use timely_update_client to change an existing client.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `active` (`boolean`, optional): Whether the client is active. Set false to archive it.
- `color` (`string`, optional): Hex color for the client without the leading #. Example: FF5733.
- `name` (`string`, optional): Client name. Example: Acme Corp.

Example input: `{"account_id":1234567}`

### `timely_create_linked_work_item`

Create Linked Work Item · Write

Create a linked work item in a Timely account to mirror a ticket or task from an external system.
Returns the created item with its id.
Use timely_update_linked_work_item to change an existing item.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `assigned_user_id` (`integer`, optional): ID of the Timely user assigned to the item. Example: 5001.
- `completed_at` (`string`, optional): Completion timestamp in ISO 8601 format. Example: 2026-10-20T17:00:00Z.
- `description` (`string`, optional): Description of the work item. Example: Users cannot log in with SSO.
- `due_date` (`string`, optional): Due date as YYYY-MM-DD. Example: 2026-10-21.
- `external_code` (`string`, optional): Short code from the source system. Example: JRA-123.
- `external_id` (`string`, optional): Your own unique ID for the item in the source system. Example: 10042.
- `project_id` (`integer`, optional): ID of the Timely project to associate. Example: 98765.
- `source_name` (`string`, optional): Name of the source system. Example: Jira.
- `start_date` (`string`, optional): Start date as YYYY-MM-DD. Example: 2026-10-14.
- `title` (`string`, optional): Title of the work item. Example: Fix login bug.
- `url` (`string`, optional): Link to the work item in the source system. Example: https://example.atlassian.net/browse/JRA-123.

Example input: `{"account_id":1234567}`

### `timely_create_project`

Create Project · Write

Create a project in a Timely account.
Returns the created project with its id, name, client, rates, and budget.
Use timely_update_project to change an existing project.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `active` (`boolean`, optional): Whether the project is active. Set false to archive it.
- `billable` (`boolean`, optional): Whether time logged to the project is billable by default.
- `budget` (`number`, optional): Budget amount, in hours or money depending on budget_type. Example: 120.
- `budget_type` (`string`, optional): Budget unit: H for hours or M for money. One of: `H`, `M`.
- `client_id` (`integer`, optional): ID of the client the project belongs to. Get it from timely_list_clients. Example: 4521.
- `color` (`string`, optional): Hex color for the project without the leading #, 3 or 6 characters. Example: 3366FF.
- `description` (`string`, optional): Free-text project description. Example: Redesign of the marketing website.
- `external_id` (`string`, optional): Your own reference ID for this project, up to 512 characters. Example: JRA-123.
- `hour_rate` (`number`, optional): Hourly rate for the project in the account currency. Example: 95.5.
- `name` (`string`, optional): Project name. Example: Website Redesign.
- `rate_type` (`string`, optional): How the hourly rate is applied: project (one rate), user (rate per user) or non-billable. One of: `project`, `user`, `non-billable`.
- `team_ids` (`array`, optional): IDs of teams to assign to the project. Get them from timely_list_teams. Example: [11, 12].
- `users` (`array`, optional): Users to assign to the project, each as an object with user_id and hour_rate. Example: [{"user_id": 5001, "hour_rate": 80}].

Example input: `{"account_id":1234567}`

### `timely_create_tag`

Create Tag · Write

Create a tag (label) in a Timely account.
Returns the created tag with its id and name.
Use timely_update_tag to change an existing tag.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `active` (`boolean`, optional): Whether the tag is active. Set false to archive it.
- `emoji` (`string`, optional): Emoji shown next to the tag. Example: 🎨.
- `external_id` (`string`, optional): Your own reference ID for this tag. Example: tag-design.
- `name` (`string`, optional): Tag name. Example: Design.
- `parent_id` (`integer`, optional): ID of a parent tag to nest this tag under. Get it from timely_list_tags. Example: 301.

Example input: `{"account_id":1234567}`

### `timely_create_task`

Create Task · Write

Create a planned task (forecast) in a Timely account.
Returns the created task with its id, dates, and assignee.
Use timely_update_task to change an existing task.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `completed_at` (`string`, optional): Completion timestamp in ISO 8601 format; set to mark the task done. Example: 2026-10-18T17:00:00Z.
- `description` (`string`, optional): Task description. Example: Implement the new landing page design.
- `estimated_minutes` (`integer`, optional): Estimated effort in minutes. Example: 480.
- `external_id` (`string`, optional): Your own reference ID for this task. Example: PLAN-7.
- `from_date` (`string`, optional): Task start date as YYYY-MM-DD. Example: 2026-10-14.
- `label_ids` (`array`, optional): IDs of tags to apply to the task. Example: [301].
- `project_id` (`integer`, optional): ID of the project the task belongs to. Get it from timely_list_projects. Example: 98765.
- `title` (`string`, optional): Task title. Example: Build landing page.
- `to_date` (`string`, optional): Task end date as YYYY-MM-DD. Example: 2026-10-18.
- `user_id` (`integer`, optional): ID of the user the task is assigned to. Get it from timely_list_users. Example: 5001.

Example input: `{"account_id":1234567}`

### `timely_create_team`

Create Team · Write

Create a team in a Timely account.
Returns the created team with its id and members.
Use timely_update_team to change an existing team.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `color` (`string`, optional): Hex color for the team without the leading #. Example: FF5733.
- `emoji` (`string`, optional): Emoji for the team. Example: 🚀.
- `name` (`string`, optional): Team name. Example: Design Team.
- `users` (`array`, optional): Team members, each as an object with user_id plus optional lead and hide_hours booleans. Example: [{"user_id": 5001, "lead": true}].

Example input: `{"account_id":1234567}`

### `timely_create_time_entry`

Create Time Entry · Write

Log a time entry in a Timely account against a project and day.
Returns the created entry with its id, duration, project, and user.
Use timely_update_time_entry to change an existing entry.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `billable` (`boolean`, optional): Whether the entry is billable.
- `billed` (`boolean`, optional): Whether the entry has already been billed.
- `day` (`string`, optional): Date of the entry as YYYY-MM-DD. Example: 2026-10-14.
- `external_id` (`string`, optional): Your own reference ID for this entry. Example: TASK-42.
- `from_time` (`string`, optional): Start timestamp of the entry in ISO 8601 format. Example: 2026-10-14T09:00:00+00:00.
- `hour_rate` (`number`, optional): Hourly rate for this entry. Example: 95.5.
- `hours` (`integer`, optional): Whole hours of logged duration. Example: 2.
- `label_ids` (`array`, optional): IDs of tags to apply to the entry. Get them from timely_list_tags. Example: [301, 302].
- `minutes` (`integer`, optional): Minutes of logged duration, 0 to 59. Example: 30.
- `note` (`string`, optional): Description of the work done. Example: Drafted homepage wireframes.
- `project_id` (`integer`, optional): ID of the project the time is logged to. Get it from timely_list_projects. Example: 98765.
- `seconds` (`integer`, optional): Seconds of logged duration, 0 to 59. Example: 0.
- `state_id` (`integer`, optional): ID of the time entry state to set. Get it from timely_list_states. Example: 12.
- `to_time` (`string`, optional): End timestamp of the entry in ISO 8601 format. Example: 2026-10-14T11:30:00+00:00.
- `user_id` (`integer`, optional): ID of the user the entry belongs to; defaults to the connected user. Get it from timely_list_users. Example: 5001.

Example input: `{"account_id":1234567}`

### `timely_start_timer`

Start Timer · Write

Start the timer on an existing Timely time entry.
Returns the entry with its timer running.
Use timely_stop_timer to stop it; create the entry with timely_create_time_entry first.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the time entry. Get it from timely_list_time_entries. Example: 55501.

Example input: `{"account_id":1234567,"id":55501}`

### `timely_stop_timer`

Stop Timer · Write

Stop the running timer on a Timely time entry.
Returns the entry with its final logged duration.
Use after timely_start_timer.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the time entry. Get it from timely_list_time_entries. Example: 55501.

Example input: `{"account_id":1234567,"id":55501}`

### `timely_update_client`

Update Client · Write

Update fields on an existing Timely client; only the fields provided change.
Returns the updated client.
Use timely_create_client to add a new client.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the client. Get it from timely_list_clients. Example: 4521.
- `active` (`boolean`, optional): Whether the client is active. Set false to archive it.
- `color` (`string`, optional): Hex color for the client without the leading #. Example: FF5733.
- `name` (`string`, optional): Client name. Example: Acme Corp.

Example input: `{"account_id":1234567,"id":4521}`

### `timely_update_linked_work_item`

Update Linked Work Item · Write

Update fields on an existing Timely linked work item; only the fields provided change.
Returns the updated item.
Use timely_create_linked_work_item to add a new item.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the linked work item. Get it from timely_list_linked_work_items. Example: 9901.
- `assigned_user_id` (`integer`, optional): ID of the Timely user assigned to the item. Example: 5001.
- `completed_at` (`string`, optional): Completion timestamp in ISO 8601 format. Example: 2026-10-20T17:00:00Z.
- `description` (`string`, optional): Description of the work item. Example: Users cannot log in with SSO.
- `due_date` (`string`, optional): Due date as YYYY-MM-DD. Example: 2026-10-21.
- `external_code` (`string`, optional): Short code from the source system. Example: JRA-123.
- `external_id` (`string`, optional): Your own unique ID for the item in the source system. Example: 10042.
- `project_id` (`integer`, optional): ID of the Timely project to associate. Example: 98765.
- `source_name` (`string`, optional): Name of the source system. Example: Jira.
- `start_date` (`string`, optional): Start date as YYYY-MM-DD. Example: 2026-10-14.
- `title` (`string`, optional): Title of the work item. Example: Fix login bug.
- `url` (`string`, optional): Link to the work item in the source system. Example: https://example.atlassian.net/browse/JRA-123.

Example input: `{"account_id":1234567,"id":9901}`

### `timely_update_project`

Update Project · Write

Update fields on an existing Timely project; only the fields provided change.
Returns the updated project.
Use timely_create_project to add a new project.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the project. Get it from timely_list_projects. Example: 98765.
- `active` (`boolean`, optional): Whether the project is active. Set false to archive it.
- `billable` (`boolean`, optional): Whether time logged to the project is billable by default.
- `budget` (`number`, optional): Budget amount, in hours or money depending on budget_type. Example: 120.
- `budget_type` (`string`, optional): Budget unit: H for hours or M for money. One of: `H`, `M`.
- `client_id` (`integer`, optional): ID of the client the project belongs to. Get it from timely_list_clients. Example: 4521.
- `color` (`string`, optional): Hex color for the project without the leading #, 3 or 6 characters. Example: 3366FF.
- `description` (`string`, optional): Free-text project description. Example: Redesign of the marketing website.
- `external_id` (`string`, optional): Your own reference ID for this project, up to 512 characters. Example: JRA-123.
- `hour_rate` (`number`, optional): Hourly rate for the project in the account currency. Example: 95.5.
- `name` (`string`, optional): Project name. Example: Website Redesign.
- `rate_type` (`string`, optional): How the hourly rate is applied: project (one rate), user (rate per user) or non-billable. One of: `project`, `user`, `non-billable`.
- `team_ids` (`array`, optional): IDs of teams to assign to the project. Get them from timely_list_teams. Example: [11, 12].
- `users` (`array`, optional): Users to assign to the project, each as an object with user_id and hour_rate. Example: [{"user_id": 5001, "hour_rate": 80}].

Example input: `{"account_id":1234567,"id":98765}`

### `timely_update_tag`

Update Tag · Write

Update fields on an existing Timely tag; only the fields provided change.
Returns the updated tag.
Use timely_create_tag to add a new tag.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the tag. Get it from timely_list_tags. Example: 301.
- `active` (`boolean`, optional): Whether the tag is active. Set false to archive it.
- `emoji` (`string`, optional): Emoji shown next to the tag. Example: 🎨.
- `external_id` (`string`, optional): Your own reference ID for this tag. Example: tag-design.
- `name` (`string`, optional): Tag name. Example: Design.
- `parent_id` (`integer`, optional): ID of a parent tag to nest this tag under. Get it from timely_list_tags. Example: 301.

Example input: `{"account_id":1234567,"id":301}`

### `timely_update_task`

Update Task · Write

Update fields on an existing Timely planned task; only the fields provided change.
Returns the updated task.
Use timely_create_task to plan new work.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the task. Get it from timely_list_tasks. Example: 8801.
- `completed_at` (`string`, optional): Completion timestamp in ISO 8601 format; set to mark the task done. Example: 2026-10-18T17:00:00Z.
- `description` (`string`, optional): Task description. Example: Implement the new landing page design.
- `estimated_minutes` (`integer`, optional): Estimated effort in minutes. Example: 480.
- `external_id` (`string`, optional): Your own reference ID for this task. Example: PLAN-7.
- `from_date` (`string`, optional): Task start date as YYYY-MM-DD. Example: 2026-10-14.
- `label_ids` (`array`, optional): IDs of tags to apply to the task. Example: [301].
- `project_id` (`integer`, optional): ID of the project the task belongs to. Get it from timely_list_projects. Example: 98765.
- `title` (`string`, optional): Task title. Example: Build landing page.
- `to_date` (`string`, optional): Task end date as YYYY-MM-DD. Example: 2026-10-18.
- `user_id` (`integer`, optional): ID of the user the task is assigned to. Get it from timely_list_users. Example: 5001.

Example input: `{"account_id":1234567,"id":8801}`

### `timely_update_team`

Update Team · Write

Update fields on an existing Timely team; only the fields provided change.
Returns the updated team.
Use timely_create_team to add a new team.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the team. Get it from timely_list_teams. Example: 7001.
- `add_users_to_team_projects` (`boolean`, optional): Whether new team members are also added to the team's projects.
- `color` (`string`, optional): Hex color for the team without the leading #. Example: FF5733.
- `delete_users_from_team_projects` (`boolean`, optional): Whether removed team members are also removed from the team's projects.
- `emoji` (`string`, optional): Emoji for the team. Example: 🚀.
- `name` (`string`, optional): Team name. Example: Design Team.
- `users` (`array`, optional): Team members, each as an object with user_id plus optional lead and hide_hours booleans. Example: [{"user_id": 5001, "lead": true}].

Example input: `{"account_id":1234567,"id":7001}`

### `timely_update_time_entry`

Update Time Entry · Write

Update fields on an existing Timely time entry; only the fields provided change.
Returns the updated entry.
Use timely_create_time_entry to log new time.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the time entry. Get it from timely_list_time_entries. Example: 55501.
- `billable` (`boolean`, optional): Whether the entry is billable.
- `billed` (`boolean`, optional): Whether the entry has already been billed.
- `day` (`string`, optional): Date of the entry as YYYY-MM-DD. Example: 2026-10-14.
- `external_id` (`string`, optional): Your own reference ID for this entry. Example: TASK-42.
- `from_time` (`string`, optional): Start timestamp of the entry in ISO 8601 format. Example: 2026-10-14T09:00:00+00:00.
- `hour_rate` (`number`, optional): Hourly rate for this entry. Example: 95.5.
- `hours` (`integer`, optional): Whole hours of logged duration. Example: 2.
- `label_ids` (`array`, optional): IDs of tags to apply to the entry. Get them from timely_list_tags. Example: [301, 302].
- `minutes` (`integer`, optional): Minutes of logged duration, 0 to 59. Example: 30.
- `note` (`string`, optional): Description of the work done. Example: Drafted homepage wireframes.
- `project_id` (`integer`, optional): ID of the project the time is logged to. Get it from timely_list_projects. Example: 98765.
- `seconds` (`integer`, optional): Seconds of logged duration, 0 to 59. Example: 0.
- `state_id` (`integer`, optional): ID of the time entry state to set. Get it from timely_list_states. Example: 12.
- `to_time` (`string`, optional): End timestamp of the entry in ISO 8601 format. Example: 2026-10-14T11:30:00+00:00.
- `user_id` (`integer`, optional): ID of the user the entry belongs to; defaults to the connected user. Get it from timely_list_users. Example: 5001.

Example input: `{"account_id":1234567,"id":55501}`

### `timely_delete_linked_work_item`

Delete Linked Work Item · Destructive

Permanently delete a linked work item from a Timely account.
Returns an empty success response.
Use timely_update_linked_work_item to edit it instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the linked work item. Get it from timely_list_linked_work_items. Example: 9901.

Example input: `{"account_id":1234567,"id":9901}`

### `timely_delete_project`

Delete Project · Destructive

Permanently delete a project from a Timely account.
Returns an empty success response.
Use timely_update_project with active=false to archive a project instead of deleting it.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the project. Get it from timely_list_projects. Example: 98765.

Example input: `{"account_id":1234567,"id":98765}`

### `timely_delete_tag`

Delete Tag · Destructive

Permanently delete a tag (label) from a Timely account.
Returns an empty success response.
Use timely_update_tag with active=false to archive a tag instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the tag. Get it from timely_list_tags. Example: 301.

Example input: `{"account_id":1234567,"id":301}`

### `timely_delete_task`

Delete Task · Destructive

Permanently delete a planned task (forecast) from a Timely account.
Returns an empty success response.
Use timely_update_task with completed_at to mark a task done instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the task. Get it from timely_list_tasks. Example: 8801.

Example input: `{"account_id":1234567,"id":8801}`

### `timely_delete_team`

Delete Team · Destructive

Permanently delete a team from a Timely account.
Returns an empty success response.
Use timely_update_team to rename or change members instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the team. Get it from timely_list_teams. Example: 7001.
- `delete_project_users` (`boolean`, optional): Whether to also remove the team's users from the team's projects.

Example input: `{"account_id":1234567,"id":7001}`

### `timely_delete_time_entry`

Delete Time Entry · Destructive

Permanently delete a time entry from a Timely account.
Returns an empty success response.
Use timely_update_time_entry to correct an entry instead of deleting it.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `account_id` (`integer`, required): Timely account (workspace) ID that owns the data. Get it from timely_list_accounts. Example: 1234567.
- `id` (`integer`, required): ID of the time entry. Get it from timely_list_time_entries. Example: 55501.

Example input: `{"account_id":1234567,"id":55501}`

## Related

Other Productivity connectors ([all 144](/agentkit/connectors/?category=productivity)):

- [Slack](/agentkit/connectors/slack/): Scalekit connector, OAuth, 96 tools
- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [Notion](/agentkit/connectors/notion/): Scalekit connector, OAuth, 51 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
