Skip to content
StatusTick

Set up with an AI agent

Copy-paste prompts for Claude Code and Cursor that add monitoring to your app, through the StatusTick MCP server or a statustick.yml file synced by the CLI.

Updated 16 Oct 2026

Your coding agent already knows your app: its URL, its health route and its scheduled jobs. Give it access to StatusTick and one prompt, and it sets up the monitors for you. There are two ways:

WayBest when
MCP serverYou want monitors now, without new files in your repository. The agent creates them in StatusTick for you.
statustick.yml and the CLIYou want your monitors in code, reviewed in pull requests and synced from CI.

Both prompts ask the agent to show you the plan first and wait for your OK before it creates anything.

The shortest way: tell your agent Read https://statustick.com/setup.md and follow it. That file has the steps for Claude Code, Cursor, VS Code, Codex CLI, Windsurf, Gemini CLI and Claude Desktop. The agent adds the server, asks you to sign in once, and plans the monitors with you.

Set up through the MCP server

The StatusTick MCP server is at https://mcp.statustick.com. It lets an agent work with your monitors, incidents, status pages and followed vendors; the tools are listed below. It cannot delete anything.

1. Add the server

Claude Code: run this in your project folder:

claude mcp add --transport http statustick https://mcp.statustick.com

Cursor: add the server to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "statustick": {
      "url": "https://mcp.statustick.com"
    }
  }
}

2. Sign in

Claude Code: start claude, run /mcp, pick statustick and choose to authenticate. Cursor: open Cursor Settings, find statustick in the MCP list and sign in when Cursor asks.

Your browser opens the StatusTick sign-in page. Sign in, pick the organization, and choose read and write so the agent can create monitors. Only owners and admins can give write access; read only is enough to ask about monitors and incidents.

No account yet? Choose Continue with your email on the sign-in page. StatusTick creates an account for you and emails a link to finish it. Open the link within 14 days to keep the account and to start receiving alerts.

If your MCP client cannot sign in through the browser, use an organization API key (Settings → API keys, read and write) instead:

claude mcp add --transport http statustick https://mcp.statustick.com \
  --header "Authorization: Bearer $STATUSTICK_API_KEY"

In Cursor, add "headers": { "Authorization": "Bearer stk_live_…" } next to url, and keep that file out of git.

3. Ask the agent to add monitoring

Paste this prompt into Claude Code or Cursor (agent mode):

Use the StatusTick MCP server to add monitoring to this app.

1. Find the production URL of the app (check the README, environment files,
   vercel.json and deploy config; ask me if you cannot find it).
2. Find a health route, for example app/api/health/route.ts in a Next.js app.
   If there is none, propose a small one that returns 200 when the app and its
   database work, and wait for my OK before adding it.
3. Find every scheduled job: crons in vercel.json, scheduled GitHub Actions
   workflows, node-cron or similar schedulers, and background workers.

Then show me a table of the monitors you plan to create and wait for my OK:
- an HTTP monitor for the home page, every 60 seconds
- an HTTP monitor for the health route, every 60 seconds
- a HEARTBEAT monitor for each scheduled job, with an interval that matches
  its schedule

After I agree, create them with create_monitor. Each heartbeat answer has a
ping URL. For each job, add code that calls its ping URL when the job ends
successfully, reading the URL from an environment variable such as
STATUSTICK_PING_URL_NIGHTLY_REPORT. Never write a ping URL into the code. At
the end, list the monitors you created and the environment variables I need
to set, with their values.

New monitors use your organization's default regions. Choose where alerts go and which status pages show the monitors in the dashboard; see Alert channels and Heartbeat monitors.

More things to ask

The same server answers questions about what you monitor:

Is anything down in StatusTick right now? If there is an open incident,
show me its timeline and the last failed checks.
Start a 30-minute StatusTick maintenance window for the API monitors while
I deploy, and end it when the deploy is done.

MCP tools

The server lists only the tools your sign-in allows. Read access shows the read tools; the tools marked Write need read and write access.

Monitor

