Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Toggl 2.0

Scalekit connector
Open markdown

The Toggl 2.0 connector lets your AI agent act in each user's Toggl 2.0 account. Each user connects their own Toggl 2.0 access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 67 tools.

Tools
67
What they doRead · write · destructive
32 · 27 · 832 read27 write8 destructive
Users sign in with

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Toggl 2.0 connection

    In AgentKit > Connections, create a Toggl 2.0 connection. The name you give it is the connection_name your code passes. See Configure connections.

  4. Authorize a user and make your first call

    quickstart.mts
    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 = 'togglfocus'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Toggl 2.0:', 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: 'togglfocus_get_user_settings',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user opens the link once and enters their Toggl 2.0 credentials there. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • togglfocus_get_clientGet one client by id.Read-only

    Get Client

    Get one client by id. Returns the client: id, name, currency, active and workspace_id. Use after togglfocus_list_clients to read one client. Needs workspace_id. togglfocus_get_user_settings returns current_workspace_id.

    Inputs

    client_idintegerrequired
    Numeric ID of the client. Find it with togglfocus_list_clients. Example: 1234567
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567
  • togglfocus_get_current_time_entryGet the time entry the authenticated user is tracking right now.Read-only

    Get Current Time Entry

    Get the time entry the authenticated user is tracking right now. Returns the running time entry, or no content (HTTP 204) when nothing is being tracked. Use before togglfocus_start_tracking or togglfocus_stop_tracking to check the timer state. Needs organization_id and workspace_id. togglfocus_get_user_settings returns current_workspace_id (and mcp_active_organization_id when set).

    Inputs

    organization_idintegerrequired
    Numeric ID of the Toggl 2.0 organization that owns the workspace. Example: 1234567
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567
  • togglfocus_get_milestoneGet one milestone by id.Read-only

    Get Milestone

    Get one milestone by id. Returns the milestone: id, name, due_date, color, completed_at, project_ids and team_ids. Use after togglfocus_list_milestones to read one milestone. Needs workspace_id. togglfocus_get_user_settings returns current_workspace_id.

    Inputs

    milestone_idintegerrequired
    Numeric ID of the milestone. Find it with togglfocus_list_milestones. Example: 1234567
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567
  • togglfocus_get_projectGet one project by id.Read-only

    Get Project

    Get one project by id. Returns the project: id, name, client_id, color, billable, private, dates, estimated_mins, completion_mode and permissions. Use after togglfocus_list_projects to read a project in full. Needs organization_id and workspace_id. togglfocus_get_user_settings returns current_workspace_id (and mcp_active_organization_id when set).

    Inputs

    organization_idintegerrequired
    Numeric ID of the Toggl 2.0 organization that owns the workspace. Example: 1234567
    project_idintegerrequired
    Numeric ID of the project. Find it with togglfocus_list_projects. Example: 1234567
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567
  • togglfocus_get_statusGet one task status by id.Read-only

    Get Status

    Get one task status by id. Returns the status: id, name, emoji, position and type. Use after togglfocus_list_statuses to read one status. Needs workspace_id. togglfocus_get_user_settings returns current_workspace_id.

    Inputs

    status_idintegerrequired
    Numeric ID of the task status. Find it with togglfocus_list_statuses. Example: 1234567
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567
  • togglfocus_get_tagGet one tag by id.Read-only

    Get Tag

    Get one tag by id. Returns the tag: id, name, color and workspace_id. Use after togglfocus_list_tags to read one tag. Needs workspace_id. togglfocus_get_user_settings returns current_workspace_id.

    Inputs

    tag_idintegerrequired
    Numeric ID of the tag. Find it with togglfocus_list_tags. Example: 1234567
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567
  • togglfocus_get_taskGet one task by id.Read-only

    Get Task

    Get one task by id. Returns the task: id, name, notes, state fields, priority, estimated_mins, start_date, end_date, project, assignees and tags. Use after togglfocus_list_tasks to read a task in full. Needs organization_id and workspace_id. togglfocus_get_user_settings returns current_workspace_id (and mcp_active_organization_id when set).

    Inputs

    organization_idintegerrequired
    Numeric ID of the Toggl 2.0 organization that owns the workspace. Example: 1234567
    task_idintegerrequired
    Numeric ID of the task. Find it with togglfocus_list_tasks. Example: 1234567
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567
    include_assigneesboolean
    Includes the unified user and team assignees. Example: true
  • togglfocus_get_time_accounting_reportGenerate the per-member time accounting report (logged, overtime, holiday and leave minutes) for a period.Read-only

    Get Time Accounting Report

    Generate the per-member time accounting report (logged, overtime, holiday and leave minutes) for a period. Returns members (one row per member), periods (team totals per day, week or month) and period_unit. Use for hours per member across a period. This POST only reads data. Needs workspace_id. togglfocus_get_user_settings returns current_workspace_id.

    Inputs

    periodobjectrequired
    Report period as a JSON object with either a preset or both from and to, for example {"from": "2026-09-01", "to": "2026-09-30"}. Required; a period that resolves to nothing is rejected. Accepts a JSON object. Example: {}
    workspace_idintegerrequired
    Numeric ID of the Toggl 2.0 workspace to operate in. Example: 1234567