Create new estimate
estimateCost: spends quota. Anonymous callers get 3 free tier-1 estimates per UTC day (anon_simple_estimate_daily_limit). With an account it debits credit_cost_for_tier(tier) credits (tier 1/2/3 = 1/3/10), and credits_charged in the response reports the amount.
Return a calibrated probability distribution for a natural-language question.
Args:
question: The natural-language question (e.g. "What will the price of
Bitcoin be in 6 months?").
unit: The unit the answer should be expressed in (e.g. "USD", "people",
"meters").
target_horizon: When the estimate applies (e.g. "6 months", "2030",
"current").
disclaimer_acknowledged: Must be true. Confirms you understand estimates
are probabilistic decision-support only, not financial/medical/legal
advice.
requested_tier_id: Tier (1=fast sync, 2=grounded sync, 3=deep research
async). Default 1.
context: Optional extra context to condition the estimate.
coverage_probability: Width of the confidence interval (0, 1). Default
0.9 (90% CI).
source_inputs: Optional list of structured inputs (files, tables) for
the model to consider. Each item needs source_type
("qualitative_text", "spreadsheet", or "structured_file") and
either content (text) or structured_data (dict/list).
callback_url: Optional webhook URL. When set, the completed or failed
result is POSTed here with an HMAC signature, so you don't need
to poll for async tiers.
api_key: Your Fermi API key from POST /api/v1/accounts. Omit to use the
anonymous tier.
provider: Optional LLM provider selector ("openai" or "anthropic").
When omitted the server uses its configured default. Tier 1
supports both providers; tiers 2-3 currently accept "openai" only.
model: Optional model id for the selected provider. Must match the
model configured for (tier_id, provider); omit to accept the
default.
Returns:
EstimateSuccessResponse as a dict: estimation_interval, distribution_family,
distribution_parameters, point_estimate, reasoning_summary, assumptions,
credits_charged, disclaimer, provider, model, and next_steps.
Plus a `billing` block saying who this call was billed to and what
is left: principal ("anonymous" or "account"), auth_source,
charged_to ("anonymous_quota" or "credits"), credits_charged,
credit_balance, and anonymous_estimates_remaining_today with the
UTC instant the anonymous allowance resets. Call `whoami` to read
the same block without making an estimate.
next_steps.simulate carries the arguments for handing this estimate to
neumann: root_node (distribution_type + distribution_params, ready to
drop into run_simulation's graph.root_nodes) when the family maps
directly, or solve_args for solve_distribution_parameters when it does
not; note says which was emitted.
To combine several estimates into a model with a time axis and get
percentiles, NPV or payback out, feed them into neumann
(https://neumann.kromatic.com) as simulation root nodes -- every
successful estimate carries a next_steps.simulate block with the
arguments already prepared.
Raises:
ToolError: if the estimate service rejects the request (bad tier, out of
credits, unknown provider, missing disclaimer acknowledgement).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes | ||
| model | No | ||
| api_key | No | ||
| context | No | ||
| provider | No | ||
| question | Yes | ||
| callback_url | No | ||
| source_inputs | No | ||
| target_horizon | Yes | ||
| requested_tier_id | No | ||
| coverage_probability | No | ||
| disclaimer_acknowledged | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||