Architecture & mockups
Pulse exposes 17 of its 216 MCP tools for visual design artifacts:- 12 architecture-design tools (
server.py:6824–7503) — structured system designs with entities, interfaces, and diagrams (Excalidraw, Mermaid, draw.io, SVG, PNG). - 5 screen-mockup tools (
server.py:9436–9710) — HTML+Tailwind page mockups, modals, drawers, popovers, and panels.
okto-pulse-feature-inventory.md:378–410 and :429–445.
When to use which
Use architecture designs to encode runtime topology and ownership boundaries that downstream cards must respect. Use screen mockups for visual UI references the implementer renders against. They are independent — one spec can have both.
Architecture designs
Authoring loop
The architecture model is critiqued by the server before it accepts a write. Skip the validation step and you get rejected with contextual paths likeentities[0].name or diagrams[0].adapter_payload.elements[2].linkedEntityId — fix the cited field and retry.
The recommended loop for non-trivial payloads:
1
Fetch the schema once per session
okto_pulse_get_architecture_design_schema returns allowed enums, entity/interface contracts, Excalidraw adapter rules, bad and good examples, and a complete minimal payload.2
Dry-run critique
okto_pulse_validate_architecture_design_payload (server.py:6933) runs the same critique the create/update path runs but persists nothing. It returns:valid— whether the payload would be rejectedissues— blocking errors with JSON pathswarnings— non-blocking gaps that hurt downstream claritysuggested_fixes— concrete corrections for common mistakessummary— counts of entities, interfaces, diagrams, elements, links
parent_type + parent_id for create-mode validation. Pass design_id (and only the fields you intend to change) for update-mode — omitted fields are merged from the existing design before critique.3
Persist after `valid: true`
Call
okto_pulse_add_architecture_design (server.py:7049) or okto_pulse_update_architecture_design (server.py:7207) with the same payload. Warnings are not blockers, but each one usually marks a detail a downstream implementer or validator would otherwise have to guess.Tool reference
Payload anatomy
okto_pulse_add_architecture_design accepts three structured arrays.
entities — runtime boundaries
Categorical entity_type plus a concrete name. The API rejects payloads where name duplicates entity_type after normalization (e.g. name="API", entity_type="api") because ownership and task boundaries become ambiguous.
interfaces — contracts on the wire
endpoint is optional but recommended (API path, RPC method, event name, queue name). direction must be one of source_to_target, target_to_source, bidirectional, none.
Interfaces do not own source/target — diagram connections do, via sourceElementId / targetElementId.
diagrams — visualization
Excalidraw is first-class. Edges link to interfaces via linkedInterfaceIds (one connector can carry several contracts). connectionType accepts only "direct" and "elbow" — "curved" is rejected.
Excalidraw round-trip
Authoring agents can ship a complete Excalidraw scene without touching the structured arrays first.okto_pulse_dump_architecture_diagram with the diagram ID — it loads the payload through its adapter and returns both the raw payload and an adapter-formatted dump string.
Screen mockups
Tool reference
entity_type is universal
All five screen-mockup tools accept entity_type ∈ spec / ideation / refinement / card (default spec). The same shape works whether you are sketching a page during ideation discovery, locking it on a spec, or attaching the final reference to an implementation card.
Authoring example
The HTML sanitizer drops
<script> blocks and any on* event attribute (onclick, onload, etc.). Style classes, inline style attributes, and Tailwind utilities pass through untouched.Annotations
Reviewers add design notes without editing the HTML. Each annotation gets a stableid and records the author_id.
Spec → card propagation
When a sprint slices a spec into implementation cards, attach the relevant architecture and mockup context to each card so the implementer’s view is self-contained. Two tools snapshot from the spec onto the card.
Both tools accept multi-value IDs as a native list (
["scr_a", "scr_b"]), a JSON string, or pipe-separated. Comma-only input is rejected — see okto_pulse.core.mcp.helpers.coerce_to_list_str (okto-pulse-feature-inventory.md:395).
okto_pulse_get_task_context see the architecture and mockups inline rather than chasing pointers back to the spec.
Permissions
All architecture and mockup tools resolve through the granular permission registry (server.py:_mcp_check_architecture_permission and Permissions.SPECS_UPDATE). The actions checked per call:
A blocked call returns
{"error": "FORBIDDEN", "message": "...", ...} — flip the agent’s permission preset in Board → Agents → Edit.
See Permissions for the preset reference.
Errors
Architecture and mockup writes return the standard MCP error envelope:Next steps
MCP reference index
All 216 tools across 8 domains.
ADLC pipeline
Where architecture and mockups attach in the ideation → spec → card flow.