diff --git a/docs/API_Server.md b/docs/API_Server.md
index 7c306a2a0..eaa5bdb97 100644
--- a/docs/API_Server.md
+++ b/docs/API_Server.md
@@ -204,9 +204,8 @@ object name and the value is a dictionary containing its fields. The
 response message will also contain an "eventtime" field containing the
 timestamp from when the query was taken.
 
-Available fields are documented in the
-[Command Template](Command_Templates.md#the-printer-variable)
-document.
+Available fields are documented in the [Status
+Reference](Status_Reference.md) document.
 
 ### objects/subscribe
 
diff --git a/docs/Command_Templates.md b/docs/Command_Templates.md
index b68de68b0..a5e3d3231 100644
--- a/docs/Command_Templates.md
+++ b/docs/Command_Templates.md
@@ -120,6 +120,9 @@ gcode:
   M106 S{ printer.fan.speed * 0.9 * 255}
 ```
 
+Available fields are defined in the [Status
+Reference](Status_Reference.md) document.
+
 Important! Macros are first evaluated in entirety and only then are
 the resulting commands executed. If a macro issues a command that
 alters the state of the printer, the results of that state change will
@@ -136,211 +139,6 @@ objects. If the config section contains spaces in it, then one can
 access it via the `[ ]` accessor - for example:
 `printer["generic_heater my_chamber_heater"].temperature`.
 
-The following are common printer attributes:
-- `printer.fan.speed`: The fan speed as a float between 0.0 and 1.0.
-  This is also available on "heater_fan", "fan_generic", and
-  "controller_fan" config sections (eg,
-  `printer["fan_generic my_fan"].speed`).
-- `printer.fan.rpm`: The measured fan speed in rotations per minute if
-  the fan has a tachometer_pin defined.  This is also available on
-  "heater_fan", "fan_generic", and "controller_fan" config sections
-  (eg, `printer["fan_generic my_fan"].rpm`).
-- `printer.gcode_move.gcode_position`: The current position of the
-  toolhead relative to the current G-Code origin. That is, positions
-  that one might directly send to a `G1` command. It is possible to
-  access the x, y, z, and e components of this position (eg,
-  `printer.gcode_move.gcode_position.x`).
-- `printer.gcode_move.position`: The last commanded position of the
-  toolhead using the coordinate system specified in the config
-  file. It is possible to access the x, y, z, and e components of this
-  position (eg, `printer.gcode_move.position.x`).
-- `printer.gcode_move.homing_origin`: The origin of the gcode
-  coordinate system (relative to the coordinate system specified in
-  the config file) to use after a `G28` command. The
-  `SET_GCODE_OFFSET` command can alter this position. It is possible
-  to access the x, y, and z components of this position (eg,
-  `printer.gcode_move.homing_origin.x`).
-- `printer.gcode_move.speed`: The last speed set in a `G1` command (in
-  mm/s).
-- `printer.gcode_move.speed_factor`: The "speed factor override" as
-  set by an `M220` command. This is a floating point value such
-  that 1.0 means no override and, for example, 2.0 would double
-  requested speed.
-- `printer.gcode_move.extrude_factor`: The "extrude factor override"
-  as set by an `M221` command. This is a floating point value such
-  that 1.0 means no override and, for example, 2.0 would double
-  requested extrusions.
-- `printer.gcode_move.absolute_coordinates`: This returns True if in
-  `G90` absolute coordinate mode or False if in `G91` relative mode.
-- `printer.gcode_move.absolute_extrude`: This returns True if in `M82`
-  absolute extrude mode or False if in `M83` relative mode.
-- `printer["gcode_macro <macro_name>"].<variable>`: The current value
-  of a gcode_macro variable.
-- `printer.<heater>.temperature`: The last reported temperature (in
-  Celsius as a float) for the given heater. Example heaters are:
-  `extruder`, `extruder1`, `heater_bed`, `heater_generic
-  <config_name>`.
-- `printer.<heater>.target`: The current target temperature (in
-  Celsius as a float) for the given heater.
-- `printer.<heater>.power`: The last setting of the PWM pin (a value
-  between 0.0 and 1.0) associated with the heater.
-- `printer.idle_timeout.state`: The current state of the printer as
-  tracked by the idle_timeout module. It is one of the following
-  strings: "Idle", "Printing", "Ready".
-- `printer.idle_timeout.printing_time`: The amount of time (in
-  seconds) the printer has been in the "Printing" state (as tracked by
-  the idle_timeout module).
-- `printer.pause_resume.is_paused`: Returns true if a PAUSE command
-  has been executed without a corresponding RESUME.
-- `printer.toolhead.position`: The last commanded position of the
-  toolhead relative to the coordinate system specified in the config
-  file. It is possible to access the x, y, z, and e components of this
-  position (eg, `printer.toolhead.position.x`).
-- `printer.toolhead.extruder`: The name of the currently active
-  extruder. For example, one could use
-  `printer[printer.toolhead.extruder].target` to get the target
-  temperature of the current extruder.
-- `printer.toolhead.homed_axes`: The current cartesian axes considered
-  to be in a "homed" state. This is a string containing one or more of
-  "x", "y", "z".
-- `printer.toolhead.axis_minimum`,
-  `printer.toolhead.axis_maximum`: The axis travel limits (mm) after homing.
-  It is possible to access the x, y, z components of this
-  limit value (eg, `printer.toolhead.axis_minimum.x`,
-  `printer.toolhead.axis_maximum.z`).
-- `printer.toolhead.max_velocity`, `printer.toolhead.max_accel`,
-  `printer.toolhead.max_accel_to_decel`,
-  `printer.toolhead.square_corner_velocity`: The current printing
-  limits that are in effect. This may differ from the config file
-  settings if a `SET_VELOCITY_LIMIT` (or `M204`) command alters them
-  at run-time.
-- `printer.toolhead.stalls`: The total number of times (since the last
-  restart) that the printer had to be paused because the toolhead
-  moved faster than moves could be read from the G-Code input.
-- `printer.heaters.available_heaters`: Returns a list of all currently
-  available heaters by their full config section names,
-  e.g. `["extruder", "heater_bed", "heater_generic my_custom_heater"]`.
-- `printer.heaters.available_sensors`: Returns a list of all currently
-  available temperature sensors by their full config section names,
-  e.g. `["extruder", "heater_bed", "heater_generic my_custom_heater",
-  "temperature_sensor electronics_temp"]`.
-- `printer.query_endstops.last_query["<endstop>"]`: Returns True if
-  the given endstop was reported as "triggered" during the last
-  QUERY_ENDSTOP command. Note, due to the order of template expansion
-  (see above), the QUERY_ENDSTOP command must be run prior to the
-  macro containing this reference.
-- `printer.probe.last_query`: Returns True if the probe was reported
-  as "triggered" during the last QUERY_PROBE command. Note, due to the
-  order of template expansion (see above), the QUERY_PROBE command
-  must be run prior to the macro containing this reference.
-- `printer.probe.last_z_result`: Returns the Z result value of the
-  last PROBE command. Note, due to the order of template expansion
-  (see above), the PROBE (or similar) command must be run prior to the
-  macro containing this reference.
-- `printer.configfile.settings.<section>.<option>`: Returns the given
-  config file setting (or default value) during the last software
-  start or restart. (Any settings changed at run-time will not be
-  reflected here.)
-- `printer.configfile.config.<section>.<option>`: Returns the given
-  raw config file setting as read by Klipper during the last software
-  start or restart. (Any settings changed at run-time will not be
-  reflected here.) All values are returned as strings.
-- `printer["gcode_macro <macro_name>"].<variable>`: The current value
-  of a [gcode_macro variable](#variables).
-- `printer.webhooks.state`: Returns a string indicating the current
-  Klipper state. Possible values are: "ready", "startup", "shutdown",
-  "error".
-- `printer.webhooks.state_message`: A human readable string giving
-  additional context on the current Klipper state.
-- `printer.display_status.progress`: The progress value of the last
-  `M73` G-Code command (or `printer.virtual_sdcard.progress` if no
-  recent `M73` received).
-- `printer.display_status.message`: The message contained in the last
-  `M117` G-Code command.
-- `printer["filament_switch_sensor <config_name>"].enabled`: Returns
-  True if the switch sensor is currently enabled.
-- `printer["filament_switch_sensor <config_name>"].filament_detected`:
-  Returns True if the sensor is in a triggered state.
-- `printer.virtual_sdcard.is_active`: Returns True if a print from
-  file is currently active.
-- `printer.virtual_sdcard.progress`: An estimate of the current print
-  progress (based of file size and file position).
-- `printer.virtual_sdcard.file_position`: The current position (in
-  bytes) of an active print.
-- `printer.print_stats.filename`,
-  `printer.print_stats.total_duration`,
-  `printer.print_stats.print_duration`,
-  `printer.print_stats.filament_used`, `printer.print_stats.state`,
-  `printer.print_stats.message`: Estimated information about the
-  current print when a virtual_sdcard print is active.
-- `printer.firmware_retraction.retract_length`,
-  `printer.firmware_retraction.retract_speed`,
-  `printer.firmware_retraction.unretract_extra_length`,
-  `printer.firmware_retraction.unretract_speed`: The current settings
-  for the firmware_retraction module. These settings may differ from
-  the config file if a `SET_RETRACTION` command alters them.
-- `printer["bme280 <sensor_name>"].temperature`,
-  `printer["bme280 <sensor_name>"].humidity`,
-  `printer["bme280 <sensor_name>"].pressure`,
-  `printer["bme280 <sensor_name>"].gas`: The last read values
-  from the sensor.
-- `printer["htu21d <sensor_name>"].temperature`,
-  `printer["htu21d <sensor_name>"].humidity`: The last read values
-  from the sensor.
-- `printer["lm75 <sensor_name>"].temperature`: The last read
-  temperature from the sensor.
-- `printer["temperature_host <sensor_name>"].temperature`: The last read
-  temperature from the sensor.
-- `printer["temperature_sensor <config_name>"].temperature`: The last read
-  temperature from the sensor.
-- `printer["temperature_sensor <config_name>"].measured_min_temp`,
-  `printer["temperature_sensor <config_name>"].measured_max_temp`: The
-  lowest and highest temperature seen by the sensor since the Klipper
-  host software was last restarted.
-- `printer["temperature_fan <config_name>"].temperature`: The last read
-  temperature from the sensor.
-- `printer["temperature_fan <config_name>"].target`: The target
-  temperature for the fan.
-- `printer["output_pin <config_name>"].value`: The "value" of the pin,
-  as set by a `SET_PIN` command.
-- `printer["servo <config_name>"].value`: The last setting of the PWM
-  pin (a value between 0.0 and 1.0) associated with the servo.
-- `printer.bed_mesh.profile_name`, `printer.bed_mesh.mesh_min`,
-  `printer.bed_mesh.mesh_max`, `printer.bed_mesh.probed_matrix`,
-  `printer.bed_mesh.mesh_matrix`: Information on the currently active
-  bed_mesh.
-- `printer.hall_filament_width_sensor.is_active`: Returns True if the
-  sensor is currently active.
-- `printer.hall_filament_width_sensor.Diameter`,
-  `printer.hall_filament_width_sensor.Raw`: The last read values from
-  the sensor.
-- `printer.mcu.mcu_version`: The Klipper code version reported by the
-  micro-controller.
-- `printer.mcu.mcu_build_versions`: Information on the build tools
-  used to generate the micro-controller code (as reported by the
-  micro-controller).
-- `printer.mcu.mcu_constants.<constant_name>`: Compile time constants
-  reported by the micro-controller. The available constants may differ
-  between micro-controller architectures and with each code revision.
-- `printer.mcu.last_stats.<statistics_name>`: Statistics information
-  on the micro-controller connection.
-- `printer.system_stats.sysload`, `printer.system_stats.cputime`,
-  `printer.system_stats.memavail`: Information on the host operating
-  system and process load.
-- `printer.palette2.ping`: Amount of the last reported Palette 2 ping
-  in percent.
-- `printer.palette2.remaining_load_length`: When starting a Palette 2
-  print, this will be the amount of filament to load into the extruder.
-- `printer.palette2.is_splicing`: True when the Palette 2 is splicing
-  filament.
-
-The above list is subject to change - if using an attribute be sure to
-review the [Config Changes document](Config_Changes.md) when upgrading
-the Klipper software. The above list is not exhaustive.  Other
-attributes may be available (via `get_status()` methods defined in the
-software). However, undocumented attributes may change without notice
-in future Klipper releases.
-
 Note that the Jinja2 `set` directive can assign a local name to an
 object in the `printer` hierarchy. This can make macros more readable
 and reduce typing. For example:
diff --git a/docs/Overview.md b/docs/Overview.md
index a82f372b0..21daffe36 100644
--- a/docs/Overview.md
+++ b/docs/Overview.md
@@ -42,6 +42,8 @@ communication with the Klipper developers.
 - [Slicers](Slicers.md): Configure "slicer" software for Klipper.
 - [Command Templates](Command_Templates.md): G-Code macros and
   conditional evaluation.
+  - [Status Reference](Status_Reference.md): Information available to
+    macros (and similar).
 - [TMC Drivers](TMC_Drivers.md): Using Trinamic stepper motor drivers
   with Klipper.
 - [Skew correction](skew_correction.md): Adjustments for axes not
diff --git a/docs/Status_Reference.md b/docs/Status_Reference.md
new file mode 100644
index 000000000..c09ad0fbf
--- /dev/null
+++ b/docs/Status_Reference.md
@@ -0,0 +1,303 @@
+This document is a reference of printer status information that
+available in Klipper [macros](Command_Templates.md), [display
+fields](Config_Reference.md#display), and via the [API
+Server](API_Server.md).
+
+The fields in this document are subject to change - if using an
+attribute be sure to review the [Config Changes
+document](Config_Changes.md) when upgrading the Klipper software.
+
+# bed_mesh
+
+The following information is available in the
+[bed_mesh](Config_Reference.md#bed_mesh) object:
+- `profile_name`, `mesh_min`, `mesh_max`, `probed_matrix`,
+  `mesh_matrix`: Information on the currently active bed_mesh.
+
+# configfile
+
+The following information is available in the `configfile` object
+(this object is always available):
+- `settings.<section>.<option>`: Returns the given config file setting
+  (or default value) during the last software start or restart. (Any
+  settings changed at run-time will not be reflected here.)
+- `config.<section>.<option>`: Returns the given raw config file
+  setting as read by Klipper during the last software start or
+  restart. (Any settings changed at run-time will not be reflected
+  here.) All values are returned as strings.
+
+# display_status
+
+The following information is available in the `display_status` object
+(this object is automatically available if a
+[display](Config_Reference.md#display) config section is defined):
+- `progress`: The progress value of the last `M73` G-Code command (or
+  `virtual_sdcard.progress` if no recent `M73` received).
+- `message`: The message contained in the last `M117` G-Code command.
+
+# fan
+
+The following information is available in
+[fan](Config_Reference.md#fan), [heater_fan
+some_name](Config_Reference.md#heater_fan) and [controller_fan
+some_name](Config_Reference.md#controller_fan) objects:
+- `speed`: The fan speed as a float between 0.0 and 1.0.
+- `rpm`: The measured fan speed in rotations per minute if the fan has
+  a tachometer_pin defined.
+
+# filament_switch_sensor
+
+The following information is available in [filament_switch_sensor
+some_name](Config_Reference.md#filament_switch_sensor) objects:
+- `enabled`: Returns True if the switch sensor is currently enabled.
+- `filament_detected`: Returns True if the sensor is in a triggered
+  state.
+
+# firmware_retraction
+
+The following information is available in the
+[firmware_retraction](Config_Reference.md#firmware_retraction) object:
+- `retract_length`, `retract_speed`, `unretract_extra_length`,
+  `unretract_speed`: The current settings for the firmware_retraction
+  module. These settings may differ from the config file if a
+  `SET_RETRACTION` command alters them.
+
+# gcode_macro
+
+The following information is available in [gcode_macro
+some_name](Config_Reference.md#gcode_macro) objects:
+- `<variable>`: The current value of a [gcode_macro
+  variable](Command_Templates.md#variables).
+
+# gcode_move
+
+The following information is available in the `gcode_move` object
+(this object is always available):
+- `gcode_position`: The current position of the toolhead relative to
+  the current G-Code origin. That is, positions that one might
+  directly send to a `G1` command. It is possible to access the x, y,
+  z, and e components of this position (eg, `gcode_position.x`).
+- `position`: The last commanded position of the toolhead using the
+  coordinate system specified in the config file. It is possible to
+  access the x, y, z, and e components of this position (eg,
+  `position.x`).
+- `homing_origin`: The origin of the gcode coordinate system (relative
+  to the coordinate system specified in the config file) to use after
+  a `G28` command. The `SET_GCODE_OFFSET` command can alter this
+  position. It is possible to access the x, y, and z components of
+  this position (eg, `homing_origin.x`).
+- `speed`: The last speed set in a `G1` command (in mm/s).
+- `speed_factor`: The "speed factor override" as set by an `M220`
+  command. This is a floating point value such that 1.0 means no
+  override and, for example, 2.0 would double requested speed.
+- `extrude_factor`: The "extrude factor override" as set by an `M221`
+  command. This is a floating point value such that 1.0 means no
+  override and, for example, 2.0 would double requested extrusions.
+- `absolute_coordinates`: This returns True if in `G90` absolute
+  coordinate mode or False if in `G91` relative mode.
+- `absolute_extrude`: This returns True if in `M82` absolute extrude
+  mode or False if in `M83` relative mode.
+
+# hall_filament_width_sensor
+
+The following information is available in the
+[hall_filament_width_sensor](Config_Reference.md#hall_filament_width_sensor)
+object:
+- `is_active`: Returns True if the sensor is currently active.
+- `Diameter`, `Raw`: The last read values from the sensor.
+
+# heater
+
+The following information is available for heater objects such as
+[extruder](Config_Reference.md#extruder),
+[heater_bed](Config_Reference.md#heater_bed), and
+[heater_generic](Config_Reference.md#heater_generic):
+- `temperature`: The last reported temperature (in Celsius as a float)
+  for the given heater.
+- `target`: The current target temperature (in Celsius as a float) for
+  the given heater.
+- `power`: The last setting of the PWM pin (a value between 0.0 and
+  1.0) associated with the heater.
+
+# heaters
+
+The following information is available in the `heaters` object (this
+object is available if any heater is defined):
+- `available_heaters`: Returns a list of all currently available
+  heaters by their full config section names, e.g. `["extruder",
+  "heater_bed", "heater_generic my_custom_heater"]`.
+- `available_sensors`: Returns a list of all currently available
+  temperature sensors by their full config section names,
+  e.g. `["extruder", "heater_bed", "heater_generic my_custom_heater",
+  "temperature_sensor electronics_temp"]`.
+
+# idle_timeout
+
+The following information is available in the
+[idle_timeout](Config_Reference.md#idle_timeout) object (this object
+is always available):
+- `state`: The current state of the printer as tracked by the
+  idle_timeout module. It is one of the following strings: "Idle",
+  "Printing", "Ready".
+- `printing_time`: The amount of time (in seconds) the printer has
+  been in the "Printing" state (as tracked by the idle_timeout
+  module).
+
+# mcu
+
+The following information is available in
+[mcu](Config_Reference.md#mcu) and [mcu
+some_name](Config_Reference.md#mcu-my_extra_mcu) objects:
+- `mcu_version`: The Klipper code version reported by the
+  micro-controller.
+- `mcu_build_versions`: Information on the build tools used to
+  generate the micro-controller code (as reported by the
+  micro-controller).
+- `mcu_constants.<constant_name>`: Compile time constants reported by
+  the micro-controller. The available constants may differ between
+  micro-controller architectures and with each code revision.
+- `last_stats.<statistics_name>`: Statistics information on the
+  micro-controller connection.
+
+# output_pin
+
+The following information is available in [output_pin
+some_name](Config_Reference.md#output_pin) objects:
+- `value`: The "value" of the pin, as set by a `SET_PIN` command.
+
+# palette2
+
+The following information is available in the
+[palette2](Config_Reference.md#palette2) object:
+- `ping`: Amount of the last reported Palette 2 ping in percent.
+- `remaining_load_length`: When starting a Palette 2 print, this will
+  be the amount of filament to load into the extruder.
+- `is_splicing`: True when the Palette 2 is splicing filament.
+
+# pause_resume
+
+The following information is available in the
+[pause_resume](Config_Reference.md#pause_resume) object:
+- `is_paused`: Returns true if a PAUSE command has been executed
+  without a corresponding RESUME.
+
+# print_stats
+
+The following information is available in the `print_stats` object
+(this object is automatically available if a
+[virtual_sdcard](Config_Reference.md#virtual_sdcard) config section is
+defined):
+- `filename`, `total_duration`, `print_duration`, `filament_used`,
+  `state`, `message`: Estimated information about the current print
+  when a virtual_sdcard print is active.
+
+# probe
+
+The following information is available in the
+[probe](Config_Reference.md#probe) object (this object is also
+available if a [bltouch](Config_Reference.md#bltouch) config section
+is defined):
+- `last_query`: Returns True if the probe was reported as "triggered"
+  during the last QUERY_PROBE command. Note, if this is used in a
+  macro, due to the order of template expansion, the QUERY_PROBE
+  command must be run prior to the macro containing this reference.
+- `last_z_result`: Returns the Z result value of the last PROBE
+  command. Note, if this is used in a macro, due to the order of
+  template expansion, the PROBE (or similar) command must be run prior
+  to the macro containing this reference.
+
+# query_endstops
+
+The following information is available in the `query_endstops` object
+(this object is available if any endstop is defined):
+- `last_query["<endstop>"]`: Returns True if the given endstop was
+  reported as "triggered" during the last QUERY_ENDSTOP command. Note,
+  if this is used in a macro, due to the order of template expansion,
+  the QUERY_ENDSTOP command must be run prior to the macro containing
+  this reference.
+
+# servo
+
+The following information is available in [servo
+some_name](Config_Reference.md#servo) objects:
+- `printer["servo <config_name>"].value`: The last setting of the PWM
+  pin (a value between 0.0 and 1.0) associated with the servo.
+
+# system_stats
+
+The following information is available in the `system_stats` object
+(this object is always available):
+- `sysload`, `cputime`, `memavail`: Information on the host operating
+  system and process load.
+
+# temperature sensors
+
+The following information is available in [bme280
+config_section_name](Config_Reference.md#bmp280bme280bme680-temperature-sensor),
+[htu21d config_section_name](Config_Reference.md#htu21d-sensor), [lm75
+config_section_name](Config_Reference.md#lm75-temperature-sensor), and
+[temperature_host
+config_section_name](Config_Reference.md#host-temperature-sensor)
+objects:
+- `temperature`: The last read temperature from the sensor.
+- `humidity`, `pressure`, `gas`: The last read values from the sensor
+  (only on bme280, htu21d, and lm75 sensors).
+
+# temperature_fan
+
+The following information is available in [temperature_fan
+some_name](Config_Reference.md#temperature_fan) objects:
+- `temperature`: The last read temperature from the sensor.
+- `target`: The target temperature for the fan.
+
+# temperature_sensor
+
+The following information is available in [temperature_sensor
+some_name](Config_Reference.md#temperature_sensor) objects:
+- `temperature`: The last read temperature from the sensor.
+- `measured_min_temp`, `measured_max_temp`: The lowest and highest
+  temperature seen by the sensor since the Klipper host software was
+  last restarted.
+
+# toolhead
+
+The following information is available in the `toolhead` object
+(this object is always available):
+- `position`: The last commanded position of the toolhead relative to
+  the coordinate system specified in the config file. It is possible
+  to access the x, y, z, and e components of this position (eg,
+  `position.x`).
+- `extruder`: The name of the currently active extruder. For example,
+  in a macro one could use `printer[printer.toolhead.extruder].target`
+  to get the target temperature of the current extruder.
+- `homed_axes`: The current cartesian axes considered to be in a
+  "homed" state. This is a string containing one or more of "x", "y",
+  "z".
+- `axis_minimum`, `axis_maximum`: The axis travel limits (mm) after
+  homing.  It is possible to access the x, y, z components of this
+  limit value (eg, `axis_minimum.x`, `axis_maximum.z`).
+- `max_velocity`, `max_accel`, `max_accel_to_decel`,
+  `square_corner_velocity`: The current printing limits that are in
+  effect. This may differ from the config file settings if a
+  `SET_VELOCITY_LIMIT` (or `M204`) command alters them at run-time.
+- `stalls`: The total number of times (since the last restart) that
+  the printer had to be paused because the toolhead moved faster than
+  moves could be read from the G-Code input.
+
+# virtual_sdcard
+
+The following information is available in the
+[virtual_sdcard](Config_Reference.md#virtual_sdcard) object:
+- `is_active`: Returns True if a print from file is currently active.
+- `progress`: An estimate of the current print progress (based of file
+  size and file position).
+- `file_position`: The current position (in bytes) of an active print.
+
+# webhooks
+
+The following information is available in the `webhooks` object (this
+object is always available):
+- `state`: Returns a string indicating the current Klipper
+  state. Possible values are: "ready", "startup", "shutdown", "error".
+- `state_message`: A human readable string giving additional context
+  on the current Klipper state.