ALL SKILLS
SCHEDULED1 CREDIT / RUN

15-min heartbeat ping

Every 15 minutes, load a critical page and POST the result to your monitoring endpoint — a lightweight external heartbeat.

Use this skillFREE KEY INCLUDED · 100 RENDERS / MONTH

The workflow

This skill is a 2-step workflow. Everything below is the full definition — nothing hidden. Use it from the Dashboard (no code), the REST API, or an AI agent via MCP.

workflow.json
{
  "name": "15-min heartbeat ping",
  "trigger": {
    "type": "cron",
    "everyMinutes": 15
  },
  "steps": [
    {
      "action": "extract",
      "url": "https://yourapp.example.com/health"
    },
    {
      "action": "webhook",
      "url": "https://your-monitor.example.com/hook"
    }
  ]
}

Three ways to run it

1No code — Dashboard

Hit “Use this skill” — the builder opens with every step prefilled. Edit the placeholder URLs, press run. Done.

2API — one request

curl
curl -X POST https://api.ottersnap.com/v1/workflows \
  -H "Authorization: Bearer otter_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"15-min heartbeat ping","trigger":{"type":"cron","everyMinutes":15},"steps":[{"action":"extract","url":"https://yourapp.example.com/health"},{"action":"webhook","url":"https://your-monitor.example.com/hook"}]}'

3AI agent — via MCP

Glint ships an official MCP server. Paste this prompt into Claude, Cursor or Codex and it creates the skill for you:

agent prompt
Using the ottersnap-mcp server (npm: ottersnap-mcp), create a Glint workflow with this exact definition:

{
  "name": "15-min heartbeat ping",
  "trigger": {
    "type": "cron",
    "everyMinutes": 15
  },
  "steps": [
    {
      "action": "extract",
      "url": "https://yourapp.example.com/health"
    },
    {
      "action": "webhook",
      "url": "https://your-monitor.example.com/hook"
    }
  ]
}

Then confirm it was created and tell me how to run it once manually.

Step by step

01

extractREAD

https://yourapp.example.com/health

02

webhookWRITE

https://your-monitor.example.com/hook

accepts {{1.…}} from the previous step

EVERY RUN = 1 CREDIT · FAILED STEPS STOP THE CHAIN · RESULTS FEED FORWARD WITH TEMPLATES