Skip to content

Use AlertKick with your AI assistant

AI assistants set up monitoring well when they can reach the API. This page is self-contained on purpose: paste it into your assistant, or point the assistant at this URL, and it has everything it needs - authentication, endpoints, and working examples.

There are two ways in: the MCP server (richer, tool-based) and the plain HTTP API (works from any assistant that can run curl).

AlertKick exposes 38 MCP tools - list servers and alerts, create and manage heartbeats and uptime, SSL, DNS, TCP and domain-expiry monitors, acknowledge and resolve, manage change windows.

The quickest way in is the hosted connector. AlertKick is listed in the Claude connector directory: Settings, then Connectors, then Browse connectors, search for AlertKick, and choose Connect to Claude. There is no API key to paste - authorization is OAuth 2.1 and the connection acts as you, in your workspace only. Full walkthrough: Claude & MCP connector.

Claude Code, or any other MCP client, points at the same URL:

Terminal window
claude mcp add --transport http alertkick https://mcp.alertkick.com/mcp

For a self-managed or on-premise install, run the open-source akmcp binary over stdio with an API key from Settings, then API Keys. Claude Desktop (~/.config/claude/claude_desktop_config.json), Cursor, and other MCP clients use the same shape:

{
"mcpServers": {
"alertkick": {
"command": "/path/to/akmcp",
"env": {
"ALERTKICK_API_KEY": "ak_your_key_here",
"ALERTKICK_API_URL": "https://your-team.alertkick.com"
}
}
}
}

Then ask in plain language:

  • “Set up a heartbeat for my nightly backup cron job and give me the line to add to the crontab.”
  • “Monitor https://example.com every 5 minutes and alert if the TLS certificate is within 14 days of expiry.”
  • “Watch example.com for domain registration expiry.”
  • “Show me open alerts and acknowledge the disk-space one.”

Everything below uses two values: your tenant subdomain (the your-team in your-team.alertkick.com) and an API key (ak_...) sent as the X-API-Key header. Full reference: alertkick.com/docs and the OpenAPI spec.

Creates the heartbeat on first ping, just pings on every run after that. interval and grace are seconds and apply only at creation:

Terminal window
curl -fsS -H "X-API-Key: $ALERTKICK_API_KEY" \
"https://your-team.alertkick.com/api/v1/hb/auto/nightly-backup?interval=86400&grace=3600"

Append it to the job with && so the ping only fires on success. A ping that stops arriving past the grace period alerts through the account’s default escalation policy.

Terminal window
curl -X POST -H "X-API-Key: $ALERTKICK_API_KEY" -H "Content-Type: application/json" \
"https://your-team.alertkick.com/api/v1/monitors/create" -d '{
"display_name": "Marketing site",
"monitor_type": "http",
"url": "https://example.com",
"http_method": "GET",
"check_interval_seconds": 300,
"timeout_seconds": 30,
"expected_status_code": 200,
"ssl_cert_monitoring": true,
"ssl_cert_expiry_alert_days": 14
}'
Terminal window
curl -X POST -H "X-API-Key: $ALERTKICK_API_KEY" -H "Content-Type: application/json" \
"https://your-team.alertkick.com/api/v1/monitors/create" -d '{
"display_name": "example.com registration",
"monitor_type": "domain",
"url": "example.com",
"check_interval_seconds": 86400,
"timeout_seconds": 30,
"domain_expiry_alert_days": 30
}'

Other monitor_type values: api (like http, for JSON endpoints), dns (record resolution, with dns_record_type and expected_dns_host), and tcp (port checks, with tcp_port).

Terminal window
# Open alerts
curl -H "X-API-Key: $ALERTKICK_API_KEY" \
"https://your-team.alertkick.com/api/v1/alerts?status=triggered"
# Acknowledge / resolve by UUID
curl -X POST -H "X-API-Key: $ALERTKICK_API_KEY" -H "Content-Type: application/json" \
"https://your-team.alertkick.com/api/v1/alerts/acknowledge" -d '{"UUIDs": ["alert-uuid"]}'

The ak_ account key can do everything the API allows - keep it out of committed code and crontabs. For recurring pings, fetch the heartbeat (GET /api/v1/heartbeats/{uuid}) and use its scoped api_key with the X-Heartbeat-Key header against /api/v1/hb/ping/{uuid} instead; that key can only ping its own heartbeat. The heartbeats guide covers the pattern.