Skip to content
Back to search
100
MCP live MCP 2025-06-18 streamable-http

xyz.pflow.sim/whatif

xyz.pflow.sim/whatif

Conversational what-if simulation: build, diagnose and compare Petri-net models; CC0 catalog.

Watch this dependency Share evidence report
Uptime
100.0%
5 direct probes · 30d
Response
1198ms
last probe
Tools
59
callable
Resources
2
readable
Prompts
0
available
Score: 100/100
Handshake verified by our own probe.
pass Answers the MCP handshake 50/50
The handshake and the list calls succeeded on the primary URL.
pass Lists tools, resources or prompts 30/30
59 tools, 2 resources, 0 prompts returned.
pass 3 or more catalogue items 10/10
61 items in total; 3 or more earns these points.
pass Describes itself 10/10
93 characters; more than 30 earns these points.

Tools · 59

sim_accept_migration

Carry offered taxonomic edges of a superseded model forward to its current successor. edges lists 1 to 25 edge ids that sim_migration_offers(model) offered; pass successor (the current it returned) so…

sim_bind

Record a checked connection between two stored models' declared ports, fromModel's fromPort (a place tagged port.output) feeding toModel's toPort (a transition tagged port.input), as a content-address…

sim_calibrate

Calibrate a model against YOUR event log — the reading that meets reality. Upload CSV (case_id, activity, timestamp; the shape sim_dataset emits, activities = transition ids), and rates are learned fr…

sim_canonical

Tell whether two differently-labelled models are actually the same net: an isomorphism-invariant id computed from the model's EXACT automorphism orbits (orbits.go), not the colour-refinement (WL) kind…

sim_check_witness

Re-check a stored structural witness against both stored models with the independent checker (pkg/morphism), which does no search. Given a structural edge's id, checks every witness of that edge; an e…

sim_classify

