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 modelssignl4_get_user에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,998토큰 (도구 정의)
~1.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.12%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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개