Notify and wake
notify_test and wake send something out of the machine. notify_test accepts the server argument and wake does not. See Notifications and Wake-on-LAN for the commands.
notify_test
writeSends one test message through every configured notification channel and reports each channel on its own, so a failure names the channel that failed. With server set, a call in which any channel fails returns an error whose text holds the array of channel results. A real message arrives in each channel, and anyone who reads those channels sees it. The channels are telegram, slack, discord, webhook, ntfy and gotify.
Arguments
| Argument | Type | Description |
|---|---|---|
server | string | Server from your config to run on. See Run a tool on another server. |
Response
| Field | Type | Meaning |
|---|---|---|
channel | string | Channel name. |
sent | boolean | true when the channel accepted the message. |
error | string, optional | Why the message was not sent. Left out when sent is true. |
Examples
A webhook channel receives this JSON body as a POST:
{"source":"alerts","name":"test-notification","status":"triggered","details":"This is a test notification from homebutler","action_taken":"notify","action_result":"success","timestamp":"2026-10-25 11:45:02"}
The response is an array with one entry per channel. Here the webhook accepted the message and the ntfy server refused the connection:
[
{
"channel": "webhook",
"sent": true
},
{
"channel": "ntfy",
"sent": false,
"error": "request to http://127.0.0.1:8106 failed: dial tcp 127.0.0.1:8106: connect: connection refused"
}
]
With no channel configured, the call returns an error:
no notification channel is configured
wake
writeSends a Wake-on-LAN magic packet. The packet is fire and forget: a sent status means the packet left the machine, not that anything woke up. The tool takes no server argument and sends from the machine that runs the MCP server.
Arguments
| Argument | Type | Description |
|---|---|---|
target required | string | A MAC address in the form AA:BB:CC:DD:EE:FF or AA-BB-CC-DD-EE-FF, or the name of a device in the wake: list of your config. A configured name uses the device's MAC address and its ip as the broadcast address. A value that is neither returns invalid MAC address: <value> (expected format: AA:BB:CC:DD:EE:FF). |
broadcast | string | Broadcast address to send the packet to. It overrides the ip of a configured device. Default: 255.255.255.255. |
Response
| Field | Type | Meaning |
|---|---|---|
action | string | Always wake. |
mac | string | The MAC address the packet was built for. |
broadcast | string | The broadcast address it was sent to. |
status | string | Always sent. |
Examples
Wake a device by the name it has in the config:
Arguments:
{
"target": "desktop"
}
Response:
{
"action": "wake",
"mac": "AA:BB:CC:DD:EE:FF",
"broadcast": "255.255.255.255",
"status": "sent"
}
Wake a MAC address on a chosen broadcast address:
Arguments:
{
"target": "aa:bb:cc:dd:ee:ff",
"broadcast": "192.168.5.255"
}
Response:
{
"action": "wake",
"mac": "aa:bb:cc:dd:ee:ff",
"broadcast": "192.168.5.255",
"status": "sent"
}
A value that is neither a configured name nor a MAC address returns an error:
Arguments:
{
"target": "nothex"
}
Response:
invalid MAC address: nothex (expected format: AA:BB:CC:DD:EE:FF)