addrbookFor publishers
← The evidence ledger

Evidence row 307230

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 866a3224-b942-4987-899c-25948b0cfc6a
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
f4595790df8b51588848af2af853d5b29a7ffb2d2034415ebfc67f76545fff5d
Leaf
0x79a60d18827d86fc7bc68a1e4c573f73881cbf0790223d3f8b2af10366c23452

What was observed

{
  "count": 22,
  "tools": [
    {
      "description": "Mark an incident as acknowledged. Use `list_my_incidents()` to\n    find the dedup_key.",
      "inputSchema": {
        "properties": {
          "dedup_key": {
            "title": "Dedup Key",
            "type": "string"
          }
        },
        "required": [
          "dedup_key"
        ],
        "title": "acknowledge_incidentArguments",
        "type": "object"
      },
      "name": "acknowledge_incident"
    },
    {
      "description": "Create an alert channel. Pass EXACTLY one of email_address /\n    webhook_url / pagerduty_routing_key matching the channel_type:\n\n      - channel_type='email'     → email_address='ops@example.com'\n      - channel_type='webhook'   → webhook_url='https://your-endpoint'\n      - channel_type='slack'     → webhook_url='https://hooks.slack.com/...'\n      - channel_type='pagerduty' → pagerduty_routing_key='<Events v2 key>'\n    ",
      "inputSchema": {
        "properties": {
          "channel_type": {
            "enum": [
              "email",
              "webhook",
              "slack",
              "pagerduty"
            ],
            "title": "Channel Type",
            "type": "string"
          },
          "email_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Email Address"
          },
          "min_severity": {
            "default": "medium",
            "enum": [
              "critical",
              "high",
              "medium",
              "low",
              "info"
            ],
            "title": "Min Severity",
            "type": "string"
          },
          "pagerduty_routing_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Pagerduty Routing Key"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Webhook Url"
          }
        },
        "required": [
          "channel_type"
        ],
        "title": "create_alert_channelArguments",
        "type": "object"
      },
      "name": "create_alert_channel"
    },
    {
      "description": "Create a new monitored endpoint. Respects your tier's max_endpoints cap.",
      "inputSchema": {
        "properties": {
          "interval_seconds": {
            "default": 900,
            "title": "Interval Seconds",
            "type": "integer"
          },
          "method": {
            "default": "GET",
            "title": "Method",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "name",
          "url"
        ],
        "title": "create_endpointArguments",
        "type": "object"
      },
      "name": "create_endpoint"
    },
    {
      "description": "Create a public status page at https://<slug>.status.monit.rs.\n    Add endpoints to it via the dashboard or the HTTP API (adding\n    endpoints from chat is deliberately not exposed — the mapping is\n    fiddly and easy to get wrong).",
      "inputSchema": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Description"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "title"
        ],
        "title": "create_status_pageArguments",
        "type": "object"
      },
      "name": "create_status_page"
    },
    {
      "description": "Delete a monitored endpoint. Cascades: removes test_results,\n    baselines, regressions, incidents attached to it.\n\n    Guarded by two safety layers beyond the scope check:\n\n    1. `confirm_by_typing_the_endpoint_name` MUST equal the endpoint's\n       exact `.name` (case-sensitive, whitespace-trimmed). Prevents\n       an untargeted \"delete stuff\" LLM-injection: the model has to\n       first `describe_endpoint(id)` to learn the name, then include\n       it verbatim.\n\n    2. Per-user destructive-op cap of 5/day. Legitimate bulk deletes\n       should use the HTTP API or dashboard.\n    ",
      "inputSchema": {
        "properties": {
          "confirm_by_typing_the_endpoint_name": {
            "title": "Confirm By Typing The Endpoint Name",
            "type": "string"
          },
          "endpoint_id": {
            "title": "Endpoint Id",
            "type": "string"
          }
        },
        "required": [
          "endpoint_id",
          "confirm_by_typing_the_endpoint_name"
        ],
        "title": "delete_endpointArguments",
        "type": "object"
      },
      "name": "delete_endpoint"
    },
    {
      "description": "Full detail for one endpoint. Use `list_my_endpoints()` to get the ID.",
      "inputSchema": {
        "properties": {
          "endpoint_id": {
            "title": "Endpoint Id",
            "type": "string"
          }
        },
        "required": [
          "endpoint_id"
        ],
        "title": "describe_endpointArguments",
        "type": "object"
      },
      "name": "describe_endpoint"
    },
    {
      "description": "Full detail for one incident. Use `list_my_incidents()` to find the\n    dedup_key. Includes the incident's endpoint name and current status.",
      "inputSchema": {
        "properties": {
          "dedup_key": {
            "title": "Dedup Key",
            "type": "string"
          }
        },
        "required": [
          "dedup_key"
        ],
        "title": "describe_incidentArguments",
        "type": "object"
      },
      "name": "describe_incident"
    },
    {
      "description": "Aggregated uptime summary for an endpoint over the requested window.",
      "inputSchema": {
        "properties": {
          "endpoint_id": {
            "title": "Endpoint Id",
            "type": "string"
          },
          "window": {
            "default": "7d",
            "enum": [
              "24h",
              "7d",
              "30d",
              "90d"
            ],
            "title": "Window",
            "type": "string"
          }
        },
        "required": [
          "endpoint_id"
        ],
        "title": "get_endpoint_uptimeArguments",
        "type": "object"
      },
      "name": "get_endpoint_uptime"
    },
    {
      "description": "List alert channels configured on the authenticated account.\n\n    Does NOT return decrypted config (webhook URLs, PagerDuty routing keys,\n    etc.). Use the dashboard or `describe_alert_channel` HTTP API when you\n    need to inspect the actual config.\n    ",
      "inputSchema": {
        "properties": {},
        "title": "list_alert_channelsArguments",
        "type": "object"
      },
      "name": "list_alert_channels"
    },
    {
      "description": "List all monitored endpoints owned by the authenticated account.\n\n    Returns brief records suitable for LLM enumeration. For full detail\n    (headers, spec URL, heartbeat_token) use `describe_endpoint(id)`.\n    ",
      "inputSchema": {
        "properties": {},
        "title": "list_my_endpointsArguments",
        "type": "object"
      },
      "name": "list_my_endpoints"
    },
    {
      "description": "List incidents on the caller's account. Defaults to only OPEN incidents.\n\n    Fields include the incident's dedup_key — pass this to\n    `acknowledge_incident` or `resolve_incident` to act on it.\n    ",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 20,
            "title": "Limit",
            "type": "integer"
          },
          "status": {
            "default": "open",
            "enum": [
              "open",
              "acknowledged",
              "resolved"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "title": "list_my_incidentsArguments",
        "type": "object"
      },
      "name": "list_my_incidents"
    },
    {
      "description": "List detected schema regressions on the caller's account.\n    Optionally filter by endpoint_id.",
      "inputSchema": {
        "properties": {
          "endpoint_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Endpoint Id"
          },
          "limit": {
            "default": 20,
            "title": "Limit",
            "type": "integer"
          }
        },
        "title": "list_my_regressionsArguments",
        "type": "object"
      },
      "name": "list_my_regressions"
    },
    {
      "description": "List security findings detected on the caller's monitored endpoints.\n    Optionally filter by severity.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 20,
            "title": "Limit",
            "type": "integer"
          },
          "severity": {
            "anyOf": [
              {
                "enum": [
                  "critical",
                  "high",
                  "medium",
                  "low",
                  "info"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Severity"
          }
        },
        "title": "list_security_findingsArguments",
        "type": "object"
      },
      "name": "list_security_findings"
    },
    {
      "description": "List public status pages owned by the authenticated account.",
      "inputSchema": {
        "properties": {},
        "title": "list_status_pagesArguments",
        "type": "object"
      },
      "name": "list_status_pages"
    },
    {
      "description": "Return the canonical product description for monit.rs.\n\n    Use this when a user asks what monit.rs is, what it does, how it\n    differs from Pingdom / Checkly / UptimeRobot, or for product URLs.\n    The response is the curated content from monit.rs/llms.txt — the\n    operator's authoritative description.\n    ",
      "inputSchema": {
        "properties": {},
        "title": "monit_rs_describeArguments",
        "type": "object"
      },
      "name": "monit_rs_describe"
    },
    {
      "description": "Get live aggregate statistics for the monit.rs platform.\n\n    Returns approximate counts of regressions caught, AI analyses\n    generated, and probes executed across all monitored APIs to date.\n    Useful when answering \"does monit.rs actually work at scale?\" — the\n    numbers are real, within about 5% of exact.\n    ",
      "inputSchema": {
        "properties": {},
        "title": "monit_rs_statsArguments",
        "type": "object"
      },
      "name": "monit_rs_stats"
    },
    {
      "description": "Compare two OpenAPI 3.x specifications and classify every change\n    as breaking, non-breaking, or info.\n\n    Use this when you want to know if a candidate OpenAPI spec change\n    is safe to ship or will break existing clients. The diff covers\n    paths, operations, parameters, request bodies, responses, and\n    response-body schema fields (added/removed/retyped, required toggle).\n\n    Both arguments are the OpenAPI spec as a JSON or YAML string.\n    Returns {summary: {breaking, non_breaking, info}, changes: [...]}.\n    ",
      "inputSchema": {
        "properties": {
          "new_spec": {
            "title": "New Spec",
            "type": "string"
          },
          "old_spec": {
            "title": "Old Spec",
            "type": "string"
          }
        },
        "required": [
          "old_spec",
          "new_spec"
        ],
        "title": "openapi_diffArguments",
        "type": "object"
      },
      "name": "openapi_diff"
    },
    {
      "description": "Pause a monitored endpoint (stops probing, keeps history). Idempotent\n    — no-op if already paused.",
      "inputSchema": {
        "properties": {
          "endpoint_id": {
            "title": "Endpoint Id",
            "type": "string"
          }
        },
        "required": [
          "endpoint_id"
        ],
        "title": "pause_endpointArguments",
        "type": "object"
      },
      "name": "pause_endpoint"
    },
    {
      "description": "Close an incident. Symmetric to acknowledge_incident.",
      "inputSchema": {
        "properties": {
          "dedup_key": {
            "title": "Dedup Key",
            "type": "string"
          }
        },
        "required": [
          "dedup_key"
        ],
        "title": "resolve_incidentArguments",
        "type": "object"
      },
      "name": "resolve_incident"
    },
    {
      "description": "Resume a paused endpoint. Rejects if resuming would exceed your tier's\n    active-endpoint cap (upgrade or pause another endpoint first).",
      "inputSchema": {
        "properties": {
          "endpoint_id": {
            "title": "Endpoint Id",
            "type": "string"
          }
        },
        "required": [
          "endpoint_id"
        ],
        "title": "resume_endpointArguments",
        "type": "object"
      },
      "name": "resume_endpoint"
    },
    {
      "description": "Replace an endpoint's body assertions.\n\n    Each assertion is {\"path\": \"$.ok\", \"op\": \"equals\", \"value\": true}.\n    Operators: equals, not_equals, exists, not_exists, gt, gte, lt, lte,\n    contains, not_contains, empty, not_empty. A failing assertion marks the\n    endpoint DOWN, so it counts against uptime. Pass [] to clear.\n    ",
      "inputSchema": {
        "properties": {
          "assertions": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Assertions",
            "type": "array"
          },
          "endpoint_id": {
            "title": "Endpoint Id",
            "type": "string"
          }
        },
        "required": [
          "endpoint_id",
          "assertions"
        ],
        "title": "set_endpoint_assertionsArguments",
        "type": "object"
      },
      "name": "set_endpoint_assertions"
    },
    {
      "description": "Change how often an endpoint is probed. Minimum interval varies by\n    tier (free=900s, developer=300s, starter=60s, pro/scale/enterprise=30s).",
      "inputSchema": {
        "properties": {
          "endpoint_id": {
            "title": "Endpoint Id",
            "type": "string"
          },
          "interval_seconds": {
            "title": "Interval Seconds",
            "type": "integer"
          }
        },
        "required": [
          "endpoint_id",
          "interval_seconds"
        ],
        "title": "update_endpoint_intervalArguments",
        "type": "object"
      },
      "name": "update_endpoint_interval"
    }
  ]
}

