def cmd(required_params, *, needs_reply=False, node_only=False):
    """Create the internal structure describing a command

    :param required_params: A list of parameters that must be included with the command.
    :param needs_reply: The message needs to be replied to (and must have a uuid).
    :param node_only: The message can only have originated from a node."""
    if 'user' in required_params or 'session' in required_params:
        raise RuntimeError('"user" and "session" are reserved parameter names')
    return required_params, needs_reply, node_only
