Docs

IDE setup details

Connect IDE

Install the Herald MCP server in Cursor, Codex, Claude, Windsurf, VS Code, Zed, and 8 other clients.

Overview

Herald exposes a Streamable HTTP MCP endpoint per workspace. All supported IDEs use the same URL and Bearer token — only the config file format differs.

MCP URL:  {MCP_GATEWAY_URL}/v1/{workspace-slug}/mcp
Auth:     Authorization: Bearer mcp_live_...
   or:    OAuth 2.1 (client discovers AS via Protected Resource Metadata)

Use the 5-step wizard at Connect IDE in your workspace sidebar, or follow the steps below manually. OAuth-capable clients can paste the MCP URL only — no long-lived key required after consent.

Local Agent vs Automations

Herald gives you two paste targets. MCP config registers the server; agent instructions tell the agent when and how to call Herald tools.

ModeMCP config goes in…Instructions go in…
Local Agent (chat)IDE MCP settings (e.g. .cursor/mcp.json)User Rules, project rules, or custom instructions
Automations (background)Automation → Tools → MCP serverAutomation prompt / instructions field

Cursor Automations: see the Cursor Automations + Herald guide.

Step 1 — Choose your IDE

Supported clients:

  • Cursor — supports Automations.cursor/mcp.json or Cursor Settings → MCP
  • OpenAI Codex~/.codex/config.toml or Codex CLI MCP settings
  • Claude Desktop — supports Automations~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
  • WindsurfWindsurf Settings → MCP
  • VS Code.vscode/mcp.json (MCP extension) or user settings
  • Zedsettings.json → context_servers / mcp
  • JetBrains AI AssistantSettings → Tools → AI Assistant → MCP
  • ClineCline MCP Servers settings
  • GitHub CopilotVS Code Copilot MCP block in settings or .vscode/mcp.json
  • Gemini CLI / IDEGemini CLI config or IDE MCP settings
  • Replit Agent — supports AutomationsReplit Agent MCP configuration
  • Continue~/.continue/config.json → mcpServers
  • Any MCP clientClient-specific MCP configuration

Step 2 — Generate an MCP key (or use OAuth)

MCP keys authenticate your IDE to the gateway. Generate one in the Connect IDE wizard or from workspace Settings → MCP API Keys. Optionally restrict each key to a subset of tools.

For Claude Desktop / ChatGPT-style connectors, add the MCP URL as a custom connector. Herald returns Protected Resource Metadata and prompts you to approve scopes at /oauth/authorize.

Important: Keys are shown once at creation. Store them securely. Herald stores only a hash — lost keys cannot be recovered.

Step 3 — Copy MCP config + instructions

Toggle Local Agent vs Automations to see where each piece goes. Replace demo URL and key with your workspace values from Connect IDE.

MCP config and agent instructions go in different places. Paste the JSON where your client registers MCP servers; paste the instructions where the agent reads rules or automation prompts.

Use Herald tools while coding in Cursor chat or Agent mode.

1. MCP config

  1. Open Cursor Settings → MCP (or create .cursor/mcp.json in your project)
  2. Paste the MCP config JSON below
  3. Reload MCP servers (or restart Cursor)

2. Agent instructions

  1. Open Cursor Settings → Rules → User Rules (or add .cursor/rules/herald.mdc with alwaysApply: true)
  2. Paste the agent instructions below
  3. Ask the agent to send a test alert or list recent inbox events

MCP config

File: .cursor/mcp.json or Cursor Settings → MCP

{
  "mcpServers": {
    "herald": {
      "url": "https://gateway.herald.services/v1/your-workspace/mcp",
      "headers": {
        "Authorization": "Bearer mcp_live_YOUR_KEY_HERE"
      }
    }
  }
}

Agent instructions

# Herald — Cursor Agent

For notifications and escalations, use Herald MCP tools.
Always include the most important details first. Keep Discord messages under 2000 characters.

## When to use which Herald surface

- **Alert channel tools** — Notify people (Discord, Slack, Telegram, email, SMS, PagerDuty, etc.). Prefer structured alert tools (*_security_alert, *_web3_alert, *_ci_alert, …) when severity and context matter; use plain send/message tools for simple updates.
- **Inbox tools** — Read inbound webhooks (chain monitors, Stripe, GitHub Actions, Sentry, etc.) with `list_recent_events` / `get_event`, then decide whether to alert or call a custom API tool.
- **Custom / product / automation tools** — Call your HTTP APIs, GitHub/Linear, Zapier/Make, Notion, etc. Use the exact tool name and required args listed below.

## Inbox (inbound events)

- `list_recent_events` — optional `limit` (default 10, max 50). Lists recent webhook events (Alchemy, Tenderly, Stripe, GitHub Actions, Sentry, …).
- `get_event` — required `event_id` from list_recent_events. Fetches one event by ID.

Use inbox tools first when the user asks what happened on-chain or from a monitor; then call an alert or custom tool if action is needed.

## Situational playbooks

### Security findings

If a critical bug or security issue is found, call a `*_send_security_alert` tool with:
- severity: critical | high | medium | low
- title, summary
- file_path, pr_link (use "N/A" if none)
- severity_color (Discord embeds): critical=15158332, high=15105570, medium=16776960, low=3447003

### Web3 / on-chain

If suspicious on-chain activity is detected, prefer structured Web3 tools:
- EVM: `discord_send_web3_alert`, `slack_send_web3_alert`, `telegram_send_web3_alert`, or `pagerduty_trigger_web3_incident`
  Args typically: severity, chain, tx_hash, block, title, summary, explorer_url (+ severity_color (Discord embeds): critical=15158332, high=15105570, medium=16776960, low=3447003 for Discord)
- Solana: `discord_send_solana_alert` / `slack_send_solana_alert` with chain, signature, slot, title, summary, explorer_url

Read inbox events with `list_recent_events` before alerting when monitors feed Herald.

### CI / deploy failures

For CI or deploy failures, call `*_send_ci_alert` with title, summary, provider, repo_or_project, workflow_or_env, status, run_url, severity.

### Billing / Stripe

For payment or billing incidents, call `*_send_stripe_alert` with title, summary, event_type, customer_or_account, amount_or_plan, severity, and dashboard/url context when available.

### Errors / Sentry

For error spikes or incidents from Sentry-style monitors, call `*_send_sentry_alert` with title, summary, project, environment, issue_url, count/severity fields as defined by the tool schema.

### On-call escalation

- `pagerduty_trigger_incident` — summary, severity (critical|error|warning|info), details; optional dedup_key
- `opsgenie_create_alert` — message and priority/details per schema
- `statuspage_create_incident` — name, status, and body fields per schema

Escalate only when impact is real or the user asks to page on-call.

### General team chat / push

For simple notifications use the plain channel tools (`discord_send_notification`, `slack_send_message`, `telegram_send_message`, Teams / Google Chat / Mattermost / Rocket.Chat, ntfy, Gotify, Pushover). Keep Discord content under 2000 characters. Put the most important details first.

### Issues / project tracking

Create or comment on issues with `github_create_issue`, `github_add_comment`, or `linear_create_issue` using the required fields from each tool schema (title/body/repo or team identifiers).

### Product / messaging APIs

Use the configured product tools (Resend, Twilio, Notion, Airtable, Zendesk, Intercom, Cal.com, WordPress, …) exactly as named below. Fill every required argument.

### Automation bridges

Forward events to Zapier / Make / IFTTT / generic webhooks with the payloads defined on those tools. Prefer structured JSON matching the tool’s input schema.

## Available Herald template tools (reference)

After you add templates in the dashboard, tools like these appear over MCP:

- **security**: discord_send_security_alert, telegram_send_security_alert
- **web3**: discord_send_web3_alert, slack_send_web3_alert, telegram_send_web3_alert, pagerduty_trigger_web3_incident, discord_send_solana_alert, slack_send_solana_alert
- **stripe**: discord_send_stripe_alert, slack_send_stripe_alert
- **ci**: discord_send_ci_alert, slack_send_ci_alert
- **observability**: discord_send_sentry_alert, slack_send_sentry_alert
- **team-chat**: discord_send_notification, slack_send_message, telegram_send_message, teams_send_message, google_chat_send_message, mattermost_send_message, rocketchat_send_message
- **mobile**: ntfy_send_notification, gotify_send_notification, pushover_send_notification
- **ops**: pagerduty_trigger_incident
- **automation**: zapier_send_event, make_send_event, ifttt_send_event, json_webhook_send
- **developer**: github_create_issue, github_add_comment, linear_create_issue
- **product**: wordpress_create_draft, resend_send_email, opsgenie_create_alert, statuspage_create_incident, notion_create_page, airtable_create_record, twilio_send_sms, zendesk_create_ticket, intercom_create_conversation, calcom_create_booking

Custom HTTP tools use whatever name you configured under Custom tools.

## Rules

- Prefer tools listed for this workspace over inventing tool names.
- Fill every required argument; use "N/A" only when a field is optional-or-placeholder and unknown.
- Do not invent secrets or webhook URLs — Herald already stores them on the tool.

Replace the demo URL and key with values from your workspace Connect IDE wizard.

Step 4 — Agent instructions

On Connect IDE, copy the generated agent instructions for your selected mode. They list this workspace's enabled tools (with required args), inbox helpers (list_recent_events / get_event), and situational playbooks for security, Web3, CI, Stripe, Sentry, on-call, channels, and more.

For Cursor Automations, also copy the example automation prompt for your job pack when shown in the wizard.

Step 5 — Test

  1. Send a test alert from the dashboard Alerts page
  2. Verify your IDE lists Herald MCP tools (local) or automation has Herald attached
  3. Ask the agent to send a test notification or list recent inbox events

Custom domain (Pro / Platform)

After DNS verification in Settings, MCP may also be available at https://mcp.yourdomain.com/mcp. Herald resolves workspaces by Host header.

Programmatic API

List, create, or delete custom tools with the same Bearer MCP key via REST API. Agents still invoke tools over MCP.