The Wired Connection faster Tour All TWC

Tray.ai · Claude Code plugin

Tray Toolkit

One-click setup that connects Claude Code to Tray.ai. Ask Claude to build, modify, and debug Tray workflows in natural language, no DevTools, no token pasting, no Terminal commands.

For developers · pro users

Already comfortable on the command line? Skip the wrapper and run Josh Noble's upstream bundle directly. It's the exact tarball he DM'd Jord; we mirror it here so the whole team has one URL to point at.

⬇ Download tray-internal-toolkit.tgz

Then in Terminal:

tar -xzf "$(ls -t ~/Downloads/tray-internal-toolkit*.tgz | head -1)" -C ~/ && ~/tray-internal-toolkit/install.sh

You'll be prompted for your Tray Workspace UUID and a Tray API token (DM the Automation team if you don't have one). The bundle's install.sh handles the plugin marketplace registration, the tray-logs + tray-build-assistant-public-no-feedback agents, and the @trayio/cdk-cli install. It's the same machinery the one-click installer above wraps, just exposed raw.

Heads-up: the upstream installer doesn't apply our two patches: the MCP node_modules symlink fix and the user-scope claude mcp add workaround. If tray-workspace doesn't show up in claude mcp list after a Cmd-Q + relaunch, run the one-click installer instead, it includes both fixes.

What you get

Three things, installed and wired up automatically:

  1. The official Tray.ai Claude Code plugin (tray-tools).

    A local MCP server with validate_workflow that runs after every change, plus the official skills (build-workflow, research-connector, tray-connectors, tray-patterns, tray-gotchas, set-workspace) and the tray-researcher agent.

  2. Two helper agents in Claude Code.

    tray-build-assistant-public-no-feedback answers "how do I do X in Tray?" by hitting Tray's public docs RAG. tray-logs fetches workflow executions to debug failures.

  3. The Tray CDK CLI globally.

    @trayio/cdk-cli installed via npm so you (or Claude) can scaffold and ship custom connectors.

Get your installer

Each teammate gets a personalized installer zip with their own Tray API token baked in, that way per-user audit lives in Tray's logs and revoking access is per-person, not whole-team.

  1. DM the Automation team on Slack.

    Tell us you want the Tray Toolkit. We'll create your API token in Tray, generate a zip just for you, and DM it back the same way.

  2. Save the zip to your Downloads folder.

    Don't forward it. The zip contains your personal token; treat it like a password. If you lose it, ping us and we'll regenerate.

Tokens are workspace-scoped. If you need access to a different Tray workspace later, ping for an additional token, one per workspace.

One thing to know about attribution

Workflows you build via Claude will be attributed to a per-user API service account (e.g. claude-mcp-yourname) in Tray, not your personal Tray identity. They're still fully visible and editable by you in the Tray UI, it's just a cosmetic "Created by" label.

We chose this for clean per-user revoke: if you ever lose your laptop or change roles, the Automation team revokes one token and nobody else is affected. The trade is that workspace activity logs show claude-mcp-yourname instead of your name as the author. Pretty small price.

Install

Once you have the zip:

  1. Double-click the zip in Finder.

    It unzips into a folder called tray-toolkit-installer.

  2. Open the folder, double-click INSTALL.command.

    A Terminal window opens. The installer checks your prerequisites (Homebrew, Node 22+, Claude Code), validates your token against Tray, clones the upstream toolkit bundle, installs the plugin, wires the agents, and registers the MCP server. ~30 seconds end-to-end.

  3. Quit Claude Code (Cmd-Q) and reopen it.

    Claude only picks up new MCP servers on a fresh launch. After reopen, the tray-workspace MCP shows up in /mcp and you're done.

First time double-clicking a .command file? macOS may warn you.

macOS Gatekeeper sometimes blocks unsigned .command files with a popup that says "Apple could not verify…". To proceed:

  1. Open System Settings → Privacy & Security.
  2. Scroll to the Security section. There'll be a line about INSTALL.command being blocked, with an Open Anyway button.
  3. Click it, confirm, then re-double-click the file from Finder.

You only need to do this once per file.

Try a build

Open Claude Code and ask things like:

Heads-up: debugging workflow logs

The tray-logs agent needs a different kind of token than the one in your installer, a short-lived UI session bearer that expires every ~8 hours. The installer ships without one because there's no point pre-staging a token that'll expire before you actually need it.

When you do want to debug a workflow, the agent will tell you exactly how to grab a fresh bearer from your browser. A one-click REFRESH-BEARER.command for this is coming in v1.1.

Security notes

Architecture

How a per-user installer is built, shipped, and wired to Tray.ai.

BUILD (THE TEAM) DISTRIBUTION TEAMMATE'S MAC TRAY.AI make-installer.sh bakes per-user token Per-user zip config.json + scripts faster · /tray-toolkit Slack DM to teammate GitHub bundle Josh's tray-internal-toolkit INSTALL.command preflight · seed · register credentials.json ~/.config/tray · 600 Claude Code tray-tools plugin tray-workspace MCP TRAY_API_TOKEN env Tray.ai REST API validate /v1/me · workflows stamp host download git clone seed token mcp add validate tool calls workflows
make-installer.sh bakes a per-user token into a zip handed out over this site. INSTALL.command seeds ~/.config/tray/credentials.json, pulls Josh's toolkit bundle from GitHub, and registers the tray-workspace MCP server. At runtime Claude Code drives Tray.ai through that MCP.

← back to all tools