← The evidence ledger
Evidence row 301580
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint f69cd9a7-0f40-4bd8-aa21-e7a9cfe688e3
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- fee3ba491ed2b5e6fc8f8aa22356a4efac21295e1372b3af89ec6b0a2070408c
- Leaf
- 0x96e9b6d27415e61f5485fe49f9703c324989f448f5967caa3a8b259d7e59fcaa
What was observed
{
"count": 18,
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"comment": {
"description": "Optional comment stored with the acknowledgement.",
"maxLength": 2000,
"type": "string"
},
"user_id": {
"description": "The SIGNL4 user the acknowledgement is recorded for; see signl4_list_users.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"alert_id",
"user_id"
],
"type": "object"
},
"name": "signl4_acknowledge_alert"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"text": {
"description": "The note.",
"maxLength": 4000,
"minLength": 1,
"type": "string"
},
"user_id": {
"description": "The SIGNL4 user the note is recorded for; see signl4_list_users.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"alert_id",
"user_id",
"text"
],
"type": "object"
},
"name": "signl4_annotate_alert"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"comment": {
"description": "Optional comment stored with the closure.",
"maxLength": 2000,
"type": "string"
},
"user_id": {
"description": "The SIGNL4 user the closure is recorded for; see signl4_list_users.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"alert_id",
"user_id"
],
"type": "object"
},
"name": "signl4_close_alert"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"alert_id"
],
"type": "object"
},
"name": "signl4_get_alert"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"user_id": {
"description": "Report for this user only.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "signl4_get_alert_report"
},
{
"description": "The ordered timeline of an alert: creation, notifications, acknowledgements, annotations, escalations and remote actions. GET /v3/signls/{signlId}/timeline.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"description": "Alert (signl) id; get it from signl4_list_alerts or the id returned by signl4_raise_alert.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"alert_id"
],
"type": "object"
},
"name": "signl4_get_alert_timeline"
},
{
"description": "Whether a user is currently on or off duty in each of their teams (dutyMode, onDutyTime, tier). GET /v3/users/{userId}/dutyStatus.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"user_id": {
"description": "SIGNL4 user id (a GUID); get it from signl4_list_users.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"user_id"
],
"type": "object"
},
"name": "signl4_get_duty_status"
},
{
"description": "Duty assistant info per team: whether it is enabled and the last two (or all) duty periods. GET /v3/duties/summary.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"last_two_only": {
"description": "Only the last two duties (default true).",
"type": "boolean"
},
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
}
},
"type": "object"
},
"name": "signl4_get_duty_summary"
},
{
"description": "One SIGNL4 team: name, description, time zone, member ids. GET /v3/teams/{teamId}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"team_id": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"team_id"
],
"type": "object"
},
"name": "signl4_get_team"
},
{
"description": "One SIGNL4 user: name, e-mail, contact addresses, time zone and duty status per team. GET /v3/users/{userId}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"user_id": {
"description": "SIGNL4 user id (a GUID); get it from signl4_list_users.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"user_id"
],
"type": "object"
},
"name": "signl4_get_user"
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"category_ids": {
"description": "Only alerts of these category ids (see signl4_list_categories).",
"items": {
"description": "A SIGNL4 id (a GUID).",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"continuation_token": {
"description": "The continuation_token of the previous page.",
"maxLength": 4000,
"type": "string"
},
"created_after": {
"description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"created_before": {
"description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"external_id": {
"description": "Only alerts raised with this external id.",
"maxLength": 200,
"type": "string"
},
"max_results": {
"description": "Alerts per page, 1-100 (default 25).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"status": {
"description": "Only alerts in this state (default: all).",
"enum": [
"open",
"acknowledged",
"closed"
],
"type": "string"
},
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"text": {
"description": "Free-text search in title and text.",
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"name": "signl4_list_alerts"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"continuation_token": {
"description": "The continuation_token of the previous page.",
"maxLength": 4000,
"type": "string"
},
"from": {
"description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"max_results": {
"description": "Entries per page, 1-200 (default 50).",
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"message_contains": {
"description": "Only entries whose message contains this text.",
"maxLength": 200,
"type": "string"
},
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"to": {
"description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
}
},
"type": "object"
},
"name": "signl4_list_audit_logs"
},
{
"description": "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}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"team_id": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"team_id"
],
"type": "object"
},
"name": "signl4_list_categories"
},
{
"description": "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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"from": {
"description": "Start of the window, ISO 8601 with timezone.",
"type": "string"
},
"limit": {
"description": "Maximum schedules to return, 1-500 (default 100).",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"to": {
"description": "End of the window, ISO 8601 with timezone.",
"type": "string"
},
"user_id": {
"description": "Only this user's duties.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "signl4_list_duty_schedules"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
}
},
"type": "object"
},
"name": "signl4_list_team_users"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"team_ids": {
"description": "Limit to these team ids (default: all teams the key can access).",
"items": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 50,
"type": "array"
}
},
"type": "object"
},
"name": "signl4_list_teams"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "signl4_list_users"
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"category": {
"description": "Category name, see signl4_list_categories (default: automatic).",
"maxLength": 200,
"type": "string"
},
"external_id": {
"description": "Your own reference for this alert, for later look-up (and for SIGNL4 to group follow-ups).",
"maxLength": 200,
"type": "string"
},
"severity": {
"description": "Severity (default: SIGNL4's default for the team).",
"enum": [
"low",
"major",
"critical"
],
"type": "string"
},
"team_id": {
"description": "SIGNL4 team id (a GUID); get it from signl4_list_teams.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"text": {
"description": "Alert message body.",
"maxLength": 8000,
"minLength": 1,
"type": "string"
},
"title": {
"description": "Alert title, shown on the pager screen.",
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
"required": [
"team_id",
"title",
"text"
],
"type": "object"
},
"name": "signl4_raise_alert"
}
]
}What the leaf hashes
{"body":"fee3ba491ed2b5e6fc8f8aa22356a4efac21295e1372b3af89ec6b0a2070408c","id":301580,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793054153497335,"prev":null,"subject":"f69cd9a7-0f40-4bd8-aa21-e7a9cfe688e3","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0x96ea20d93be0b7b7cd44676d674a825d2eafcb412d141cc1e58adeb74f64e7f5
- 0xa77f84ad2dc0871b787f797e518620a54968cdba3e57b0d4ea6bbfb963d8b1d0
- 0x1283f35fc52cfa50bd6f447a9c73ee376c0b983efe65fbb022e3b67cb58c2b63
- 0x2206ff0d7b4c76544cdcc38cf7feca88b21c4700d73c61f28472196a3551ed1f
- 0x1257e7da283211a262bebeac4cef28e1b8d88e8a9c5e23544b2dafce0bf544be
- 0x2b32c697c2fef7bb74182805c12581f14e23bd3810adda0f202d2f1ce0a1671c
- 0x46d7d38abc514edfa28d3618dd5ba8d0f9f48deb07a0c00479dc17138dfc6be9
- 0xd7cba2ec47b87386d66b988524e821e6a90908ec34c6b475afdfd72dc89848ef
- 0xcbbe2b65863cea4797e72f4bafd5c9274627bba4b38e1c84ced00ce184e4a54b
- 0x967f49fc57d75b1bcc96107679bd305f464f936f0049de5f6f3a15dabb50eb78
- 0xc280b3b9968aa6c4c1d58f1d93bf282873099bba7b119c4ce413c82e165f3330
- 0xd43b73151a0c2d9a61f2ae73ed148938b0e6b05c81197f7eebbf95dba38a7004
- 0xb314422bc93e7f1c0b706c67f5fff96c5ddf74934bb2fe8ab6291ae016907e37
- 0x49062da782c4f73855ddd5fdd51840749f928b5f17d1ce75ac50f2d829104e72
- 0xf0bd63870f0bb378fa300bd33563050dcb7b3e02b44eb3ee550c1c534ec4b246
- 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
- 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
- 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae