SIGNL4 MCP by usefulapi

Read SIGNL4 alerts, teams, users and duty schedules; raise, acknowledge, close and annotate alerts.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
92%
命名品質
80%
汙染風險
80%
權限相符程度
100%
協定合規性
100%

發現項目(2)

  • HIGHTool poisoning patterns detected
  • LOWTool description contains role marker that could confuse chat models在 signl4_get_user 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~3,998Token(工具定義)
~1.4 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.12%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "signl4": {
      "url": "https://signl4.usefulapi.io/mcp"
    }
  }
}

遠端端點

https://signl4.usefulapi.io/mcpstreamable-http

它能做什麼

工具清單

工具(18)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢signl4_list_teams(team_ids)

List the SIGNL4 teams the API key can access: id, name, description, time zone and member ids. Team ids are needed to raise alerts and to look up categories and duties. GET /v3/teams.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_get_team(team_id)

One SIGNL4 team: name, description, time zone, member ids. GET /v3/teams/{teamId}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
    }
  },
  "required": [
    "team_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_list_users

List the SIGNL4 users the key can access with name, e-mail, contact addresses, activation state and duty status per team (dutyMode, onDutyTime). User ids are needed to acknowledge/close/annotate alerts. GET /v3/users.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_get_user(user_id)

One SIGNL4 user: name, e-mail, contact addresses, time zone and duty status per team. GET /v3/users/{userId}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "SIGNL4 user id (a GUID); get it from signl4_list_users."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_list_team_users(team_ids)

List the users of the given teams (all accessible teams by default) with duty status. Teams that cannot be read are reported under `errors`. GET /v3/teams/users.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_list_categories(team_id)

List the alert categories of a team (name, color, keywords used to auto-classify alerts). The category name can be passed to signl4_raise_alert. GET /v3/categories/{teamId}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
    }
  },
  "required": [
    "team_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_list_alerts(team_ids, status, created_after, created_before, text, ...)

Search SIGNL4 alerts (signls), newest first, with status, severity, category and history (created, acknowledged, closed). Filter by team, status, creation time, text or external id. Up to 100 per page; pass the returned continuation_token to get the next page. POST /v3/signls/paged (a read).

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    },
    "status": {
      "description": "Only alerts in this state (default: all).",
      "type": "string",
      "enum": [
        "open",
        "acknowledged",
        "closed"
      ]
    },
    "created_after": {
      "type": "string",
      "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z."
    },
    "created_before": {
      "type": "string",
      "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z."
    },
    "text": {
      "description": "Free-text search in title and text.",
      "type": "string",
      "maxLength": 200
    },
    "external_id": {
      "description": "Only alerts raised with this external id.",
      "type": "string",
      "maxLength": 200
    },
    "category_ids": {
      "description": "Only alerts of these category ids (see signl4_list_categories).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "A SIGNL4 id (a GUID)."
      }
    },
    "max_results": {
      "description": "Alerts per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "continuation_token": {
      "description": "The continuation_token of the previous page.",
      "type": "string",
      "maxLength": 4000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_get_alert(alert_id)

Full detail of one alert: title, text, severity, category, status and delivery status, history (who acknowledged/closed it and when), parameters, attachments and escalations with per-user delivery. GET /v3/signls/{signlId}/details.

輸入結構描述

{
  "type": "object",
  "properties": {
    "alert_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert."
    }
  },
  "required": [
    "alert_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_get_alert_timeline(alert_id)

The ordered timeline of an alert: creation, notifications, acknowledgements, annotations, escalations and remote actions. GET /v3/signls/{signlId}/timeline.

輸入結構描述

{
  "type": "object",
  "properties": {
    "alert_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert."
    }
  },
  "required": [
    "alert_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_get_alert_report(team_ids, user_id)

Alert volume and response statistics per team over several time periods: acknowledged, closed and unhandled counts, overall and per category (optionally for one user). Teams that cannot be read are reported under `errors`. GET /v3/signls/report.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    },
    "user_id": {
      "description": "Report for this user only.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴signl4_raise_alert(team_id, title, text, severity, category, ...)

WRITE: raise a new alert in a SIGNL4 team. THIS NOTIFIES REAL PEOPLE: every team member currently on duty is paged (push, SMS and/or voice call according to their settings) and the alert escalates if nobody acknowledges it. Only use it when the user clearly asked to alert the team; never for tests unless they said so. Not idempotent: a second call pages the team again. Returns the new alert incl. its id. POST /v3/signls.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Alert title, shown on the pager screen."
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 8000,
      "description": "Alert message body."
    },
    "severity": {
      "description": "Severity (default: SIGNL4's default for the team).",
      "type": "string",
      "enum": [
        "low",
        "major",
        "critical"
      ]
    },
    "category": {
      "description": "Category name, see signl4_list_categories (default: automatic).",
      "type": "string",
      "maxLength": 200
    },
    "external_id": {
      "description": "Your own reference for this alert, for later look-up (and for SIGNL4 to group follow-ups).",
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "team_id",
    "title",
    "text"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴signl4_acknowledge_alert(alert_id, user_id, comment)

WRITE: acknowledge an alert on behalf of a SIGNL4 user (recorded in its history under that user). Stops escalation to further tiers for that alert. POST /v3/signls/{signlId}/acknowledge.

輸入結構描述

{
  "type": "object",
  "properties": {
    "alert_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert."
    },
    "user_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The SIGNL4 user the acknowledgement is recorded for; see signl4_list_users."
    },
    "comment": {
      "description": "Optional comment stored with the acknowledgement.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "alert_id",
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴signl4_close_alert(alert_id, user_id, comment)

WRITE: close (resolve) an alert on behalf of a SIGNL4 user; it leaves the open list and stops all further notifications. POST /v3/signls/{signlId}/close.

輸入結構描述

{
  "type": "object",
  "properties": {
    "alert_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert."
    },
    "user_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The SIGNL4 user the closure is recorded for; see signl4_list_users."
    },
    "comment": {
      "description": "Optional comment stored with the closure.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "alert_id",
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴signl4_annotate_alert(alert_id, user_id, text)

WRITE: add a text note to an alert's timeline on behalf of a SIGNL4 user. The note is visible to the team in the app. It does not page anyone by itself. POST /v3/signls/{signlId}/annotate.

輸入結構描述

{
  "type": "object",
  "properties": {
    "alert_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert."
    },
    "user_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The SIGNL4 user the note is recorded for; see signl4_list_users."
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "The note."
    }
  },
  "required": [
    "alert_id",
    "user_id",
    "text"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_list_duty_schedules(team_ids, user_id, from, to, limit)

Planned on-call duty schedules (who is on duty when): start/end, team, user, tier, stand-in and shift info. Filter by team, user and time window. POST /v3/schedules (a read).

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    },
    "user_id": {
      "description": "Only this user's duties.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "from": {
      "description": "Start of the window, ISO 8601 with timezone.",
      "type": "string"
    },
    "to": {
      "description": "End of the window, ISO 8601 with timezone.",
      "type": "string"
    },
    "limit": {
      "description": "Maximum schedules to return, 1-500 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_get_duty_status(user_id, team_ids)

Whether a user is currently on or off duty in each of their teams (dutyMode, onDutyTime, tier). GET /v3/users/{userId}/dutyStatus.

輸入結構描述

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "SIGNL4 user id (a GUID); get it from signl4_list_users."
    },
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_get_duty_summary(team_ids, last_two_only)

Duty assistant info per team: whether it is enabled and the last two (or all) duty periods. GET /v3/duties/summary.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    },
    "last_two_only": {
      "description": "Only the last two duties (default true).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signl4_list_audit_logs(team_ids, from, to, message_contains, max_results, ...)

Audit log of changes and events in the SIGNL4 subscription (who changed what, when). Filter by team, time window and message text; pass the returned continuation_token for the next page. GET /v3/audits.

輸入結構描述

{
  "type": "object",
  "properties": {
    "team_ids": {
      "description": "Limit to these team ids (default: all teams the key can access).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "SIGNL4 team id (a GUID); get it from signl4_list_teams."
      }
    },
    "from": {
      "type": "string",
      "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z."
    },
    "to": {
      "type": "string",
      "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z."
    },
    "message_contains": {
      "description": "Only entries whose message contains this text.",
      "type": "string",
      "maxLength": 200
    },
    "max_results": {
      "description": "Entries per page, 1-200 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "continuation_token": {
      "description": "The continuation_token of the previous page.",
      "type": "string",
      "maxLength": 4000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本18 個工具