#include "mcp/tools/common/registry.h" #include "mcp/tools/common/common.h" #include "mcp/tools/common/context.h" static void call_get_system_health(const mcpc_tool_t *tool, mcpc_ucbr_t *result) { tiny_mcp_tools_context_t *context = tiny_mcp_tools_context_current(); tiny_store_health_t health; tiny_json_buffer_t json; (void)tool; if (!context) { tiny_mcp_tool_add_error(result, "INTERNAL_ERROR", "tool context is unavailable"); return; } tiny_store_health(context->store, &health); tiny_json_init(&json); tiny_json_raw(&json, "{\"status\":"); tiny_json_string(&json, health.last_error[0] ? "DEGRADED" : "OK"); tiny_json_raw(&json, ",\"format_version\":1,\"log_size\":"); tiny_json_u64(&json, health.log_size); tiny_json_raw(&json, ",\"snapshot_size\":"); tiny_json_u64(&json, health.snapshot_size); tiny_json_raw(&json, ",\"active_messages\":"); tiny_json_u64(&json, health.active_messages); tiny_json_raw(&json, ",\"deleted_messages\":"); tiny_json_u64(&json, health.deleted_messages); tiny_json_raw(&json, ",\"last_sequence\":"); tiny_json_u64(&json, health.last_sequence); tiny_json_raw(&json, ",\"recovered_tail\":"); tiny_json_raw(&json, health.recovered_tail ? "true" : "false"); tiny_json_raw(&json, ",\"snapshot_valid\":"); tiny_json_raw(&json, health.snapshot_valid ? "true" : "false"); tiny_json_raw(&json, ",\"last_error\":"); tiny_json_string(&json, health.last_error); tiny_json_raw(&json, "}"); tiny_mcp_tool_add_json(result, &json); tiny_json_free(&json); } bool tiny_mcp_register_get_system_health(mcpc_server_t *server) { mcpc_tool_t *tool = tiny_mcp_tool_new( "get_system_health", "Inspect storage health, recovery state, message counts, and file sizes. Use " "it to diagnose persistence or recovery problems.", call_get_system_health); return tool && mcpc_server_add_tool(server, tool) == MCPC_EC_0; }