I would suggest to use the DataSourceRequest object and get the search / filter / paging from it to perform the custom check. Then if the check passes you can return the data to the client side by passing the request object to the ToDataSourceResult extension method.
Also please note that we are using custom model binder to be able to bind the data from the request on the server side - you can create another custom model binder to bind the request parameters to custom request object.
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI