Cursor Automations + Herald
Run Herald MCP in background agents triggered by GitHub, cron, or webhooks.
Overview
Cursor Automations run cloud agents without you opening the IDE. Herald fits when the automation should notify Discord/Slack, read inbox webhooks, page on-call, or call scoped ops tools — not when you only need inline chat help.
MCP config and agent instructions go in different places than local Cursor chat. Do not paste everything into .cursor/mcp.json alone.
Local Agent vs Automations
| Setup | MCP config | Agent instructions |
|---|---|---|
| Local Agent (chat) | .cursor/mcp.json or Settings → MCP | Settings → Rules → User Rules, or .cursor/rules/herald.mdc |
| Cursor Automations | Automation → Tools → MCP server (URL + Bearer key) | Automation → Instructions / prompt field |
Step-by-step
- Install a Herald job pack and generate a scoped MCP key in your workspace Connect IDE wizard.
- Open cursor.com/automations and create an automation (or use the
/automateskill in Cursor). - Choose a trigger — e.g. Pull request opened, CI completed, cron schedule, or Herald webhook.
- Under Tools → MCP server, add Herald with your workspace MCP URL and Bearer token. See Cursor Automations docs.
- Copy agent instructions from Connect IDE (step 4, Automations mode) into the automation prompt. Include when to call each Herald tool.
- Save, activate, and fire the trigger to verify Herald tools run.
Example prompts by job pack
Copy from your Connect IDE wizard for live tool names, or use these as starting points:
On-call
Trigger: PagerDuty incident, cron health check, or manual webhook
When on-call escalation is warranted: 1. Assess severity from context (production down = critical, degraded = warning). 2. Call `pagerduty_trigger_incident` with summary, severity, and details. 3. Notify the team channel with `discord_send_notification` including incident link and next steps. Do not page for low-severity or unconfirmed issues.
Web3 watch
Trigger: Herald inbox webhook (Alchemy / Tenderly / Forta) or cron monitor
When suspicious on-chain activity appears in Herald inbox: 1. Call `list_recent_events` then `get_event` for the relevant monitor event. 2. Call `discord_send_web3_alert` or `slack_send_web3_alert` with severity, chain, tx_hash, block, title, summary, explorer_url. Use critical severity for exploit patterns or large unexpected outflows.
Solana watch
Trigger: Helius webhook (via Herald inbox) or scheduled Solana monitor
When a Solana monitor fires: 1. Read the event from Herald inbox with `list_recent_events` / `get_event`. 2. Call `discord_send_solana_alert` with chain, signature, slot, title, summary, explorer_url, and severity.
Stripe ops
Trigger: Stripe webhook (via Herald inbox) or scheduled billing check
When a Stripe payment or billing event indicates failure: 1. Read `list_recent_events` for the latest stripe-sourced event if needed. 2. Call `discord_send_stripe_alert` or `slack_send_stripe_alert` with title, summary, event_type, customer_or_account, amount_or_plan, severity, and dashboard context. Use severity high for repeated failures; medium for single recoverable failures.
Ship guard
Trigger: GitHub — CI completed (failed) or Pull request opened
Point GitHub Actions or Vertel webhooks at Herald Inbox for richer context.
When this automation runs: 1. If CI failed or deploy status is failure, call `discord_send_ci_alert` with provider, repo_or_project, workflow_or_env, status, run_url, severity, title, and summary. 2. If severity is critical, also call `pagerduty_trigger_incident` with summary and details. 3. If unsure, call `list_recent_events` first to read the latest GitHub Actions or Vercel inbox event, then alert. Do nothing if CI passed and there is no actionable failure.
Status room
Trigger: Sentry — Issue created (via Herald webhook) or cron every 15 minutes
Connect Sentry webhooks to Herald Inbox under Event sources.
When a Sentry-style error spike or new issue is detected: 1. Call `list_recent_events` and `get_event` to read the latest Sentry inbox event if event_id is not provided. 2. Call `slack_send_sentry_alert` with title, summary, project, level, issue_url, severity, and severity_color. 3. For customer-facing outages, call `statuspage_create_incident` with name, status, and body per schema. Escalate only when user impact is confirmed or severity is high/critical.
Support desk
Trigger: Zendesk / Intercom webhook or manual triage request
When a support escalation is needed: 1. Create a ticket with `zendesk_create_ticket` or `intercom_create_conversation` using required fields from the tool schema. 2. Include customer context, severity, and recommended next action in the body.
Calendar agent
Trigger: Cal.com booking webhook or scheduled reminder
When a Cal.com event requires action: 1. Read inbox events if the booking came via Herald webhook. 2. Call `calcom_create_booking` when scheduling is requested. 3. Notify with `slack_send_message` confirming the booking or handoff.
Dev ship
Trigger: GitHub — Pull request merged or Issue created
After a PR is merged or when triage is requested: 1. If follow-up work is needed, call `github_create_issue` with owner, repo, title, and body summarizing what shipped and what remains. 2. Notify the team with `slack_send_message` including the issue link and one-line summary. Skip if the PR is docs-only with no follow-ups.
Common mistakes
- MCP only in .cursor/mcp.json — Automations run in the cloud; attach Herald under the automation's Tools → MCP server.
- Instructions in MCP config — JSON is for server connection only; paste Herald playbooks in the automation prompt or User Rules.
- Full catalog key — Prefer a job-pack scoped key so the agent sees few tools, not dozens.
- Missing inbox — For webhook-driven flows, enable inbox tools on the key and tell the agent to call
list_recent_eventsfirst.
