이 MCP로 할 수 있는 일
Builds, validates, calibrates, compares, and simulates Petri-net process models using event logs, scenarios, invariants, and diagnostics.
도구
입력 스키마
{'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"}}}
입력 스키마
{'type': 'object', 'required': ['id', 'log'], 'properties': {'id': {'type': 'string', 'description': 'model id to calibrate'}, 'log': {'type': 'string', 'description': 'the event log, as CSV text'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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'}}}
입력 스키마
{'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'}}}
입력 스키마
{'type': 'object'}
입력 스키마
{'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)'}}}
입력 스키마
{'type': 'object', 'required': ['id', 'log'], 'properties': {'id': {'type': 'string', 'description': 'model id'}, 'log': {'type': 'string', 'description': 'the event log, as CSV text'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'collection name'}}}
입력 스키마
{'type': 'object', 'required': ['model'], 'properties': {'model': {'type': 'string', 'description': 'the model JSON'}}}
입력 스키마
{'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)'}}}
입력 스키마
{'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)'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id to delete'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'type': 'object', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'description': 'model id (before)'}, 'b': {'type': 'string', 'description': 'model id (after)'}}}
입력 스키마
{'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'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'entity id to look up'}}}
입력 스키마
{'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)'}}}
입력 스키마
{'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'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'binding id'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id (content hash)'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'model id'}}}
입력 스키마
{'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'}}}
입력 스키마
{'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'}}}
입력 스키마
{'type': 'object'}
입력 스키마
{'type': 'object'}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'map id'}}}
입력 스키마
{'type': 'object'}
입력 스키마
{'type': 'object', 'required': ['data'], 'properties': {'data': {'type': 'string', 'description': 'the table as a JSON object'}}}
입력 스키마
{'type': 'object'}
입력 스키마
{'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'}}}
입력 스키마
{'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]}'}}}
입력 스키마
{'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'}}}
입력 스키마
{'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'}}}
입력 스키마
{'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"}}}
입력 스키마
{'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"}}}
입력 스키마
{'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'}}}
입력 스키마
{'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'}}}
입력 스키마
{'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"}}}
입력 스키마
{'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"}]'}}}
입력 스키마
{'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"}}}
입력 스키마
{'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)'}}}
입력 스키마
{'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'}}}
입력 스키마
{'type': 'object', 'required': ['old', 'new'], 'properties': {'new': {'type': 'string', 'description': 'model id of the successor'}, 'old': {'type': 'string', 'description': 'model id being replaced'}}}
입력 스키마
{'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.'}}}
최근 도구 변경
유사한 MCP 서버
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.