> **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 Trigger.dev

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

**Authentication:** Bearer Token
**Categories:** Developer Tools, Automation
**Tools:** 59: 28 read, 28 write, 3 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=TRIGGERDEV)

## 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 Trigger.dev connection

   In **AgentKit > Connections**, create a Trigger.dev connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### 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 = 'triggerdev'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Trigger.dev:', 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: 'triggerdev_get_latest_deployment',
     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 = "triggerdev"
   identifier = "user_123"

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

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

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Trigger.dev credentials there. 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: 'triggerdev_execute_query',
  toolInput: {
    query: '<query>',
  },
  connector: 'triggerdev',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="triggerdev_execute_query",
    tool_input={
        "query": "<query>",
    },
    connection_name="triggerdev",
    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.

### `triggerdev_execute_query`

Execute TRQL Query · Read-only

Run a TRQL (Trigger.dev Query Language) query, a SQL-style language, against run data to analyze runs and calculate metrics.
Returns the result rows as JSON, or a CSV string when format is csv.
Use get_query_schema first to see the tables and columns you can query.

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

Inputs:

- `query` (`string`, required): The TRQL query to run.
- `format` (`string`, optional): Response format: json (default) or csv. One of: `json`, `csv`.
- `from` (`string`, optional): Start of the time range as an ISO 8601 timestamp. Use together with to.
- `period` (`string`, optional): Relative time range such as 7d, 30d or 1h. Do not combine with from and to.
- `scope` (`string`, optional): Scope of data to query: environment (default), project or organization. One of: `environment`, `project`, `organization`.
- `to` (`string`, optional): End of the time range as an ISO 8601 timestamp. Use together with from.

Example input: `{"query":"<query>"}`

### `triggerdev_get_batch`

Get Batch · Read-only

Retrieve a batch by id with its status and the ids of all runs in it.
Returns status, run counts, run ids and any errors.
Use get_batch_results for the outputs of the finished runs.

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

Inputs:

- `batch_id` (`string`, required): ID of the batch, starting with batch_.

Example input: `{"batch_id":"<batch_id>"}`

### `triggerdev_get_batch_results`

Get Batch Results · Read-only

Retrieve the execution results of the finished runs in a batch. Runs still executing are left out.
Returns the batch id and an items array of run results.
Use get_batch to see overall batch progress.

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

Inputs:

- `batch_id` (`string`, required): ID of the batch, starting with batch_.

Example input: `{"batch_id":"<batch_id>"}`

### `triggerdev_get_bulk_action`

Get Bulk Action · Read-only

Retrieve the status and aggregate processing counts of a bulk action.
Returns status, type and success and failure counts.
Use list_bulk_actions to find ids.

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

Inputs:

- `bulk_action_id` (`string`, required): ID of the bulk action, starting with bulk_.

Example input: `{"bulk_action_id":"<bulk_action_id>"}`

### `triggerdev_get_concurrency_limit`

Get Concurrency Limit · Read-only

Retrieve a concurrency limit by name with its bounds and live running and queued counts.
With concurrency_key it returns the view for that key: its per-key bound, any override and the runs executing for the key.
Use list_concurrency_limits to find names.

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

Inputs:

- `name` (`string`, required): Name of the concurrency limit.
- `concurrency_key` (`string`, optional): Return the view for this concurrency key instead of the whole limit.

Example input: `{"name":"<name>"}`

### `triggerdev_get_deployment`

Get Deployment · Read-only

Retrieve one deployment by id.
Returns its version, status, timestamps and the tasks it registered.
Use list_deployments to find deployment ids.

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

Inputs:

- `deployment_id` (`string`, required): ID of the deployment.

Example input: `{"deployment_id":"<deployment_id>"}`

### `triggerdev_get_env_var`

Get Environment Variable · Read-only

Retrieve one environment variable of a project environment by name.
Returns the variable value.
Use list_env_vars to see all variables.

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

Inputs:

- `env` (`string`, required): Environment slug: dev, staging, prod or preview.
- `name` (`string`, required): Name of the environment variable.
- `project_ref` (`string`, required): Project reference, starting with proj_ (shown in the dashboard project settings). Required for environment variable endpoints.

Example input: `{"env":"<env>","name":"<name>","project_ref":"<project_ref>"}`

### `triggerdev_get_error`

Get Error · Read-only

Retrieve one error group with its lifecycle state and the worker versions it affected.
Returns the error details and occurrence data.
Use list_errors to find error ids.

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

Inputs:

- `error_id` (`string`, required): ID of the error group, starting with error_.

Example input: `{"error_id":"<error_id>"}`

### `triggerdev_get_latest_deployment`

Get Latest Deployment · Read-only

Retrieve the latest unmanaged deployment of the project.
Returns its version, status and timestamps.
Use list_deployments to browse older deployments.

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

Inputs: none.

Example input: `{}`

### `triggerdev_get_query_schema`

Get Query Schema · Read-only

Retrieve the schema available to TRQL queries: tables, columns, data types, descriptions and allowed values.
Returns the full schema.
Use it before execute_query to write a valid query.

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

Inputs: none.

Example input: `{}`

### `triggerdev_get_queue`

Get Queue · Read-only

Retrieve one queue by id, task identifier or custom name.
Returns the queue with its concurrency limit, paused state and running and queued counts.
Use list_queues to browse all queues.

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

Inputs:

- `queue_id` (`string`, required): Queue ID, task identifier, or custom queue name, depending on queue_type.
- `queue_type` (`string`, optional): How queue_id is interpreted: id (default), task, or custom. One of: `id`, `task`, `custom`.

Example input: `{"queue_id":"<queue_id>"}`

### `triggerdev_get_run`

Get Run · Read-only

Retrieve one run by id, including its status, payload, output, error, attempts, tags, metadata and timestamps.
Returns the full run object. Payload and output are omitted when the key is a public access token.
Use list_runs to find run ids. Use get_run_result for only the final result of a finished run.

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

Inputs:

- `run_id` (`string`, required): ID of the run, starting with run_.

Example input: `{"run_id":"<run_id>"}`

### `triggerdev_get_run_events`

Get Run Events · Read-only

Retrieve all OpenTelemetry span events recorded for a run.
Returns the list of events for debugging and observability.
Use get_run_trace for the span tree instead of a flat event list.

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

Inputs:

- `run_id` (`string`, required): ID of the run, starting with run_.

Example input: `{"run_id":"<run_id>"}`

### `triggerdev_get_run_result`

Get Run Result · Read-only

Retrieve the execution result of a finished run: success flag, output, error and usage.
Returns ok, id, output, outputType, error, usage and taskIdentifier. Responds 404 while the run is still in progress.
Use get_run for status and attempts of a run that may still be executing.

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

Inputs:

- `run_id` (`string`, required): ID of the run, starting with run_.

Example input: `{"run_id":"<run_id>"}`

### `triggerdev_get_run_trace`

Get Run Trace · Read-only

Retrieve the OpenTelemetry trace of a run: its root span, ancestor chain and descendant spans.
Returns the trace subtree scoped to this run, optionally paged as flat spans.
Use get_run_events for the flat event log.

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

Inputs:

- `run_id` (`string`, required): ID of the run, starting with run_.
- `page_after` (`string`, optional): Cursor from the previous response (pagination.next) to fetch the next page of spans.
- `page_size` (`integer`, optional): Number of spans per page (maximum 100).

Example input: `{"run_id":"<run_id>"}`

### `triggerdev_get_schedule`

Get Schedule · Read-only

Retrieve one schedule by id.
Returns task, cron expression, timezone, type, active flag, next run time and environments.
Use list_schedules to find schedule ids.

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

Inputs:

- `schedule_id` (`string`, required): ID of the schedule, starting with sched_.

Example input: `{"schedule_id":"<schedule_id>"}`

### `triggerdev_get_waitpoint_token`

Get Waitpoint Token · Read-only

Retrieve a waitpoint token by id with its current status and output if it has been completed.
Returns id, status, completion time, timeout and output.
Use list_waitpoint_tokens to find token ids.

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

Inputs:

- `waitpoint_id` (`string`, required): ID of the waitpoint token, starting with waitpoint_.

Example input: `{"waitpoint_id":"<waitpoint_id>"}`

### `triggerdev_list_bulk_actions`

List Bulk Actions · Read-only

List bulk actions in the environment, newest first.
Returns a page of bulk actions and pagination cursors.
Use get_bulk_action for the processing counts of one action.

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

Inputs:

- `page_after` (`string`, optional): Cursor from the previous response (pagination.next) to fetch the next page of bulk actions.
- `page_before` (`string`, optional): Cursor from the previous response (pagination.previous) to fetch the previous page of bulk actions.
- `page_size` (`integer`, optional): Number of bulk actions per page (maximum 100).

Example input: `{}`

### `triggerdev_list_concurrency_limits`

List Concurrency Limits · Read-only

List the concurrency limits declared in the environment with their bounds and live running and queued counts.
Returns a page of limits and pagination info.
Use get_concurrency_limit for one limit.

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

Inputs:

- `page` (`integer`, optional): Page number, starting at 1.
- `per_page` (`integer`, optional): Number of limits per page.

Example input: `{}`

### `triggerdev_list_deployments`

