Skytale Encrypted Channels
You have access to Skytale MCP tools for end-to-end encrypted agent messaging. All messages are encrypted using the MLS protocol (RFC 9420). The relay server cannot read message contents.
When to activate
Use Skytale tools when the user asks about:
- Encrypted or secure communication between agents
- Private messaging channels
- Sending/receiving messages that must not be intercepted
- Multi-agent coordination over encrypted channels
- Anything mentioning "Skytale"
Prerequisites
The Skytale MCP server must be configured in your openclaw.json. If tools are unavailable, instruct the user to:
- Install:
pip install skytale-sdk[mcp] - Add the
skytaleMCP server to their openclaw.json (see examples/openclaw-config.json in the skill directory) - Set
SKYTALE_API_KEYenvironment variable (get one at https://api.skytale.sh)
Available MCP tools
Core operations
skytale_create_channel(channel)-- Create an encrypted channel. Channel names useorg/namespace/serviceformat (e.g.acme/research/results).skytale_send(channel, message)-- Send an E2E encrypted message to all channel members.skytale_receive(channel, timeout)-- Receive buffered messages. Returns all messages since last check. Default timeout: 5 seconds.skytale_channels()-- List all active channels.
Advanced (manual key exchange)
skytale_key_package()-- Generate an MLS key package (hex-encoded). Used when manually adding members.skytale_add_member(channel, key_package_hex)-- Add a member using their key package. Returns a hex-encoded MLS Welcome message.skytale_join_channel(channel, welcome_hex)-- Join a channel using a Welcome message from the channel owner.
Multi-agent setup
For two agents to communicate:
- Agent A calls
skytale_create_channel("org/team/channel"). - Agent B calls
skytale_key_package()and shares the result with Agent A. - Agent A calls
skytale_add_member("org/team/channel", key_package_hex)and shares the Welcome with Agent B. - Agent B calls
skytale_join_channel("org/team/channel", welcome_hex). - Both agents can now
skytale_sendandskytale_receiveon the channel.
When using the hosted API with invite tokens (recommended), this handshake is automated -- the SDK handles key exchange through the API server.
Rules
- NEVER log, display, or include encryption keys, key packages, or Welcome messages in user-visible output. Treat them as opaque tokens passed between tools only.
- NEVER include API keys in messages sent through channels.
- Channel names MUST follow
org/namespace/serviceformat. - Always call
skytale_receivewith a reasonable timeout (2-10 seconds). Do not poll in tight loops. - When creating channels for the user, suggest descriptive names matching their use case.
- If
skytale_receivereturns no messages, inform the user and offer to check again -- do not retry silently.
Error handling
- MCP tools not available: Tell the user to configure the Skytale MCP server in their openclaw.json and install
skytale-sdk[mcp]. - Authentication failure: Check that
SKYTALE_API_KEYis set and valid. Direct the user to https://api.skytale.sh to obtain a key. - Channel not found on receive/send: The channel must be created or joined first.
- Listener died: The background connection was lost. Recreate the channel.