Dead Man's Snitch MCP by usefulapi
Read Dead Man's Snitch monitors and status; create, tag, pause and unpause snitches.
我該用這個嗎
品質與安全性
發現項目(3)
- HIGH
- MEDIUM在 deadmanssnitch_get_snitch 中
- MEDIUM在 deadmanssnitch_create_snitch 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"dead-mans-snitch": {
"url": "https://dead-mans-snitch.usefulapi.io/mcp"
}
}
}遠端端點
https://dead-mans-snitch.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(8)
🟢deadmanssnitch_list_snitches(tags, status)
List the snitches (cron/heartbeat monitors) of the account with status (pending, healthy, failed, errored, paused), interval, alert type, tags and last check-in. Tokens are masked (the token is also the check-in secret); pass the masked token or the name to the other snitch tools. The API has no paging: all snitches come back. Optionally filter by tags (must have all) or status. GET /v1/snitches.
輸入結構描述
{
"type": "object",
"properties": {
"tags": {
"description": "Only snitches that have ALL of these tags.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A tag."
}
},
"status": {
"description": "Only snitches in this status (filtered here).",
"type": "string",
"enum": [
"pending",
"healthy",
"failed",
"errored",
"paused"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢deadmanssnitch_get_snitch(snitch)
One snitch with its full details, including the check-in URL (https://nosnch.in/<token>). The check-in URL is a secret: anyone who has it can check in and so silence the alert; share it only where the job runs. GET /v1/snitches/{token}.
輸入結構描述
{
"type": "object",
"properties": {
"snitch": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The snitch: its token, the masked token shown by deadmanssnitch_list_snitches (e.g. ab…yz), or its exact name."
}
},
"required": [
"snitch"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡deadmanssnitch_create_snitch(name, interval, alert_type, alert_email, notes, ...)
WRITE: create a new snitch (monitor). Returns it with its check-in URL (https://nosnch.in/<token>), which the job must call on every run; keep it secret. Fails with 402 when the plan's snitch limit is reached. POST /v1/snitches.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Name of the snitch."
},
"interval": {
"type": "string",
"enum": [
"1_minute",
"2_minute",
"3_minute",
"5_minute",
"10_minute",
"15_minute",
"30_minute",
"hourly",
"2_hour",
"3_hour",
"4_hour",
"6_hour",
"8_hour",
"12_hour",
"daily",
"weekly",
"monthly"
],
"description": "Expected check-in frequency. The *_minute values are only available on the Basic plan; weekly = Monday to Monday."
},
"alert_type": {
"description": "Default basic.",
"type": "string",
"enum": [
"basic",
"smart"
]
},
"alert_email": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"description": "Email addresses that get this snitch's alerts instead of all team members (max 10; this limit is ours, not the vendor's). An empty list clears the override."
},
"notes": {
"type": "string",
"maxLength": 5000,
"description": "Free-text notes."
},
"tags": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A tag."
}
}
},
"required": [
"name",
"interval"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴deadmanssnitch_update_snitch(snitch, name, interval, alert_type, alert_email, ...)
WRITE: change a snitch. Only the fields you pass change. `tags` REPLACES the whole tag list (use deadmanssnitch_add_tags to add) and `alert_email` replaces the alert recipients (an empty list = all team members). Returns the updated snitch with the token masked. PATCH /v1/snitches/{token}.
輸入結構描述
{
"type": "object",
"properties": {
"snitch": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The snitch: its token, the masked token shown by deadmanssnitch_list_snitches (e.g. ab…yz), or its exact name."
},
"name": {
"description": "New name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"interval": {
"type": "string",
"enum": [
"1_minute",
"2_minute",
"3_minute",
"5_minute",
"10_minute",
"15_minute",
"30_minute",
"hourly",
"2_hour",
"3_hour",
"4_hour",
"6_hour",
"8_hour",
"12_hour",
"daily",
"weekly",
"monthly"
],
"description": "Expected check-in frequency. The *_minute values are only available on the Basic plan; weekly = Monday to Monday."
},
"alert_type": {
"type": "string",
"enum": [
"basic",
"smart"
],
"description": "basic = fixed deadline; smart = learns when the job usually checks in and alerts earlier."
},
"alert_email": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"description": "Email addresses that get this snitch's alerts instead of all team members (max 10; this limit is ours, not the vendor's). An empty list clears the override."
},
"notes": {
"description": "New notes; null clears them.",
"anyOf": [
{
"type": "string",
"maxLength": 5000,
"description": "Free-text notes."
},
{
"type": "null"
}
]
},
"tags": {
"description": "The complete new tag list (replaces the old one; [] removes all tags).",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A tag."
}
}
},
"required": [
"snitch"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡deadmanssnitch_add_tags(snitch, tags)
WRITE: add one or more tags to a snitch, keeping the existing ones. Returns the snitch's full tag list. POST /v1/snitches/{token}/tags.
輸入結構描述
{
"type": "object",
"properties": {
"snitch": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The snitch: its token, the masked token shown by deadmanssnitch_list_snitches (e.g. ab…yz), or its exact name."
},
"tags": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A tag."
}
}
},
"required": [
"snitch",
"tags"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴deadmanssnitch_remove_tag(snitch, tag)
WRITE: remove one tag from a snitch (the snitch itself is untouched). Returns the remaining tags. DELETE /v1/snitches/{token}/tags/{tag}.
輸入結構描述
{
"type": "object",
"properties": {
"snitch": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The snitch: its token, the masked token shown by deadmanssnitch_list_snitches (e.g. ab…yz), or its exact name."
},
"tag": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A tag."
}
},
"required": [
"snitch",
"tag"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴deadmanssnitch_pause_snitch(snitch, until)
WRITE: pause a snitch, which SILENCES its alerts: a job that stops running goes unnoticed while it is paused. `until` says when alerting resumes: 'healthy' (default: on the next healthy check-in), 'unpaused' (stays paused until deadmanssnitch_unpause_snitch) or a future ISO 8601 time. A snitch that has never checked in (pending) cannot be paused. POST /v1/snitches/{token}/pause.
輸入結構描述
{
"type": "object",
"properties": {
"snitch": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The snitch: its token, the masked token shown by deadmanssnitch_list_snitches (e.g. ab…yz), or its exact name."
},
"until": {
"description": "'healthy' (default), 'unpaused', or a future ISO 8601 time with timezone, e.g. 2026-10-20T08:00:00Z.",
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"snitch"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡deadmanssnitch_unpause_snitch(snitch)
WRITE: resume alerting for a paused snitch (safe on a snitch that is not paused). POST /v1/snitches/{token}/unpause.
輸入結構描述
{
"type": "object",
"properties": {
"snitch": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The snitch: its token, the masked token shown by deadmanssnitch_list_snitches (e.g. ab…yz), or its exact name."
}
},
"required": [
"snitch"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據