ToolWhat it doesAccess
list_monitorsMonitors with their last check status (INACTIVE when paused).Read
get_monitorWhy a monitor is up or down now: its settings and last check per region (noResult: regions without an answer). legacyTLS and weakKey never change the status.Read
get_check_resultsA monitor's check results per region, newest first; failed ones only unless failedOnly is false.Read
list_job_runsA heartbeat (cron job) monitor's runs, newest first, with outcome and marks. Pass nextCursor as after.Read
get_uptimeUptime (0 to 1), average and p95 response time over the last N hours, per monitor.Read
list_maintenance_windowsMaintenance windows from 7 days ago to 90 days ahead; checks in one open no incidents.Read
mute_monitorMute monitors' alerts for some minutes; checks and incidents go on. Admins only.Write
unmute_monitorEnd monitors' mute. Admins only.Write
create_monitorCreate a monitor. url: https URL (HTTP, MCP), host:port (TCP, GRPC, SMTP, IMAP), host (PING, DNS), none for HEARTBEAT (answers the ping URL).Write
update_monitorChange some of a monitor's settings; the rest stay. Admins only.Write
pause_monitorPause a monitor: no checks or alerts until resumed.Write
resume_monitorResume a paused monitor.Write
start_maintenanceStart a maintenance window now: failed checks in it open no incidents and send no alerts.Write
end_maintenanceEnd a maintenance window's running occurrence now; later occurrences stay.Write

Incidents

ToolWhat it doesAccess
list_incidentsIncidents, newest first: open (default) or recent, started in the last N days.Read
get_incidentOne incident with timeline, comments, possible vendor causes and likelyCause with its evidence.Read
investigate_incidentAn open or resolved incident's failing regions, last failed checks, response times before and now, vendors, changes, maintenance, alerts, history and a likelyCause hint.Read
get_on_callWho is on call now in each schedule, and until when.Read
list_alert_decisionsWhy a monitor alerted or stayed quiet: its alert decisions, newest first, with rule and deliveries.Read
list_alert_policiesAlert policies: who each step alerts after how many minutes. Unassigned monitors use Default.Read
set_alert_policyPut monitors on an alert policy. Admins only.Write
list_alert_sourcesAlert sources: tool, default severity, state, alerts in 7 days, last alert, open incident. Admins only.Read
get_alert_sourceAn alert source with its recent alerts, newest first. Admins only.Read
send_test_alertSend a test alert; its test incident pages no one and resolves after 60 seconds. Admins only.Write
acknowledge_incidentAcknowledge an incident, so escalation stops.Write
open_incidentDeclare an incident now; the default alert policy pages people.Write
resolve_incidentResolve an incident with what fixed it.Write
add_incident_noteAdd a comment to an incident's timeline.Write
create_on_call_overridePut someone (userId or member email) on call in a schedule for a time. Admins only.Write
get_postmortem_contextAn incident's postmortem evidence by source, unreadable sources and the postmortem id.Read
get_postmortemA postmortem as Markdown with id, status and last update, by incidentId or postmortemId.Read
list_postmortemsPostmortems, newest first, with incident and status.Read
write_postmortemWrite parts of a resolved incident's postmortem, drafting it first. append adds and replaces given texts; replace swaps given lists. Never publishes.Write

Status

ToolWhat it doesAccess
get_public_statusWhat the public status pages show now.Read
list_status_pagesStatus pages and components; manual ones (no monitors) take set_component_status.Read
get_status_page_statusA status page's component statuses and unresolved incidents.Read
set_component_statusSet a manual component's status and optional public message.Write
show_monitor_on_status_pageMake status page components follow a monitor too; applies at once.Write
update_status_updatePost an update to a status page incident (statusIncidentId), or a StatusTick incident's update to the page (incidentId).Write

Vendors

ToolWhat it doesAccess
list_vendorsFollowed vendors with official status and open incidents.Read
check_vendorWhether any catalogue vendor has a problem now, from its status page.Read
diagnose_dependencyCalls to a vendor fail: your dependent monitors, others down, its official status and StatusTick's own checks of its API.Read
ToolWhat it doesAccess
searchFind monitors, incidents (title or number), vendors, status pages and alert sources by name.Read

Set up with statustick.yml and the CLI

With the statustick CLI, your monitors live in a statustick.yml file next to your code. A sync makes StatusTick match the file: it creates new monitors, changes the ones that differ and deletes the ones you removed from the file. Monitors made in the dashboard are never touched.

The statustick command comes with the launch. Until then, use the MCP server. A statustick.yml your agent writes today works with the CLI as it is.

1. Give the CLI an API key

Create an organization API key in Settings → API keys and set it in your shell, not in a file in the repository:

export STATUSTICK_API_KEY=stk_live_…   # read and write to sync; read is enough for a dry run

2. Ask the agent to write the file

Paste this prompt into Claude Code or Cursor (agent mode):

