MCP server that wraps the Dagster GraphQL API — manage runs, assets, schedules, sensors, and backfills from any MCP client
Neumann is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Monte Carlo ranges for uncertain plans: project cost, budget, timeline, capacity, NPV/IRR/payback.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http neumann-mcp https://neumann.kromatic.com/mcp
# 2 — ask your agent for something these tools do
# run_monte_carlo_simulation, rank_inputs_by_impact, summarize_outcome_scenarios and 8 more
Neumann costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http neumann-mcp https://neumann.kromatic.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
11 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Runs a Monte Carlo simulation of a model and returns the full range of possible outcomes, not one guessed number. A model is a set of uncertain inputs, the formulas that combine them, and the links between them. The simulation draws random values for every input many times; each draw is a trial, and one call is one run. Use this when you need to know how likely different outcomes are for a plan bu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| graph | object | yes | The model. A model has four parts. root_nodes are the uncertain inputs; each one draws a value from a probability distribution in every trial. calc_nodes are formulas that combine values. edges are li |
| seed | no | Optional whole number that fixes the random draws, so repeating the call gives the same result. Exact repeats are guaranteed only for small runs, where trials × nodes × time periods is at most 100,000 | |
| api_key | no | Your Neumann API key. Get one by creating an account (POST https://neumann.kromatic.com/api/v1/accounts, which returns the key once); setup docs: https://kromatic.com/mcp/neumann. Leave it out if your |
Ranks a model's uncertain inputs by how much each one moves a chosen outcome, and returns the data for a tornado chart. A tornado chart is a bar chart with one horizontal bar per input, sorted with the biggest swing at the top. This is a one-at-a-time (OAT) sensitivity analysis. Every input is held at its median while one input at a time is set to low, middle and high values from its own distribut
| Parameter | Type | Required | Notes |
|---|---|---|---|
| graph | object | yes | The model: root_nodes (uncertain inputs), calc_nodes (formulas), edges (links; formulas refer to them like {e1}) and run_params (trials and time periods). Same format as run_monte_carlo_simulation's g |
| target_node_id | no | The id of the outcome node to measure. Defaults to the last calc node in the model, which is usually the final outcome. | |
| time_period | no | Index of the time period to measure, counting from 0: with 12 monthly periods, 11 is month 12. Defaults to the last period. This measures the node's value in that one period, not a total. For a cumula | |
| quantiles | no | A list of points in each input's own distribution to try. Each point is a fraction from 0 to 1 naming a percentile: 0.05 is the 5th percentile, the value 5% of outcomes fall below. Default [0.05, 0.5, | |
| num_quantiles | no | Instead of quantiles: how many points to try, an even whole number from 2 to 10. That many percentiles are spread evenly between the 5th and 95th, and the median (0.5) is added. 2 gives [0.05, 0.5, 0. | |
| seed | no | Optional whole number that fixes the random draws, so repeating the call gives the same result. Exact repeats are guaranteed only for small runs, where trials × nodes × time periods is at most 100,000 | |
| api_key | no | Your Neumann API key. Get one by creating an account (POST https://neumann.kromatic.com/api/v1/accounts, which returns the key once); setup docs: https://kromatic.com/mcp/neumann. Leave it out if your |
Runs a model once and reports one outcome's worst, median and best values. By default, worst is the lowest value in any trial, median is the middle value, and best is the highest value. Worst always means lowest, so for a cost the worst case is the cheapest one. You can ask for other percentiles instead, such as the 10th and 90th. Use this when you want a short worst, typical and best case story r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| graph | object | yes | The model: root_nodes (uncertain inputs), calc_nodes (formulas), edges (links; formulas refer to them like {e1}) and run_params (trials and time periods). Same format as run_monte_carlo_simulation's g |
| target_node_id | no | The id of the outcome node to measure. Defaults to the last calc node in the model, which is usually the final outcome. | |
| time_period | no | Index of the time period to measure, counting from 0: with 12 monthly periods, 11 is month 12. Defaults to the last period. This measures the node's value in that one period, not a total. For a cumula | |
| percentiles | no | A list of percentiles of the outcome to report. Each is a fraction from 0 to 1: 0.1 is the 10th percentile, the value 10% of trials fall below. Default [0, 0.5, 1]: 0 is the lowest trial (labelled wor | |
| seed | no | Optional whole number that fixes the random draws, so repeating the call gives the same result. Exact repeats are guaranteed only for small runs, where trials × nodes × time periods is at most 100,000 | |
| api_key | no | Your Neumann API key. Get one by creating an account (POST https://neumann.kromatic.com/api/v1/accounts, which returns the key once); setup docs: https://kromatic.com/mcp/neumann. Leave it out if your |
Checks a model for mistakes before you run it and lists every problem it finds. It looks for loops with no delay, nodes that are not connected, unknown distributions, missing or invalid distribution parameters, and broken formulas. A loop, including an edge from a node to itself, is allowed and is not an error when at least one edge in it has delay 1 or more. Use this when you have built or edited
| Parameter | Type | Required | Notes |
|---|---|---|---|
| graph | object | yes | The model: root_nodes (uncertain inputs), calc_nodes (formulas), edges (links; formulas refer to them like {e1}) and run_params (trials and time periods). Same format as run_monte_carlo_simulation's g |
| api_key | no | Your Neumann API key. Optional: this tool is free either way. Pass it so the billing block in the result shows your account, and so the no-account limits of 1,000 trials and 20 nodes do not apply. Get |
Predicts how large a run of a model will be and how many credits it will cost, without running it. Use this before running a large or unfamiliar model, or to check that an account can afford it. It does not look for mistakes; use check_simulation_model for that. It returns the number of trials, time periods, nodes and edges, the estimated peak memory in MB, a complexity score, the size tier (small
| Parameter | Type | Required | Notes |
|---|---|---|---|
| graph | object | yes | The model: root_nodes (uncertain inputs), calc_nodes (formulas), edges (links; formulas refer to them like {e1}) and run_params (trials and time periods). Same format as run_monte_carlo_simulation's g |
| api_key | no | Your Neumann API key. Optional: this tool is free either way. Pass it so the billing block in the result shows your account, and so the no-account limits of 1,000 trials and 20 nodes do not apply. Get |
Turns a low-to-high guess, such as "between 80 and 120, 90% sure", into the exact parameters a model input needs. A distribution is the shape of the uncertainty, for example normal (a bell curve), log_normal (skewed and never negative), triangle or uniform. The low and high values are the edges of the range you are that sure of, not hard limits. Use this when you have a rough estimate and need dis
| Parameter | Type | Required | Notes |
|---|---|---|---|
| distribution_type | string | yes | The distribution to fit. Which to pick: a rate or proportion between 0 and 1 (conversion, churn) → beta, with low and high given as fractions (2% is 0.02). A positive amount that can run high (revenue |
| min_estimate | no | The low end of your range. Required for every type except constant and bernoulli. Exponential ignores it, but a value must still be sent (any number works). | |
| max_estimate | no | The high end of your range. Required for every type except constant and bernoulli. | |
| percentile_range | number | no | A single fraction: the share of outcomes that should fall between the low and high ends, which is how sure you are. The default 0.9 means the middle 90%: a 5% chance of being below the low end and 5% |
| mode_estimate | no | The most likely value. Required for constant (the fixed value), bernoulli (the chance of success, from 0 to 1) and binomial. For triangle it sets the peak; it must lie strictly between low and high, a | |
| api_key | no | Your Neumann API key. Optional: this tool is free either way. Pass it so the billing block in the result shows your account. Get one by creating an account (POST https://neumann.kromatic.com/api/v1/ac |
Turns a distribution's parameters into the low and high ends of the range that holds a chosen share of outcomes, by default the middle 90%. It also gives the mean, median, mode, standard deviation and any percentiles you ask for. If you give a threshold, it gives the chance of landing below and above it. Use this when you have distribution parameters, from a model or from fermi (a companion foreca
| Parameter | Type | Required | Notes |
|---|---|---|---|
| distribution_type | string | yes | The distribution's name. Accepts every type a model input accepts: normal, log_normal, uniform, triangle, beta (values are fractions from 0 to 1), gamma, exponential, poisson, bernoulli, binomial, cat |
| distribution_params | object | yes | The distribution's parameters, in the same form a model input uses, for example {"mean": 100, "std": 15} for normal or {"mu": 9.2, "sigma": 0.6} for log_normal. |
| percentile_range | number | no | A single fraction: the share of outcomes the returned range should hold, centred on the median. The default 0.9 means the middle 90%, so the range runs from the 5th to the 95th percentile. |
| quantiles | no | A list of percentiles to report. Each is a fraction from 0 to 1: 0.05 is the 5th percentile, the value 5% of outcomes fall below. No repeats. Default [0.05, 0.1, 0.5, 0.9, 0.95], returned under keys p | |
| threshold | no | Optional value to compare against. The result gives the chance of being at or below it and the chance of being above it. For whole-number distributions it gives the chance of being below and above it, | |
| api_key | no | Your Neumann API key. Optional: this tool is free either way. Pass it so the billing block in the result shows your account. Get one by creating an account (POST https://neumann.kromatic.com/api/v1/ac |
Gets the saved status and summary of a simulation you already ran, using its run_id. Use this when you need an earlier result again, for example in a later turn, without running the model again. You never need it to wait for a run: run_monte_carlo_simulation returns its full result when it finishes. Only run_monte_carlo_simulation gives out a run_id. It returns the run's status, size tier, trial c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| run_id | string | yes | The run_id returned by run_monte_carlo_simulation. |
| api_key | no | The same API key used for the original run. Leave it out if your connection is signed in as that account, or if the run was made without an account. A different caller gets "not found". |
Shows who Neumann thinks you are and what you can still do: your credit balance if you have an account, or your free runs left today and when they reset if you do not. Use this when you need to know, before or after a run, whether a call will use credits or a free run, how much is left, or whether you are signed in. An api_key that is not recognized returns an unauthorized error. It returns whethe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| api_key | no | Your Neumann API key. Optional. Leave it out to ask about your current connection, signed in or not. Get one by creating an account (POST https://neumann.kromatic.com/api/v1/accounts, which returns th |
Emails your feedback, feature request or bug report to the Neumann team, with a copy to the email address you give. Use this when something in Neumann is wrong, missing or confusing and a person should see it. Check with the user first, because it sends a real email and shares their address. It returns status "sent" and a confirmation message. No account is needed. If you pass an api_key, your acc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| feedback_type | string | yes | feedback for general comments, feature_request for something new, or bug for something broken. |
| message | string | yes | What to tell the team, 10 to 5,000 characters. Be specific: what you tried, what happened and what you expected. |
| sender_email | string | yes | Email address to send a copy to, so there is a record. |
| sender_name | no | Optional name, up to 200 characters. | |
| api_key | no | Your Neumann API key. Optional. If given, your account id is added to the email. |
Buys Neumann credits by charging the payment card already saved on your account. Credits pay for simulations run with an account. Use this when an account is low on credits and the user has agreed to the purchase. If no card is saved yet, it buys nothing and charges nothing. Instead it returns payment_status checkout_required and a checkout_url: the user opens that link in a browser to save a card
| Parameter | Type | Required | Notes |
|---|---|---|---|
| credits | integer | yes | How many credits to buy. At least 1. |
| api_key | no | Your Neumann API key. Required unless your connection is signed in with billing permission (the neumann:billing scope). Get one by creating an account (POST https://neumann.kromatic.com/api/v1/account |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Neumann or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| run_monte_carlo_simulation | state-write | state-write: declares readOnlyHint: false |
| rank_inputs_by_impact | state-write | state-write: declares readOnlyHint: false |
| summarize_outcome_scenarios | state-write | state-write: declares readOnlyHint: false |
| check_simulation_model | no tags | |
| estimate_simulation_size_and_cost | no tags | |
| convert_range_to_distribution | no tags | |
| convert_distribution_to_range | no tags | |
| get_simulation_results | no tags | |
| check_account_and_credits | no tags | |
| send_feedback | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| buy_credits | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.2.34.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Neumann can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.