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:
| Way | Best when |
|---|---|
| MCP server | You want monitors now, without new files in your repository. The agent creates them in StatusTick for you. |
| statustick.yml and the CLI | You 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
| Tool | What it does | Access |
|---|---|---|
list_monitors | Monitors with their last check status (INACTIVE when paused). | Read |
get_monitor | Why 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_results | A monitor's check results per region, newest first; failed ones only unless failedOnly is false. | Read |
list_job_runs | A heartbeat (cron job) monitor's runs, newest first, with outcome and marks. Pass nextCursor as after. | Read |
get_uptime | Uptime (0 to 1), average and p95 response time over the last N hours, per monitor. | Read |
list_maintenance_windows | Maintenance windows from 7 days ago to 90 days ahead; checks in one open no incidents. | Read |
mute_monitor | Mute monitors' alerts for some minutes; checks and incidents go on. Admins only. | Write |
unmute_monitor | End monitors' mute. Admins only. | Write |
create_monitor | Create 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_monitor | Change some of a monitor's settings; the rest stay. Admins only. | Write |
pause_monitor | Pause a monitor: no checks or alerts until resumed. | Write |
resume_monitor | Resume a paused monitor. | Write |
start_maintenance | Start a maintenance window now: failed checks in it open no incidents and send no alerts. | Write |
end_maintenance | End a maintenance window's running occurrence now; later occurrences stay. | Write |
Incidents
| Tool | What it does | Access |
|---|---|---|
list_incidents | Incidents, newest first: open (default) or recent, started in the last N days. | Read |
get_incident | One incident with timeline, comments, possible vendor causes and likelyCause with its evidence. | Read |
investigate_incident | An 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_call | Who is on call now in each schedule, and until when. | Read |
list_alert_decisions | Why a monitor alerted or stayed quiet: its alert decisions, newest first, with rule and deliveries. | Read |
list_alert_policies | Alert policies: who each step alerts after how many minutes. Unassigned monitors use Default. | Read |
set_alert_policy | Put monitors on an alert policy. Admins only. | Write |
list_alert_sources | Alert sources: tool, default severity, state, alerts in 7 days, last alert, open incident. Admins only. | Read |
get_alert_source | An alert source with its recent alerts, newest first. Admins only. | Read |
send_test_alert | Send a test alert; its test incident pages no one and resolves after 60 seconds. Admins only. | Write |
acknowledge_incident | Acknowledge an incident, so escalation stops. | Write |
open_incident | Declare an incident now; the default alert policy pages people. | Write |
resolve_incident | Resolve an incident with what fixed it. | Write |
add_incident_note | Add a comment to an incident's timeline. | Write |
create_on_call_override | Put someone (userId or member email) on call in a schedule for a time. Admins only. | Write |
get_postmortem_context | An incident's postmortem evidence by source, unreadable sources and the postmortem id. | Read |
get_postmortem | A postmortem as Markdown with id, status and last update, by incidentId or postmortemId. | Read |
list_postmortems | Postmortems, newest first, with incident and status. | Read |
write_postmortem | Write parts of a resolved incident's postmortem, drafting it first. append adds and replaces given texts; replace swaps given lists. Never publishes. | Write |
Status
| Tool | What it does | Access |
|---|---|---|
get_public_status | What the public status pages show now. | Read |
list_status_pages | Status pages and components; manual ones (no monitors) take set_component_status. | Read |
get_status_page_status | A status page's component statuses and unresolved incidents. | Read |
set_component_status | Set a manual component's status and optional public message. | Write |
show_monitor_on_status_page | Make status page components follow a monitor too; applies at once. | Write |
update_status_update | Post an update to a status page incident (statusIncidentId), or a StatusTick incident's update to the page (incidentId). | Write |
Vendors
| Tool | What it does | Access |
|---|---|---|
list_vendors | Followed vendors with official status and open incidents. | Read |
check_vendor | Whether any catalogue vendor has a problem now, from its status page. | Read |
diagnose_dependency | Calls to a vendor fail: your dependent monitors, others down, its official status and StatusTick's own checks of its API. | Read |
Search
| Tool | What it does | Access |
|---|---|---|
search | Find 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:
| Field | What it sets |
|---|---|
version | Always 1. Required. |
defaults | Values for every monitor that leaves the field out: interval, timeout, locations, alertPolicy, tags, group. |
key | Required. 1 to 64 of a-z, 0-9, - and _, unique in the file. StatusTick tracks the monitor by its key. |
name | The name in StatusTick, at most 64 characters. Default: the key. |
type | http, tcp, ping, dns or heartbeat. |
target | A URL for http, host:port for tcp, a host for ping and dns. Heartbeats have no target. |
interval | Seconds, or 30s, 5m, 1h, 1d. From 30 seconds to 1 day. Default 5m. |
timeout | 1 to 60 seconds. Default 10s. |
locations | Region codes, region names or private location names. Left out, the monitor keeps its locations. |
http | method, headers, expectedStatusCodes (default 200 to 206) and keyword, text the response must contain. |
dns | recordType: A, AAAA, CNAME, MX, TXT, NS or SOA. Default A. |
heartbeat | grace (default 5m), and cron with timeZone (an IANA name, default UTC) instead of an interval. |
degradedThresholdMs | Checks slower than this count as degraded. |
tags, group | Up to 10 tags of at most 32 characters, and a group name. |
paused | true to stop checks and alerts. |
alertPolicy | An alert policy by name, or Default. Left out, set it in the dashboard. |
statusPageComponents | A 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
| Command | What it does |
|---|---|
statustick validate | Checks the file without calling StatusTick. Each problem names the line and the field. |
statustick sync --dry-run | Shows what a sync would create, change and delete, field by field. |
statustick sync | Makes StatusTick match the file. If StatusTick refuses one monitor, nothing is saved. |
statustick export -o statustick.yml | Writes the monitors you already have as a file, to start from. |
statustick adopt | Takes 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.comas a remote MCP server over Streamable HTTP, and sign in or send an API key asAuthorization: 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
.mdto its URL.