Docs

Bootstrap Workspace (starter blueprint)

Slug: bootstrap-workspace Type: agent_blueprint Source: code-defined; appears in every tenant's agent_blueprint://list automatically. Fork via agents.fork_blueprint to customize. Outputs: one boolean (bootstrap_complete)

The workspace canon gate. Verifies a voice_profile, at least one content_pillar, and at least one author_profile exist before any content blueprint runs. Halts with structured pause context when canon is missing so the calling LLM can dispatch the matching setup widget.

When to use it

  • Composed automatically by plan_and_draft_window (and indirectly via that composite when drafting through draft_piece). You should rarely need to invoke it directly.
  • Run it on demand from the chat panel when you want to pre-flight a workspace before a long planning run.
  • Use it as the first step in a tenant fork that adds custom canon checks (e.g. "must also have an inspirational_reference artifact"). Append your own assert steps after the platform asserts in your fork.

What it produces

A single data output: bootstrap_complete: boolean. Reaching the end of the run means every canon assertion passed.

The blueprint does NOT create or modify any artifacts. It only reads workspace state. When it halts, no side effects have happened.

Inputs

This blueprint declares no inputs. It always reads the calling API key's workspace.

How it runs

7 top-level steps:

  1. list_voicetool. read_resource voice_profile://list. Saves the result as $voice_list.
  2. assert_voiceassert. Halts the run with bootstrap_required: voice halt message when $voice_list is null. The calling LLM treats the halt message as a pause type and surfaces the voice upload widget.
  3. list_pillarstool. read_resource artifact://list?artifact_type=content_pillar. Saves the result as $pillar_list.
  4. assert_pillarsassert. Halts with bootstrap_required: pillars when no content_pillar exists.
  5. list_authorstool. read_resource author_profile://list. Saves as $author_list.
  6. assert_authorsassert. Halts with bootstrap_required: authors when no author_profile exists.
  7. assemble_resulttransform. Reaching this step means every canon assertion passed; emits the final boolean.

Pause types and resume contract

The blueprint produces three pause types, one per missing canon kind:

Pause typeHalt message prefixResume requires
bootstrap_required: voicebootstrap_required: voice. Workspace has...a voice_profile artifact to exist
bootstrap_required: pillarsbootstrap_required: pillars. Workspace...at least one content_pillar artifact
bootstrap_required: authorsbootstrap_required: authors. Workspace...at least one author_profile artifact

The chat panel pause widget registry recognizes the bootstrap_required prefix and dispatches per missing item:

  • voice widget — voice upload (writing samples) or manual description form.
  • pillars widget — pillar curation (manual entry, doc upload + AI extraction with review_status='pending_review').
  • authors widget — author setup (link to one of the workspace users + select voice_profile).

After the user provides the missing canon, the calling LLM continues walking the recipe. Re-read workspace state from the top; subsequent asserts may halt again on the next missing item until all three are present.

Reading and walking it

On the MCP tool surface there is no run-blueprint tool — read the recipe and walk its steps yourself. Via MCP from an external Claude Desktop:

code
read_resource agent_blueprint://bootstrap-workspace

Then perform each step with your own primitive tools (no inputs are required for this recipe). Most callers don't walk bootstrap_workspace directly — they walk plan_and_draft_window, which composes bootstrap_workspace as the first sub-step. The pause behavior is the same either way.

This recipe-you-walk model is the interactive MCP path. Platform-initiated runs (the universal-ui "Run now", schedule / event / webhook triggers, replay, and backtest sweeps) instead go through the headless SDK runner, which drives a server-side agent to completion against the app's own /mcp endpoint and writes a blueprint_runs audit row. See blueprint-runner-sdk.md.

Forking it

code
agents.fork_blueprint source=bootstrap-workspace new_slug=<your-fork>

Common forks:

  • Stricter pillar rule — assert that at least N pillars are review_status='approved' (not just present), so unreviewed AI-extracted pillars don't unblock the gate.
  • Custom canon items — add asserts for tenant-specific canon (e.g. "needs a brand_guidelines artifact" or "needs an icp_profile artifact").
  • Bypass for explicit override — accept an input flag force_bypass: boolean that short-circuits the asserts when an admin needs to run a content blueprint without canon.

Limits

  • Reads are not cost-bounded server-side in v1.
  • The blueprint reads the API key's workspace only; cross-tenant canon checks are blocked at the operation registry boundary.
  • Pause/resume requires the calling LLM to support it. Direct CRUD callers (REST clients hitting /api/platform/v1/blueprint-runs directly) get the structured halt message in the error envelope but must drive their own UI to resolve it.