Dead Man's Snitch MCP by usefulapi
Read Dead Man's Snitch monitors and status; create, tag, pause and unpause snitches.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (3)
- HIGH
- MEDIUMin deadmanssnitch_get_snitch
- MEDIUMin deadmanssnitch_create_snitch
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"dead-mans-snitch": {
"url": "https://dead-mans-snitch.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://dead-mans-snitch.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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"
}Community
Nachweis