List Deployments · Read-only

List deployments of the environment, most recent first, optionally filtered by status or time window.
Returns a page of deployments (id, version, status, timestamps) and pagination cursors.
Use get_deployment for one deployment and get_latest_deployment for the newest unmanaged one.

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

Inputs:

- `from` (`string`, optional): Start of the time window as an ISO 8601 date-time.
- `page_after` (`string`, optional): Cursor from the previous response (pagination.next) to fetch the next page of deployments.
- `page_size` (`integer`, optional): Number of deployments per page (maximum 100).
- `period` (`string`, optional): Relative window such as 1d or 7d.
- `status` (`string`, optional): Only deployments with this status. One of: `PENDING`, `BUILDING`, `DEPLOYING`, `DEPLOYED`, `FAILED`, `CANCELED`, `TIMED_OUT`.
- `to` (`string`, optional): End of the time window as an ISO 8601 date-time.

Example input: `{}`

### `triggerdev_list_env_vars`

List Environment Variables · Read-only

List the environment variables of a project environment.
Returns each variable name and value.
Use get_env_var for one variable. Needs a project_ref, so a personal access token is the usual credential.

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

Inputs:

- `env` (`string`, required): Environment slug: dev, staging, prod or preview.
- `project_ref` (`string`, required): Project reference, starting with proj_ (shown in the dashboard project settings). Required for environment variable endpoints.

Example input: `{"env":"<env>","project_ref":"<project_ref>"}`

### `triggerdev_list_errors`

List Errors · Read-only

List error groups in the environment. Failed runs are grouped by a fingerprint of error type, message and stack trace.
Returns a page of error groups (id, message, status, occurrence counts) and pagination cursors.
Use get_error for one group and list_runs with error_id for the runs behind it.

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

Inputs:

- `from` (`string`, optional): Start of the occurrence time range as an ISO 8601 date-time.
- `page_after` (`string`, optional): Cursor from the previous response (pagination.next) to fetch the next page of errors.
- `page_before` (`string`, optional): Cursor from the previous response (pagination.previous) to fetch the previous page of errors.
- `page_size` (`integer`, optional): Number of errors per page (maximum 100).
- `period` (`string`, optional): Relative time range to count occurrences in, such as 1d or 7d.
- `search` (`string`, optional): Free-text search across error type and message.
- `status` (`string`, optional): Comma-separated error lifecycle statuses to include, for example UNRESOLVED,RESOLVED,IGNORED.
- `task_identifier` (`string`, optional): Comma-separated task identifiers to include.
- `to` (`string`, optional): End of the occurrence time range as an ISO 8601 date-time.
- `version` (`string`, optional): Comma-separated worker versions to include.

Example input: `{}`

### `triggerdev_list_query_dashboards`

List Query Dashboards · Read-only

List the built-in dashboards with their widgets and pre-built TRQL queries for metrics such as run success rate, cost and LLM usage.
Returns each dashboard with its widgets.
Use the widget queries as a starting point for execute_query.

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

Inputs: none.

Example input: `{}`

### `triggerdev_list_queues`

List Queues · Read-only

List the queues in the environment with their concurrency settings and running and queued counts.
Returns a page of queues and pagination info.
Use get_queue for one queue.

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

Inputs:

- `page` (`integer`, optional): Page number, starting at 1.
- `per_page` (`integer`, optional): Number of queues per page.

Example input: `{}`

### `triggerdev_list_runs`

List Runs · Read-only

List runs in the environment of the secret key, newest first, filtered by status, task, tag, version, schedule or time window.
Returns a page of runs (id, status, task identifier, timestamps, tags) and pagination cursors.
Use get_run for the full payload and output of one run. Without a created-at filter only runs from the last 7 days are returned.
This is for browsing and reporting, not for polling a run: use get_run for that.

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

Inputs:

- `bulk_action_id` (`string`, optional): Only runs processed by this bulk action ID.
- `created_from` (`string`, optional): Start of the created-at window as an ISO 8601 date-time.
- `created_period` (`string`, optional): Relative created-at window such as 1h, 1d or 7d. Do not combine with created_from or created_to.
- `created_to` (`string`, optional): End of the created-at window as an ISO 8601 date-time.
- `error_id` (`string`, optional): Only runs behind this error group ID (starts with error_).
- `is_test` (`boolean`, optional): Set true to list only test runs, false to list only non-test runs.
- `page_after` (`string`, optional): Cursor from the previous response (pagination.next) to fetch the next page of runs.
- `page_before` (`string`, optional): Cursor from the previous response (pagination.previous) to fetch the previous page of runs.
- `page_size` (`integer`, optional): Number of runs per page (maximum 100).
- `schedule_id` (`string`, optional): Only runs created by this schedule ID.
- `status` (`string`, optional): Comma-separated run statuses to include. Values: PENDING_VERSION, QUEUED, EXECUTING, REATTEMPTING, FROZEN, COMPLETED, CANCELED, FAILED, CRASHED, INTERRUPTED, SYSTEM_FAILURE.
- `tag` (`string`, optional): Comma-separated run tags to include.
- `task_identifier` (`string`, optional): Comma-separated task identifiers to include.
- `version` (`string`, optional): Comma-separated worker versions to include.

