# factory_prepare_operation

Step 1 of 2 for scene lifecycle, draft adoption/discard, rollback, export, dataset changes, or stub deletion. 场景操作属于当前工作区；修改或增加步骤时沿用已有 sceneId，只有用户明确要求新建独立场景时才使用 createScene。Freezes the exact target state and returns an approval snapshot; writes nothing. For a single-block adoption, explicitly use adoptDraft scope kind=step or kind=stepAcceptance; omitting scope means the WHOLE draft. Unselected draft changes remain pending. Partial scope MUST NOT include testedBatchId because whole-draft evidence cannot prove a partial adoption. testedExperimentId may certify a partial adoption only when the host verifies the actual merged definition exactly matches the frozen tested candidate. First save the candidate prompt into the existing draft through its approval flow, preserving other pending blocks; experiments never overwrite drafts. Every new adoptDraft request MUST include proposal with a concrete problem and expected benefit; risk is optional. Proposal is an Agent judgment awaiting review, never a test conclusion. The host separately derives verified benefits, current problems, remaining risks, and validation scope only from matching test evidence. Legacy internal calls without proposal remain readable through the exact draft diff and note.

Agent View of the PolicyLayer registry record for `factory_prepare_operation`. HTML page: https://policylayer.com/tools/dutydeck/factory-prepare-operation

## Facts

- Tool: `factory_prepare_operation`
- Server: DutyDeck (`taokoplay/DutyDeck`) — https://policylayer.com/tools/dutydeck.md
- Homepage: https://github.com/taokoplay/DutyDeck
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "factory_prepare_operation",
    "arguments": {}
  }
}
```

## Why factory_prepare_operation is rated Medium

An AI agent can call factory_prepare_operation faster than any human can review: one bad instruction and it creates or modifies resources in DutyDeck by the hundred, each call as confident as the last.

## Use case

AI agents use factory_prepare_operation to create or update resources in DutyDeck, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your DutyDeck environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches DutyDeck:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "factory_prepare_operation": {
      "limits": [
        {
          "counter": "factory_prepare_operation_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on DutyDeck (246)

- `canvas_cancel_media_run` — Destructive — https://policylayer.com/tools/dutydeck/canvas-cancel-media-run.md
- `factory_cancel_experiment` — Destructive — https://policylayer.com/tools/dutydeck/factory-cancel-experiment.md
- `mcp__automation__delete_automation` — Destructive — https://policylayer.com/tools/dutydeck/mcp--automation--delete-automation.md
- `mcp__planning__delete_calendar_event` — Destructive — https://policylayer.com/tools/dutydeck/mcp--planning--delete-calendar-event.md
- `mcp__planning__delete_group` — Destructive — https://policylayer.com/tools/dutydeck/mcp--planning--delete-group.md
- `mcp__planning__delete_reminder` — Destructive — https://policylayer.com/tools/dutydeck/mcp--planning--delete-reminder.md
- `mcp__planning__delete_tag` — Destructive — https://policylayer.com/tools/dutydeck/mcp--planning--delete-tag.md
- `mcp__planning__delete_todo` — Destructive — https://policylayer.com/tools/dutydeck/mcp--planning--delete-todo.md
- `media_cancel_generation` — Destructive — https://policylayer.com/tools/dutydeck/media-cancel-generation.md
- `media_cancel_run` — Destructive — https://policylayer.com/tools/dutydeck/media-cancel-run.md
- `api_prepare_request` — Execute — https://policylayer.com/tools/dutydeck/api-prepare-request.md
- `api_run_scenario` — Execute — https://policylayer.com/tools/dutydeck/api-run-scenario.md
- `BrowserExecuteJavaScript` — Execute — https://policylayer.com/tools/dutydeck/browserexecutejavascript.md
- `BrowserNavigate` — Execute — https://policylayer.com/tools/dutydeck/browsernavigate.md
- `BrowserNewTab` — Execute — https://policylayer.com/tools/dutydeck/browsernewtab.md
- `BrowserWaitFor` — Execute — https://policylayer.com/tools/dutydeck/browserwaitfor.md
- `canvas_run_agent` — Execute — https://policylayer.com/tools/dutydeck/canvas-run-agent.md
- `canvas_run_nodes` — Execute — https://policylayer.com/tools/dutydeck/canvas-run-nodes.md
- `canvas_run_workflow` — Execute — https://policylayer.com/tools/dutydeck/canvas-run-workflow.md
- `canvas_task` — Execute — https://policylayer.com/tools/dutydeck/canvas-task.md
- `factory_advance_experiment` — Execute — https://policylayer.com/tools/dutydeck/factory-advance-experiment.md
- `factory_diagnose_run` — Execute — https://policylayer.com/tools/dutydeck/factory-diagnose-run.md
- `factory_retry_review` — Execute — https://policylayer.com/tools/dutydeck/factory-retry-review.md
- `factory_run_batch` — Execute — https://policylayer.com/tools/dutydeck/factory-run-batch.md
- `factory_run_scene` — Execute — https://policylayer.com/tools/dutydeck/factory-run-scene.md
- `factory_run_step` — Execute — https://policylayer.com/tools/dutydeck/factory-run-step.md
- `mcp__automation__run_automation_now` — Execute — https://policylayer.com/tools/dutydeck/mcp--automation--run-automation-now.md
- `mcp__collaboration__stop_delegation` — Execute — https://policylayer.com/tools/dutydeck/mcp--collaboration--stop-delegation.md
- `mcp__collaboration__stop_delegations` — Execute — https://policylayer.com/tools/dutydeck/mcp--collaboration--stop-delegations.md
- `mcp__collaboration__wait_for_delegations` — Execute — https://policylayer.com/tools/dutydeck/mcp--collaboration--wait-for-delegations.md
- …and 216 more: https://policylayer.com/tools/dutydeck.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=dutydeck · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/dutydeck
