Trigger.dev MCP server for AI agents

Live

BEARER TOKEN

BACKGROUND JOBS

Developer Tools

Trigger.dev gives your agent control of background jobs: trigger and replay task runs, inspect run traces and errors, manage schedules, queues, and concurrency, promote deployments, and query run data with TRQL.

  • Per-user credentials: each call uses the actual user's access token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Trigger.dev
agent · Acme Q3
Run
Why did the sync-invoices runs fail in the last hour?
S
triggerdev_list_runs
109ms
Jobs agent
4 sync-invoices runs failed in the last hour, all with the same timeout error. 31 runs completed.
Sources: 35 runs, prod environment
triggerdev
35 runs
18:29
Message Claude...

Tools your jobs agent reaches for on Trigger.dev, scoped per user.

CALL ANY TOOL
59 tools for background jobs on Trigger.dev: trigger, batch, replay, and cancel runs, read run traces and results, manage schedules, queues, concurrency limits, and environment variables, triage errors, and query run data with TRQL.
triggerdev_abort_bulk_action
Abort bulk action
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.
Parameters
Name
Type
Required
Description
bulk_action_id
string
Required
ID of the bulk action, starting with bulk_.
triggerdev_add_run_tags
Add run tags
triggerdev_batch_trigger_task
Batch trigger task
triggerdev_batch_trigger_tasks
Batch trigger tasks
triggerdev_cancel_run
Run cancel
triggerdev_complete_waitpoint_token
Complete waitpoint token
triggerdev_create_bulk_action
Create bulk action
triggerdev_create_schedule
Create schedule
triggerdev_delete_env_var
Delete env var
triggerdev_execute_query
Query execute
triggerdev_get_batch
Batch get
triggerdev_get_bulk_action
Get bulk action
triggerdev_get_env_var
Get env var
triggerdev_get_query_schema
Get query schema
triggerdev_get_run
Run get
triggerdev_get_run_trace
Get run trace
triggerdev_ignore_error
Ignore error
triggerdev_list_bulk_actions
List bulk actions
triggerdev_list_concurrency_limits
List concurrency limits
triggerdev_list_env_vars
List env vars
triggerdev_list_query_dashboards
List query dashboards
triggerdev_list_runs
List runs
triggerdev_list_timezones
List timezones
triggerdev_override_concurrency_limit
Override concurrency limit
triggerdev_pause_concurrency_limit
Pause concurrency limit
triggerdev_promote_deployment
Promote deployment
triggerdev_replay_run
Run replay
triggerdev_reset_queue_concurrency
Reset queue concurrency
triggerdev_update_env_var
Update env var
triggerdev_update_run_metadata
Update run metadata

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Trigger.dev tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["triggerdev"], toolNames: [
    "triggerdev_list_runs",
    "triggerdev_get_run_trace",
    "triggerdev_replay_run"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Find the sync-invoices runs that failed in the last hour" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["triggerdev"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Find the sync-invoices runs that failed in the last hour" }],
  tools,
});

// Execute the tool call with the user's vaulted Trigger.dev access token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["triggerdev"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Find the sync-invoices runs that failed in the last hour" }],
  tools,
});

// Tool call runs with the user's vaulted Trigger.dev access token
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["triggerdev"] }, pageSize: 100,
});

const agent = new Agent({
  name: "jobs_agent",
  model: "gemini-2.5-pro",
  instruction: "Trigger.dev tools scoped to this user",
  tools,
});

await agent.run("Find the sync-invoices runs that failed in the last hour");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Trigger.dev tool. Click to copy, paste into your agent, done.
Runs
Copy the prompt
Copied
Trigger the send-digest task with this JSON payload.
Copy the prompt
Copied
Replay run run_8fa2 with the same payload.
Copy the prompt
Copied
Cancel every queued run of the resize-image task.
Debugging
Copy the prompt
Copied
Show the trace for run run_8fa2.
Copy the prompt
Copied
List unresolved error groups in production.
Copy the prompt
Copied
What was the success rate of sync-invoices over the last 7 days?
Schedules and deploys
Copy the prompt
Copied
Create a schedule that runs nightly-report at 2am UTC every day.
Copy the prompt
Copied
Pause the email-send queue.
Copy the prompt
Copied
Promote deployment version 20261020.3 to current.
SEE HOW AUTH WORKS
Each user connects their own Trigger.dev access token once, and Scalekit sends it with every call. Tokens stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Trigger.dev
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Trigger.dev
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Trigger.dev
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Trigger.dev
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other developer tools and automation connectors.
Engineering Teams
DevOps assistant agent
Polls GitHub for failing checks and stale PRs, opens Linear issues for the ones that need work, and posts a daily digest to Slack. It acts as the engineer, not a shared service account.
Engineering Teams
Engineering standup agent
Pulls commits from GitHub and GitLab, tracks issue movement in Jira, and posts a per-engineer standup brief to Slack. Each engineer's activity is read on their own delegated OAuth.
Test other agents
See the same per-user auth pattern across other developer tools and automation connectors.
ENGINEERING
DevOps assistant agent
Poll GitHub for failing checks and stale pull requests, open Linear issues for the ones that need work, and digest to Slack.
ENGINEERING
Engineering standup agent
Pull commits from GitHub and GitLab, track Jira issue movement, and post a per-engineer standup brief to Slack.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Trigger.dev access token looks fine in a demo. In production every triggered run looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Trigger.dev today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Trigger.dev as the user or through a shared access token?
As the user. Each user connects their own Trigger.dev access token once, and Scalekit sends it with every call. Runs the agent triggers, replays, or cancels are attributed to that user in your audit trail, not a shared service account.
Where is the Trigger.dev access token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. To rotate it, the user reconnects with a new access token. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Trigger.dev?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example run and trace read tools without triggerdev_delete_env_var and triggerdev_delete_schedule, which permanently remove a variable or schedule. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Trigger.dev access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Which Trigger.dev environment does the agent act on?
The environment the connected access token belongs to. Run, queue, schedule, and deployment tools act inside that environment. Environment variable tools take a project_ref to target a specific project environment.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""triggerdev"": {
""url"": ""https://mcp.scalekit.com/triggerdev"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.triggerdev]
url = ""https://mcp.scalekit.com/triggerdev""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""triggerdev"": {
""url"": ""https://mcp.scalekit.com/triggerdev"",
""type"": ""http""
}
}
}