Example input: `{}`

### `triggerdev_list_schedules`

List Schedules · Read-only

List the schedules in the environment, both declarative and imperative.
Returns a page of schedules (id, task, cron, timezone, active flag, next run) and pagination info.
Use get_schedule for one schedule.

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

Inputs:

- `page` (`integer`, optional): Page number, starting at 1.
- `per_page` (`integer`, optional): Number of schedules per page.

Example input: `{}`

### `triggerdev_list_timezones`

List Timezones · Read-only

List every IANA timezone that schedules support.
Returns an array of timezone names.
Use it to pick a valid value for the timezone of create_schedule or update_schedule.

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

Inputs: none.

Example input: `{}`

### `triggerdev_list_waitpoint_tokens`

List Waitpoint Tokens · Read-only

List waitpoint tokens in the environment, newest first.
Returns a page of tokens (id, status, tags, timestamps) and pagination cursors.
Use get_waitpoint_token for one token and its output.

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

Inputs:

- `created_from` (`string`, optional): Start of the created-at window as an ISO 8601 date-time.
- `created_period` (`string`, optional): Relative created-at window such as 1h or 1d.
- `created_to` (`string`, optional): End of the created-at window as an ISO 8601 date-time.
- `idempotency_key` (`string`, optional): Only tokens created with this idempotency key.
- `page_after` (`string`, optional): Cursor from the previous response (pagination.next) to fetch the next page of tokens.
- `page_before` (`string`, optional): Cursor from the previous response (pagination.previous) to fetch the previous page of tokens.
- `page_size` (`integer`, optional): Number of tokens per page (maximum 100).
- `status` (`string`, optional): Only tokens with this status, for example WAITING or COMPLETED.
- `tags` (`string`, optional): Only tokens with this tag.

Example input: `{}`

### `triggerdev_abort_bulk_action`

Abort Bulk Action · Write

Abort a pending bulk action so it stops processing more runs. Runs already processed are not undone.
Returns the updated bulk action.
Use get_bulk_action to see how far it got.

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

Inputs:

- `bulk_action_id` (`string`, required): ID of the bulk action, starting with bulk_.

Example input: `{"bulk_action_id":"<bulk_action_id>"}`

### `triggerdev_activate_schedule`

Activate Schedule · Write

Activate an imperative schedule so it triggers runs again.
Returns the updated schedule.
Only works on imperative schedules. Use deactivate_schedule to pause it.

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

Inputs:

- `schedule_id` (`string`, required): ID of the schedule, starting with sched_.

Example input: `{"schedule_id":"<schedule_id>"}`

### `triggerdev_add_run_tags`

Add Run Tags · Write

Add one or more tags to a run. Duplicate tags are ignored and a run can hold at most 10 tags.
Returns a confirmation message.
Use update_run_metadata to change free-form metadata instead of tags.

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

Inputs:

- `run_id` (`string`, required): ID of the run, starting with run_.
- `tags` (`array`, required): Tags to add (each under 128 characters, maximum 10 per run).

Example input: `{"run_id":"<run_id>","tags":[]}`

### `triggerdev_batch_trigger_task`

Batch Trigger a Single Task · Write

Start many runs of the same task in one request, one run per payload item.
Returns the batch id, run count, and the id of each run created.
Use batch_trigger_tasks to mix different tasks in one batch. Use get_batch to check progress.
The task must already be deployed to the environment that the secret key belongs to.

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

Inputs:

- `items` (`array`, required): List of items (up to 1,000). Each item is an object with an optional payload and optional options, for example [{"payload": {"userId": "user_1"}}, {"payload": {"userId": "user_2"}}].
- `task_id` (`string`, required): Identifier of the task to run for every item.

Example input: `{"items":[],"task_id":"<task_id>"}`

### `triggerdev_batch_trigger_tasks`

Batch Trigger Tasks · Write

Start runs of one or more tasks in a single request, one run per item in the list.
Returns the batch id, run count, and the id of each run created.
Use trigger_task for a single run. Use get_batch to check progress and get_batch_results for outputs.
Each item names its own task, so one batch can mix different tasks.

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

Inputs:

- `items` (`array`, required): List of runs to start (up to 1,000). Each item is an object with a task identifier, an optional payload, and optional options. Example: [{"task": "send-welcome-email", "payload": {"userId": "user_1"}}, {"task": "send-welcome-email", "payload": {"userId": "user_2"}, "options": {"tags": ["batch"]}}].

Example input: `{"items":[]}`

### `triggerdev_complete_waitpoint_token`

Complete Waitpoint Token · Write

Complete a waitpoint token to unblock the run waiting on it, optionally passing data back to the run.
Returns a success flag. Completing an already completed token is a no-op.
Use create_waitpoint_token to make a token first.

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

Inputs:

- `waitpoint_id` (`string`, required): ID of the waitpoint token, starting with waitpoint_.
- `data` (`object`, optional): JSON data returned to the waiting run as the wait result.

Example input: `{"waitpoint_id":"<waitpoint_id>"}`

### `triggerdev_create_bulk_action`

Create Bulk Action · Write

Start an asynchronous bulk action that cancels or replays many runs, chosen by run ids or by a filter.
Returns the bulk action id (HTTP 202). Provide either run_ids or at least one filter field, not both.
Use get_bulk_action to follow progress and abort_bulk_action to stop it.

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

Inputs:

- `action` (`string`, required): What to do with the selected runs. One of: `cancel`, `replay`.
- `filter_from` (`string`, optional): Filter: start of the time range as an ISO 8601 date-time.
- `filter_period` (`string`, optional): Filter: relative time range such as 24h or 30d.
- `filter_status` (`string`, optional): Filter: comma-separated run statuses. Values: PENDING_VERSION, QUEUED, EXECUTING, REATTEMPTING, FROZEN, COMPLETED, CANCELED, FAILED, CRASHED, INTERRUPTED, SYSTEM_FAILURE.
- `filter_tag` (`string`, optional): Filter: comma-separated run tags.
- `filter_task_identifier` (`string`, optional): Filter: comma-separated task identifiers.
- `filter_to` (`string`, optional): Filter: end of the time range as an ISO 8601 date-time.
- `name` (`string`, optional): Optional name for the bulk action (up to 255 characters).
- `run_ids` (`array`, optional): Run ids to act on (1 to 500). Use this or the filter fields.
- `target_region` (`string`, optional): Replay only: region to replay the runs in. Defaults to each run original region.

Example input: `{"action":"cancel"}`

### `triggerdev_create_env_var`

Create Environment Variable · Write

Create an environment variable in a project environment.
Returns a success flag.
Use update_env_var to change an existing variable and import_env_vars to add many at once.

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

Inputs:

- `env` (`string`, required): Environment slug: dev, staging, prod or preview.
- `name` (`string`, required): Name of the new variable.
- `project_ref` (`string`, required): Project reference, starting with proj_ (shown in the dashboard project settings). Required for environment variable endpoints.
- `value` (`string`, required): Value of the new variable.

Example input: `{"env":"<env>","name":"<name>","project_ref":"<project_ref>","value":"<value>"}`

### `triggerdev_create_schedule`

Create Schedule · Write

Create an imperative schedule that triggers a task on a cron expression.
Returns the new schedule.
The task must be defined with schedules.task() in code. Use update_schedule to change an existing schedule.

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

Inputs:

- `cron` (`string`, required): Cron expression for when the task runs.
- `deduplication_key` (`string`, required): Unique key for this schedule. Creating again with the same key updates the existing schedule instead of adding another.
- `task` (`string`, required): Identifier of the scheduled task to run.
- `external_id` (`string`, optional): Your own id to attach to the schedule, such as a user id.
- `timezone` (`string`, optional): IANA timezone for the cron expression. Defaults to UTC.

Example input: `{"cron":"<cron>","deduplication_key":"<deduplication_key>","task":"<task>"}`

### `triggerdev_create_waitpoint_token`

Create Waitpoint Token · Write

Create a waitpoint token that a run can pause on until it is completed.
Returns the token id, a callback url and whether it was reused through an idempotency key.
Use complete_waitpoint_token to release the waiting run.

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

Inputs:

- `idempotency_key` (`string`, optional): Reuses the same token when the same key is sent again before it expires.
- `idempotency_key_ttl` (`string`, optional): How long the idempotency key stays valid, as a duration such as 1h.
- `tags` (`array`, optional): Tags to attach to the token (maximum 10, each under 128 characters).
- `timeout` (`string`, optional): How long to wait before the token times out, as a duration such as 10m or 1d.

Example input: `{}`

### `triggerdev_deactivate_schedule`

Deactivate Schedule · Write

