Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Teamwork

Scalekit connector
Open markdown

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

Tools
250
What they doRead · write · destructive
112 · 102 · 36112 read102 write36 destructive
Users sign in with
OAuth app
Your own Teamwork app

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 Teamwork connection

    In AgentKit > Connections, create a Teamwork connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

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

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

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

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • teamwork_activity_listList the latest activity across all projects the user can see.Read-only

    List Latest Activity

    List the latest activity across all projects the user can see. Returns activity entries with type, actor, item and timestamp, newest first. Use for a site-wide activity feed. Use teamwork_project_activity_list for one project.

    Inputs

    activity_typesstring
    Comma-separated activity types to include, for example new, edited, completed. Example: new,completed.
    end_datestring
    Only activity on or before this date (YYYY-MM-DD). Example: 2025-01-31.
    pageinteger
    Page number to return, starting at 1. Example: 1.
    page_sizeinteger
    Number of items per page (default 50, max 500). Example: 50.
    project_idsstring
    Comma-separated project ids; only activity in these projects. Example: 123456.
    start_datestring
    Only activity on or after this date (YYYY-MM-DD). Example: 2025-01-01.
    user_idsstring
    Comma-separated user ids; only activity by these users. Example: 101,102.
  • teamwork_calendar_event_getRetrieve one calendar event by id.Read-only

    Get Calendar Event

    Retrieve one calendar event by id. Returns the event with title, times, location, description and attendees. Use when you have an event id. Use teamwork_calendar_events_list to find events.

    Inputs

    event_idintegerrequired
    Id of the calendar event. Example: 7701.
  • teamwork_calendar_event_types_listList the calendar event types defined on the Teamwork site.Read-only

    List Calendar Event Types

    List the calendar event types defined on the Teamwork site. Returns each event type with id and name. Use to find an event type id for teamwork_calendar_event_update.

    Inputs

    This tool takes no inputs.

  • teamwork_calendar_events_listList the calendar events you can see in a date range.Read-only

    List Calendar Events

    List the calendar events you can see in a date range. Returns each event with id, title, start, end and attendees. Use to see what is scheduled. Use teamwork_calendar_event_get for one event.

    Inputs

    end_datestringrequired
    End of the range in YYYYMMDD format. Example: 20250331.
    start_datestringrequired
    Start of the range in YYYYMMDD format. Example: 20250301.
  • teamwork_comment_getRetrieve one comment on a task, milestone, notebook or link by id.Read-only

    Get Comment

    Retrieve one comment on a task, milestone, notebook or link by id. Returns the comment with body, author, timestamp and the object it belongs to. Use when you have a comment id and need its detail. Use teamwork_message_reply_get for a reply to a message.

    Inputs

    comment_idintegerrequired
    Id of the comment. Example: 88001.
  • teamwork_comments_listList comments across tasks, milestones, notebooks, links, files and other items you can see.Read-only

    List Comments

    List comments across tasks, milestones, notebooks, links, files and other items you can see. Returns a page of comments with body, author, parent item and timestamps, plus paging metadata. Use to search or review discussion across projects. Use teamwork_task_comments_list or teamwork_milestone_comments_list for one item.

    Inputs

    object_idsstring
    Comma-separated ids of the items to read comments for. Example: 7654321,7654322.
    object_typestring
    Only comments on this type of item. Example: task.
    order_modestring
    Sort direction. Example: asc. Allowed values: asc, desc.one of ascdesc
    pageinteger
    Page number to return, starting at 1. Example: 1.
    page_sizeinteger
    Number of items per page (default 50, max 500). Example: 50.
    project_idsstring
    Comma-separated project ids; only comments in these projects. Example: 123456.
    search_termstring
    Only return comments whose name or text matches this term. Example: roadmap.
    updated_afterstring
    Only comments updated after this ISO 8601 timestamp. Example: 2025-01-01T00:00:00Z.
  • teamwork_companies_listList companies (clients) on the Teamwork site.Read-only

    List Companies

    List companies (clients) on the Teamwork site. Returns a page of companies with id, name, website and contact details. Use to find a company id for teamwork_project_create or teamwork_people_list.

    Inputs

    pageinteger
    Page number to return, starting at 1. Example: 1.
    page_sizeinteger
    Number of items per page (default 50, max 500). Example: 50.
    search_termstring
    Only return companies whose name or text matches this term. Example: roadmap.
  • teamwork_company_getRetrieve one company by id.Read-only

    Get Company

    Retrieve one company by id. Returns the company's name, website, address and contact details. Use when you have a company id and need its detail.

    Inputs

    company_idintegerrequired
    Id of the company. Example: 55.