{"name":"neumann","description":"Agent-accessible Monte Carlo simulation service. Submit a graph of probabilistic root nodes and calculated nodes; get back the resulting distribution as summary statistics.","version":"0.1.0","transport":{"streamable-http":{"url":"https://neumann.krobar.ai/mcp","status":"live","note":"Official MCP Streamable-HTTP transport (stateless). Connect with the mcp Python SDK or any MCP client. Authenticate by passing your raw signup api_key as the api_key tool argument; the raw api_key is NOT a bearer. Only opaque nmn_oat_/nmn_pat_ tokens (mint via POST /api/v1/tokens) are valid Authorization: Bearer values. A body-bearing POST to /mcp (no trailing slash) is 308-redirected to /mcp/, preserving method and body."},"http":{"url":"https://neumann.krobar.ai/mcp/tools","call_url":"https://neumann.krobar.ai/mcp/tools/run_simulation","note":"Plain-REST mirror of the MCP tools for non-MCP clients. GET /mcp/tools to list; POST /mcp/tools/<name> to call. Authenticate via the X-API-Key header or the api_key body field."}},"auth":{"type":"api_key","header":"X-API-Key","tool_argument":"api_key","bearer_token_prefixes":["nmn_oat_","nmn_pat_"],"bearer_token_mint_url":"https://neumann.krobar.ai/api/v1/tokens","bearer_token_mint_method":"POST","signup_url":"https://neumann.krobar.ai/api/v1/accounts","signup_method":"POST","note":"POST /api/v1/accounts with no body to create an account and receive a raw api_key plus starter credits. The raw api_key goes in the X-API-Key header or the api_key tool argument — it is NOT a bearer token. To use Authorization: Bearer, mint an opaque nmn_oat_/nmn_pat_ token via POST /api/v1/tokens. Anonymous (no credential) access is allowed and free, but unaccounted."},"tools":[{"name":"run_simulation","description":"Run a Monte Carlo simulation on a supplied graph. Small runs return the full summarised result inline; large runs return a run_id to stream (POST /api/v1/runs SSE) or poll (get_results). Debits credits per run for authenticated callers."},{"name":"oat_sensitivity","description":"Run a one-at-a-time (OAT) tornado sensitivity analysis: for each scalar root node, sweep it over a set of quantiles (others held at baseline) and measure the target node's response. Returns a tornado-ranked list (response_curve, elasticity, rank). Debits one credit per analysis for authenticated callers."},{"name":"scenario_analysis","description":"Best/median/worst scenario summary for a target node across trials. Runs the simulation once (reusing the run pipeline) and returns, per requested percentile (default worst p0 / median p50 / best p100), the target node's output value plus a best-effort per-root driving input. Debits one credit per analysis for authenticated callers."},{"name":"validate_graph","description":"Validate a graph with the engine's ModularGraphValidator and return a structured list of issues (rule, severity, affected elements)."},{"name":"estimate","description":"Pre-flight runtime/memory estimate for a graph without running it: estimated peak memory, complexity, the tier it would run as, and the credit cost."},{"name":"solve_distribution_parameters","description":"Solve distribution parameters from a target min/max range and confidence so a human-style estimate becomes engine-ready distribution_params."},{"name":"get_results","description":"Fetch the status and summary for a previously-submitted run."},{"name":"feedback","description":"Send feedback, a feature request, or a bug report to the Neumann team. Emails the submission to the team and CCs your sender_email so you keep a copy. Optionally pass api_key to attach your account id for context; anonymous submissions are allowed."}],"docs":{"quickstart":"https://neumann.krobar.ai/llms.txt","full":"https://neumann.krobar.ai/agents.md","contract":"https://neumann.krobar.ai/api/v1/contract","openapi":"https://neumann.krobar.ai/openapi.json","swagger":"https://neumann.krobar.ai/docs"}}