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 as a statustick.yml file you sync with the CLI.
Updated 1 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.
Set up through the MCP server
The StatusTick MCP server is at https://mcp.statustick.com. It lets an agent list, create, pause and resume monitors, and read incidents and status pages. 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.
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.