← WebMCP Directory

Tool tree

ryanbateman.github.io

Developer ToolsTools verified
Website
MQTT Visualiser
Explore capabilities
    getTopicTreeAnswer

    Get the MQTT topic tree structure with message rates and counts. For large trees (1000+ topics), use maxDepth to limit the response size. Defaults to maxDepth=5 if not specified.

    View tool JSON
    {
      "name": "getTopicTree",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get the MQTT topic tree structure with message rates and counts. For large trees (1000+ topics), use maxDepth to limit the response size. Defaults to maxDepth=5 if not specified.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "maxDepth": {
            "type": "number",
            "description": "Maximum tree depth to return. Defaults to 5. Child nodes beyond this depth are omitted but their existence is indicated by the parent's childCount field."
          }
        }
      },
      "page": "/mqtt_vis/"
    }
    getActiveTopicsAnswer

    List topics that are currently receiving messages, sorted by direct message rate. Use this to find which specific leaf topics are actively publishing right now. For finding the busiest areas of the topic tree including aggregate subtree activity, use getNoisyTopics instead.

    View tool JSON
    {
      "name": "getActiveTopics",
      "kind": "answer",
      "impl": "imperative",
      "description": "List topics that are currently receiving messages, sorted by direct message rate. Use this to find which specific leaf topics are actively publishing right now. For finding the busiest areas of the topic tree including aggregate subtree activity, use getNoisyTopics instead.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "minRate": {
            "type": "number",
            "description": "Minimum direct message rate (messages/sec) to include. Defaults to 0, which excludes only truly idle topics."
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of topics to return. Defaults to 20."
          }
        }
      },
      "page": "/mqtt_vis/"
    }
    findTopicsAnswer

    Search for topics whose path contains the given substring (case-insensitive). For example, pattern 'kitchen' matches 'home/kitchen/temp'. Optionally filter by minimum message rate and depth range.

    View tool JSON
    {
      "name": "findTopics",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search for topics whose path contains the given substring (case-insensitive). For example, pattern 'kitchen' matches 'home/kitchen/temp'. Optionally filter by minimum message rate and depth range.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pattern": {
            "type": "string",
            "description": "Substring to match against topic paths (case-insensitive)."
          },
          "minRate": {
            "type": "number",
            "description": "Minimum direct message rate to include. Defaults to 0."
          },
          "minDepth": {
            "type": "number",
            "description": "Minimum tree depth to include. Defaults to 0."
          },
          "maxDepth": {
            "type": "number",
            "description": "Maximum tree depth to include. Defaults to no limit."
          }
        }
      },
      "page": "/mqtt_vis/"
    }
    getTopicDetailsAnswer

    Get detailed information about a specific MQTT topic including its current message rate, aggregate rate, last payload, QoS level, and child count.

    View tool JSON
    {
      "name": "getTopicDetails",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get detailed information about a specific MQTT topic including its current message rate, aggregate rate, last payload, QoS level, and child count.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topicId": {
            "type": "string",
            "description": "Full topic path, e.g. 'home/kitchen/temp'. Required."
          }
        },
        "required": [
          "topicId"
        ]
      },
      "page": "/mqtt_vis/"
    }
    getStatsAnswer

    Get aggregate MQTT traffic statistics for the current session including total messages, unique topics, uptime, connection status, and the top 10 most active topics by aggregate rate.

    View tool JSON
    {
      "name": "getStats",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get aggregate MQTT traffic statistics for the current session including total messages, unique topics, uptime, connection status, and the top 10 most active topics by aggregate rate.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/mqtt_vis/"
    }
    getNoisyTopicsAnswer

    List the highest-traffic areas of the topic tree, ranked by aggregate rate (the node's own rate plus all descendants). Use this to find which branches or subtrees are generating the most total traffic. For finding specific leaf topics that are actively publishing, use getActiveTopics instead. Use leafOnly=true to restrict results to leaf nodes (no children) — useful for highlighting actual publishers rather than aggregate branch nodes. Use mustHaveMessages=true to exclude structural intermediate nodes that have never received a direct message on that exact topic path.

    View tool JSON
    {
      "name": "getNoisyTopics",
      "kind": "answer",
      "impl": "imperative",
      "description": "List the highest-traffic areas of the topic tree, ranked by aggregate rate (the node's own rate plus all descendants). Use this to find which branches or subtrees are generating the most total traffic. For finding specific leaf topics that are actively publishing, use getActiveTopics instead. Use leafOnly=true to restrict results to leaf nodes (no children) — useful for highlighting actual publishers rather than aggregate branch nodes. Use mustHaveMessages=true to exclude structural intermediate nodes that have never received a direct message on that exact topic path.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum number of topics to return. Defaults to 10."
          },
          "leafOnly": {
            "type": "boolean",
            "description": "If true, only return leaf nodes (nodes with no children). Excludes intermediate branch nodes whose traffic is entirely aggregated from descendants. Defaults to false."
          },
          "mustHaveMessages": {
            "type": "boolean",
            "description": "If true, only return nodes that have received at least one message directly on that exact topic path (messageCount > 0). Excludes structural intermediate nodes that exist only as path segments and have never been published to directly. Defaults to false."
          }
        }
      },
      "page": "/mqtt_vis/"
    }
    getLargestPayloadsAnswer

    List topics with the largest payloads ever observed, ranked by largestPayloadSize (high-water mark) descending. Useful for identifying topics that publish large data blobs and for debugging payload size issues. lastPayloadSize reflects the most recent message; largestPayloadSize is the all-time maximum. Both are character counts. Note: size tracking is unconditional — sizes are recorded even when tooltip storage is disabled and even after the payload itself has been evicted from the LRU cache.

    View tool JSON
    {
      "name": "getLargestPayloads",
      "kind": "answer",
      "impl": "imperative",
      "description": "List topics with the largest payloads ever observed, ranked by largestPayloadSize (high-water mark) descending. Useful for identifying topics that publish large data blobs and for debugging payload size issues. lastPayloadSize reflects the most recent message; largestPayloadSize is the all-time maximum. Both are character counts. Note: size tracking is unconditional — sizes are recorded even when tooltip storage is disabled and even after the payload itself has been evicted from the LRU cache.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum number of topics to return. Defaults to 20, max 200."
          },
          "minSize": {
            "type": "number",
            "description": "Only include topics whose largestPayloadSize is at least this many characters. Defaults to 0 (all topics with messages)."
          }
        }
      },
      "page": "/mqtt_vis/"
    }
    exportGraphAction

    Export the current graph visualisation as a PNG image. This triggers a file download in the browser.

    View tool JSON
    {
      "name": "exportGraph",
      "kind": "act",
      "impl": "imperative",
      "description": "Export the current graph visualisation as a PNG image. This triggers a file download in the browser.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/mqtt_vis/"
    }
    highlightNodesAction

    Highlight one or more nodes in the graph with a coloured ring. Replaces any existing highlights — call again with a new set to update, or use clearHighlights to remove all rings. The highlight ring appears just outside the node circle and is visible alongside any selection ring the user may have active. Topic IDs must match the full path as seen in the visualiser (e.g. 'home/kitchen/temp'). Unknown topics are silently skipped and reported in the response.

    View tool JSON
    {
      "name": "highlightNodes",
      "kind": "act",
      "impl": "imperative",
      "description": "Highlight one or more nodes in the graph with a coloured ring. Replaces any existing highlights — call again with a new set to update, or use clearHighlights to remove all rings. The highlight ring appears just outside the node circle and is visible alongside any selection ring the user may have active. Topic IDs must match the full path as seen in the visualiser (e.g. 'home/kitchen/temp'). Unknown topics are silently skipped and reported in the response.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of full topic path strings to highlight. Maximum 200 entries — excess entries are silently dropped."
          },
          "color": {
            "type": "string",
            "description": "CSS hex colour for the highlight ring, e.g. '#cc0000'. Accepts #rgb and #rrggbb formats. Defaults to '#cc0000' (red)."
          }
        },
        "required": [
          "nodeIds"
        ]
      },
      "page": "/mqtt_vis/"
    }
    clearHighlightsAction

    Remove all node highlight rings from the graph. Has no effect if no highlights are currently active.

    View tool JSON
    {
      "name": "clearHighlights",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove all node highlight rings from the graph. Has no effect if no highlights are currently active.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/mqtt_vis/"
    }