Deactivate an imperative schedule so it stops triggering runs, without deleting it.
Returns the updated schedule.
Only works on imperative schedules. Use activate_schedule to resume it.

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

Inputs:

- `schedule_id` (`string`, required): ID of the schedule, starting with sched_.

Example input: `{"schedule_id":"<schedule_id>"}`

### `triggerdev_ignore_error`

Ignore Error · Write

Mark an error group as ignored, for a fixed time and or until thresholds are exceeded. With no options it is ignored indefinitely.
Returns the updated error group.
Use unresolve_error to reopen it.

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

Inputs:

- `error_id` (`string`, required): ID of the error group, starting with error_.
- `duration` (`integer`, optional): How long to ignore the error for, in milliseconds.
- `occurrence_rate` (`number`, optional): Re-surface the error if it exceeds this many occurrences per minute.
- `reason` (`string`, optional): Optional reason for ignoring the error.
- `total_occurrences` (`integer`, optional): Re-surface the error after this many new occurrences.

Example input: `{"error_id":"<error_id>"}`

### `triggerdev_import_env_vars`

Import Environment Variables · Write

Upload several environment variables to a project environment in one request.
Returns a success flag.
Use create_env_var for a single variable. Set override to replace variables that already exist.

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

Inputs:

- `env` (`string`, required): Environment slug: dev, staging, prod or preview.
- `project_ref` (`string`, required): Project reference, starting with proj_ (shown in the dashboard project settings). Required for environment variable endpoints.
- `variables` (`array`, required): Variables to upload. Each item is an object with name and value, for example [{"name": "SLACK_API_KEY", "value": "slack_123456"}].
- `override` (`boolean`, optional): Set true to overwrite variables that already exist. Defaults to false. Default: `false`.

Example input: `{"env":"<env>","project_ref":"<project_ref>","variables":[]}`

### `triggerdev_override_concurrency_limit`

Override Concurrency Limit · Write

Override the bounds of a concurrency limit. Two modes: set total and or per_key for the limit itself, or set concurrency_key with per_key to cap one key temporarily.
Returns the updated limit.
Use reset_concurrency_limit to restore the values declared in code. In per-key mode do not send total.

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

Inputs:

- `name` (`string`, required): Name of the concurrency limit.
- `concurrency_key` (`string`, optional): Override the per-key cap for this one key only.
- `per_key` (`integer`, optional): Cap on each concurrency key pool (0 to 100000). Required together with concurrency_key.
- `total` (`integer`, optional): Cap on every run holding this limit (0 to 100000). Not allowed together with concurrency_key.
- `ttl` (`string`, optional): Per-key mode only: how long the override lasts, such as 7d. Default 7 days, maximum 30 days.

Example input: `{"name":"<name>"}`

### `triggerdev_override_queue_concurrency`

Override Queue Concurrency · Write

Temporarily override the concurrency limit of a queue to scale it up or down.
Returns the updated queue.
Use reset_queue_concurrency to return to the limit defined in code.

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

Inputs:

- `concurrency_limit` (`integer`, required): New concurrency limit. It cannot exceed the environment maximum.
- `queue_id` (`string`, required): Queue ID, task identifier, or custom queue name, depending on queue_type.
- `queue_type` (`string`, optional): How queue_id is interpreted: id (queue ID, default), task (a task identifier), or custom (a custom queue name). One of: `id`, `task`, `custom`.

Example input: `{"concurrency_limit":1,"queue_id":"<queue_id>"}`

### `triggerdev_pause_concurrency_limit`

Pause or Resume Concurrency Limit · Write

Pause a concurrency limit so runs holding it do not start, or resume it. Running runs finish and the configured bounds are kept.
Returns the updated limit.
Prefer this over override_concurrency_limit with total 0 to stop runs.

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

Inputs:

- `action` (`string`, required): Whether to pause or resume the limit. One of: `pause`, `resume`.
- `name` (`string`, required): Name of the concurrency limit.

Example input: `{"action":"pause","name":"<name>"}`

### `triggerdev_pause_queue`

Pause or Resume Queue · Write

Pause a queue so no new runs start, or resume a paused queue. Runs already executing finish normally.
Returns the updated queue.
Use override_queue_concurrency to throttle a queue without stopping it.

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

Inputs:

- `action` (`string`, required): Whether to pause or resume the queue. One of: `pause`, `resume`.
- `queue_id` (`string`, required): Queue ID, task identifier, or custom queue name, depending on queue_type.
- `queue_type` (`string`, optional): How queue_id is interpreted: id (queue ID, default), task (a task identifier), or custom (a custom queue name). One of: `id`, `task`, `custom`.

Example input: `{"action":"pause","queue_id":"<queue_id>"}`

### `triggerdev_promote_deployment`

