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
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (4)
🟡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
Evidence