Create a channel
create_channelCreate a channel on an agent or an app. On an agent: a cron or heartbeat channel that wakes it on a schedule, a webhook channel that lets callers outside Valet reach it, or an mcp channel that serves it as an MCP server; what the agent does when it fires is the prompt file channels/.md in its source. On an app: a webhook, cron, or heartbeat channel whose deliveries Valet posts to path in the app, so a private app takes webhooks and scheduled work without becoming public. Valet checks a webhook's signature before anything reaches the app, then posts the request as the sender sent it; a cron or heartbeat fire posts a small JSON body. Each delivery carries an X-Valet-Visitor token of kind channel and a delivery_key to treat as an idempotency key; return 2xx, and anything else retries for about a day. A webhook is signed by a secret you choose, because this never returns a secret value: set it with set_env_vars on the agent or app first, then pass its name as secret_name. A webhook without secret_name is refused. Creating a channel that already exists with the same kind and settings reports it and changes nothing; different settings are refused, so destroy it first. Slack and Telegram need a browser, so for them this gives the step to take and creates nothing. Requires connecting a Valet account.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required. The agent's or app's name. | |
| path | No | Required for a channel on an app, and only there: the path in the app that handles each delivery, such as /webhooks/stripe. It starts with / and is not under /__valet/. | |
| channel | Yes | Required. The new channel's name: lowercase letters, digits, and hyphens. | |
| org_name | No | The Valet organization the agent or app belongs to. Omit to use the organization the account joined first. | |
| schedule | No | For cron, a schedule such as 'weekdays at 9:00am' or 'every 30 minutes' or a five-field cron expression. For heartbeat, an interval between 30s and 24h such as '15m'. Not used by other kinds. | |
| timezone | No | For cron, an IANA timezone such as America/New_York. Omit for UTC. | |
| secret_name | No | Required for webhook. The name of an environment variable on this agent or app that holds the signing secret, set first with set_env_vars. Not used by other kinds. | |
| channel_kind | Yes | Required. One of cron, heartbeat, webhook, mcp, slack, or telegram, from list_catalog_channels. An app takes webhook, cron, or heartbeat only. Slack and Telegram give the step to take instead of creating anything. | |
| verify_scheme | No | For webhook, how the sender signs: hmac-sha256 (the default), static-token for a sender that cannot sign, stripe, svix, slack, or mercury. This tool creates signed webhooks only, so there is no way to turn verification off. |