{"apiVersion":"v1","directorySlug":"mockmachines-mcp-5c72afb0dd","title":"Mock Machines — Synthetic worlds for demos & AI training","description":"Synthetic worlds for software demos and AI training — perfectly linked datasets and live APIs, generated at over a million rows per second.","pageUrl":"https://www.mcpbundles.com/skills/mockmachines-mcp-5c72afb0dd","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.mockmachines.dev/mcp","hostedMcpUrl":null,"toolCount":18,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.mockmachines/mockmachines-mcp-5c72afb0dd","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"analyze_config","description":"Load a scenario config and return the engine's static-analysis report as data — the per-edit semantic feedback for conversational editing. Supply exactly one of yaml or config_json. If the config does not load/validate, returns {valid:false, errors:[…]} with the line-level messages. Otherwise returns {valid:true, analysis:{…}} where analysis covers the parallelism verdict, hazards, spawn/message graphs, reference connectivity, unused reference slots, collections on never-passivating parents, see","inputSchema":{"type":"object","properties":{"yaml":{"type":"string"},"config_json":{"type":"string"}},"additionalProperties":false},"title":"Analyze config","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"analyze_config","displayName":"Analyze config"},{"name":"checkpoint_experiment","description":"Write a checkpoint of one of your experiments at its current turn, so you can resume from exactly this point later. Returns {checkpoint_id, turn}. This keeps the experiment live in memory; to also free the memory use hibernate.","inputSchema":{"type":"object","required":["experiment_id"],"properties":{"scenario_id":{"type":"string"},"experiment_id":{"type":"string"}},"additionalProperties":false},"title":"Checkpoint experiment","logicalName":"checkpoint_experiment","displayName":"Checkpoint experiment","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deploy_scenario","description":"Deploy a scenario into your private workspace so you can run experiments against it. Supply exactly one source: scenario (clone an existing deployed scenario with this id), yaml (deploy a config directly), or config_json (deploy a config as a JSON string matching get_config_schema — it is stored as its YAML equivalent). Every deploy creates a NEW scenario with its own unique id — existing deployments are never touched, so deploying the same source twice yields two independent scenarios. Remove o","inputSchema":{"type":"object","properties":{"yaml":{"type":"string"},"scenario":{"type":"string"},"config_json":{"type":"string"}},"additionalProperties":false},"title":"Deploy scenario","logicalName":"deploy_scenario","displayName":"Deploy scenario","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"download_dataset","description":"Produce and download the scenario's seeded experiment dataset (the per-machine tables) in the given format (csv or parquet; default csv). When a cloud bucket is configured, returns signed download URLs; otherwise returns the on-disk file listing and a resource link to the local dataset directory.","inputSchema":{"type":"object","required":["scenario"],"properties":{"format":{"type":"string"},"scenario":{"type":"string"}},"additionalProperties":false},"title":"Download dataset","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"download_dataset","displayName":"Download dataset"},{"name":"get_available_events","description":"List the events available on an entity's current state, each with its conditions evaluated against the entity's live values and whether all conditions are met. Use this to see which events would fire before calling request_event. Addressed by scenario id, machine type, and instance id.","inputSchema":{"type":"object","required":["scenario","machine_type","instance_id"],"properties":{"scenario":{"type":"string"},"instance_id":{"type":"string"},"machine_type":{"type":"string"}},"additionalProperties":false},"title":"Get available events","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_available_events","displayName":"Get available events"},{"name":"get_config_schema","description":"Get the JSON schema for a scenario config. The schema is derived from the engine's config parse types, so a config that validates against it decodes without a shape error — emit your config as structured output constrained to this schema (then call analyze_config to check its DESIGN, which the schema cannot guarantee). Returns {schema: <json-schema-object>}.","inputSchema":{"type":"object","additionalProperties":false},"title":"Get config schema","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_config_schema","displayName":"Get config schema"},{"name":"get_instance","description":"Get one entity's fully decoded field map (including current_state), addressed by scenario id, machine type, and instance id (e.g. \"Merchant-00000001\").","inputSchema":{"type":"object","required":["scenario","machine_type","instance_id"],"properties":{"scenario":{"type":"string"},"instance_id":{"type":"string"},"machine_type":{"type":"string"}},"additionalProperties":false},"title":"Get instance","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_instance","displayName":"Get instance"},{"name":"get_run_status","description":"Get the live status of one of your experiments by experiment_id: {status (ready|running|error), turn, entity_counts (per machine type), done}. done is true once a started run has finished; poll this after run_experiment.","inputSchema":{"type":"object","required":["experiment_id"],"properties":{"scenario_id":{"type":"string"},"experiment_id":{"type":"string"}},"additionalProperties":false},"title":"Get run status","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_run_status","displayName":"Get run status"},{"name":"get_scenario_summary","description":"Get a summary of a scenario — its id, name, and the state-machine types it defines. Address it by scenario id (scenario).","inputSchema":{"type":"object","required":["scenario"],"properties":{"scenario":{"type":"string"}},"additionalProperties":false},"title":"Get scenario summary","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_scenario_summary","displayName":"Get scenario summary"},{"name":"get_scenario_yaml","description":"Get the config YAML of one of your deployed scenarios (by scenario_id); with no id, returns the YAML of your single deployed scenario when you have exactly one. Use it to read the current config before editing it.","inputSchema":{"type":"object","properties":{"scenario_id":{"type":"string"}},"additionalProperties":false},"title":"Get scenario YAML","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_scenario_yaml","displayName":"Get scenario YAML"},{"name":"hibernate","description":"Hibernate one of your experiments: checkpoint its current state, then free its in-memory handle. The state is preserved — the next use (get_run_status, run_experiment, or resume_experiment) brings it back exactly where it parked, at the hibernated turn. Returns {checkpoint_id, turn}. Contrast with reset_experiment, which discards drift back to the previous checkpoint instead of saving it.","inputSchema":{"type":"object","required":["experiment_id"],"properties":{"scenario_id":{"type":"string"},"experiment_id":{"type":"string"}},"additionalProperties":false},"title":"Hibernate experiment","logicalName":"hibernate","displayName":"Hibernate experiment","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_instances","description":"List the entities in a scenario's seeded experiment. With no machine_type, returns the entity types present and their counts (plus the current turn and total). With a machine_type, returns every instance of that type as a fully decoded field map (each carries current_state).","inputSchema":{"type":"object","required":["scenario"],"properties":{"from":{"type":"integer"},"limit":{"type":"integer"},"state":{"type":["null","array"],"items":{"type":"string"}},"filters":{"type":"object","additionalProperties":{"type":"string"}},"scenario":{"type":"string"},"machine_type":{"type":"string"}},"additionalProperties":false},"title":"List instances","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_instances","displayName":"List instances"},{"name":"list_scenarios","description":"List the available scenarios. Each row gives a scenario's id (use it to address the other tools), name, machine count, and whether you can edit it (own scenarios are editable; shared published scenarios are read-only).","inputSchema":{"type":"object","additionalProperties":false},"title":"List scenarios","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_scenarios","displayName":"List scenarios"},{"name":"request_event","description":"Request an event on one entity. This is a REQUEST, not a force: the event's conditions still gate it, so it either fires (state/fields update) or is refused and the entity stays unchanged (a no-op — reported as outcome \"stayed\", not an error). The change is in-memory only and is NOT persisted: it is discarded on the next daily reset. Addressed by scenario id, machine type, instance id, and event name.","inputSchema":{"type":"object","required":["scenario","machine_type","instance_id","event"],"properties":{"event":{"type":"string"},"scenario":{"type":"string"},"instance_id":{"type":"string"},"machine_type":{"type":"string"}},"additionalProperties":false},"title":"Request event","logicalName":"request_event","displayName":"Request event","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"reset_experiment","description":"Reset one of your experiments back to its baseline by discarding any in-memory drift since its last checkpoint. The next use rehydrates it from disk (resuming from the newest checkpoint). Contrast with hibernate, which PRESERVES the current state by checkpointing it first — reset throws drift away, hibernate parks it.","inputSchema":{"type":"object","required":["experiment_id"],"properties":{"scenario_id":{"type":"string"},"experiment_id":{"type":"string"}},"additionalProperties":false},"title":"Reset experiment","logicalName":"reset_experiment","displayName":"Reset experiment","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"resume_experiment","description":"Resume one of your experiments from a checkpoint in place, and return its id and turn. With checkpoint_id, the experiment loads that specific checkpoint; without it, it comes back from its newest checkpoint (the same effect as acquiring a hibernated experiment). The resumed experiment is fully runnable from the checkpointed turn.","inputSchema":{"type":"object","required":["experiment_id"],"properties":{"scenario_id":{"type":"string"},"checkpoint_id":{"type":"string"},"experiment_id":{"type":"string"}},"additionalProperties":false},"title":"Resume experiment","logicalName":"resume_experiment","displayName":"Resume experiment","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"run_experiment","description":"Run an experiment against one of your deployed scenarios for the given number of turns. Reuses your single experiment if one exists for the scenario, otherwise creates one (the soft \"one experiment per user\" default). The run is ASYNCHRONOUS: this returns {run_id, status} immediately — poll get_run_status until done:true. seed_count is the number of seed entities per root machine (default 100); it is capped at a HARD ceiling of 2,000,000 entities (the soft advisory limit is 1,000,000). NOTE: a s","inputSchema":{"type":"object","required":["turns"],"properties":{"turns":{"type":"integer"},"seed_count":{"type":"integer"},"scenario_id":{"type":"string"},"experiment_id":{"type":"string"}},"additionalProperties":false},"title":"Run experiment","logicalName":"run_experiment","displayName":"Run experiment","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_scenario","description":"Validate a scenario config without deploying it. Supply exactly one of yaml or config_json (the latter matching get_config_schema). Returns {valid:true} when it loads, links, and passes schema validation, or {valid:false, errors:[…]} with the line-level validation messages otherwise. Use this to check a config before deploy_scenario.","inputSchema":{"type":"object","properties":{"yaml":{"type":"string"},"config_json":{"type":"string"}},"additionalProperties":false},"title":"Validate scenario","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate_scenario","displayName":"Validate scenario"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Mock-Machines-Synthetic-worlds-for-demos-AI-training&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AubW9ja21hY2hpbmVzLmRldi9tY3AifQ%3D%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Mock-Machines-Synthetic-worlds-for-demos-AI-training%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.mockmachines.dev%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Mock-Machines-Synthetic-worlds-for-demos-AI-training%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.mockmachines.dev%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Mock+Machines+%E2%80%94+Synthetic+worlds+for+demos+%26+AI+training&connectorUrl=https%3A%2F%2Fmcp.mockmachines.dev%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Mock-Machines-Synthetic-worlds-for-demos-AI-training\" --url \"https://mcp.mockmachines.dev/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mockmachines-mcp-5c72afb0dd","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mockmachines-mcp-5c72afb0dd/tools/{tool}","mcpServerUrl":"https://mcp.mockmachines.dev/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mockmachines-mcp-5c72afb0dd?live=1"}