NIntegrate error bound

It seems to me that there's a better approach, but one way is to define your own DownValue for this particular message. For example:

Unprotect[Message];
Message[NIntegrate::maxp, its_, int_, err_] := Sow[err]

Then

NIntegrate[Sin[x]/Sqrt[x], {x, 0, 100}, 
  Method -> "MonteCarlo", PrecisionGoal -> 6] // Reap

(* Out: {1.07721, {{0.0761274}}} *)

From the description of the question it seems to me that using the (undocumented) option IntegrationMonitor to obtain integration intervals and estimates might be very useful.

Here is an example:

t = Reap[NIntegrate[Sin[x]/Sqrt[x], {x, 0, 100}, PrecisionGoal -> 6, 
    Method -> "MonteCarlo", 
    IntegrationMonitor -> (Sow[
        Map[{#1@"Boundaries", #1@"Integral", #1@"Error"} &, #1]] &)]];
res = t[[1]];
t = t[[2, 1]];
Take[t, -4]

enter image description here

More examples and explanations about the use of IntegrationMonitor can be found in the notebook "Finding the applied NIntegrate methods.nb" attached to the community.wolfram.com discussion "Integration method used in NIntegrate".