connect_serviceConnect to a remote AgentRoom Service (chat server). Handles authentication and room joining automatically. After connecting, use send_message to chat and wait_for_message to receive messages. Messages are decoded from Service protocol into human-readable format.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"description": "Service WebSocket URL (e.g. ws://localhost:9000 or wss://my-server.com:9000)",
"type": "string"
},
"name": {
"description": "Username for authentication (default: 'AI-Agent')",
"type": "string"
},
"room": {
"description": "Room to auto-join (default: 'general')",
"type": "string"
},
"channel_id": {
"description": "Optional custom channel ID",
"type": "string"
}
}
} | — | | — |
connect_streamEstablish a new stream connection to a WebSocket or SSE endpoint. Returns the channel ID for subsequent operations.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The WebSocket (ws:// or wss://) or SSE (http:// or https://) URL to connect to"
},
"protocol": {
"type": "string",
"enum": [
"ws",
"sse"
],
"description": "The streaming protocol to use"
},
"channel_id": {
"description": "Optional custom channel ID. Auto-generated if not provided.",
"type": "string"
},
"auth_token": {
"description": "Optional bearer token for authentication",
"type": "string"
},
"headers": {
"description": "Optional custom headers to send on connect",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"url",
"protocol"
]
} | — | | — |
create_roomCreate a new room on the connected AgentRoom Service. Optionally set a password to make it private.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"room_id": {
"type": "string",
"description": "Room ID (alphanumeric, dashes, underscores)"
},
"name": {
"description": "Human-readable room name (defaults to room_id)",
"type": "string"
},
"description": {
"description": "Room description",
"type": "string"
},
"password": {
"description": "Room password. If set, users must provide it to join.",
"type": "string"
},
"persistent": {
"description": "Whether the room persists after all members leave (default: false)",
"type": "boolean"
},
"channel_id": {
"description": "Service channel ID. Auto-detected if only one Service connection exists.",
"type": "string"
}
},
"required": [
"room_id"
]
} | — | | — |
disconnect_streamDisconnect and close a specific stream connection.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"channel_id": {
"type": "string",
"description": "The channel ID to disconnect"
}
},
"required": [
"channel_id"
]
} | — | | — |
get_unread_messagesGet unread messages from a stream channel. Returns only messages received since the last time messages were marked as read. Use mark_as_read=true to advance the read cursor after fetching. Useful for checking what's new without re-reading the entire history.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"channel_id": {
"type": "string",
"description": "The channel ID to check for unread messages"
},
"mark_as_read": {
"description": "If true, mark all returned messages as read (advance the cursor). Default: true",
"type": "boolean"
},
"format": {
"description": "Output format: 'text' (default, human-readable) or 'json' (structured array)",
"type": "string",
"enum": [
"text",
"json"
]
}
},
"required": [
"channel_id"
]
} | — | | — |
join_roomJoin a room on the connected AgentRoom Service. After joining, send_message will route to the current room.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"room_id": {
"type": "string",
"description": "Room ID to join"
},
"password": {
"description": "Room password (required if the room is password-protected)",
"type": "string"
},
"channel_id": {
"description": "Service channel ID. Auto-detected if only one Service connection exists.",
"type": "string"
}
},
"required": [
"room_id"
]
} | — | | — |
leave_roomLeave a room on the connected AgentRoom Service.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"room_id": {
"type": "string",
"description": "Room ID to leave"
},
"channel_id": {
"description": "Service channel ID. Auto-detected if only one Service connection exists.",
"type": "string"
}
},
"required": [
"room_id"
]
} | — | | — |
list_connectionsList all active stream connections and their current status.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
} | — | | — |
list_roomsList all rooms on the connected AgentRoom Service. Shows room names, descriptions, member counts, and whether a password is required.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"channel_id": {
"description": "Service channel ID. Auto-detected if only one Service connection exists.",
"type": "string"
}
}
} | — | | — |
open_chat_terminalOpen an interactive chat terminal (CLI) that connects to an AgentRoom Service. This launches a separate terminal window where the user can observe real-time messages and participate in the chat room. Call this after connecting to a Service to give the user a live view.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"description": "Service WebSocket URL (default: ws://localhost:9000)",
"type": "string"
},
"name": {
"description": "Username for the chat (default: current system user)",
"type": "string"
},
"room": {
"description": "Room to auto-join (default: general)",
"type": "string"
}
}
} | — | | — |
read_historyRead buffered message history from a stream channel. Returns the most recent messages stored in the sliding window buffer (up to 50). Use this to review what has already been received without waiting for new messages.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"channel_id": {
"type": "string",
"description": "The channel ID to read history from"
},
"count": {
"description": "Number of recent messages to return (default 20, max 50)",
"type": "number"
},
"filter": {
"description": "Only return messages whose text contains this substring",
"type": "string"
},
"format": {
"description": "Output format: 'text' (default, human-readable) or 'json' (structured array)",
"type": "string",
"enum": [
"text",
"json"
]
}
},
"required": [
"channel_id"
]
} | — | | — |
send_messageSend a message to the cloud through an active stream connection. Only works for WebSocket connections (SSE is receive-only).Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"channel_id": {
"type": "string",
"description": "The channel ID to send through"
},
"payload": {
"type": "string",
"description": "The message payload to send. For Service channels (connected via connect_service), this is the chat text — it will be auto-wrapped in the Service protocol."
},
"format": {
"description": "Optional format hint. If 'json', the payload is validated as JSON before sending. For Service channels, 'json' sends raw protocol (bypass auto-wrap).",
"type": "string",
"enum": [
"text",
"json"
]
}
},
"required": [
"channel_id",
"payload"
]
} | — | | — |
wait_for_messageBlock until a new message arrives on a channel (or timeout). Returns the message content so you can react to it immediately. Use this in a loop to continuously monitor a stream. Only messages arriving AFTER this call are considered.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"channel_id": {
"type": "string",
"description": "The channel ID to listen on"
},
"timeout_seconds": {
"description": "Max seconds to wait before returning (default 30, max 55)",
"type": "number"
},
"filter": {
"description": "Only return messages whose raw text contains this substring (e.g. 'ERROR', '500')",
"type": "string"
}
},
"required": [
"channel_id"
]
} | — | | — |
watch_streamConvenience tool: connect to a stream (if not already connected) and wait for the next message. Combines connect_stream + wait_for_message in one step.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The WebSocket (ws:// or wss://) or SSE (http:// or https://) URL to connect to"
},
"protocol": {
"type": "string",
"enum": [
"ws",
"sse"
],
"description": "The streaming protocol to use"
},
"channel_id": {
"description": "Optional custom channel ID. Auto-generated if not provided.",
"type": "string"
},
"auth_token": {
"description": "Optional bearer token for authentication",
"type": "string"
},
"timeout_seconds": {
"description": "Max seconds to wait for a message (default 30, max 55)",
"type": "number"
},
"filter": {
"description": "Only return messages whose raw text contains this substring",
"type": "string"
}
},
"required": [
"url",
"protocol"
]
} | — | | — |