Discover the parameter classes of a stored model and return them as JSON-LD with empty annotation slots for you to fill in (label, comment, unit, domain, substitutes — nothing else; membership/kind/ev…

sim_code_to_flow

Derive a Petri-net model from source code with the configured LLM (control-flow, state-machine, resources or concurrency focus) and store it as a NEW model you own when it passes sim_create_model's de…

sim_compare

Run several scenarios against one model on one shared seed and return them side by side — the seed sharing is server-enforced, so differences are the scenarios, not the dice. Returns a summary by defa…

sim_components

List the component registry: pre-baked subnet templates (arrivals, service, hazard, inventory, decision, mailbox, datastore) with the calibration discipline baked into the arcs and rates. Each entry n…

sim_compose

Instantiate a registry component into a model and store the result as a NEW content-addressed model you own (lineage recorded when composing onto an existing id). Omit id to start a model from the com…

sim_conformance

Check how well a stored model matches an observed event log WITHOUT rewriting its rates — the read sim_calibrate bundles into calibration, offered on its own and in full: fitness (can the model replay…

sim_conformance_stream

Online conformance: replay an ORDERED event stream against a stored model and get a running verdict — does the model still match, or which event was the first that did not, and why. Unlike sim_conform…

sim_create_collection

Mint a named Collection you own and return its content id. A collection carries no member list of its own — a mutable list would change the collection's own id every time something joined it, the same…

sim_create_model

Store a Petri-net model and return its content id and url, plus warnings (omitted when there are none) for a model that stores but probably does not say what was meant: transitions with no rate, which…

sim_create_system

Define a System (ROADMAP.md Phase 11f): a content-addressed, stored set of models and the bindings between them, so the catalog can answer questions about them together. Pass collection (snapshot its …

sim_crosscheck

Run every applicable READING of a model against the others and report agreement or divergence with the reason: discrete SSA means vs the continuous mean-field solve, algebraically derived conservation…

sim_dataset

Generate a synthetic event log from a stored model (seeded SSA playout; case-per-arrival). Returns CSV. Deterministic: same id, same seed, same bytes.

sim_delete_model

Delete a model you created signed in. Refused for the curated catalog, for models you do not own (a model created without sign-in is nobody's, for good), and for models already dedicated to the common…

sim_diagnose

Returns what one more of each resource (and a change in each rate) is worth to the outcome, each ranked against a measured noise floor — no fitness test to write. Also reports generic gates (mass bala…

sim_diff

Structural difference between two stored models: places, transitions and arcs added or removed, and surviving elements whose numbers changed (initial, capacity, rate, stages, arc weight or kind). The …

sim_distill

Distill exact search into the play scorer: fit rate multipliers for named transition groups so play's rankings agree with exact minimax, on positions sampled by random self-play and labeled by search.…

sim_distinguish

Compare the behaviour of two stored models of one process — typically a net formalized from a document and a net sim_code_to_flow read out of code — and return proved (no word of visible steps separat…

sim_edges

List every relation touching an entity, as either subject or object. Answered from an index by subject and object; each call re-lists the store so edges written by other instances are seen. Legacy edg…

sim_evaluate

Score a player's legal next moves with the PLAY method (the blog post's move picker): apply each candidate hypothetically and score the expected objective of the position it leads to, by seeded SSA ro…

sim_extend

Apply structural edits to a stored model and store the result as a NEW model you own, with lineage back to the original — the same vocabulary the guided builder uses behind its interview, now callable…

sim_generate

Write a Petri-net model from a plain-language description with the configured LLM, with the levers that moved the pass rate in the benchmark behind it, each optional. The model is checked as it arrive…

sim_get_artifact

Fetch a stored prompt or artifact by id as JSON-LD: the two records sim_prompt and sim_reroll store besides a model. An artifact (@type Artifact) is an LLM reply that was not stored as a model — a rep…

sim_get_binding

Fetch a stored Binding by id, with its check computed now (binds-port-v1; binds-port-v2 for a binding that declares a unit conversion, which is returned as convert; binds-port-v3 for one that declares…

sim_get_model

Fetch a stored model's full Petri-net JSON by its content id. A name in place of an id is refused saying to search with sim_list_models' query, and that a model created without sign-in is listed for n…

sim_invariants

Derive a model's full algebraic invariant structure: conservation laws (Farkas P-invariants — weighted place sums every run preserves, the arithmetic a trust panel should show), firing cycles (T-invar…

sim_license_model

Dedicate a model you created to the commons under CC0-1.0, CC-BY-4.0, CC-BY-SA-4.0. It then appears in every user's listing with the license shown, and the dedication is IRREVOCABLE — it cannot be cha…

sim_link

Record a typed edge between two stored entities (models, prompts, artifacts, maps, collections, bindings, relations — not witnesses), using a registered predicate. sim_link writes these (subject → obj…

sim_list_bindings

List the content id of every stored Binding.

sim_list_models

List the models visible to you, as a JSON array of {id, name, description, license, curated, mine} sorted by name (a field that does not apply is left out): the curated catalog (curated: true), models…

sim_map_get

Fetch a stored Map's key->value data by id.

sim_map_list

List the content id of every stored Map.

sim_map_put

Store a key->value lookup table as its own content-addressed entity — a generated parameter sweep, a rate table, a component registry, anything shaped as key->value rather than free text (an artifact)…

sim_migration_offers

List what happens to the edges of a superseded model. Taxonomic edges (hasMember, @type, broader, related, closeMatch, cites, about) are OFFERED: each row gives the edge as it would read on the model'…

sim_my_sheets

List the sheets this user has published, with their URLs.

sim_neighbors

One-hop traversal from an entity, read through the predicate registry. With no predicate: the object of every relation where the entity is the subject. With a predicate: the entities one hop along it …

sim_optimize

Multi-objective optimisation over transition rates for a stored model: Monte Carlo samples the rate ranges, runs each combination to the horizon with the continuous engine, and returns every sample wi…

sim_param_heatmap

Two-rate grid for a stored model: vary two transition rates over ranges, run each combination to the horizon with the continuous engine, and return the observable's final value as a grid — 'which regi…

sim_prompt

Ask an LLM to derive something from a stored entity: a variant model, a report, a piece of generated code — whatever the prompt asks for. The parent's JSON rides along as context after a fixed instruc…

sim_propose_types

Propose candidate @type values for one or more stored models, e.g. "QueueingSystem" or "ResourcePool", from a small Diagnose run this tool performs on each model (nothing is cached or reused between c…

sim_prove

Prove a structural relation between two stored models and record it with its witness. isomorphicTo: an exact canonical-labelling search (the one behind sim_canonical, seeded with exactly what the chec…

sim_publish

Publish a stored model into the signed-in user's Google Sheets: the model workbook (live formulas when honest, a refusal tab when not), a server-run scenario as data tabs, and trajectory + contention …

sim_publish_app

Publish the generated application for a model you own — the single-file HTML a generator produced from the model's `view` prompt. Served at /app/<id> in a sandboxed opaque origin (no cookies, no sessi…

sim_publish_compare

Publish a multi-scenario comparison into the signed-in user's Google Sheets — sim_compare's export, the counterpart of sim_publish for a single scenario. Runs every scenario on one shared seed (the sa…

sim_query

Answer a question over the edge graph between stored models: bounded paths, closure over transitive predicates, and conjunctive patterns of up to 4 triples joined on shared ?variables. The query argum…

sim_reach

Returns whether the marking to is reachable from the marking from in ONE stored net (a model, or a system that is one net): yes with a firing trace, no with a re-checkable P-invariant (or after an exh…

sim_receipt

Run a seeded scenario and get back the result PLUS a signed run receipt: an Ed25519 certificate over (model id, scenario, result hash, service revision) and the inputs the engine recorded for this run…

sim_refine

Refine a model's parameter classes by editing what the model SAYS (tags on a place or transition, or assertedClasses), then re-derive. Returns a NEW model id (ids are content addresses, so the origina…

sim_reroll

Re-run a stored sim_prompt against the SAME parent it originally ran against — a sibling attempt, never a chain: it never derives from the previous attempt's output, only from the original parent, so …

sim_run_pipeline

Returns one scenario result per model that a set of stored Bindings (see sim_bind) touches, run as a composed pipeline (each result's contention split into contended, waitingForWork and neverFired exa…

sim_scenario

Run a seeded what-if scenario against a stored model: marking overrides, rate overrides, piecewise rate schedules, and params assignments to the model's declared structural parameters (arc weights, ca…

sim_sequences

Returns a deterministic suite of firing sequences generated from ONE stored model, for replaying against an implementation outside sim (for example the code a sim_code_to_flow model came from): every …

sim_supersede_model

Mark an old version of your model as replaced by a newer one. The old id keeps working and its commons dedication (if any) stands — only the listing moves on to the successor. Both models must be your…

sim_system

Returns a stored System's view ({id}), the models whose ports can bind to one declared port ({model, port, direction?, among?}), or the stored systems that name a model or a binding ({naming}); one fo…

sim_verify

Verify declared properties of a stored model: a report with one verdict per property, proved, refuted or unknown (unknown is never a pass, and ok is true only when every property is proved), with evid…

Resources · 2

How to read diagnose/classify/refine

Interpretation guidance for sim_diagnose's knob rankings and outcome/objective tagging, sim_classify's colour-refinement caveat, and sim_refine's two tag/assert levers. Read this once; the tools' own …

sim://docs/classification
How to write a model

How to write a model for sim_create_model: a worked example (a two-staff counter with arrivals, service and walk-outs), then the fields a simulation reads — places, transitions, arcs, rates per hour a…

sim://docs/authoring

How to use

Claude Desktop or claude.ai: add a custom connector (Customize → Connectors; on Team and Enterprise plans an owner adds it under Organization settings → Connectors) with this server URL: https://sim.pflow.xyz/mcp

Cursor or Cline: add to your MCP config:

{
  "mcpServers": {
    "xyz.pflow.sim/whatif": {
      "url": "https://sim.pflow.xyz/mcp",
      "transport": "streamable-http"
    }
  }
}