Skip to content

MCP agent DX: checkpoint lock blocks read-only tools, per-call project scope, duplicate-page substitutions #5889

Description

@Densrt

Three smaller papercuts from agency-style usage (fleet of projects, SEO page
factories). Tested on 0.277.0 and re-verified on 0.278.0.

1. workflow.next locks out read-only tools

After calling workflow.next {"goal":"design-system-page"}, EVERY subsequent tool
call fails with CHECKPOINT_REQUIRED until checkpoint.ack, including pure reads like
list-pages or meta.get_more_tools (reproduced over stdio). The enforced checkpoint
idea is great for mutations, but blocking discovery/read tools forces interactive
agents into ack round-trips that add no safety. Suggestion: scope the lock to
mutating tools, or add an opt-out for interactive/streaming agents.

2. One project per directory/session

The config binds one directory to one project, sessions are exclusive
(PROJECT_SESSION_BUSY), and no tool takes a project selector. For an agency managing
10+ Webstudio projects on one machine, that means N checkouts and N server processes.
A --project scope at startup or an optional per-call project selector (with the
share-link permission model already in place, permits would still apply) would make
fleet automation dramatically cheaper.

3. duplicate-page with substitutions

duplicate-page only takes pageId/name/path. The most common agency use case for
duplication is programmatic SEO (same page per city/product), which needs find/replace
of text and variable/dataSource references as part of the copy. Doing it after the
fact with replace-text/replace-prop-text does not cover page-scoped
variables/resources cloned by the duplicate. A substitutions option (text map and/or
variable value overrides) on duplicate-page would unlock that workflow in one call.

Related praise: insert-collection in 0.278.0 (atomic Collection + parameters +
bindings, with expression-backed data) is exactly the right direction for this kind
of high-level semantic tool.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions