Hi Marco, Ci hai beccati, the interpretation of query parameters has changed with 12.3: Defaults will no longer be cast to the parameter type anymore, as we found the underlying mechanism to be too idiosyncratic and error-prone. As you have already discovered, true() and false() are now allowed and supported as annotation values. If you need to make your code backward-compatible, you can use either use an optional type for values whose Boolean value is false (this includes false(), 0, empty strings)… declare %rest:path('test') %rest:query-param('b', '{$b}') function abcde($b as xs:boolean?) { (: and so on :) }; …or use strings and do explicit casts afterwards. declare %rest:path('test') %rest:query-param('b', '{$b}', 'false') function abcde($b as xs:string) { if(xs:boolean($b)) { (: and so on :) } }; Spero che aiuti, Christian ________________________________________ Von: Marco Lettere via BaseX-Talk <basex-talk@mailman.uni-konstanz.de> Gesendet: Mittwoch, 20. Mai 2026 18:57 An: basex-talk@mailman.uni-konstanz.de Betreff: [basex-talk] Strictre type checks on RestXQ Hello all, I have a code similar to [1] and used to call it like: curl -X POST "https://myservice.local?compress=false"<https://myservice.local?compress=false>. It worked. Yesterday I moved to official Basex 12.3 version and started getting the following error: Value of 'compress' must be of type xs:boolean, supplied: "false". (hint: ....) Is this a recent implementation change that enforces this type-check? I've not been able to identify the changes in the code base. Apparently, I can fix this by changing 'false' to false() in the annotation but do you have any idea whether this will be back compatible to older basex versions? Thanks! Marco. [1] declare %rest:path("store") %rest:POST %rest:query-param("compress", "{$compress}", 'false') %rest:produces("application/xml") function _:store($compress as xs:boolean) { () };