MCP Quickstart
Connect Claude Desktop, Cursor, or any MCP client to Triggo in under 5 minutes.
MCP Quickstart
Triggo ships an embedded Model Context Protocol server at POST /mcp. Point any MCP-native client — Claude Desktop, Claude Code, Cursor, Windsurf, or something you wrote yourself — at that endpoint with a Bearer API key, and the client will immediately discover all 19 Triggo tools. This page walks through the five most common wirings end to end and lists every tool the server registers.
Prerequisites
Before you start you need three things:
- A Triggo account with at least one workspace. The MCP server is multi-tenant and scopes every call to the workspace that owns the API key.
- An API key with the scopes the tools you intend to call require. At a minimum, for the "run a published action" flow, the key needs
actions:read,actions:run, andruns:read. See API Keys for how to create one. - At least one published workflow in the workspace. Unpublished drafts are invisible to the
list_actions/run_actiontools. See Publishing Workflows as Actions for the publish flow.
Transport and endpoint
The server speaks JSON-RPC over Streamable HTTP. One HTTP POST per MCP message, request and response bodies are JSON-RPC envelopes:
- Endpoint:
POST https://api.triggo.dev/mcp - Auth:
Authorization: Bearer trg_...— same key shape that the runtime REST API uses. Both Bearer API keys and OAuth access tokens (from the Better Auth OIDC provider) are accepted. - Content type:
application/json - Rate limiting: per-key sliding window, tier-aware. A 429 response includes a
retry-afterheader in seconds; every response carriesx-ratelimit-limit,x-ratelimit-remaining, andx-ratelimit-reset(epoch seconds).
The current deployment instantiates a fresh MCP server per HTTP request, so sessions are stateless as far as the client is concerned: there is no session-id handshake to track, and each POST is complete on its own. If you are embedding the session-aware Streamable HTTP transport from the MCP SDK, it will work — the server simply does not require the session-id flow.
Server identity (returned by the MCP initialize handshake): name triggo-runtime, version 1.0.0, capabilities { tools, resources, prompts }.
Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or %APPDATA%\Claude\claude_desktop_config.json on Windows, and add:
{
"mcpServers": {
"triggo-runtime": {
"url": "https://api.triggo.dev/mcp",
"headers": {
"Authorization": "Bearer trg_YOUR_API_KEY"
}
}
}
}Restart Claude Desktop. The Triggo tools appear under the plug icon in the composer. If your Claude Desktop build does not yet support URL-based MCP servers (older releases required a process-based stdio transport), use the mcp-remote bridge instead:
{
"mcpServers": {
"triggo-runtime": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.triggo.dev/mcp",
"--header",
"Authorization: Bearer trg_YOUR_API_KEY"
]
}
}
}mcp-remote terminates the Streamable HTTP transport locally and re-exposes it to Claude Desktop over stdio. Prefer the URL form when supported — it has one fewer moving part.
Claude Code
Add to your project's .claude/settings.json (or the user-level ~/.claude/settings.json for global access):
{
"mcpServers": {
"triggo-runtime": {
"type": "url",
"url": "https://api.triggo.dev/mcp",
"headers": {
"Authorization": "Bearer trg_YOUR_API_KEY"
}
}
}
}The explicit "type": "url" tells Claude Code to open a Streamable HTTP transport rather than spawning a subprocess. Run claude mcp list from your shell afterwards to confirm Triggo shows up with 19 tools.
Cursor
Open Cursor Settings → Features → Model Context Protocol, or edit ~/.cursor/mcp.json directly:
{
"mcpServers": {
"triggo-runtime": {
"url": "https://api.triggo.dev/mcp",
"headers": {
"Authorization": "Bearer trg_YOUR_API_KEY"
}
}
}
}Reopen the Cursor chat panel. The tool badge should show triggo-runtime (19).
Generic MCP client
Any HTTP client that can POST JSON with a Bearer header can talk to the endpoint. Here is a minimal tools/list call via curl:
curl -sS https://api.triggo.dev/mcp \
-H "Authorization: Bearer trg_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'You will get back a JSON-RPC envelope with a result.tools array. From there, the usual MCP message flow applies: initialize to negotiate protocol version, tools/list to enumerate, tools/call to invoke with { "name": "list_actions", "arguments": { "status": "active" } }, and so on. If you are writing an agent in TypeScript or Python, prefer the official @modelcontextprotocol/sdk clients — they handle the envelope framing and capability negotiation for you.
Available tools (19)
Every tool below checks the listed scope before executing. A call that passes auth but lacks the scope returns a JSON-RPC result with isError: true and an explicit FORBIDDEN-style code; it does not reject the entire connection.
| Tool | Category | Required scope | Purpose |
|---|---|---|---|
list_actions | Actions | actions:read | List published actions in the workspace (filter by status). |
get_action | Actions | actions:read | Return the input schema and metadata for a single action by slug. |
run_action | Actions | actions:run | Execute a published action. Supports dry_run: true for a side-effect-free validation pass. Returns a run_id. |
get_run_status | Actions | runs:read | Poll the current status of a run by id. |
list_runs | Actions | runs:read | List recent runs with optional filters by action slug or status. |
approve_run | Actions | approvals:decide | Approve or reject a run that is waiting at a human-approval gate. |
list_workflows | Workflows | workflows:read | List workflows (drafts plus published) with status filters. |
get_workflow | Workflows | workflows:read | Return the full workflow definition — nodes, edges, configs — by id. |
create_workflow | Workflows | workflows:write | Create a new empty workflow, optionally cloned from a template. |
update_workflow | Workflows | workflows:write | Rename a workflow. |
delete_workflow | Workflows | workflows:write | Soft-delete a workflow. |
deploy_workflow | Workflows | workflows:write | Publish a draft as the active version. |
open_workflow | Workflows | workflows:read | Return a deep-link URL to open the workflow in the Triggo canvas. |
list_connectors | Connectors | connectors:read | Search the connector catalog by name substring. |
get_connector_operations | Connectors | connectors:read | List all actions and triggers for a given connector. |
get_operation_schema | Connectors | connectors:read | Return the property schema for a single connector operation. |
build_connector | Builds | connectors:write | Kick off the auto-builder for a new connector, or register pre-written code after validation. |
get_build_status | Builds | connectors:read | Poll the status of an auto-builder run. |
validate_connector | Builds | connectors:write | Statically validate connector TypeScript without registering it. |
That's 19 tools total — 6 Actions, 7 Workflows, 3 Connectors, 3 Builds.
The server also exposes MCP resources and prompts capabilities. Tool discovery is the primary surface; resources and prompts are used by the triggo-runtime server's built-in onboarding text and are safe to ignore for most agent integrations.
Troubleshooting
401 Unauthorized— the Bearer token is missing, malformed, expired, or revoked. Recreate the key in Agent Setup and redeploy.403 Forbiddenon a specific tool — the key is valid but does not carry the scope the tool requires. Add the scope to the key (or mint a new key) and retry. The scope name appears in the table above.- No tools visible after connecting — the key validated but has an empty scope list, so every tool's pre-flight scope check fails. Edit the key and add at least
actions:read,actions:run,runs:read,connectors:read. - Connection refused / DNS error — you have the wrong host, or the Triggo instance is unreachable from the client network. Try
curl -sS https://api.triggo.dev/healthz. If that fails the server is down; if it succeeds the URL in the client config is wrong. - Workflow tools missing from
tools/list— the key validated but does not carry theworkflows:read/workflows:writescopes, so the workflow tools' pre-flight scope check filters them out. Edit the key in Agent Setup and grant those scopes (both are canonical and mintable today), or mint a new key with them selected.
Related
- Agent integration overview — REST vs MCP decision guide.
- API Keys — scopes, rotation, revocation.
- Publishing Workflows as Actions — turning a workflow into something
list_actionscan see.