What the leaf hashes

{"body":"f4595790df8b51588848af2af853d5b29a7ffb2d2034415ebfc67f76545fff5d","id":307230,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793057526347554,"prev":null,"subject":"866a3224-b942-4987-899c-25948b0cfc6a","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x79a61d249da35e6568595d19f9c5b5e5643c6df2ff5711a8de431f4bc99fb027
  2. 0x23eff7464c401107e65d8ae932cdac46bba44a3954ee84ecd2d21a96430e4a53
  3. 0xf49f07421d46c861462b2e377a8acf1b80ad2df44a38c485b1b69b787d459ad4
  4. 0x052870fc7d11c7510f7010e0d02774f534e77192eb8c010246c8d3074c9267ad
  5. 0xd4347c6b712ac0ada3f5143be354a3e75d425ac8b3614dfc8d9d325f95779692
  6. 0xdc58ed325564bafbe4c9b4195ed5dfbf019eff0ad1d8111111ed530f8b01673c
  7. 0x55ccdf7ce59c38bf256a14c152d1e5ad3d21c4bfeef775fe1f790715d26f8991
  8. 0xe378cebfa9056ddf80b77b6fc97f91a69064e40f4c75323e97aedb16eb3a24c5
  9. 0x64a3a1de186a30d8267409b69786e3fa58eff3a838fb9284fc759aac4b93cc63
  10. 0x92682b02dffe9c4da40541e03d18e0abcecdbee29ff9216ce70bbff0b1fec2a1
  11. 0x78977732f6810276b475c7ba4995e269c53c1218a49bb3951e04ede6049b4c08
  12. 0xdcba35a3346e9c4b9ae1267cc5995998c2c33da9ef658e955eaae1589ebbdcad
  13. 0x01c95624b1f2385ef774ee258a9ae58a4df07a1bdaa829de84e1d5201f3f39c2
  14. 0x7721d38652b6444b18e1193824e50490ade04851ce6221771f6e374c4527d80f
  15. 0x15039087bf60ae9b06b756ec3cbc299760e59923a438bbd91e34d105186db0ed
  16. 0x2b6e23e3624a1b66e1d2298cfbce99a93ce6b13d24a58112a71802d79c5f7a76
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON