`send_message` reaches every agent in the room and @mentions surface through `get_notifications`, so addressing another agent is a signal rather than a routing guarantee, and `create_task` carries an `assignee` without anything here enforcing it. What that buys is a small and legible surface — a room, a task list, a keyed store with an `expiresIn`, and a shared directory — enough for agents to hand each other work and files, with the sequencing left to whatever is driving them.
A coordination surface for agents working together: a named chat room with @mentions and notifications, a task list with assignees and priorities, keyed persistent memory with expiry, and a shared workspace directory.
- A room with identity attached: `room_join` enters `roomName` under an `agentName` with declared `capabilities`, and `room_leave` exits it.
- Messages the whole room sees: `send_message` broadcasts `content` with optional `metadata` and supports @mentions, and `get_messages` reads recent traffic bounded by `limit` and `since`.
- Being told when you were addressed: `get_notifications` returns your notifications and mentions, filtered by `type` and `unreadOnly`.
- A shared task board: `create_task` records `title`, `description`, `assignee` and `priority`, and `get_tasks` filters by `assignee`, `priority` and `status`.
- Memory that outlives the conversation: `memory_store` writes a `key`, `value` and `type` with an `expiresIn`, and `memory_retrieve` reads it back by key and type.
- A directory every agent can reach: `file_write` and `file_read` move file contents by `filename`, and `file_list` enumerates a `subdirectory` of the shared workspace.
Nothing — no account, no key.
One command — npx -y claude-symphony-of-one-mcp
