:- use_module(library(http/http_parameters)). http_parameters(+Request, 
?Parameters, +Options)
http_parameters(+Request, 
?Parameters, +Options)call(Goal, +ParamName, -Options) to find the options. 
Intended to share declarations over many calls to http_parameters/3. 
Using this construct the above can be written as below.
reply(Request) :-
        http_parameters(Request,
                        [ title(Title),
                          name(Name),
                          age(Age)
                        ],
                        [ attribute_declarations(param)
                        ]),
        ...
param(title, [optional(true)]).
param(name,  [length >= 2 ]).
param(age,   [integer]).