Add StatusTick monitoring to this app as code. Read
https://statustick.com/docs/set-up-with-an-ai-agent.md for the statustick.yml
format.

1. Find the production URL, the health route and every scheduled job (crons
   in vercel.json, scheduled GitHub Actions workflows, node-cron or similar).
   Ask me if you cannot find the production URL.
2. Write statustick.yml in the repository root with version: 1 and:
   - an http monitor for the home page and one for the health route,
     interval 1m
   - a heartbeat monitor for each scheduled job, with a cron and timeZone
     that match its schedule
   Use short, stable keys; renaming a key later deletes the monitor and
   creates a new one. Put secret header values in ${ENV_VAR} references.
3. Run `statustick validate` and fix every problem it reports.
4. Run `statustick sync --dry-run` and show me the plan. Run `statustick sync`
   only after I agree.
5. The sync prints a ping URL for each new heartbeat. For each job, add code
   that calls its ping URL when the job ends successfully, reading it from an
   environment variable such as STATUSTICK_PING_URL_NIGHTLY_REPORT, and tell
   me which variables to set.

The file format

A statustick.yml for a Next.js app with one Vercel cron job:

version: 1

defaults:
  interval: 1m
  timeout: 10s
  tags: [web]

monitors:
  - key: home
    name: Home page
    type: http
    target: https://app.example.com

  - key: health
    name: Health route
    type: http
    target: https://app.example.com/api/health
    http:
      expectedStatusCodes: [200]
      keyword: '"status":"ok"'
    degradedThresholdMs: 1500

  - key: nightly-report
    name: Nightly report
    type: heartbeat
    heartbeat:
      cron: "0 3 * * *"
      timeZone: UTC
      grace: 10m

The fields:

FieldWhat it sets
versionAlways 1. Required.
defaultsValues for every monitor that leaves the field out: interval, timeout, locations, alertPolicy, tags, group.
keyRequired. 1 to 64 of a-z, 0-9, - and _, unique in the file. StatusTick tracks the monitor by its key.
nameThe name in StatusTick, at most 64 characters. Default: the key.
typehttp, tcp, ping, dns or heartbeat.
targetA URL for http, host:port for tcp, a host for ping and dns. Heartbeats have no target.
intervalSeconds, or 30s, 5m, 1h, 1d. From 30 seconds to 1 day. Default 5m.
timeout1 to 60 seconds. Default 10s.
locationsRegion codes, region names or private location names. Left out, the monitor keeps its locations.
httpmethod, headers, expectedStatusCodes (default 200 to 206) and keyword, text the response must contain.
dnsrecordType: A, AAAA, CNAME, MX, TXT, NS or SOA. Default A.
heartbeatgrace (default 5m), and cron with timeZone (an IANA name, default UTC) instead of an interval.
degradedThresholdMsChecks slower than this count as degraded.
tags, groupUp to 10 tags of at most 32 characters, and a group name.
pausedtrue to stop checks and alerts.
alertPolicyAn alert policy by name, or Default. Left out, set it in the dashboard.
statusPageComponentsA list of page and component names the monitor shows on. Left out, set it in the dashboard.

${NAME} in a value is read from the environment when the CLI runs, and values never show in plans. A field you remove goes back to the default on the next sync.

The commands

CommandWhat it does
statustick validateChecks the file without calling StatusTick. Each problem names the line and the field.
statustick sync --dry-runShows what a sync would create, change and delete, field by field.
statustick syncMakes StatusTick match the file. If StatusTick refuses one monitor, nothing is saved.
statustick export -o statustick.ymlWrites the monitors you already have as a file, to start from.
statustick adoptTakes over monitors made in the dashboard that the file names by id.

Monitors the file manages refuse edits in the dashboard and the API, except alert settings, muting and deleting, so the file stays the source of truth. A monitor deleted by hand comes back on the next sync.

Other agents and tools

  • Any MCP client (ChatGPT, Windsurf, VS Code and others): add https://mcp.statustick.com as a remote MCP server over Streamable HTTP, and sign in or send an API key as Authorization: Bearer.
  • REST API: the same monitors, incidents and status pages, with organization API keys. The reference is at api.statustick.com/docs and the OpenAPI file at https://api.statustick.com/docs/openapi.yaml.
  • These docs for agents: statustick.com/llms.txt lists every docs page, llms-full.txt has all of them in one Markdown file, and every page is also Markdown when you add .md to its URL.
All docs