whatif
Was dieses MCP kann
Builds, validates, calibrates, compares, and simulates Petri-net process models using event logs, scenarios, invariants, and diagnostics.
Tools
Eingabeschema
{'type': 'object', 'required': ['fromModel', 'fromPort', 'toModel', 'toPort'], 'properties': {'toPort': {'type': 'string', 'description': 'element id of the declared input port on toModel'}, 'toModel': {'type': 'string', 'description': 'id of the model receiving the connection'}, 'fromPort': {'type': 'string', 'description': 'element id of the declared output port on fromModel (see GET /api/models/{id}/ports)'}, 'fromModel': {'type': 'string', 'description': "id of the model supplying the connection's output"}, 'transform': {'type': 'string', 'description': "how fromPort's value becomes toPort's. A plain non-negative number is applied by sim_run_pipeline as a scale factor on the resampled rate; any other text (a unit note, a resample window, an aggregation) is recorded, reported by sim_run_pipeline as an assumption, and treated as 1:1"}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'log'], 'properties': {'id': {'type': 'string', 'description': 'model id to calibrate'}, 'log': {'type': 'string', 'description': 'the event log, as CSV text'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'verify': {'type': 'boolean', 'description': 'run the permutation experiment (costs simulation; default false, and classes then say they are candidates)'}, 'inline_context': {'type': 'boolean', 'description': 'embed the full JSON-LD @context map in the result instead of the URL it is served from (https://sim.pflow.xyz/ns/v1/context). Default false: the URL resolves to the identical map, so only set this for an offline consumer that cannot fetch it.'}}}
Eingabeschema
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'source code to analyse'}, 'name': {'type': 'string', 'description': 'name for the derived model'}, 'focus': {'type': 'string', 'description': 'control-flow (default), state-machine, resources or concurrency'}, 'language': {'type': 'string', 'description': 'source language hint, e.g. go, python, javascript'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'scenarios'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'full': {'type': 'boolean', 'description': 'include the sample-grid time series in every result (large; default false); a scenario with its own "summary": true is left summarized regardless'}, 'scenarios': {'type': 'string', 'description': 'JSON array of at most 20 scenarios, each with a name, e.g. [{"name":"today","hours":8},{"name":"one more","hours":8,"marking":{"staff/available":3}},{"name":"bigger batches","hours":8,"params":{"batch_size":6}}]; each is held to sim_scenario\'s caps'}}}
Eingabeschema
{'type': 'object'}
Eingabeschema
{'type': 'object', 'required': ['component'], 'properties': {'id': {'type': 'string', 'description': 'model to compose onto; omit to start fresh'}, 'name': {'type': 'string', 'description': 'model name for the stored result (kept from the base when composing onto an id)'}, 'attach': {'type': 'string', 'description': 'JSON object mapping port name -> existing place id'}, 'params': {'type': 'string', 'description': 'JSON object overriding param defaults, e.g. {"staff": 3}'}, 'prefix': {'type': 'string', 'description': 'instance prefix for created elements (default: component name)'}, 'component': {'type': 'string', 'description': 'registry component name (see sim_components)'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'log'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'log': {'type': 'string', 'description': 'the event log, as CSV text'}}}
Eingabeschema
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'collection name'}}}
Eingabeschema
{'type': 'object', 'required': ['model'], 'properties': {'model': {'type': 'string', 'description': 'the model JSON'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'hours': {'type': 'number', 'description': 'horizon (default 8, max 168)'}, 'realizations': {'type': 'number', 'description': 'SSA runs averaged, max 200 (default 24)'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'seed': {'type': 'number', 'description': 'PRNG seed (default 1)'}, 'cases': {'type': 'number', 'description': 'cases to generate (default 200, max 2000 over MCP)'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id to delete'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'seed': {'type': 'number', 'description': 'seed shared by every run, so differences measure the knob and not the dice (default 7)'}, 'hours': {'type': 'number', 'description': 'horizon per run (default 8, max 168)'}, 'realizations': {'type': 'number', 'description': "runs averaged per measurement, max 200. Leave unset and the default ADAPTS: a 24-realization pilot that doubles while the baseline outcome sits inside its own noise floor, up to 200 (or maxRealizations, if set); the report's realizations field and sample-size finding record where it settled and why. Set it and that exact count is used, never more. If the report still says underpowered after adapting, raise hours or set a count explicitly."}, 'inline_context': {'type': 'boolean', 'description': 'embed the full JSON-LD @context map in the result instead of the URL it is served from (https://sim.pflow.xyz/ns/v1/context). Default false: the URL resolves to the identical map, so only set this for an offline consumer that cannot fetch it.'}, 'maxRealizations': {'type': 'number', 'description': 'bounds how far the adaptive default may escalate (default 200, the same ceiling an explicit realizations refuses above). Ignored once realizations is set. For a caller with its own latency budget, not for narrowing a report.'}}}
Eingabeschema
{'type': 'object', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'description': 'model id (before)'}, 'b': {'type': 'string', 'description': 'model id (after)'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'groups'], 'properties': {'id': {'type': 'string', 'description': 'model id (needs simulation.objective, players with turnPlace)'}, 'groups': {'type': 'string', 'description': 'JSON object: group name -> transition ids sharing one fitted multiplier, e.g. {"detectors":["x_win_0","o_win_0"],"draw":["call_draw"]}'}, 'options': {'type': 'string', 'description': 'JSON: {"games":20,"positions":40,"iters":40,"horizon":3,"realizations":40,"seed":11,"engine":""} (the defaults shown; 0 or unset takes the default). Caps: games at most 100, positions at most 100, iters at most 100, realizations at most 200, horizon at most 10000; over a cap, a negative value or an unknown key is refused'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'entity id to look up'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'player'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'player': {'type': 'string', 'description': 'player name from simulation.players'}, 'horizon': {'type': 'number', 'description': 'model time to explore ahead (default 3, max 10000)'}, 'marking': {'type': 'string', 'description': 'JSON object, sparse marking override (the position to evaluate from); default = the initial marking'}, 'realizations': {'type': 'number', 'description': 'SSA rollouts per candidate move (default 40, max 200)'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'operations'], 'properties': {'id': {'type': 'string', 'description': 'model id to edit'}, 'name': {'type': 'string', 'description': 'optional name for the edited model'}, 'operations': {'type': 'string', 'description': 'JSON array of operations'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'binding id'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id (content hash)'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'license'], 'properties': {'id': {'type': 'string', 'description': 'model id to dedicate'}, 'license': {'type': 'string', 'description': 'one of CC0-1.0, CC-BY-4.0, CC-BY-SA-4.0'}}}
Eingabeschema
{'type': 'object', 'required': ['subject', 'predicate', 'object'], 'properties': {'object': {'type': 'string', 'description': 'id of the entity the relation points to'}, 'subject': {'type': 'string', 'description': 'id of the entity the relation starts from'}, 'predicate': {'type': 'string', 'description': 'the relationship, e.g. hasMember, cites, supersedes — no fixed vocabulary'}}}
Eingabeschema
{'type': 'object'}
Eingabeschema
{'type': 'object'}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'map id'}}}
Eingabeschema
{'type': 'object'}
Eingabeschema
{'type': 'object', 'required': ['data'], 'properties': {'data': {'type': 'string', 'description': 'the table as a JSON object'}}}
Eingabeschema
{'type': 'object'}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'subject id to traverse from'}, 'predicate': {'type': 'string', 'description': 'restrict to this predicate; omit for every outgoing relation'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'parameters', 'objectives'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'seed': {'type': 'number', 'description': 'sampling seed, a whole number (default 42)'}, 'hours': {'type': 'number', 'description': 'horizon per run (default 8, above 0 and at most 10000)'}, 'samples': {'type': 'number', 'description': 'Monte Carlo samples (default 100, 1..1000; outside that is refused)'}, 'objectives': {'type': 'string', 'description': 'JSON array of {"place": id, "direction": "max"|"min"}'}, 'parameters': {'type': 'string', 'description': 'JSON object transition_id → [min, max] rate range, e.g. {"finish_brew": [10, 40]}'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'param_x', 'param_y', 'observable', 'range_x', 'range_y'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'hours': {'type': 'number', 'description': 'horizon per run (default 8, above 0 and at most 10000)'}, 'param_x': {'type': 'string', 'description': 'first transition id'}, 'param_y': {'type': 'string', 'description': 'second transition id'}, 'range_x': {'type': 'string', 'description': 'JSON [start, stop, n] for param_x: non-negative rates, n a whole number 2..40'}, 'range_y': {'type': 'string', 'description': 'JSON [start, stop, n] for param_y: non-negative rates, n a whole number 2..40'}, 'log_scale': {'type': 'boolean', 'description': 'space the grid in log10 (default false)'}, 'observable': {'type': 'string', 'description': 'place id whose final value fills the grid'}}}
Eingabeschema
{'type': 'object', 'required': ['parent', 'text'], 'properties': {'text': {'type': 'string', 'description': 'the natural-language instruction'}, 'parent': {'type': 'string', 'description': 'id to run the prompt against — a model, prompt, artifact, or map'}, 'system': {'type': 'string', 'description': 'optional system-level instructions, in addition to the parent context this tool always supplies'}}}
Eingabeschema
{'type': 'object', 'properties': {'ids': {'type': 'string', 'description': 'JSON array of model ids to consider, e.g. ["id1","id2"]. Omit to scan every model ListFor("") would list (the public catalog), truncated to limit.'}, 'limit': {'type': 'number', 'description': 'maximum number of models to diagnose (default 10, 1..25; over 25 is refused, and so are explicit ids naming more models than limit) — a cost control, since this runs a simulation per model'}, 'realizations': {'type': 'number', 'description': "realizations per model's Diagnose run (default 8, 1..16; outside that is refused) — deliberately small, this only needs to name a shape, not measure precise influence"}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'scenario': {'type': 'string', 'description': "optional scenario JSON to run for the data tabs; sim_scenario's defaults (hours 8, realizations 16, seed 20260809) fill whatever is omitted"}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'html'], 'properties': {'id': {'type': 'string', 'description': 'model id the app presents'}, 'html': {'type': 'string', 'description': 'the complete self-contained HTML document'}}}
Eingabeschema
{'type': 'object', 'required': ['id', 'scenarios'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'scenarios': {'type': 'string', 'description': 'JSON array of scenarios, each with a name, e.g. [{"name":"today","hours":8},{"name":"one more","hours":8,"marking":{"staff/available":3}}]; sim_compare\'s defaults (hours 8 and realizations 16 per scenario, seed 20260809) fill whatever is omitted'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id to run'}, 'scenario': {'type': 'string', 'description': "scenario JSON (hours, samples, seed, marking, rates, schedule, summary — the same shape sim_scenario takes); sim_scenario's defaults (hours 8, realizations 16, seed 20260809) fill whatever is omitted, and the receipt's scenario records the filled-in values so its replay reproduces this run. The result hash covers the result as returned, so a summary: true scenario certifies the summarized form and replays to it"}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id to refine'}, 'tags': {'type': 'string', 'description': 'JSON object of place OR transition id -> {key: value}, e.g. {"nurse_avail":{"refine.shift":"night"}}. Keys not prefixed refine. are stored as metadata and refine nothing. classify.go\'s colour refinement seeds from both places\' and transitions\' tags, so either kind of id works here.'}, 'signer': {'type': 'string', 'description': 'optional {"type":"eth"|"ed25519","address":"..."} — signs the lineage claim so it is the refiner\'s word rather than the server\'s account of a session'}, 'signature': {'type': 'string', 'description': 'optional hex signature over the CID of the signed claim; see modelstore.SignedClaim for the exact bytes. An unverifiable signature is refused, not stored with a flag.'}, 'assertedClasses': {'type': 'string', 'description': 'JSON array, e.g. [{"id":"items","members":["item0","item1"],"note":"one stocking decision"}]'}}}
Eingabeschema
{'type': 'object', 'required': ['prompt'], 'properties': {'text': {'type': 'string', 'description': "override the original prompt's text; default reuses it verbatim"}, 'prompt': {'type': 'string', 'description': 'id of the sim_prompt (or earlier sim_reroll) to re-run'}, 'system': {'type': 'string', 'description': "override the original prompt's system text; default reuses it verbatim"}}}
Eingabeschema
{'type': 'object', 'required': ['bindingIds'], 'properties': {'seed': {'type': 'number', 'description': "shared seed across every model's run (default 1)"}, 'hours': {'type': 'number', 'description': 'horizon in hours, shared across every model in the pipeline (default 8)'}, 'bindingIds': {'type': 'string', 'description': 'JSON array of binding ids to run together, e.g. ["id1","id2"] — every model these bindings touch is included automatically.'}, 'realizations': {'type': 'number', 'description': 'realizations per model (default 0, which the engine runs as a single realization — one SSA trajectory per model, so set it, e.g. 16 as sim_scenario defaults to, when the resampled series should be a mean rather than one draw; max 200)'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'scenario': {'type': 'string', 'description': 'scenario JSON, e.g. {"hours":8,"samples":60,"realizations":16,"seed":7,"marking":{"staff/available":3},"params":{"batch_size":6},"schedule":{"arrive":[{"until":2,"value":12},{"until":8,"value":4}]},"engine":"ssa","summary":false}; hours defaults to 8, samples to 60, realizations to 16, seed to 20260809, summary to false (full trajectory); hours above 10000, realizations above 200 or samples above 5000 are refused'}}}
Eingabeschema
{'type': 'object', 'required': ['old', 'new'], 'properties': {'new': {'type': 'string', 'description': 'model id of the successor'}, 'old': {'type': 'string', 'description': 'model id being replaced'}}}
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'properties': {'type': 'string', 'description': 'JSON array of properties, e.g. [{"kind":"deadlock-free"},{"kind":"mutual-exclusion","places":["win_x","win_o"]},{"kind":"invariant","expr":"a + 2*b == 10"}]. Default: bounded + deadlock-free.'}}}
Letzte Tool-Änderungen
Ähnliche MCP-Server
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
Us Iso Grid
Provides real-time and recent electricity grid data for CAISO, ERCOT, and NYISO, including demand, forecasts, fuel mix, emissions…
AOI — Environmental Intelligence for AI Agents
Provides paid, quote-based environmental intelligence assessments covering climate risk, emissions, biodiversity, air quality, ha…
Pharma Intel
Combines clinical trial, FDA, PubMed, drug identification, safety, pipeline, sales, patent, and pharmaceutical sponsor data for d…
Data Gov Sg
Provides Singapore government datasets and environmental feeds, including air quality, dataset metadata, and routed structured re…
Nih Reporter
Searches and analyzes NIH-funded research projects, awards, publications, funding trends, expirations, investigators, organizatio…
Georgia Energy
Exposes live and historical Georgian electricity-grid telemetry, generation, demand forecasts, prices, publications, and tenders.