diff --git a/doc/Protocol-A.texi b/doc/Protocol-A.texi
index 9b2ca8297c21d5b94d15e55251aba8dbbdc16d52..a5c42a3ef265893cc64dbb03b0debb09b8e500af 100644
--- a/doc/Protocol-A.texi
+++ b/doc/Protocol-A.texi
@@ -5534,13 +5534,20 @@ number 1.
 @table @errorcode
 @item login-first
 Login required before issuing this call.
+
 @item undefined-person
 The person @rarg{person} does not exist.
+
 @item undefined-conference
 The conference @rarg{person} does not exist or is secret.
+
 @item index-out-of-range
 @rarg{first} is higher than the index of the last conference in the
 person's membership list.
+
+@item bad-bool
+@rarg{want-read-texts} must be either @samp{0} or @samp{1}.
+
 @end table
 
 
@@ -6263,15 +6270,22 @@ time both the logout and login messages are sent.
 @table @errorcode
 @item undefined-person
 The person @rarg{person} does not exist.
+
 @item login-disallowed
 Logins have been disabled and person @rarg{person} does not have enough
 privileges to override.
+
 @item invalid-password
 The password @rarg{passwd} is not the password of @rarg{person} and the
 currently logged in person is not the supervisor of @rarg{person} and
 does not have enough privileges set and enabled to log in anyway.
+
 @item conference-zero
 Attempt to log in as person number 0.
+
+@item bad-bool
+@rarg{invisible} must be either @samp{0} or @samp{1}.
+
 @end table
 
 
@@ -6655,9 +6669,15 @@ pattern ``@badspell{T.*[cC]}''.
 @subheading Error codes
 
 @table @errorcode
+
 @item regexp-error
 Error compiling the regexp @rarg{regexp}.  Perhaps the pattern is
 not a correct regexp.
+
+@item bad-bool
+@rarg{want-persons} and @rarg{want-confs} must be either @samp{0} or
+@samp{1}.
+
 @end table
 
 
@@ -6732,7 +6752,13 @@ and persons matching the pattern ``T C''.
 
 @subheading Error codes
 
-This call always succeeds.
+@table @errorcode
+
+@item bad-bool
+@rarg{want-pers} and @rarg{want-confs} must be either @samp{0} or
+@samp{1}.
+
+@end table
 
 
 @node set-last-read
@@ -7027,7 +7053,14 @@ have the proper visibility).
 
 @subheading Error codes
 
-This call always succeeds.
+@table @errorcode
+
+@item bad-bool
+@rarg{want-visible} and @rarg{want-invisible} must be either @samp{0}
+or @samp{1}.
+
+@end table
+
 
 
 @node get-static-session-info
@@ -7689,13 +7722,20 @@ memberships, starting with number 1.
 @table @errorcode
 @item login-first
 Login required before issuing this call.
+
 @item undefined-person
 The person @rarg{person} does not exist.
+
 @item undefined-conference
 The conference @rarg{person} does not exist or is secret.
+
 @item index-out-of-range
 @rarg{first} is higher than the index of the last conference in the
 person's membership list.
+
+@item bad-bool
+@rarg{want-read-texts} must be either @samp{0} or @samp{1}.
+
 @end table
 
 
@@ -8144,13 +8184,20 @@ passive (@samp{01000000}).
 @table @errorcode
 @item undefined-person
 @rarg{person} does not exist, or no access to person.
+
 @item undefined-conference
 Conference @rarg{conference} does not exist, or is secret.
+
 @item conference-zero
 @rarg{conference} is zero.
+
 @item not-member
 @rarg{person} is not a member of @rarg{conference} or insufficient
 privileges to find out if @rarg{person} is a member.
+
+@item bad-bool
+@rarg{want-read-ranges} must be either @samp{0} or @samp{1}.
+
 @end table
 
 
@@ -8223,13 +8270,19 @@ memberships, starting with number 1.
 @table @errorcode
 @item login-first
 Login required before issuing this call.
+
 @item undefined-person
 The person @rarg{person} does not exist.
 @item undefined-conference
 The conference @rarg{person} does not exist or is secret.
+
 @item index-out-of-range
 @rarg{first} is higher than the index of the last conference in the
 person's membership list.
+
+@item bad-bool
+@rarg{want-read-ranges} must be either @samp{0} or @samp{1}.
+
 @end table
 
 
@@ -8731,8 +8784,8 @@ should not trust them.
 
 @table @errorcode
 
-@item index-out-of-range
-The @rarg{use-utc} argument must be 0 or 1.
+@item bad-bool
+@rarg{use-utc} must be either @samp{0} or @samp{1}.
 
 @end table
 
@@ -9559,6 +9612,11 @@ You don't have enough privileges to set the specified weight.
 The scheduling weight must be non-zero.
 @field{error-status} is undefined.
 
+@item bad-bool (61)
+An argument of type @type{BOOL} was given a value that is neither
+@samp{0} nor @samp{1}.
+@field{error-status} is undefined.
+
 @end table
 
 
@@ -11108,6 +11166,10 @@ of texts linked to the relevant text via comment or footnote links:
 @asynclink{async-new-text}, @asynclink{async-new-recipient} and
 @asynclink{async-sub-recipient}.
 
+@item All requests that take a @type{BOOL} argument now return the
+error @errorcode{bad-bool} if the argument is anything but @samp{0} or
+@samp{1}.
+
 @end itemize
 
 
@@ -11452,8 +11514,8 @@ Types}.
 
 @emph{New error codes:} @errorcode{invalid-range},
 @errorcode{invalid-range-list}, @errorcode{priority-denied},
-@errorcode{weight-denied}, @errorcode{weight-zero} and
-@errorcode{undefined-measurement}.
+@errorcode{weight-denied}, @errorcode{weight-zero},
+@errorcode{undefined-measurement} and @errorcode{bad-bool}.
 
 @emph{New async messages:}
 @itemize @bullet