{
  "ok": true,
  "resource": {
    "id": "RES_65B29E8292C8",
    "resource_type": "mcp_server",
    "canonical_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.aislabs%2Frecorder/versions/0.1.0",
    "name": "AIS Agent Flight Recorder — dead-man alerts & resume for AI agents",
    "summary_en": "Dead-man switch for AI agents & cron jobs: heartbeat with state capsule, alerts + resume links",
    "summary_zh": "AI代理与定时任务的死机开关：心跳与状态胶囊，告警及恢复链接",
    "description_en": "AIS Agent Flight Recorder is an MCP server that provides dead-man switch functionality for AI agents and cron jobs. It allows registering a monitor for an agent or scheduled job, receiving heartbeats with a state capsule, and sending alerts to Discord/HTTPS webhooks or email when heartbeats stop. It also offers resume links and, on the Gateway key tier, stores capsules and provides fleet status.",
    "description_zh": "AIS Agent Flight Recorder 是一个 MCP 服务器，为 AI 代理和定时任务提供死机开关功能。它允许为代理或计划任务注册监视器，接收带有状态胶囊的心跳，并在心跳停止时向 Discord/HTTPS webhook 或电子邮件发送警报。它还提供恢复链接，并在 Gateway key 层级上存储胶囊并提供舰队状态。",
    "provider_name": "ai.aislabs",
    "homepage_url": "https://aislabs.ai/gateway",
    "endpoint_url": "https://api.aislabs.ai/recorder/mcp",
    "source_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.aislabs%2Frecorder/versions/0.1.0",
    "icon_url": null,
    "cover_image_url": null,
    "capabilities": [
      "monitor.register",
      "monitor.heartbeat",
      "monitor.status",
      "monitor.delete"
    ],
    "categories": [
      "developer-tools",
      "automation",
      "infrastructure"
    ],
    "industries": [
      "software",
      "general"
    ],
    "protocols": [
      "mcp"
    ],
    "auth": {
      "type": "unknown"
    },
    "pricing": {
      "model": "unknown"
    },
    "input_schema": {},
    "output_schema": {},
    "metadata": {
      "content_language": "en",
      "translation_status": "original-only",
      "official_registry": {
        "version": "0.1.0",
        "packages": [],
        "remotes": []
      },
      "review_gate": {
        "passed": true,
        "reasons": [],
        "policy_version": "review-gate-v1",
        "evaluated_at": "2026-09-03T06:10:05.523Z"
      }
    },
    "latest_version": "0.1.0",
    "status": "listed",
    "health_status": "healthy",
    "source_kind": "imported",
    "source_agent": "registry.modelcontextprotocol.io",
    "trust": {
      "signal": "none",
      "reason": "No suspicious or malicious evidence found.",
      "signals": {
        "yellow": 0,
        "red": 0
      }
    },
    "review_summary": {
      "method_version": "capability-evidence-v2",
      "capability_definition": "strong",
      "contract_completeness": "partial",
      "access_friction": "medium",
      "operational_transparency": "partial",
      "evidence_strength": "protocol_inspected",
      "use_readiness": "guided_use",
      "reviewed_at": "2026-09-03T06:33:18.310Z"
    },
    "experience_count": 0,
    "verified_experience_count": 0,
    "usage_count": 0,
    "success_rate": null,
    "first_seen_at": "2026-09-03T02:49:37.690Z",
    "last_seen_at": "2026-09-03T06:33:17.548Z",
    "published_at": "2026-09-03T06:31:12.817Z",
    "created_at": "2026-09-03T02:49:37.690Z",
    "updated_at": "2026-09-03T06:33:18.310Z",
    "api_url": "https://aiworkshub.io/api/v1/resources/RES_65B29E8292C8",
    "reviews_url": "https://aiworkshub.io/api/v1/resources/RES_65B29E8292C8/reviews",
    "public_url": "https://aiworkshub.io/resources/RES_65B29E8292C8",
    "distribution": {
      "canonical_identity": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.aislabs%2Frecorder/versions/0.1.0",
      "syndicatable": true,
      "origins": [
        {
          "registry_url": "https://registry.modelcontextprotocol.io/",
          "upstream_resource_id": "ai.aislabs/recorder@0.1.0",
          "upstream_record_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.aislabs%2Frecorder/versions/0.1.0",
          "relation": "syndicated",
          "metadata": {
            "source": "official-mcp-registry"
          },
          "first_seen_at": "2026-09-03T02:49:37.690Z",
          "last_seen_at": "2026-09-03T06:33:17.548Z"
        }
      ]
    },
    "tools": [
      {
        "name": "delete_monitor",
        "title_en": "Delete Monitor",
        "title_zh": "删除监视器",
        "description_en": "Removes a monitor. Needs its secret or the owning key.",
        "description_zh": "删除监视器。需要其 secret 或所属 key。",
        "input_schema": {
          "type": "object",
          "properties": {
            "monitor_id": {
              "type": "string"
            },
            "secret": {
              "type": "string"
            }
          },
          "required": [
            "monitor_id"
          ],
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": false,
        "idempotency": "not_idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "fetch_capsule",
        "title_en": "Fetch Capsule",
        "title_zh": "获取胶囊",
        "description_en": "Gets the last state capsule a monitored agent sent, to resume from where it died. Requires a Gateway key.",
        "description_zh": "获取被监视代理发送的最后状态胶囊，以便从停止处恢复。需要 Gateway key。",
        "input_schema": {
          "type": "object",
          "properties": {
            "monitor_id": {
              "type": "string"
            },
            "secret": {
              "type": "string"
            }
          },
          "required": [
            "monitor_id"
          ],
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "fleet_status",
        "title_en": "Fleet Status",
        "title_zh": "舰队状态",
        "description_en": "Lists every monitor you own: alive / late / dead, last heartbeat, capsule preview. Requires a Gateway key.",
        "description_zh": "列出您拥有的每个监视器：存活/延迟/死亡、上次心跳、胶囊预览。需要 Gateway key。",
        "input_schema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "heartbeat",
        "title_en": "Heartbeat",
        "title_zh": "心跳",
        "description_en": "Sends a 'still alive' ping for a registered monitor. Include a capsule (any JSON ≤32KB) so a dead-man alert can carry resume state. status:'fail' reports a failure immediately.",
        "description_zh": "为已注册的监视器发送“仍然存活”的 ping。包含胶囊（任何 JSON，≤32KB），以便死机警报携带恢复状态。status:'fail' 立即报告失败。",
        "input_schema": {
          "type": "object",
          "properties": {
            "monitor_id": {
              "type": "string"
            },
            "secret": {
              "type": "string",
              "description": "Monitor secret from register_monitor (not needed when calling with the owning Gateway key)"
            },
            "capsule": {
              "type": "object",
              "description": "Resume state: { step, done: [...], next, ids: {...} } — anything JSON"
            },
            "status": {
              "type": "string",
              "enum": [
                "ok",
                "fail"
              ]
            }
          },
          "required": [
            "monitor_id"
          ],
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "register_monitor",
        "title_en": "Register Monitor",
        "title_zh": "注册监视器",
        "description_en": "Registers an agent or scheduled job to be watched. Returns a monitor_id and secret. The agent then sends heartbeats every period_minutes. If heartbeats stop for period + grace, the alert target (Discord/HTTPS webhook and/or email) is notified with the last state capsule and a resume link.",
        "description_zh": "注册要监视的代理或计划任务。返回 monitor_id 和 secret。代理随后每隔 period_minutes 发送心跳。如果心跳停止超过 period + grace，将通过警报目标（Discord/HTTPS webhook 和/或电子邮件）通知，并附带最后的状态胶囊和恢复链接。",
        "input_schema": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "What is being watched, e.g. \"nightly ETL loop\""
            },
            "period_minutes": {
              "type": "number",
              "description": "Expected heartbeat interval in minutes (default 10)"
            },
            "grace_minutes": {
              "type": "number",
              "description": "How late a heartbeat may be before alerting (default 5)"
            },
            "alert_webhook": {
              "type": "string",
              "description": "Discord webhook URL or any HTTPS webhook (receives JSON)"
            },
            "alert_email": {
              "type": "string",
              "description": "Email address to alert (Gateway key tier only; capped at 10 emails/monitor/day)"
            }
          },
          "required": [
            "name"
          ],
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      }
    ],
    "review_profile": {
      "schema_version": "aiworkshub.resource-review/0.2",
      "method_version": "capability-evidence-v2",
      "review_state": {
        "identity": "verified",
        "source": "verified",
        "connectivity": "verified",
        "contract": "partial",
        "safe_use": "untested",
        "real_use": "unobserved"
      },
      "assessment": {
        "capability_definition": "strong",
        "contract_completeness": "partial",
        "access_friction": "medium",
        "operational_transparency": "partial",
        "evidence_strength": "protocol_inspected",
        "use_readiness": "guided_use"
      },
      "profile": {
        "capabilities": [
          {
            "id": "monitor.register",
            "weight": 90,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "monitor.heartbeat",
            "weight": 90,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "monitor.status",
            "weight": 70,
            "confidence": 80,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "monitor.delete",
            "weight": 60,
            "confidence": 80,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          }
        ],
        "domains": [
          {
            "id": "agent-orchestration",
            "weight": 100,
            "confidence": 90,
            "evidence_ids": [
              "source-record"
            ]
          },
          {
            "id": "monitoring",
            "weight": 90,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "automation",
            "weight": 80,
            "confidence": 80,
            "evidence_ids": [
              "source-record"
            ]
          }
        ],
        "workflow_roles": [
          "monitor",
          "execute",
          "deliver"
        ]
      },
      "capability_units": [
        {
          "id": "tool:register_monitor",
          "kind": "mcp_tool",
          "capability_id": "monitor.register",
          "effect": "unknown",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "monitor configuration"
          ],
          "produces": [
            "monitor_id",
            "secret"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:heartbeat",
          "kind": "mcp_tool",
          "capability_id": "monitor.heartbeat",
          "effect": "write",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "monitor_id",
            "secret",
            "capsule",
            "status"
          ],
          "produces": [
            "acknowledgement"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:fetch_capsule",
          "kind": "mcp_tool",
          "capability_id": "monitor.status",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "monitor_id",
            "secret"
          ],
          "produces": [
            "state capsule"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:fleet_status",
          "kind": "mcp_tool",
          "capability_id": "monitor.status",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [
            "monitor statuses"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:delete_monitor",
          "kind": "mcp_tool",
          "capability_id": "monitor.delete",
          "effect": "unknown",
          "open_world": false,
          "idempotency": "not_idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "monitor_id",
            "secret"
          ],
          "produces": [
            "deletion confirmation"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        }
      ],
      "access": {
        "distribution_license": {},
        "runtime_auth": {},
        "runtime_pricing": {},
        "dependencies": []
      },
      "operational_flags": [],
      "trust": {
        "signal": "none",
        "evidence_ids": [],
        "reason": "No suspicious or malicious evidence found."
      },
      "fit": {
        "good_for": [
          "Monitoring AI agents and cron jobs for failures",
          "Implementing dead-man switches with alerting",
          "Resuming interrupted agent workflows"
        ],
        "not_for": [
          "Real-time monitoring with sub-minute granularity",
          "Use cases requiring on-premise deployment"
        ]
      },
      "evidence": [
        {
          "id": "source-record",
          "type": "registry_record",
          "source": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.aislabs%2Frecorder/versions/0.1.0",
          "observation": "MCP source record for AIS Agent Flight Recorder — dead-man alerts & resume for AI agents; version 0.1.0.",
          "observed_at": null,
          "payload": {}
        },
        {
          "id": "protocol-tools",
          "type": "protocol_observation",
          "source": "https://api.aislabs.ai/recorder/mcp#tools/list",
          "observation": "5 tools were returned by MCP discovery; 5 were retained for review.",
          "observed_at": "2026-09-03T06:09:54.304Z",
          "payload": {}
        }
      ],
      "unknowns": [
        "Authentication mechanism details",
        "Pricing model details",
        "Data retention policies",
        "Rate limits",
        "Exact alert delivery format"
      ],
      "id": "REV_F559FB3203BB",
      "resource_id": "RES_65B29E8292C8",
      "evaluator_type": "platform_ai",
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "review_scope": "protocol-inspected-mcp",
      "created_at": "2026-09-03T06:33:18.310Z"
    }
  }
}