Promote Deployment · Write

Promote a previously deployed version to be the current version of the environment, so new runs use it.
Returns the promoted deployment id and version.
Use list_deployments to find the version to promote.

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

Inputs:

- `version` (`string`, required): Worker version to promote.

Example input: `{"version":"<version>"}`

### `triggerdev_replay_run`

Replay Run · Write

Create a new run from an existing run, reusing its payload and options unless you override them.
Returns the id of the new run.
Use trigger_task to start a run from scratch. Use create_bulk_action to replay many runs at once.

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

Inputs:

- `run_id` (`string`, required): ID of the run, starting with run_.
- `concurrency_key` (`string`, optional): Concurrency key for the new run.
- `delay` (`string`, optional): Delay the new run, as a duration (1h30m) or an ISO 8601 date-time.
- `idempotency_key` (`string`, optional): Idempotency key for the new run. A repeated request with the same key returns the same run.
- `machine` (`string`, optional): Machine preset for the new run. One of: `micro`, `small-1x`, `small-2x`, `medium-1x`, `medium-2x`, `large-1x`, `large-2x`.
- `max_attempts` (`integer`, optional): Maximum number of attempts for the new run.
- `metadata` (`object`, optional): Metadata for the new run. Omit it to reuse the original metadata.
- `payload` (`object`, optional): Payload for the new run. Omit it to reuse the original run payload.
- `queue` (`string`, optional): Name of an existing queue to run the new run on.
- `region` (`string`, optional): Region to run in. Defaults to the original run region.
- `tags` (`array`, optional): Tags for the new run. These replace the original run tags (maximum 10).
- `version` (`string`, optional): Lock the new run to this deployed version. Defaults to the current version.

Example input: `{"run_id":"<run_id>"}`

### `triggerdev_reschedule_run`

Reschedule Run · Write

Change the start time of a delayed run. Only valid while the run is in the DELAYED state.
Returns the updated run.
Use get_run first to confirm the run is delayed.

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

Inputs:

- `delay` (`string`, required): New delay as a duration (1d, 6h, 10m, 11s) or an ISO 8601 date-time to run at.
- `run_id` (`string`, required): ID of the run, starting with run_.

Example input: `{"delay":"<delay>","run_id":"<run_id>"}`

### `triggerdev_reset_concurrency_limit`

Reset Concurrency Limit · Write

Reset a concurrency limit back to the values declared in code, clearing any override. With concurrency_key it clears only that key override.
Returns the updated limit.
Use override_concurrency_limit to set a temporary override.

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

Inputs:

- `name` (`string`, required): Name of the concurrency limit.
- `concurrency_key` (`string`, optional): Clear the per-key override for this key only.

Example input: `{"name":"<name>"}`

### `triggerdev_reset_queue_concurrency`

Reset Queue Concurrency · Write

Reset the concurrency limit of a queue back to the base value defined in code.
Returns the updated queue.
Use override_queue_concurrency to set a temporary limit.

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

Inputs:

- `queue_id` (`string`, required): Queue ID, task identifier, or custom queue name, depending on queue_type.
- `queue_type` (`string`, optional): How queue_id is interpreted: id (queue ID, default), task (a task identifier), or custom (a custom queue name). One of: `id`, `task`, `custom`.

Example input: `{"queue_id":"<queue_id>"}`

### `triggerdev_resolve_error`

Resolve Error · Write

Mark an error group as resolved, optionally recording the worker version that fixed it.
Returns the updated error group.
Use unresolve_error to reopen it.

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

Inputs:

- `error_id` (`string`, required): ID of the error group, starting with error_.
- `resolved_in_version` (`string`, optional): Worker version the error was resolved in.

Example input: `{"error_id":"<error_id>"}`

### `triggerdev_trigger_task`

Trigger Task · Write

Trigger a run of a deployed task by its task identifier, with an optional JSON payload and run options.
Returns the new run id.
Use batch_trigger_tasks to start many runs at once. Use get_run to follow the run afterwards.
The task must already be deployed to the environment that the secret key belongs to.

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

Inputs:

- `task_id` (`string`, required): Identifier of the task to run (the id set in your task() definition).
- `concurrency_key` (`string`, optional): Scopes the queue concurrency limit to this key, for example a user id.
- `delay` (`string`, optional): Delay before the run starts, as a duration (1h, 30m, 2w) or an ISO 8601 date-time.
- `idempotency_key` (`string`, optional): Prevents duplicate runs: a repeated request with the same key returns the existing run id.
- `machine` (`string`, optional): Machine preset for this run. Overrides the task default. One of: `micro`, `small-1x`, `small-2x`, `medium-1x`, `medium-2x`, `large-1x`, `large-2x`.
- `payload` (`object`, optional): JSON payload passed to the task. Omit it for tasks that take no payload.
- `queue_concurrency_limit` (`integer`, optional): Maximum number of concurrent executions on this queue (0 to 1000). Omit to use the environment limit.
- `queue_name` (`string`, optional): Name of an existing shared queue to run the task on.
- `tags` (`array`, optional): Tags to attach to the run (maximum 10, each under 128 characters). Prefix with a namespace such as user_ or org: to make filtering easier.
- `ttl` (`string`, optional): Time-to-live: the run is dropped if it has not started within this time. Use a duration such as 1h, 10m or 1h42m, or a number of seconds as text.

Example input: `{"task_id":"<task_id>"}`

### `triggerdev_unresolve_error`

Unresolve Error · Write

Move a resolved or ignored error group back to unresolved.
Returns the updated error group.
Use resolve_error or ignore_error to close it again.

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

Inputs:

- `error_id` (`string`, required): ID of the error group, starting with error_.

Example input: `{"error_id":"<error_id>"}`

### `triggerdev_update_env_var`

Update Environment Variable · Write

Set a new value for an existing environment variable.
Returns a success flag.
Use create_env_var to add a variable that does not exist yet.

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

Inputs:

- `env` (`string`, required): Environment slug: dev, staging, prod or preview.
- `name` (`string`, required): Name of the environment variable.
- `project_ref` (`string`, required): Project reference, starting with proj_ (shown in the dashboard project settings). Required for environment variable endpoints.
- `value` (`string`, required): New value. An empty string is valid and is stored as is.

Example input: `{"env":"<env>","name":"<name>","project_ref":"<project_ref>","value":"<value>"}`

### `triggerdev_update_run_metadata`

Update Run Metadata · Write

Replace the metadata object of a run with new JSON metadata.
Returns the updated metadata.
Use add_run_tags to label a run instead.

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

Inputs:

- `metadata` (`object`, required): New metadata for the run as a JSON object. It replaces the existing metadata.
- `run_id` (`string`, required): ID of the run, starting with run_.

Example input: `{"metadata":{},"run_id":"<run_id>"}`

### `triggerdev_update_schedule`

Update Schedule · Write

Update the task, cron expression, timezone or external id of an imperative schedule.
Returns the updated schedule.
Only works on schedules created in the dashboard or with the imperative API, not on declarative schedules defined in code.

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

Inputs:

- `cron` (`string`, required): Cron expression for when the task runs.
- `schedule_id` (`string`, required): ID of the schedule, starting with sched_.
- `task` (`string`, required): Identifier of the scheduled task to run.
- `external_id` (`string`, optional): Your own id to attach to the schedule.
- `timezone` (`string`, optional): IANA timezone for the cron expression. Defaults to UTC.

Example input: `{"cron":"<cron>","schedule_id":"<schedule_id>","task":"<task>"}`

### `triggerdev_cancel_run`

Cancel Run · Destructive

Cancel a run that is still queued or executing. Has no effect on a run that already finished.
Returns the id of the canceled run.
Use cancel_run for one run. Use create_bulk_action to cancel many runs at once.

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

Inputs:

- `run_id` (`string`, required): ID of the run, starting with run_.

Example input: `{"run_id":"<run_id>"}`

### `triggerdev_delete_env_var`

Delete Environment Variable · Destructive

Permanently delete an environment variable from a project environment.
Returns a success flag.
Running tasks lose access to the variable on their next start.

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

Inputs:

- `env` (`string`, required): Environment slug: dev, staging, prod or preview.
- `name` (`string`, required): Name of the environment variable.
- `project_ref` (`string`, required): Project reference, starting with proj_ (shown in the dashboard project settings). Required for environment variable endpoints.

Example input: `{"env":"<env>","name":"<name>","project_ref":"<project_ref>"}`

### `triggerdev_delete_schedule`

Delete Schedule · Destructive

Permanently delete an imperative schedule.
Returns a confirmation.
Only works on imperative schedules. Use deactivate_schedule to pause a schedule without deleting it.

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

Inputs:

- `schedule_id` (`string`, required): ID of the schedule, starting with sched_.

Example input: `{"schedule_id":"<schedule_id>"}`

## Related

Other Developer Tools connectors ([all 117](/agentkit/connectors/?category=developer-tools)):

- [GitHub](/agentkit/connectors/github/): Scalekit connector, OAuth, 217 tools
- [Microsoft Entra ID](/agentkit/connectors/microsoftentraid/): Scalekit connector, OAuth, 82 tools
- [Datadog](/agentkit/connectors/datadog/): Scalekit connector, API key, 105 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 |
