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
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools