Pulse — heartbeat & status monitor for AI agents

Your agent pings once per run; get a public up/late/down status page. Auto-creates checks. One call.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
77%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~464Tokens (tool definitions)
~717 BTypical response size
Minimal attention impact (0.36% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "monitor": {
      "url": "https://pulse.notdown-app.workers.dev/mcp/{key}"
    }
  }
}

Remote endpoints

https://pulse.notdown-app.workers.dev/mcp/{key}streamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡ping(check, note, period, grace)

Send a heartbeat for a named check — call this once per run of your job/agent. If the named check doesn't exist yet it is created automatically (zero setup), so you can just ping the same name every run. Attach an optional one-line `note` (e.g. what the run did) that shows on the public status page. If a ping doesn't arrive within the expected period + grace, the check flips to 'late' then 'down' on its public status page. Returns the check's status and its public status_url.

Input Schema

{
  "type": "object",
  "properties": {
    "check": {
      "type": "string",
      "description": "A stable name for this job/agent, e.g. \"nightly-sync\" or \"my-agent\". Reuse the same name every run — that's how heartbeats accumulate. Created on first ping."
    },
    "note": {
      "type": "string",
      "description": "Optional one-line status note shown on the public page, e.g. \"processed 240 rows\" or \"all green\"."
    },
    "period": {
      "type": "number",
      "description": "Optional: how often you expect to ping, in seconds (default 3600 = hourly). If no ping arrives within period+grace, status becomes late/down."
    },
    "grace": {
      "type": "number",
      "description": "Optional: extra seconds of slack before a missed ping counts as down (default 20% of period)."
    }
  },
  "required": [
    "check"
  ]
}
🟢list_checks

List all your checks with their current status (up/late/down/pending), last-seen time, ping count, and public status URL.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_check(check)

Get one check's current status plus its recent ping history (timestamps and notes).

Input Schema

{
  "type": "object",
  "properties": {
    "check": {
      "type": "string",
      "description": "The check name (or its id)."
    }
  },
  "required": [
    "check"
  ]
}
🔴delete_check(check)

Delete a check and its history, by name or id.

Input Schema

{
  "type": "object",
  "properties": {
    "check": {
      "type": "string"
    }
  },
  "required": [
    "check"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools